|
1
|
|
|
<?php |
|
2
|
|
|
/* |
|
3
|
|
|
* This file is part of the Pomm's Foundation package. |
|
4
|
|
|
* |
|
5
|
|
|
* (c) 2014 - 2015 Grégoire HUBERT <[email protected]> |
|
6
|
|
|
* |
|
7
|
|
|
* For the full copyright and license information, please view the LICENSE |
|
8
|
|
|
* file that was distributed with this source code. |
|
9
|
|
|
*/ |
|
10
|
|
|
namespace PommProject\Foundation\Exception; |
|
11
|
|
|
|
|
12
|
|
|
/** |
|
13
|
|
|
* SqlException |
|
14
|
|
|
* |
|
15
|
|
|
* Errors from the rdbms with the result resource. |
|
16
|
|
|
* |
|
17
|
|
|
* @link http://www.postgresql.org/docs/9.0/static/errcodes-appendix.html |
|
18
|
|
|
* @package Foundation |
|
19
|
|
|
* @uses FoundationException |
|
20
|
|
|
* @copyright 2014 - 2015 Grégoire HUBERT |
|
21
|
|
|
* @author Grégoire HUBERT <[email protected]> |
|
22
|
|
|
* @license X11 {@link http://opensource.org/licenses/mit-license.php} |
|
23
|
|
|
*/ |
|
24
|
|
|
class SqlException extends FoundationException |
|
25
|
|
|
{ |
|
26
|
|
|
/* 00 - Successful Completion */ |
|
27
|
|
|
const SUCCESSFUL_COMPLETION = '00000'; |
|
28
|
|
|
/* 01 - Warning */ |
|
29
|
|
|
const WARNING = '01000'; |
|
30
|
|
|
const DYNAMIC_RESULT_SETS_RETURNED = '0100C'; |
|
31
|
|
|
const IMPLICIT_ZERO_BIT_PADDING = '01008'; |
|
32
|
|
|
const NULL_VALUE_ELIMINATED_IN_SET_FUNCTION = '01003'; |
|
33
|
|
|
const PRIVILEGE_NOT_GRANTED = '01007'; |
|
34
|
|
|
const PRIVILEGE_NOT_REVOKED = '01006'; |
|
35
|
|
|
const STRING_DATA_RIGHT_TRUNCATION = '01004'; |
|
36
|
|
|
const DEPRECATED_FEATURE = '01P01'; |
|
37
|
|
|
/* 02 - No Data (this is also a warning class per the SQL standard) */ |
|
38
|
|
|
const NO_DATA = '02000'; |
|
39
|
|
|
const NO_ADDITIONAL_DYNAMIC_RESULT_SETS_RETURNED = '02001'; |
|
40
|
|
|
/* 03 - SQL Statement Not Yet Complete */ |
|
41
|
|
|
const SQL_STATEMENT_NOT_YET_COMPLETE = '03000'; |
|
42
|
|
|
/* 08 - Connection Exception */ |
|
43
|
|
|
const CONNECTION_EXCEPTION = '08000'; |
|
44
|
|
|
const CONNECTION_DOES_NOT_EXIST = '08003'; |
|
45
|
|
|
const CONNECTION_FAILURE = '08006'; |
|
46
|
|
|
const SQLCLIENT_UNABLE_TO_ESTABLISH_SQLCONNECTION = '08001'; |
|
47
|
|
|
const SQLSERVER_REJECTED_ESTABLISHMENT_OF_SQLCONNECTION = '08004'; |
|
48
|
|
|
const TRANSACTION_RESOLUTION_UNKNOWN = '08007'; |
|
49
|
|
|
const PROTOCOL_VIOLATION = '08P01'; |
|
50
|
|
|
/* 09 - Triggered Action Exception */ |
|
51
|
|
|
const TRIGGERED_ACTION_EXCEPTION = '09000'; |
|
52
|
|
|
/* 0A - Feature Not Supported */ |
|
53
|
|
|
const FEATURE_NOT_SUPPORTED = '0A000'; |
|
54
|
|
|
/* 0B - Invalid Transaction Initiation */ |
|
55
|
|
|
const INVALID_TRANSACTION_INITIATION = '0B000'; |
|
56
|
|
|
/* 0F - Locator Exception */ |
|
57
|
|
|
const LOCATOR_EXCEPTION = '0F000'; |
|
58
|
|
|
const INVALID_LOCATOR_SPECIFICATION = '0F001'; |
|
59
|
|
|
/* 0L - Invalid Grantor */ |
|
60
|
|
|
const INVALID_GRANTOR = '0L000'; |
|
61
|
|
|
const INVALID_GRANT_OPERATION = '0LP01'; |
|
62
|
|
|
/* 0P - Invalid Role Specification */ |
|
63
|
|
|
const INVALID_ROLE_SPECIFICATION = '0P000'; |
|
64
|
|
|
/* 0Z - Diagnostics Exception */ |
|
65
|
|
|
const DIAGNOSTICS_EXCEPTION = '0Z000'; |
|
66
|
|
|
const STACKED_DIAGNOSTICS_ACCESSED_WITHOUT_ACTIVE_HANDLER = '0Z002'; |
|
67
|
|
|
/* 20 - Case Not Found */ |
|
68
|
|
|
const CASE_NOT_FOUND = '20000'; |
|
69
|
|
|
/* 21 - Cardinality Violation */ |
|
70
|
|
|
const CARDINALITY_VIOLATION = '21000'; |
|
71
|
|
|
/* 22 - Data Exception */ |
|
72
|
|
|
const DATA_EXCEPTION = '22000'; |
|
73
|
|
|
const ARRAY_SUBSCRIPT_ERROR = '2202E'; |
|
74
|
|
|
const CHARACTER_NOT_IN_REPERTOIRE = '22021'; |
|
75
|
|
|
const DATETIME_FIELD_OVERFLOW = '22008'; |
|
76
|
|
|
const DIVISION_BY_ZERO = '22012'; |
|
77
|
|
|
const ERROR_IN_ASSIGNMENT = '22005'; |
|
78
|
|
|
const ESCAPE_CHARACTER_CONFLICT = '2200B'; |
|
79
|
|
|
const INDICATOR_OVERFLOW = '22022'; |
|
80
|
|
|
const INTERVAL_FIELD_OVERFLOW = '22015'; |
|
81
|
|
|
const INVALID_ARGUMENT_FOR_LOGARITHM = '2201E'; |
|
82
|
|
|
const INVALID_ARGUMENT_FOR_NTILE_FUNCTION = '22014'; |
|
83
|
|
|
const INVALID_ARGUMENT_FOR_NTH_VALUE_FUNCTION = '22016'; |
|
84
|
|
|
const INVALID_ARGUMENT_FOR_POWER_FUNCTION = '2201F'; |
|
85
|
|
|
const INVALID_ARGUMENT_FOR_WIDTH_BUCKET_FUNCTION = '2201G'; |
|
86
|
|
|
const INVALID_CHARACTER_VALUE_FOR_CAST = '22018'; |
|
87
|
|
|
const INVALID_DATETIME_FORMAT = '22007'; |
|
88
|
|
|
const INVALID_ESCAPE_CHARACTER = '22019'; |
|
89
|
|
|
const INVALID_ESCAPE_OCTET = '2200D'; |
|
90
|
|
|
const INVALID_ESCAPE_SEQUENCE = '22025'; |
|
91
|
|
|
const NONSTANDARD_USE_OF_ESCAPE_CHARACTER = '22P06'; |
|
92
|
|
|
const INVALID_INDICATOR_PARAMETER_VALUE = '22010'; |
|
93
|
|
|
const INVALID_PARAMETER_VALUE = '22023'; |
|
94
|
|
|
const INVALID_REGULAR_EXPRESSION = '2201B'; |
|
95
|
|
|
const INVALID_ROW_COUNT_IN_LIMIT_CLAUSE = '2201W'; |
|
96
|
|
|
const INVALID_ROW_COUNT_IN_RESULT_OFFSET_CLAUSE = '2201X'; |
|
97
|
|
|
const INVALID_TIME_ZONE_DISPLACEMENT_VALUE = '22009'; |
|
98
|
|
|
const INVALID_USE_OF_ESCAPE_CHARACTER = '2200C'; |
|
99
|
|
|
const MOST_SPECIFIC_TYPE_MISMATCH = '2200G'; |
|
100
|
|
|
const NULL_VALUE_NOT_ALLOWED = '22004'; |
|
101
|
|
|
const NULL_VALUE_NO_INDICATOR_PARAMETER = '22002'; |
|
102
|
|
|
const NUMERIC_VALUE_OUT_OF_RANGE = '22003'; |
|
103
|
|
|
const STRING_DATA_LENGTH_MISMATCH = '22026'; |
|
104
|
|
|
#const STRING_DATA_RIGHT_TRUNCATION = '22001'; |
|
105
|
|
|
const SUBSTRING_ERROR = '22011'; |
|
106
|
|
|
const TRIM_ERROR = '22027'; |
|
107
|
|
|
const UNTERMINATED_C_STRING = '22024'; |
|
108
|
|
|
const ZERO_LENGTH_CHARACTER_STRING = '2200F'; |
|
109
|
|
|
const FLOATING_POINT_EXCEPTION = '22P01'; |
|
110
|
|
|
const INVALID_TEXT_REPRESENTATION = '22P02'; |
|
111
|
|
|
const INVALID_BINARY_REPRESENTATION = '22P03'; |
|
112
|
|
|
const BAD_COPY_FILE_FORMAT = '22P04'; |
|
113
|
|
|
const UNTRANSLATABLE_CHARACTER = '22P05'; |
|
114
|
|
|
const NOT_AN_XML_DOCUMENT = '2200L'; |
|
115
|
|
|
const INVALID_XML_DOCUMENT = '2200M'; |
|
116
|
|
|
const INVALID_XML_CONTENT = '2200N'; |
|
117
|
|
|
const INVALID_XML_COMMENT = '2200S'; |
|
118
|
|
|
const INVALID_XML_PROCESSING_INSTRUCTION = '2200T'; |
|
119
|
|
|
/* 23 - Integrity Constraint Violation */ |
|
120
|
|
|
const INTEGRITY_CONSTRAINT_VIOLATION = '23000'; |
|
121
|
|
|
const RESTRICT_VIOLATION = '23001'; |
|
122
|
|
|
const NOT_NULL_VIOLATION = '23502'; |
|
123
|
|
|
const FOREIGN_KEY_VIOLATION = '23503'; |
|
124
|
|
|
const UNIQUE_VIOLATION = '23505'; |
|
125
|
|
|
const CHECK_VIOLATION = '23514'; |
|
126
|
|
|
const EXCLUSION_VIOLATION = '23P01'; |
|
127
|
|
|
/* 24 - Invalid Cursor State */ |
|
128
|
|
|
const INVALID_CURSOR_STATE = '24000'; |
|
129
|
|
|
/* 25 - Invalid Transaction State */ |
|
130
|
|
|
const INVALID_TRANSACTION_STATE = '25000'; |
|
131
|
|
|
const ACTIVE_SQL_TRANSACTION = '25001'; |
|
132
|
|
|
const BRANCH_TRANSACTION_ALREADY_ACTIVE = '25002'; |
|
133
|
|
|
const HELD_CURSOR_REQUIRES_SAME_ISOLATION_LEVEL = '25008'; |
|
134
|
|
|
const INAPPROPRIATE_ACCESS_MODE_FOR_BRANCH_TRANSACTION = '25003'; |
|
135
|
|
|
const INAPPROPRIATE_ISOLATION_LEVEL_FOR_BRANCH_TRANSACTION = '25004'; |
|
136
|
|
|
const NO_ACTIVE_SQL_TRANSACTION_FOR_BRANCH_TRANSACTION = '25005'; |
|
137
|
|
|
const READ_ONLY_SQL_TRANSACTION = '25006'; |
|
138
|
|
|
const SCHEMA_AND_DATA_STATEMENT_MIXING_NOT_SUPPORTED = '25007'; |
|
139
|
|
|
const NO_ACTIVE_SQL_TRANSACTION = '25P01'; |
|
140
|
|
|
const IN_FAILED_SQL_TRANSACTION = '25P02'; |
|
141
|
|
|
/* 26 - Invalid SQL Statement Name */ |
|
142
|
|
|
const INVALID_SQL_STATEMENT_NAME = '26000'; |
|
143
|
|
|
/* 27 - Triggered Data Change Violation */ |
|
144
|
|
|
const TRIGGERED_DATA_CHANGE_VIOLATION = '27000'; |
|
145
|
|
|
/* 28 - Invalid Authorization Specification */ |
|
146
|
|
|
const INVALID_AUTHORIZATION_SPECIFICATION = '28000'; |
|
147
|
|
|
const INVALID_PASSWORD = '28P01'; |
|
148
|
|
|
/* 2B - Dependent Privilege Descriptors Still Exist */ |
|
149
|
|
|
const DEPENDENT_PRIVILEGE_DESCRIPTORS_STILL_EXIST = '2B000'; |
|
150
|
|
|
const DEPENDENT_OBJECTS_STILL_EXIST = '2BP01'; |
|
151
|
|
|
/* 2D - Invalid Transaction Termination */ |
|
152
|
|
|
const INVALID_TRANSACTION_TERMINATION = '2D000'; |
|
153
|
|
|
/* 2F - SQL Routine Exception */ |
|
154
|
|
|
const SQL_ROUTINE_EXCEPTION = '2F000'; |
|
155
|
|
|
const FUNCTION_EXECUTED_NO_RETURN_STATEMENT = '2F005'; |
|
156
|
|
|
const MODIFYING_SQL_DATA_NOT_PERMITTED = '2F002'; |
|
157
|
|
|
const PROHIBITED_SQL_STATEMENT_ATTEMPTED = '2F003'; |
|
158
|
|
|
const READING_SQL_DATA_NOT_PERMITTED = '2F004'; |
|
159
|
|
|
/* 34 - Invalid Cursor Name */ |
|
160
|
|
|
const INVALID_CURSOR_NAME = '34000'; |
|
161
|
|
|
/* 38 - External Routine Exception */ |
|
162
|
|
|
const EXTERNAL_ROUTINE_EXCEPTION = '38000'; |
|
163
|
|
|
const CONTAINING_SQL_NOT_PERMITTED = '38001'; |
|
164
|
|
|
#const MODIFYING_SQL_DATA_NOT_PERMITTED = '38002'; |
|
165
|
|
|
#const PROHIBITED_SQL_STATEMENT_ATTEMPTED = '38003'; |
|
166
|
|
|
#const READING_SQL_DATA_NOT_PERMITTED = '38004'; |
|
167
|
|
|
/* 39 - External Routine Invocation Exception */ |
|
168
|
|
|
const EXTERNAL_ROUTINE_INVOCATION_EXCEPTION = '39000'; |
|
169
|
|
|
const INVALID_SQLSTATE_RETURNED = '39001'; |
|
170
|
|
|
#const NULL_VALUE_NOT_ALLOWED = '39004'; |
|
171
|
|
|
const TRIGGER_PROTOCOL_VIOLATED = '39P01'; |
|
172
|
|
|
const SRF_PROTOCOL_VIOLATED = '39P02'; |
|
173
|
|
|
/* 3B - Savepoint Exception */ |
|
174
|
|
|
const SAVEPOINT_EXCEPTION = '3B000'; |
|
175
|
|
|
const INVALID_SAVEPOINT_SPECIFICATION = '3B001'; |
|
176
|
|
|
/* 3D - Invalid Catalog Name */ |
|
177
|
|
|
const INVALID_CATALOG_NAME = '3D000'; |
|
178
|
|
|
/* 3F - Invalid Schema Name */ |
|
179
|
|
|
const INVALID_SCHEMA_NAME = '3F000'; |
|
180
|
|
|
/* 40 - Transaction Rollback */ |
|
181
|
|
|
const TRANSACTION_ROLLBACK = '40000'; |
|
182
|
|
|
const TRANSACTION_INTEGRITY_CONSTRAINT_VIOLATION = '40002'; |
|
183
|
|
|
const SERIALIZATION_FAILURE = '40001'; |
|
184
|
|
|
const STATEMENT_COMPLETION_UNKNOWN = '40003'; |
|
185
|
|
|
const DEADLOCK_DETECTED = '40P01'; |
|
186
|
|
|
/* 42 - Syntax Error or Access Rule Violation */ |
|
187
|
|
|
const SYNTAX_ERROR_OR_ACCESS_RULE_VIOLATION = '42000'; |
|
188
|
|
|
const SYNTAX_ERROR = '42601'; |
|
189
|
|
|
const INSUFFICIENT_PRIVILEGE = '42501'; |
|
190
|
|
|
const CANNOT_COERCE = '42846'; |
|
191
|
|
|
const GROUPING_ERROR = '42803'; |
|
192
|
|
|
const WINDOWING_ERROR = '42P20'; |
|
193
|
|
|
const INVALID_RECURSION = '42P19'; |
|
194
|
|
|
const INVALID_FOREIGN_KEY = '42830'; |
|
195
|
|
|
const INVALID_NAME = '42602'; |
|
196
|
|
|
const NAME_TOO_LONG = '42622'; |
|
197
|
|
|
const RESERVED_NAME = '42939'; |
|
198
|
|
|
const DATATYPE_MISMATCH = '42804'; |
|
199
|
|
|
const INDETERMINATE_DATATYPE = '42P18'; |
|
200
|
|
|
const COLLATION_MISMATCH = '42P21'; |
|
201
|
|
|
const INDETERMINATE_COLLATION = '42P22'; |
|
202
|
|
|
const WRONG_OBJECT_TYPE = '42809'; |
|
203
|
|
|
const UNDEFINED_COLUMN = '42703'; |
|
204
|
|
|
const UNDEFINED_FUNCTION = '42883'; |
|
205
|
|
|
const UNDEFINED_TABLE = '42P01'; |
|
206
|
|
|
const UNDEFINED_PARAMETER = '42P02'; |
|
207
|
|
|
const UNDEFINED_OBJECT = '42704'; |
|
208
|
|
|
const DUPLICATE_COLUMN = '42701'; |
|
209
|
|
|
const DUPLICATE_CURSOR = '42P03'; |
|
210
|
|
|
const DUPLICATE_DATABASE = '42P04'; |
|
211
|
|
|
const DUPLICATE_FUNCTION = '42723'; |
|
212
|
|
|
const DUPLICATE_PREPARED_STATEMENT = '42P05'; |
|
213
|
|
|
const DUPLICATE_SCHEMA = '42P06'; |
|
214
|
|
|
const DUPLICATE_TABLE = '42P07'; |
|
215
|
|
|
const DUPLICATE_ALIAS = '42712'; |
|
216
|
|
|
const DUPLICATE_OBJECT = '42710'; |
|
217
|
|
|
const AMBIGUOUS_COLUMN = '42702'; |
|
218
|
|
|
const AMBIGUOUS_FUNCTION = '42725'; |
|
219
|
|
|
const AMBIGUOUS_PARAMETER = '42P08'; |
|
220
|
|
|
const AMBIGUOUS_ALIAS = '42P09'; |
|
221
|
|
|
const INVALID_COLUMN_REFERENCE = '42P10'; |
|
222
|
|
|
const INVALID_COLUMN_DEFINITION = '42611'; |
|
223
|
|
|
const INVALID_CURSOR_DEFINITION = '42P11'; |
|
224
|
|
|
const INVALID_DATABASE_DEFINITION = '42P12'; |
|
225
|
|
|
const INVALID_FUNCTION_DEFINITION = '42P13'; |
|
226
|
|
|
const INVALID_PREPARED_STATEMENT_DEFINITION = '42P14'; |
|
227
|
|
|
const INVALID_SCHEMA_DEFINITION = '42P15'; |
|
228
|
|
|
const INVALID_TABLE_DEFINITION = '42P16'; |
|
229
|
|
|
const INVALID_OBJECT_DEFINITION = '42P17'; |
|
230
|
|
|
/* 44 - WITH CHECK OPTION Violation */ |
|
231
|
|
|
const WITH_CHECK_OPTION_VIOLATION = '44000'; |
|
232
|
|
|
/* 53 - Insufficient Resources */ |
|
233
|
|
|
const INSUFFICIENT_RESOURCES = '53000'; |
|
234
|
|
|
const DISK_FULL = '53100'; |
|
235
|
|
|
const OUT_OF_MEMORY = '53200'; |
|
236
|
|
|
const TOO_MANY_CONNECTIONS = '53300'; |
|
237
|
|
|
const CONFIGURATION_LIMIT_EXCEEDED = '53400'; |
|
238
|
|
|
/* 54 - Program Limit Exceeded */ |
|
239
|
|
|
const PROGRAM_LIMIT_EXCEEDED = '54000'; |
|
240
|
|
|
const STATEMENT_TOO_COMPLEX = '54001'; |
|
241
|
|
|
const TOO_MANY_COLUMNS = '54011'; |
|
242
|
|
|
const TOO_MANY_ARGUMENTS = '54023'; |
|
243
|
|
|
/* 55 - Object Not In Prerequisite State */ |
|
244
|
|
|
const OBJECT_NOT_IN_PREREQUISITE_STATE = '55000'; |
|
245
|
|
|
const OBJECT_IN_USE = '55006'; |
|
246
|
|
|
const CANT_CHANGE_RUNTIME_PARAM = '55P02'; |
|
247
|
|
|
const LOCK_NOT_AVAILABLE = '55P03'; |
|
248
|
|
|
/* 57 - Operator Intervention */ |
|
249
|
|
|
const OPERATOR_INTERVENTION = '57000'; |
|
250
|
|
|
const QUERY_CANCELED = '57014'; |
|
251
|
|
|
const ADMIN_SHUTDOWN = '57P01'; |
|
252
|
|
|
const CRASH_SHUTDOWN = '57P02'; |
|
253
|
|
|
const CANNOT_CONNECT_NOW = '57P03'; |
|
254
|
|
|
const DATABASE_DROPPED = '57P04'; |
|
255
|
|
|
/* 58 - System Error (errors external to PostgreSQL itself) */ |
|
256
|
|
|
const SYSTEM_ERROR = '58000'; |
|
257
|
|
|
const IO_ERROR = '58030'; |
|
258
|
|
|
const UNDEFINED_FILE = '58P01'; |
|
259
|
|
|
const DUPLICATE_FILE = '58P02'; |
|
260
|
|
|
/* F0 - Configuration File Error */ |
|
261
|
|
|
const CONFIG_FILE_ERROR = 'F0000'; |
|
262
|
|
|
const LOCK_FILE_EXISTS = 'F0001'; |
|
263
|
|
|
/* HV - Foreign Data Wrapper Error (SQL/MED) */ |
|
264
|
|
|
const FDW_ERROR = 'HV000'; |
|
265
|
|
|
const FDW_COLUMN_NAME_NOT_FOUND = 'HV005'; |
|
266
|
|
|
const FDW_DYNAMIC_PARAMETER_VALUE_NEEDED = 'HV002'; |
|
267
|
|
|
const FDW_FUNCTION_SEQUENCE_ERROR = 'HV010'; |
|
268
|
|
|
const FDW_INCONSISTENT_DESCRIPTOR_INFORMATION = 'HV021'; |
|
269
|
|
|
const FDW_INVALID_ATTRIBUTE_VALUE = 'HV024'; |
|
270
|
|
|
const FDW_INVALID_COLUMN_NAME = 'HV007'; |
|
271
|
|
|
const FDW_INVALID_COLUMN_NUMBER = 'HV008'; |
|
272
|
|
|
const FDW_INVALID_DATA_TYPE = 'HV004'; |
|
273
|
|
|
const FDW_INVALID_DATA_TYPE_DESCRIPTORS = 'HV006'; |
|
274
|
|
|
const FDW_INVALID_DESCRIPTOR_FIELD_IDENTIFIER = 'HV091'; |
|
275
|
|
|
const FDW_INVALID_HANDLE = 'HV00B'; |
|
276
|
|
|
const FDW_INVALID_OPTION_INDEX = 'HV00C'; |
|
277
|
|
|
const FDW_INVALID_OPTION_NAME = 'HV00D'; |
|
278
|
|
|
const FDW_INVALID_STRING_LENGTH_OR_BUFFER_LENGTH = 'HV090'; |
|
279
|
|
|
const FDW_INVALID_STRING_FORMAT = 'HV00A'; |
|
280
|
|
|
const FDW_INVALID_USE_OF_NULL_POINTER = 'HV009'; |
|
281
|
|
|
const FDW_TOO_MANY_HANDLES = 'HV014'; |
|
282
|
|
|
const FDW_OUT_OF_MEMORY = 'HV001'; |
|
283
|
|
|
const FDW_NO_SCHEMAS = 'HV00P'; |
|
284
|
|
|
const FDW_OPTION_NAME_NOT_FOUND = 'HV00J'; |
|
285
|
|
|
const FDW_REPLY_HANDLE = 'HV00K'; |
|
286
|
|
|
const FDW_SCHEMA_NOT_FOUND = 'HV00Q'; |
|
287
|
|
|
const FDW_TABLE_NOT_FOUND = 'HV00R'; |
|
288
|
|
|
const FDW_UNABLE_TO_CREATE_EXECUTION = 'HV00L'; |
|
289
|
|
|
const FDW_UNABLE_TO_CREATE_REPLY = 'HV00M'; |
|
290
|
|
|
const FDW_UNABLE_TO_ESTABLISH_CONNECTION = 'HV00N'; |
|
291
|
|
|
/* P0 - PL/pgSQL Error */ |
|
292
|
|
|
const PLPGSQL_ERROR = 'P0000'; |
|
293
|
|
|
const RAISE_EXCEPTION = 'P0001'; |
|
294
|
|
|
const NO_DATA_FOUND = 'P0002'; |
|
295
|
|
|
const TOO_MANY_ROWS = 'P0003'; |
|
296
|
|
|
/* XX - Internal Error */ |
|
297
|
|
|
const INTERNAL_ERROR = 'XX000'; |
|
298
|
|
|
const DATA_CORRUPTED = 'XX001'; |
|
299
|
|
|
const INDEX_CORRUPTED = 'XX002'; |
|
300
|
|
|
|
|
301
|
|
|
protected $result_resource; |
|
302
|
|
|
protected $sql; |
|
303
|
|
|
protected $query_parameters = []; |
|
304
|
|
|
|
|
305
|
|
|
/** |
|
306
|
|
|
* __construct |
|
307
|
|
|
* |
|
308
|
|
|
* @access public |
|
309
|
|
|
* @param resource $result_resource |
|
310
|
|
|
* @param string $sql |
|
311
|
|
|
* @param string $code |
|
312
|
|
|
* @param \Exception $e |
|
313
|
|
|
*/ |
|
314
|
|
|
public function __construct($result_resource, $sql, $code = null, \Exception $e = null) |
|
315
|
|
|
{ |
|
316
|
|
|
$this->result_resource = $result_resource; |
|
317
|
|
|
$this->sql = $sql; |
|
318
|
|
|
parent::__construct( |
|
319
|
|
|
sprintf( |
|
320
|
|
|
"\nSQL error state '%s' [%s]\n====\n%s\n====\n«%s».", |
|
321
|
|
|
$this->getSQLErrorState(), |
|
322
|
|
|
$this->getSQLErrorSeverity(), |
|
323
|
|
|
$this->getSqlErrorMessage(), |
|
324
|
|
|
$sql |
|
325
|
|
|
), |
|
326
|
|
|
$code, |
|
327
|
|
|
$e |
|
328
|
|
|
); |
|
329
|
|
|
} |
|
330
|
|
|
|
|
331
|
|
|
/** |
|
332
|
|
|
* getSQLErrorState |
|
333
|
|
|
* |
|
334
|
|
|
* Returns the SQLSTATE of the last SQL error. |
|
335
|
|
|
* |
|
336
|
|
|
* @link http://www.postgresql.org/docs/9.0/interactive/errcodes-appendix.html |
|
337
|
|
|
* @access public |
|
338
|
|
|
* @return string |
|
339
|
|
|
*/ |
|
340
|
|
|
public function getSQLErrorState() |
|
341
|
|
|
{ |
|
342
|
|
|
return pg_result_error_field($this->result_resource, \PGSQL_DIAG_SQLSTATE); |
|
343
|
|
|
} |
|
344
|
|
|
|
|
345
|
|
|
/** |
|
346
|
|
|
* getSQLErrorSeverity |
|
347
|
|
|
* |
|
348
|
|
|
* Returns the severity level of the error. |
|
349
|
|
|
* |
|
350
|
|
|
* @access public |
|
351
|
|
|
* @return string |
|
352
|
|
|
*/ |
|
353
|
|
|
public function getSQLErrorSeverity() |
|
354
|
|
|
{ |
|
355
|
|
|
return pg_result_error_field($this->result_resource, \PGSQL_DIAG_SEVERITY); |
|
356
|
|
|
} |
|
357
|
|
|
|
|
358
|
|
|
/** |
|
359
|
|
|
* getSqlErrorMessage |
|
360
|
|
|
* |
|
361
|
|
|
* Returns the error message sent by the server. |
|
362
|
|
|
* |
|
363
|
|
|
* @access public |
|
364
|
|
|
* @return string |
|
365
|
|
|
*/ |
|
366
|
|
|
|
|
367
|
|
|
public function getSqlErrorMessage() |
|
368
|
|
|
{ |
|
369
|
|
|
return pg_result_error($this->result_resource); |
|
370
|
|
|
} |
|
371
|
|
|
|
|
372
|
|
|
/** |
|
373
|
|
|
* getSQLDetailedErrorMessage |
|
374
|
|
|
* |
|
375
|
|
|
* @access public |
|
376
|
|
|
* @return string |
|
377
|
|
|
*/ |
|
378
|
|
|
public function getSQLDetailedErrorMessage() |
|
379
|
|
|
{ |
|
380
|
|
|
return sprintf("«%s»\n%s\n(%s)", pg_result_error_field($this->result_resource, \PGSQL_DIAG_MESSAGE_PRIMARY), pg_result_error_field($this->result_resource, \PGSQL_DIAG_MESSAGE_DETAIL), pg_result_error_field($this->result_resource, \PGSQL_DIAG_MESSAGE_HINT)); |
|
381
|
|
|
} |
|
382
|
|
|
|
|
383
|
|
|
/** |
|
384
|
|
|
* getQuery |
|
385
|
|
|
* |
|
386
|
|
|
* Return the associated query. |
|
387
|
|
|
* |
|
388
|
|
|
* @access public |
|
389
|
|
|
* @return string |
|
390
|
|
|
*/ |
|
391
|
|
|
public function getQuery() |
|
392
|
|
|
{ |
|
393
|
|
|
return $this->sql; |
|
394
|
|
|
} |
|
395
|
|
|
|
|
396
|
|
|
/** |
|
397
|
|
|
* setQueryParameters |
|
398
|
|
|
* |
|
399
|
|
|
* Set the query parameters sent with the query. |
|
400
|
|
|
* |
|
401
|
|
|
* @access public |
|
402
|
|
|
* @param array $parameters |
|
403
|
|
|
* @return SqlException $this |
|
404
|
|
|
*/ |
|
405
|
|
|
public function setQueryParameters(array $parameters) |
|
406
|
|
|
{ |
|
407
|
|
|
$this->query_parameters = $parameters; |
|
408
|
|
|
|
|
409
|
|
|
return $this; |
|
410
|
|
|
} |
|
411
|
|
|
|
|
412
|
|
|
/** |
|
413
|
|
|
* getQueryParameters |
|
414
|
|
|
* |
|
415
|
|
|
* Return the query parameters sent with the query. |
|
416
|
|
|
* |
|
417
|
|
|
* @access public |
|
418
|
|
|
* @return array |
|
419
|
|
|
*/ |
|
420
|
|
|
public function getQueryParameters() |
|
421
|
|
|
{ |
|
422
|
|
|
return $this->query_parameters; |
|
423
|
|
|
} |
|
424
|
|
|
} |
|
425
|
|
|
|