Completed
Push — master ( 6001b7...42953d )
by Ondřej
08:39
created

SqlState   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 284
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 0

Importance

Changes 0
Metric Value
wmc 4
lcom 1
cbo 0
dl 0
loc 284
rs 10
c 0
b 0
f 0

4 Methods

Rating   Name   Duplication   Size   Complexity  
A fromCode() 0 4 1
A __construct() 0 4 1
A getCode() 0 4 1
A getClass() 0 4 1
1
<?php
2
declare(strict_types=1);
3
4
namespace Ivory\Lang\Sql;
5
6
/**
7
 * SQL STATE codes.
8
 *
9
 * @see SqlStateClass
10
 * @see http://www.postgresql.org/docs/10/static/errcodes-appendix.html
11
 */
12
class SqlState
0 ignored issues
show
Coding Style introduced by
Since you have declared the constructor as private, maybe you should also declare the class as final.
Loading history...
13
{
14
    const SUCCESSFUL_COMPLETION = '00000';
15
    const WARNING = '01000';
16
    const NULL_VALUE_ELIMINATED_IN_SET_FUNCTION = '01003';
17
    const STRING_DATA_RIGHT_TRUNCATION_WARNING = '01004';
18
    const PRIVILEGE_NOT_REVOKED = '01006';
19
    const PRIVILEGE_NOT_GRANTED = '01007';
20
    const IMPLICIT_ZERO_BIT_PADDING = '01008';
21
    const DYNAMIC_RESULT_SETS_RETURNED = '0100C';
22
    const DEPRECATED_FEATURE = '01P01';
23
    const NO_DATA = '02000';
24
    const NO_ADDITIONAL_DYNAMIC_RESULT_SETS_RETURNED = '02001';
25
    const SQL_STATEMENT_NOT_YET_COMPLETE = '03000';
26
    const CONNECTION_EXCEPTION = '08000';
27
    const SQLCLIENT_UNABLE_TO_ESTABLISH_SQLCONNECTION = '08001';
28
    const CONNECTION_DOES_NOT_EXIST = '08003';
29
    const SQLSERVER_REJECTED_ESTABLISHMENT_OF_SQLCONNECTION = '08004';
30
    const CONNECTION_FAILURE = '08006';
31
    const TRANSACTION_RESOLUTION_UNKNOWN = '08007';
32
    const PROTOCOL_VIOLATION = '08P01';
33
    const TRIGGERED_ACTION_EXCEPTION = '09000';
34
    const FEATURE_NOT_SUPPORTED = '0A000';
35
    const INVALID_TRANSACTION_INITIATION = '0B000';
36
    const LOCATOR_EXCEPTION = '0F000';
37
    const INVALID_LOCATOR_SPECIFICATION = '0F001';
38
    const INVALID_GRANTOR = '0L000';
39
    const INVALID_GRANT_OPERATION = '0LP01';
40
    const INVALID_ROLE_SPECIFICATION = '0P000';
41
    const DIAGNOSTICS_EXCEPTION = '0Z000';
42
    const STACKED_DIAGNOSTICS_ACCESSED_WITHOUT_ACTIVE_HANDLER = '0Z002';
43
    const CASE_NOT_FOUND = '20000';
44
    const CARDINALITY_VIOLATION = '21000';
45
    const DATA_EXCEPTION = '22000';
46
    const STRING_DATA_RIGHT_TRUNCATION_EXCEPTION = '22001';
47
    const NULL_VALUE_NO_INDICATOR_PARAMETER = '22002';
48
    const NUMERIC_VALUE_OUT_OF_RANGE = '22003';
49
    const NULL_VALUE_NOT_ALLOWED = '22004';
50
    const ERROR_IN_ASSIGNMENT = '22005';
51
    const INVALID_DATETIME_FORMAT = '22007';
52
    const DATETIME_FIELD_OVERFLOW = '22008';
53
    const INVALID_TIME_ZONE_DISPLACEMENT_VALUE = '22009';
54
    const ESCAPE_CHARACTER_CONFLICT = '2200B';
55
    const INVALID_USE_OF_ESCAPE_CHARACTER = '2200C';
56
    const INVALID_ESCAPE_OCTET = '2200D';
57
    const ZERO_LENGTH_CHARACTER_STRING = '2200F';
58
    const MOST_SPECIFIC_TYPE_MISMATCH = '2200G';
59
    /** @since PostgreSQL 10 */
60
    const SEQUENCE_GENERATOR_LIMIT_EXCEEDED = '2200H';
61
    const NOT_AN_XML_DOCUMENT = '2200L';
62
    const INVALID_XML_DOCUMENT = '2200M';
63
    const INVALID_XML_CONTENT = '2200N';
64
    const INVALID_XML_COMMENT = '2200S';
65
    const INVALID_XML_PROCESSING_INSTRUCTION = '2200T';
66
    const INVALID_INDICATOR_PARAMETER_VALUE = '22010';
67
    const SUBSTRING_ERROR = '22011';
68
    const DIVISION_BY_ZERO = '22012';
69
    const INVALID_ARGUMENT_FOR_NTILE_FUNCTION = '22014';
70
    const INTERVAL_FIELD_OVERFLOW = '22015';
71
    const INVALID_ARGUMENT_FOR_NTH_VALUE_FUNCTION = '22016';
72
    const INVALID_CHARACTER_VALUE_FOR_CAST = '22018';
73
    const INVALID_ESCAPE_CHARACTER = '22019';
74
    const INVALID_REGULAR_EXPRESSION = '2201B';
75
    const INVALID_ARGUMENT_FOR_LOGARITHM = '2201E';
76
    const INVALID_ARGUMENT_FOR_POWER_FUNCTION = '2201F';
77
    const INVALID_ARGUMENT_FOR_WIDTH_BUCKET_FUNCTION = '2201G';
78
    const INVALID_ROW_COUNT_IN_LIMIT_CLAUSE = '2201W';
79
    const INVALID_ROW_COUNT_IN_RESULT_OFFSET_CLAUSE = '2201X';
80
    const CHARACTER_NOT_IN_REPERTOIRE = '22021';
81
    const INDICATOR_OVERFLOW = '22022';
82
    const INVALID_PARAMETER_VALUE = '22023';
83
    const UNTERMINATED_C_STRING = '22024';
84
    const INVALID_ESCAPE_SEQUENCE = '22025';
85
    const STRING_DATA_LENGTH_MISMATCH = '22026';
86
    const TRIM_ERROR = '22027';
87
    const ARRAY_SUBSCRIPT_ERROR = '2202E';
88
    /** @since PostgreSQL 9.5 */
89
    const INVALID_TABLESAMPLE_REPEAT = '2202G';
90
    /** @since PostgreSQL 9.5 */
91
    const INVALID_TABLESAMPLE_ARGUMENT = '2202H';
92
    const FLOATING_POINT_EXCEPTION = '22P01';
93
    const INVALID_TEXT_REPRESENTATION = '22P02';
94
    const INVALID_BINARY_REPRESENTATION = '22P03';
95
    const BAD_COPY_FILE_FORMAT = '22P04';
96
    const UNTRANSLATABLE_CHARACTER = '22P05';
97
    const NONSTANDARD_USE_OF_ESCAPE_CHARACTER = '22P06';
98
    const INTEGRITY_CONSTRAINT_VIOLATION = '23000';
99
    const RESTRICT_VIOLATION = '23001';
100
    const NOT_NULL_VIOLATION = '23502';
101
    const FOREIGN_KEY_VIOLATION = '23503';
102
    const UNIQUE_VIOLATION = '23505';
103
    const CHECK_VIOLATION = '23514';
104
    const EXCLUSION_VIOLATION = '23P01';
105
    const INVALID_CURSOR_STATE = '24000';
106
    const INVALID_TRANSACTION_STATE = '25000';
107
    const ACTIVE_SQL_TRANSACTION = '25001';
108
    const BRANCH_TRANSACTION_ALREADY_ACTIVE = '25002';
109
    const INAPPROPRIATE_ACCESS_MODE_FOR_BRANCH_TRANSACTION = '25003';
110
    const INAPPROPRIATE_ISOLATION_LEVEL_FOR_BRANCH_TRANSACTION = '25004';
111
    const NO_ACTIVE_SQL_TRANSACTION_FOR_BRANCH_TRANSACTION = '25005';
112
    const READ_ONLY_SQL_TRANSACTION = '25006';
113
    const SCHEMA_AND_DATA_STATEMENT_MIXING_NOT_SUPPORTED = '25007';
114
    const HELD_CURSOR_REQUIRES_SAME_ISOLATION_LEVEL = '25008';
115
    const NO_ACTIVE_SQL_TRANSACTION = '25P01';
116
    const IN_FAILED_SQL_TRANSACTION = '25P02';
117
    /** @since PostgreSQL 9.6 */
118
    const IDLE_IN_TRANSACTION_SESSION_TIMEOUT = '25P03';
119
    const INVALID_SQL_STATEMENT_NAME = '26000';
120
    const TRIGGERED_DATA_CHANGE_VIOLATION = '27000';
121
    const INVALID_AUTHORIZATION_SPECIFICATION = '28000';
122
    const INVALID_PASSWORD = '28P01';
123
    const DEPENDENT_PRIVILEGE_DESCRIPTORS_STILL_EXIST = '2B000';
124
    const DEPENDENT_OBJECTS_STILL_EXIST = '2BP01';
125
    const INVALID_TRANSACTION_TERMINATION = '2D000';
126
    const SQL_ROUTINE_EXCEPTION = '2F000';
127
    const MODIFYING_SQL_DATA_NOT_PERMITTED_BY_SQL_ROUTINE = '2F002';
128
    const PROHIBITED_SQL_STATEMENT_ATTEMPTED_BY_SQL_ROUTINE = '2F003';
129
    const READING_SQL_DATA_NOT_PERMITTED_BY_SQL_ROUTINE = '2F004';
130
    const FUNCTION_EXECUTED_NO_RETURN_STATEMENT = '2F005';
131
    const INVALID_CURSOR_NAME = '34000';
132
    const EXTERNAL_ROUTINE_EXCEPTION = '38000';
133
    const CONTAINING_SQL_NOT_PERMITTED = '38001';
134
    const MODIFYING_SQL_DATA_NOT_PERMITTED_BY_EXTERNAL_ROUTINE = '38002';
135
    const PROHIBITED_SQL_STATEMENT_ATTEMPTED_BY_EXTERNAL_ROUTINE = '38003';
136
    const READING_SQL_DATA_NOT_PERMITTED_BY_EXTERNAL_ROUTINE = '38004';
137
    const EXTERNAL_ROUTINE_INVOCATION_EXCEPTION = '39000';
138
    const INVALID_SQLSTATE_RETURNED = '39001';
139
    const NULL_VALUE_NOT_ALLOWED_IN_EXTERNAL_ROUTINE = '39004';
140
    const TRIGGER_PROTOCOL_VIOLATED = '39P01';
141
    const SRF_PROTOCOL_VIOLATED = '39P02';
142
    /** @since PostgreSQL 9.5 */
143
    const EVENT_TRIGGER_PROTOCOL_VIOLATED = '39P03';
144
    const SAVEPOINT_EXCEPTION = '3B000';
145
    const INVALID_SAVEPOINT_SPECIFICATION = '3B001';
146
    const INVALID_CATALOG_NAME = '3D000';
147
    const INVALID_SCHEMA_NAME = '3F000';
148
    const TRANSACTION_ROLLBACK = '40000';
149
    const SERIALIZATION_FAILURE = '40001';
150
    const TRANSACTION_INTEGRITY_CONSTRAINT_VIOLATION = '40002';
151
    const STATEMENT_COMPLETION_UNKNOWN = '40003';
152
    const DEADLOCK_DETECTED = '40P01';
153
    const SYNTAX_ERROR_OR_ACCESS_RULE_VIOLATION = '42000';
154
    const INSUFFICIENT_PRIVILEGE = '42501';
155
    const SYNTAX_ERROR = '42601';
156
    const INVALID_NAME = '42602';
157
    const INVALID_COLUMN_DEFINITION = '42611';
158
    const NAME_TOO_LONG = '42622';
159
    const DUPLICATE_COLUMN = '42701';
160
    const AMBIGUOUS_COLUMN = '42702';
161
    const UNDEFINED_COLUMN = '42703';
162
    const UNDEFINED_OBJECT = '42704';
163
    const DUPLICATE_OBJECT = '42710';
164
    const DUPLICATE_ALIAS = '42712';
165
    const DUPLICATE_FUNCTION = '42723';
166
    const AMBIGUOUS_FUNCTION = '42725';
167
    const GROUPING_ERROR = '42803';
168
    const DATATYPE_MISMATCH = '42804';
169
    const WRONG_OBJECT_TYPE = '42809';
170
    const INVALID_FOREIGN_KEY = '42830';
171
    const CANNOT_COERCE = '42846';
172
    const UNDEFINED_FUNCTION = '42883';
173
    /** @since PostgreSQL 10 */
174
    const GENERATED_ALWAYS = '428C9';
175
    const RESERVED_NAME = '42939';
176
    const UNDEFINED_TABLE = '42P01';
177
    const UNDEFINED_PARAMETER = '42P02';
178
    const DUPLICATE_CURSOR = '42P03';
179
    const DUPLICATE_DATABASE = '42P04';
180
    const DUPLICATE_PREPARED_STATEMENT = '42P05';
181
    const DUPLICATE_SCHEMA = '42P06';
182
    const DUPLICATE_TABLE = '42P07';
183
    const AMBIGUOUS_PARAMETER = '42P08';
184
    const AMBIGUOUS_ALIAS = '42P09';
185
    const INVALID_COLUMN_REFERENCE = '42P10';
186
    const INVALID_CURSOR_DEFINITION = '42P11';
187
    const INVALID_DATABASE_DEFINITION = '42P12';
188
    const INVALID_FUNCTION_DEFINITION = '42P13';
189
    const INVALID_PREPARED_STATEMENT_DEFINITION = '42P14';
190
    const INVALID_SCHEMA_DEFINITION = '42P15';
191
    const INVALID_TABLE_DEFINITION = '42P16';
192
    const INVALID_OBJECT_DEFINITION = '42P17';
193
    const INDETERMINATE_DATATYPE = '42P18';
194
    const INVALID_RECURSION = '42P19';
195
    const WINDOWING_ERROR = '42P20';
196
    const COLLATION_MISMATCH = '42P21';
197
    const INDETERMINATE_COLLATION = '42P22';
198
    const WITH_CHECK_OPTION_VIOLATION = '44000';
199
    const INSUFFICIENT_RESOURCES = '53000';
200
    const DISK_FULL = '53100';
201
    const OUT_OF_MEMORY = '53200';
202
    const TOO_MANY_CONNECTIONS = '53300';
203
    const CONFIGURATION_LIMIT_EXCEEDED = '53400';
204
    const PROGRAM_LIMIT_EXCEEDED = '54000';
205
    const STATEMENT_TOO_COMPLEX = '54001';
206
    const TOO_MANY_COLUMNS = '54011';
207
    const TOO_MANY_ARGUMENTS = '54023';
208
    const OBJECT_NOT_IN_PREREQUISITE_STATE = '55000';
209
    const OBJECT_IN_USE = '55006';
210
    const CANT_CHANGE_RUNTIME_PARAM = '55P02';
211
    const LOCK_NOT_AVAILABLE = '55P03';
212
    const OPERATOR_INTERVENTION = '57000';
213
    const QUERY_CANCELED = '57014';
214
    const ADMIN_SHUTDOWN = '57P01';
215
    const CRASH_SHUTDOWN = '57P02';
216
    const CANNOT_CONNECT_NOW = '57P03';
217
    const DATABASE_DROPPED = '57P04';
218
    const SYSTEM_ERROR = '58000';
219
    const IO_ERROR = '58030';
220
    const UNDEFINED_FILE = '58P01';
221
    const DUPLICATE_FILE = '58P02';
222
    /** @since PostgreSQL 9.6 */
223
    const SNAPSHOT_TOO_OLD = '72000';
224
    const CONFIG_FILE_ERROR = 'F0000';
225
    const LOCK_FILE_EXISTS = 'F0001';
226
    const FDW_ERROR = 'HV000';
227
    const FDW_OUT_OF_MEMORY = 'HV001';
228
    const FDW_DYNAMIC_PARAMETER_VALUE_NEEDED = 'HV002';
229
    const FDW_INVALID_DATA_TYPE = 'HV004';
230
    const FDW_COLUMN_NAME_NOT_FOUND = 'HV005';
231
    const FDW_INVALID_DATA_TYPE_DESCRIPTORS = 'HV006';
232
    const FDW_INVALID_COLUMN_NAME = 'HV007';
233
    const FDW_INVALID_COLUMN_NUMBER = 'HV008';
234
    const FDW_INVALID_USE_OF_NULL_POINTER = 'HV009';
235
    const FDW_INVALID_STRING_FORMAT = 'HV00A';
236
    const FDW_INVALID_HANDLE = 'HV00B';
237
    const FDW_INVALID_OPTION_INDEX = 'HV00C';
238
    const FDW_INVALID_OPTION_NAME = 'HV00D';
239
    const FDW_OPTION_NAME_NOT_FOUND = 'HV00J';
240
    const FDW_REPLY_HANDLE = 'HV00K';
241
    const FDW_UNABLE_TO_CREATE_EXECUTION = 'HV00L';
242
    const FDW_UNABLE_TO_CREATE_REPLY = 'HV00M';
243
    const FDW_UNABLE_TO_ESTABLISH_CONNECTION = 'HV00N';
244
    const FDW_NO_SCHEMAS = 'HV00P';
245
    const FDW_SCHEMA_NOT_FOUND = 'HV00Q';
246
    const FDW_TABLE_NOT_FOUND = 'HV00R';
247
    const FDW_FUNCTION_SEQUENCE_ERROR = 'HV010';
248
    const FDW_TOO_MANY_HANDLES = 'HV014';
249
    const FDW_INCONSISTENT_DESCRIPTOR_INFORMATION = 'HV021';
250
    const FDW_INVALID_ATTRIBUTE_VALUE = 'HV024';
251
    const FDW_INVALID_STRING_LENGTH_OR_BUFFER_LENGTH = 'HV090';
252
    const FDW_INVALID_DESCRIPTOR_FIELD_IDENTIFIER = 'HV091';
253
    const PLPGSQL_ERROR = 'P0000';
254
    const RAISE_EXCEPTION = 'P0001';
255
    const NO_DATA_FOUND = 'P0002';
256
    const TOO_MANY_ROWS = 'P0003';
257
    /** @since PostgreSQL 9.5 */
258
    const ASSERT_FAILURE = 'P0004';
259
    const INTERNAL_ERROR = 'XX000';
260
    const DATA_CORRUPTED = 'XX001';
261
    const INDEX_CORRUPTED = 'XX002';
262
263
264
    private $code;
265
266
    /**
267
     * @param string $code SQL STATE code; one of {@link SqlState} constants
268
     * @return SqlState
269
     */
270
    public static function fromCode(string $code): SqlState
271
    {
272
        return new SqlState($code);
273
    }
274
275
    private function __construct(string $code)
276
    {
277
        $this->code = $code;
278
    }
279
280
    /**
281
     * @return string the SQL STATE code; one of {@link SqlState} constants
282
     */
283
    public function getCode(): string
284
    {
285
        return $this->code;
286
    }
287
288
    /**
289
     * @return string the class of the SQL STATE; one of {@link SqlStateClass} constants
290
     */
291
    public function getClass(): string
292
    {
293
        return substr($this->code, 0, 2);
294
    }
295
}
296