Coverage for mindsdb / api / mysql / mysql_proxy / libs / constants / mysql.py: 97%
631 statements
« prev ^ index » next coverage.py v7.13.1, created at 2026-01-21 00:36 +0000
« prev ^ index » next coverage.py v7.13.1, created at 2026-01-21 00:36 +0000
1"""
2*******************************************************
3 * Copyright (C) 2017 MindsDB Inc. <copyright@mindsdb.com>
4 *
5 * This file is part of MindsDB Server.
6 *
7 * MindsDB Server can not be copied and/or distributed without the express
8 * permission of MindsDB Inc
9 *******************************************************
10"""
12import enum
13from dataclasses import dataclass, field
15# CAPABILITIES
16# As defined in : https://dev.mysql.com/doc/dev/mysql-server/8.0.0/group__group__cs__capabilities__flags.html
18MAX_PACKET_SIZE = 16777215
21# capabilities description can be found on page 67 https://books.google.ru/books?id=5TjrxYHRAwEC&printsec=frontcover#v=onepage&q&f=false
22# https://mariadb.com/kb/en/connection/
23# https://dev.mysql.com/doc/internals/en/capability-flags.html
24class CAPABILITIES(object):
25 __slots__ = ()
26 CLIENT_LONG_PASSWORD = 1
27 CLIENT_FOUND_ROWS = 2
28 CLIENT_LONG_FLAG = 4
29 CLIENT_CONNECT_WITH_DB = 8
30 CLIENT_NO_SCHEMA = 16
31 CLIENT_COMPRESS = 32
32 CLIENT_ODBC = 64
33 CLIENT_LOCAL_FILES = 128
34 CLIENT_IGNORE_SPACE = 256
35 CLIENT_PROTOCOL_41 = 512
36 CLIENT_INTERACTIVE = 1024
37 CLIENT_SSL = 2048
38 CLIENT_IGNORE_SIGPIPE = 4096
39 CLIENT_TRANSACTIONS = 8192
40 CLIENT_RESERVED = 16384
41 CLIENT_RESERVED2 = 32768
42 CLIENT_MULTI_STATEMENTS = 1 << 16
43 CLIENT_MULTI_RESULTS = 1 << 17
44 CLIENT_PS_MULTI_RESULTS = 1 << 18
45 CLIENT_PLUGIN_AUTH = 1 << 19
46 CLIENT_CONNECT_ATTRS = 1 << 20
47 CLIENT_PLUGIN_AUTH_LENENC_CLIENT_DATA = 1 << 21
48 CLIENT_CAN_HANDLE_EXPIRED_PASSWORDS = 1 << 22
49 CLIENT_SESSION_TRACK = 1 << 23
50 CLIENT_DEPRECATE_EOF = 1 << 24
51 CLIENT_SSL_VERIFY_SERVER_CERT = 1 << 30
52 CLIENT_REMEMBER_OPTIONS = 1 << 31
53 CLIENT_SECURE_CONNECTION = 0x00008000
56CAPABILITIES = CAPABILITIES()
59# SERVER STATUS
60class SERVER_STATUS(object):
61 __slots__ = ()
62 SERVER_STATUS_IN_TRANS = 1 # A transaction is currently active
63 SERVER_STATUS_AUTOCOMMIT = 2 # Autocommit mode is set
64 SERVER_MORE_RESULTS_EXISTS = 8 # more results exists (more packet follow)
65 SERVER_QUERY_NO_GOOD_INDEX_USED = 16
66 SERVER_QUERY_NO_INDEX_USED = 32
67 SERVER_STATUS_CURSOR_EXISTS = (
68 64 # when using COM_STMT_FETCH, indicate that current cursor still has result (deprecated)
69 )
70 SERVER_STATUS_LAST_ROW_SENT = (
71 128 # when using COM_STMT_FETCH, indicate that current cursor has finished to send results (deprecated)
72 )
73 SERVER_STATUS_DB_DROPPED = 1 << 8 # database has been dropped
74 SERVER_STATUS_NO_BACKSLASH_ESCAPES = 1 << 9 # current escape mode is "no backslash escape"
75 SERVER_STATUS_METADATA_CHANGED = (
76 1 << 10
77 ) # A DDL change did have an impact on an existing PREPARE (an automatic reprepare has been executed)
78 SERVER_QUERY_WAS_SLOW = 1 << 11
79 SERVER_PS_OUT_PARAMs = 1 << 12 # this resultset contain stored procedure output parameter
80 SERVER_STATUS_IN_TRANS_READONLY = 1 << 13 # current transaction is a read-only transaction
81 SERVER_SESSION_STATE_CHANGED = 1 << 14 # session state change. see Session change type for more information
84SERVER_STATUS = SERVER_STATUS()
87# COMMANDS
88class COMMANDS(object):
89 __slots__ = ()
90 COM_CHANGE_USER = int("0x11", 0)
91 COM_DEBUG = int("0x0D", 0)
92 COM_INIT_DB = int("0x02", 0)
93 COM_PING = int("0x0e", 0)
94 COM_PROCESS_KILL = int("0xC", 0)
95 COM_QUERY = int("0x03", 0)
96 COM_QUIT = int("0x01", 0)
97 COM_RESET_CONNECTION = int("0x1f", 0)
98 COM_SET_OPTION = int("0x1b", 0)
99 COM_SHUTDOWN = int("0x0a", 0)
100 COM_SLEEP = int("0x00", 0)
101 COM_STATISTICS = int("0x09", 0)
102 COM_STMT_PREPARE = int("0x16", 0)
103 COM_STMT_EXECUTE = int("0x17", 0)
104 COM_STMT_FETCH = int("0x1c", 0)
105 COM_STMT_RESET = int("0x1a", 0)
106 COM_STMT_CLOSE = int("0x19", 0)
107 COM_FIELD_LIST = int("0x04", 0) # deprecated
110COMMANDS = COMMANDS()
113# FIELD TYPES
114# https://dev.mysql.com/doc/dev/mysql-server/latest/field__types_8h_source.html
115# https://mariadb.com/kb/en/result-set-packets/
116class TYPES(object):
117 __slots__ = ()
118 MYSQL_TYPE_DECIMAL = 0
119 MYSQL_TYPE_TINY = 1
120 MYSQL_TYPE_SHORT = 2
121 MYSQL_TYPE_LONG = 3
122 MYSQL_TYPE_FLOAT = 4
123 MYSQL_TYPE_DOUBLE = 5
124 MYSQL_TYPE_NULL = 6
125 MYSQL_TYPE_TIMESTAMP = 7
126 MYSQL_TYPE_LONGLONG = 8
127 MYSQL_TYPE_INT24 = 9
128 MYSQL_TYPE_DATE = 10
129 MYSQL_TYPE_TIME = 11
130 MYSQL_TYPE_DATETIME = 12
131 MYSQL_TYPE_YEAR = 13
132 MYSQL_TYPE_NEWDATE = 14
133 MYSQL_TYPE_VARCHAR = 15
134 MYSQL_TYPE_BIT = 16
135 MYSQL_TYPE_TIMESTAMP2 = 17
136 MYSQL_TYPE_DATETIME2 = 18
137 MYSQL_TYPE_TIME2 = 19
138 MYSQL_TYPE_TYPED_ARRAY = 20
139 MYSQL_TYPE_VECTOR = 242
140 MYSQL_TYPE_INVALID = 243
141 MYSQL_TYPE_BOOL = 244
142 MYSQL_TYPE_JSON = 245
143 MYSQL_TYPE_NEWDECIMAL = 246
144 MYSQL_TYPE_ENUM = 247
145 MYSQL_TYPE_SET = 248
146 MYSQL_TYPE_TINY_BLOB = 249
147 MYSQL_TYPE_MEDIUM_BLOB = 250
148 MYSQL_TYPE_LONG_BLOB = 251
149 MYSQL_TYPE_BLOB = 252
150 MYSQL_TYPE_VAR_STRING = 253
151 MYSQL_TYPE_STRING = 254
152 MYSQL_TYPE_GEOMETRY = 255
155C_TYPES = TYPES()
156TYPES = TYPES()
159class MYSQL_DATA_TYPE(enum.Enum):
160 TINYINT = "TINYINT"
161 SMALLINT = "SMALLINT"
162 MEDIUMINT = "MEDIUMINT"
163 INT = "INT"
164 BIGINT = "BIGINT"
165 FLOAT = "FLOAT"
166 DOUBLE = "DOUBLE"
167 DECIMAL = "DECIMAL"
168 YEAR = "YEAR"
169 TIME = "TIME"
170 DATE = "DATE"
171 DATETIME = "DATETIME"
172 TIMESTAMP = "TIMESTAMP"
173 CHAR = "CHAR"
174 BINARY = "BINARY"
175 VARCHAR = "VARCHAR"
176 VARBINARY = "VARBINARY"
177 TINYBLOB = "TINYBLOB"
178 TINYTEXT = "TINYTEXT"
179 BLOB = "BLOB"
180 TEXT = "TEXT"
181 MEDIUMBLOB = "MEDIUMBLOB"
182 MEDIUMTEXT = "MEDIUMTEXT"
183 LONGBLOB = "LONGBLOB"
184 LONGTEXT = "LONGTEXT"
185 BIT = "BIT"
186 BOOL = "BOOL"
187 BOOLEAN = "BOOLEAN"
188 JSON = "JSON"
189 VECTOR = "VECTOR"
192# Default values for attributes of MySQL data types as they appear in information_schema.columns
193# These values match the MySQL v8.0.37 defaults and are used to properly represent column metadata
194MYSQL_DATA_TYPE_COLUMNS_DEFAULT = {
195 MYSQL_DATA_TYPE.TINYINT: {"NUMERIC_PRECISION": 3, "NUMERIC_SCALE": 0},
196 MYSQL_DATA_TYPE.SMALLINT: {"NUMERIC_PRECISION": 5, "NUMERIC_SCALE": 0},
197 MYSQL_DATA_TYPE.MEDIUMINT: {"NUMERIC_PRECISION": 7, "NUMERIC_SCALE": 0},
198 MYSQL_DATA_TYPE.INT: {"NUMERIC_PRECISION": 10, "NUMERIC_SCALE": 0},
199 MYSQL_DATA_TYPE.BIGINT: {"NUMERIC_PRECISION": 19, "NUMERIC_SCALE": 0},
200 MYSQL_DATA_TYPE.FLOAT: {"NUMERIC_PRECISION": 12},
201 MYSQL_DATA_TYPE.DOUBLE: {"NUMERIC_PRECISION": 22},
202 MYSQL_DATA_TYPE.DECIMAL: {"NUMERIC_PRECISION": 10, "NUMERIC_SCALE": 0, "COLUMN_TYPE": "decimal(10,0)"},
203 MYSQL_DATA_TYPE.YEAR: {
204 # every column is null
205 },
206 MYSQL_DATA_TYPE.TIME: {"DATETIME_PRECISION": 0},
207 MYSQL_DATA_TYPE.DATE: {
208 # every column is null
209 },
210 MYSQL_DATA_TYPE.DATETIME: {"DATETIME_PRECISION": 0},
211 MYSQL_DATA_TYPE.TIMESTAMP: {"DATETIME_PRECISION": 0},
212 MYSQL_DATA_TYPE.CHAR: {
213 "CHARACTER_MAXIMUM_LENGTH": 1,
214 "CHARACTER_OCTET_LENGTH": 4,
215 "CHARACTER_SET_NAME": "utf8",
216 "COLLATION_NAME": "utf8_bin",
217 "COLUMN_TYPE": "char(1)",
218 },
219 MYSQL_DATA_TYPE.BINARY: {"CHARACTER_MAXIMUM_LENGTH": 1, "CHARACTER_OCTET_LENGTH": 1, "COLUMN_TYPE": "binary(1)"},
220 MYSQL_DATA_TYPE.VARCHAR: {
221 "CHARACTER_MAXIMUM_LENGTH": 1024, # NOTE mandatory for field creation
222 "CHARACTER_OCTET_LENGTH": 4096, # NOTE mandatory for field creation
223 "CHARACTER_SET_NAME": "utf8",
224 "COLLATION_NAME": "utf8_bin",
225 "COLUMN_TYPE": "varchar(1024)",
226 },
227 MYSQL_DATA_TYPE.VARBINARY: {
228 "CHARACTER_MAXIMUM_LENGTH": 1024, # NOTE mandatory for field creation
229 "CHARACTER_OCTET_LENGTH": 1024, # NOTE mandatory for field creation
230 "COLUMN_TYPE": "varbinary(1024)",
231 },
232 MYSQL_DATA_TYPE.TINYBLOB: {"CHARACTER_MAXIMUM_LENGTH": 255, "CHARACTER_OCTET_LENGTH": 255},
233 MYSQL_DATA_TYPE.TINYTEXT: {
234 "CHARACTER_MAXIMUM_LENGTH": 255,
235 "CHARACTER_OCTET_LENGTH": 255,
236 "CHARACTER_SET_NAME": "utf8",
237 "COLLATION_NAME": "utf8_bin",
238 },
239 MYSQL_DATA_TYPE.BLOB: {"CHARACTER_MAXIMUM_LENGTH": 65535, "CHARACTER_OCTET_LENGTH": 65535},
240 MYSQL_DATA_TYPE.TEXT: {
241 "CHARACTER_MAXIMUM_LENGTH": 65535,
242 "CHARACTER_OCTET_LENGTH": 65535,
243 "CHARACTER_SET_NAME": "utf8",
244 "COLLATION_NAME": "utf8_bin",
245 },
246 MYSQL_DATA_TYPE.MEDIUMBLOB: {"CHARACTER_MAXIMUM_LENGTH": 16777215, "CHARACTER_OCTET_LENGTH": 16777215},
247 MYSQL_DATA_TYPE.MEDIUMTEXT: {
248 "CHARACTER_MAXIMUM_LENGTH": 16777215,
249 "CHARACTER_OCTET_LENGTH": 16777215,
250 "CHARACTER_SET_NAME": "utf8",
251 "COLLATION_NAME": "utf8_bin",
252 },
253 MYSQL_DATA_TYPE.LONGBLOB: {
254 "CHARACTER_MAXIMUM_LENGTH": 4294967295,
255 "CHARACTER_OCTET_LENGTH": 4294967295,
256 },
257 MYSQL_DATA_TYPE.LONGTEXT: {
258 "CHARACTER_MAXIMUM_LENGTH": 4294967295,
259 "CHARACTER_OCTET_LENGTH": 4294967295,
260 "CHARACTER_SET_NAME": "utf8",
261 "COLLATION_NAME": "utf8_bin",
262 },
263 MYSQL_DATA_TYPE.BIT: {
264 "NUMERIC_PRECISION": 1,
265 "COLUMN_TYPE": "bit(1)",
266 # 'NUMERIC_SCALE': null
267 },
268 MYSQL_DATA_TYPE.BOOL: {
269 "DATA_TYPE": "tinyint",
270 "NUMERIC_PRECISION": 3,
271 "NUMERIC_SCALE": 0,
272 "COLUMN_TYPE": "tinyint(1)",
273 },
274 MYSQL_DATA_TYPE.BOOLEAN: {
275 "DATA_TYPE": "tinyint",
276 "NUMERIC_PRECISION": 3,
277 "NUMERIC_SCALE": 0,
278 "COLUMN_TYPE": "tinyint(1)",
279 },
280}
283class FIELD_FLAG(object):
284 __slots__ = ()
285 NOT_NULL = 1 # field cannot be null
286 PRIMARY_KEY = 2 # field is a primary key
287 UNIQUE_KEY = 4 # field is unique
288 MULTIPLE_KEY = 8 # field is in a multiple key
289 BLOB = 16 # is this field a Blob
290 UNSIGNED = 32 # is this field unsigned
291 ZEROFILL_FLAG = 64 # is this field a zerofill
292 BINARY_COLLATION = 128 # whether this field has a binary collation
293 ENUM = 256 # Field is an enumeration
294 AUTO_INCREMENT = 512 # field auto-increment
295 TIMESTAMP = 1024 # field is a timestamp value
296 SET = 2048 # field is a SET
297 NO_DEFAULT_VALUE_FLAG = 4096 # field doesn't have default value
298 ON_UPDATE_NOW_FLAG = 8192 # field is set to NOW on UPDATE
299 NUM_FLAG = 32768 # field is num
302FIELD_FLAG = FIELD_FLAG()
305@dataclass(frozen=True)
306class CTypeProperties:
307 """Properties that describe int-representation of mysql column.
309 Attributes:
310 code (int): Code of the mysql type.
311 size (int | None): Size of the column. If not specified, then size is variable (text/blob types).
312 flags (list[int]): Flags of the mysql type.
313 """
315 code: int
316 size: int | None = None
317 flags: list[int] = field(default_factory=list)
320# Map between data types and C types
321# Fields size and flags been taken from tcp dump of mysql-server response
322# https://dev.mysql.com/doc/c-api/8.0/en/c-api-prepared-statement-type-codes.html
323DATA_C_TYPE_MAP = {
324 MYSQL_DATA_TYPE.TINYINT: CTypeProperties(C_TYPES.MYSQL_TYPE_TINY, 4),
325 MYSQL_DATA_TYPE.SMALLINT: CTypeProperties(C_TYPES.MYSQL_TYPE_SHORT, 6),
326 MYSQL_DATA_TYPE.MEDIUMINT: CTypeProperties(C_TYPES.MYSQL_TYPE_INT24, 9),
327 MYSQL_DATA_TYPE.INT: CTypeProperties(C_TYPES.MYSQL_TYPE_LONG, 11),
328 MYSQL_DATA_TYPE.BIGINT: CTypeProperties(C_TYPES.MYSQL_TYPE_LONGLONG, 20),
329 MYSQL_DATA_TYPE.FLOAT: CTypeProperties(C_TYPES.MYSQL_TYPE_FLOAT, 12),
330 MYSQL_DATA_TYPE.DOUBLE: CTypeProperties(C_TYPES.MYSQL_TYPE_DOUBLE, 22),
331 MYSQL_DATA_TYPE.DECIMAL: CTypeProperties(C_TYPES.MYSQL_TYPE_NEWDECIMAL),
332 MYSQL_DATA_TYPE.YEAR: CTypeProperties(C_TYPES.MYSQL_TYPE_YEAR, 4, [FIELD_FLAG.UNSIGNED, FIELD_FLAG.ZEROFILL_FLAG]),
333 MYSQL_DATA_TYPE.TIME: CTypeProperties(C_TYPES.MYSQL_TYPE_TIME, 10, [FIELD_FLAG.BINARY_COLLATION]),
334 MYSQL_DATA_TYPE.DATE: CTypeProperties(C_TYPES.MYSQL_TYPE_DATE, 10, [FIELD_FLAG.BINARY_COLLATION]),
335 MYSQL_DATA_TYPE.DATETIME: CTypeProperties(C_TYPES.MYSQL_TYPE_DATETIME, 19, [FIELD_FLAG.BINARY_COLLATION]),
336 MYSQL_DATA_TYPE.TIMESTAMP: CTypeProperties(
337 C_TYPES.MYSQL_TYPE_TIMESTAMP, 19, [FIELD_FLAG.BINARY_COLLATION, FIELD_FLAG.TIMESTAMP]
338 ),
339 MYSQL_DATA_TYPE.CHAR: CTypeProperties(C_TYPES.MYSQL_TYPE_STRING),
340 MYSQL_DATA_TYPE.BINARY: CTypeProperties(C_TYPES.MYSQL_TYPE_STRING, flags=[FIELD_FLAG.BINARY_COLLATION]),
341 MYSQL_DATA_TYPE.VARCHAR: CTypeProperties(C_TYPES.MYSQL_TYPE_VAR_STRING),
342 MYSQL_DATA_TYPE.VARBINARY: CTypeProperties(C_TYPES.MYSQL_TYPE_VAR_STRING, flags=[FIELD_FLAG.BINARY_COLLATION]),
343 MYSQL_DATA_TYPE.TINYBLOB: CTypeProperties(
344 C_TYPES.MYSQL_TYPE_BLOB, flags=[FIELD_FLAG.BLOB, FIELD_FLAG.BINARY_COLLATION]
345 ),
346 MYSQL_DATA_TYPE.TINYTEXT: CTypeProperties(C_TYPES.MYSQL_TYPE_BLOB, flags=[FIELD_FLAG.BLOB]),
347 MYSQL_DATA_TYPE.BLOB: CTypeProperties(
348 C_TYPES.MYSQL_TYPE_BLOB, flags=[FIELD_FLAG.BLOB, FIELD_FLAG.BINARY_COLLATION]
349 ),
350 MYSQL_DATA_TYPE.TEXT: CTypeProperties(C_TYPES.MYSQL_TYPE_BLOB, flags=[FIELD_FLAG.BLOB]),
351 MYSQL_DATA_TYPE.MEDIUMBLOB: CTypeProperties(
352 C_TYPES.MYSQL_TYPE_BLOB, flags=[FIELD_FLAG.BLOB, FIELD_FLAG.BINARY_COLLATION]
353 ),
354 MYSQL_DATA_TYPE.MEDIUMTEXT: CTypeProperties(C_TYPES.MYSQL_TYPE_BLOB, flags=[FIELD_FLAG.BLOB]),
355 MYSQL_DATA_TYPE.LONGBLOB: CTypeProperties(
356 C_TYPES.MYSQL_TYPE_BLOB, flags=[FIELD_FLAG.BLOB, FIELD_FLAG.BINARY_COLLATION]
357 ),
358 MYSQL_DATA_TYPE.LONGTEXT: CTypeProperties(C_TYPES.MYSQL_TYPE_BLOB, flags=[FIELD_FLAG.BLOB]),
359 MYSQL_DATA_TYPE.BIT: CTypeProperties(C_TYPES.MYSQL_TYPE_BIT, 8, [FIELD_FLAG.UNSIGNED]),
360 MYSQL_DATA_TYPE.BOOL: CTypeProperties(C_TYPES.MYSQL_TYPE_TINY, 1),
361 MYSQL_DATA_TYPE.BOOLEAN: CTypeProperties(C_TYPES.MYSQL_TYPE_TINY, 1),
362 MYSQL_DATA_TYPE.JSON: CTypeProperties(
363 C_TYPES.MYSQL_TYPE_JSON, flags=[FIELD_FLAG.BLOB, FIELD_FLAG.BINARY_COLLATION]
364 ),
365 MYSQL_DATA_TYPE.VECTOR: CTypeProperties(
366 C_TYPES.MYSQL_TYPE_VECTOR, 4096, flags=[FIELD_FLAG.BLOB, FIELD_FLAG.BINARY_COLLATION]
367 ),
368}
371# HANDSHAKE
373DEFAULT_COALLITION_ID = 83
374SERVER_STATUS_AUTOCOMMIT = 2
376# NOTE real mysql-server returns by default all (capabilities 0xffff, extended 0xc1ff)
377DEFAULT_CAPABILITIES = sum(
378 [
379 CAPABILITIES.CLIENT_LONG_PASSWORD,
380 CAPABILITIES.CLIENT_LONG_FLAG,
381 CAPABILITIES.CLIENT_CONNECT_WITH_DB,
382 CAPABILITIES.CLIENT_PROTOCOL_41,
383 CAPABILITIES.CLIENT_TRANSACTIONS,
384 CAPABILITIES.CLIENT_FOUND_ROWS,
385 CAPABILITIES.CLIENT_LOCAL_FILES,
386 CAPABILITIES.CLIENT_CONNECT_ATTRS,
387 CAPABILITIES.CLIENT_PLUGIN_AUTH,
388 CAPABILITIES.CLIENT_SSL,
389 CAPABILITIES.CLIENT_SECURE_CONNECTION,
390 CAPABILITIES.CLIENT_DEPRECATE_EOF,
391 ]
392)
394DEFAULT_AUTH_METHOD = "caching_sha2_password" # [mysql_native_password|caching_sha2_password]
396FILLER_FOR_WIRESHARK_DUMP = 21
399# Datum lenenc encoding
401NULL_VALUE = b"\xfb"
402ONE_BYTE_ENC = b"\xfa"
403TWO_BYTE_ENC = b"\xfc"
404THREE_BYTE_ENC = b"\xfd"
405EIGHT_BYTE_ENC = b"\xfe"
408# ERROR CODES
409class ERR(object):
410 __slots__ = ()
411 ER_OLD_TEMPORALS_UPGRADED = 1880
412 ER_ONLY_FD_AND_RBR_EVENTS_ALLOWED_IN_BINLOG_STATEMENT = 1730
413 ER_ONLY_INTEGERS_ALLOWED = 1578
414 ER_ONLY_ON_RANGE_LIST_PARTITION = 1512
415 ER_OPEN_AS_READONLY = 1036
416 ER_OPERAND_COLUMNS = 1241
417 ER_OPTION_PREVENTS_STATEMENT = 1290
418 ER_ORDER_WITH_PROC = 1386
419 ER_OUT_OF_RESOURCES = 1041
420 ER_OUT_OF_SORTMEMORY = 1038
421 ER_OUTOFMEMORY = 1037
422 ER_PARSE_ERROR = 1064
423 ER_PART_STATE_ERROR = 1522
424 ER_PARTITION_CLAUSE_ON_NONPARTITIONED = 1747
425 ER_PARTITION_COLUMN_LIST_ERROR = 1653
426 ER_PARTITION_CONST_DOMAIN_ERROR = 1563
427 ER_PARTITION_ENTRY_ERROR = 1496
428 ER_PARTITION_EXCHANGE_DIFFERENT_OPTION = 1731
429 ER_PARTITION_EXCHANGE_FOREIGN_KEY = 1740
430 ER_PARTITION_EXCHANGE_PART_TABLE = 1732
431 ER_PARTITION_EXCHANGE_TEMP_TABLE = 1733
432 ER_PARTITION_FIELDS_TOO_LONG = 1660
433 ER_PARTITION_FUNC_NOT_ALLOWED_ERROR = 1491
434 ER_PARTITION_FUNCTION_FAILURE = 1521
435 ER_PARTITION_FUNCTION_IS_NOT_ALLOWED = 1564
436 ER_PARTITION_INSTEAD_OF_SUBPARTITION = 1734
437 ER_PARTITION_MAXVALUE_ERROR = 1481
438 ER_PARTITION_MERGE_ERROR = 1572
439 ER_PARTITION_MGMT_ON_NONPARTITIONED = 1505
440 ER_PARTITION_NAME = 1633
441 ER_PARTITION_NO_TEMPORARY = 1562
442 ER_PARTITION_NOT_DEFINED_ERROR = 1498
443 ER_PARTITION_REQUIRES_VALUES_ERROR = 1479
444 ER_PARTITION_SUBPART_MIX_ERROR = 1483
445 ER_PARTITION_SUBPARTITION_ERROR = 1482
446 ER_PARTITION_WRONG_NO_PART_ERROR = 1484
447 ER_PARTITION_WRONG_NO_SUBPART_ERROR = 1485
448 ER_PARTITION_WRONG_VALUES_ERROR = 1480
449 ER_PARTITIONS_MUST_BE_DEFINED_ERROR = 1492
450 ER_PASSWD_LENGTH = 1372
451 ER_PASSWORD_ANONYMOUS_USER = 1131
452 ER_PASSWORD_FORMAT = 1827
453 ER_PASSWORD_NO_MATCH = 1133
454 ER_PASSWORD_NOT_ALLOWED = 1132
455 ER_PATH_LENGTH = 1680
456 ER_PLUGIN_CANNOT_BE_UNINSTALLED = 1883
457 ER_PLUGIN_IS_NOT_LOADED = 1524
458 ER_PLUGIN_IS_PERMANENT = 1702
459 ER_PLUGIN_NO_INSTALL = 1721
460 ER_PLUGIN_NO_UNINSTALL = 1720
461 ER_PRIMARY_CANT_HAVE_NULL = 1171
462 ER_PROC_AUTO_GRANT_FAIL = 1404
463 ER_PROC_AUTO_REVOKE_FAIL = 1405
464 ER_PROCACCESS_DENIED_ERROR = 1370
465 ER_PS_MANY_PARAM = 1390
466 ER_PS_NO_RECURSION = 1444
467 ER_QUERY_CACHE_DISABLED = 1651
468 ER_QUERY_INTERRUPTED = 1317
469 ER_QUERY_ON_FOREIGN_DATA_SOURCE = 1430
470 ER_QUERY_ON_MASTER = 1219
471 ER_RANGE_NOT_INCREASING_ERROR = 1493
472 ER_RBR_NOT_AVAILABLE = 1574
473 ER_READ_ONLY_MODE = 1836
474 ER_READ_ONLY_TRANSACTION = 1207
475 ER_READY = 1076
476 ER_RECORD_FILE_FULL = 1114
477 ER_REGEXP_ERROR = 1139
478 ER_RELAY_LOG_FAIL = 1371
479 ER_RELAY_LOG_INIT = 1380
480 ER_REMOVED_SPACES = 1466
481 ER_RENAMED_NAME = 1636
482 ER_REORG_HASH_ONLY_ON_SAME_N = 1510
483 ER_REORG_NO_PARAM_ERROR = 1511
484 ER_REORG_OUTSIDE_RANGE = 1520
485 ER_REORG_PARTITION_NOT_EXIST = 1516
486 ER_REQUIRES_PRIMARY_KEY = 1173
487 ER_RESERVED_SYNTAX = 1382
488 ER_RESIGNAL_WITHOUT_ACTIVE_HANDLER = 1645
489 ER_REVOKE_GRANTS = 1269
490 ER_ROW_DOES_NOT_MATCH_GIVEN_PARTITION_SET = 1748
491 ER_ROW_DOES_NOT_MATCH_PARTITION = 1737
492 ER_ROW_IN_WRONG_PARTITION = 1863
493 ER_ROW_IS_REFERENCED = 1217
494 ER_ROW_IS_REFERENCED_2 = 1451
495 ER_ROW_SINGLE_PARTITION_FIELD_ERROR = 1658
496 ER_RPL_INFO_DATA_TOO_LONG = 1742
497 ER_SAME_NAME_PARTITION = 1517
498 ER_SAME_NAME_PARTITION_FIELD = 1652
499 ER_SELECT_REDUCED = 1249
500 ER_SERVER_IS_IN_SECURE_AUTH_MODE = 1275
501 ER_SERVER_SHUTDOWN = 1053
502 ER_SET_CONSTANTS_ONLY = 1204
503 ER_SET_PASSWORD_AUTH_PLUGIN = 1699
504 ER_SET_STATEMENT_CANNOT_INVOKE_FUNCTION = 1769
505 ER_SHUTDOWN_COMPLETE = 1079
506 ER_SIGNAL_BAD_CONDITION_TYPE = 1646
507 ER_SIGNAL_EXCEPTION = 1644
508 ER_SIGNAL_NOT_FOUND = 1643
509 ER_SIGNAL_WARN = 1642
510 ER_SIZE_OVERFLOW_ERROR = 1532
511 ER_SKIPPING_LOGGED_TRANSACTION = 1771
512 ER_SLAVE_CANT_CREATE_CONVERSION = 1678
513 ER_SLAVE_CONFIGURATION = 1794
514 ER_SLAVE_CONVERSION_FAILED = 1677
515 ER_SLAVE_CORRUPT_EVENT = 1610
516 ER_SLAVE_CREATE_EVENT_FAILURE = 1596
517 ER_SLAVE_FATAL_ERROR = 1593
518 ER_SLAVE_HAS_MORE_GTIDS_THAN_MASTER = 1885
519 ER_SLAVE_HEARTBEAT_FAILURE = 1623
520 ER_SLAVE_HEARTBEAT_VALUE_OUT_OF_RANGE = 1624
521 ER_SLAVE_HEARTBEAT_VALUE_OUT_OF_RANGE_MAX = 1704
522 ER_SLAVE_HEARTBEAT_VALUE_OUT_OF_RANGE_MIN = 1703
523 ER_SLAVE_IGNORE_SERVER_IDS = 1650
524 ER_SLAVE_IGNORED_SSL_PARAMS = 1274
525 ER_SLAVE_IGNORED_TABLE = 1237
526 ER_SLAVE_INCIDENT = 1590
527 ER_SLAVE_MASTER_COM_FAILURE = 1597
528 ER_SLAVE_MI_INIT_REPOSITORY = 1871
529 ER_SLAVE_MUST_STOP = 1198
530 ER_SLAVE_NOT_RUNNING = 1199
531 ER_SLAVE_RELAY_LOG_READ_FAILURE = 1594
532 ER_SLAVE_RELAY_LOG_WRITE_FAILURE = 1595
533 ER_SLAVE_RLI_INIT_REPOSITORY = 1872
534 ER_SLAVE_SILENT_RETRY_TRANSACTION = 1806
535 ER_SLAVE_THREAD = 1202
536 ER_SLAVE_WAS_NOT_RUNNING = 1255
537 ER_SLAVE_WAS_RUNNING = 1254
538 ER_SP_ALREADY_EXISTS = 1304
539 ER_SP_BAD_CURSOR_QUERY = 1322
540 ER_SP_BAD_CURSOR_SELECT = 1323
541 ER_SP_BAD_SQLSTATE = 1407
542 ER_SP_BAD_VAR_SHADOW = 1453
543 ER_SP_BADRETURN = 1313
544 ER_SP_BADSELECT = 1312
545 ER_SP_BADSTATEMENT = 1314
546 ER_SP_CANT_ALTER = 1334
547 ER_SP_CANT_SET_AUTOCOMMIT = 1445
548 ER_SP_CASE_NOT_FOUND = 1339
549 ER_SP_COND_MISMATCH = 1319
550 ER_SP_CURSOR_AFTER_HANDLER = 1338
551 ER_SP_CURSOR_ALREADY_OPEN = 1325
552 ER_SP_CURSOR_MISMATCH = 1324
553 ER_SP_CURSOR_NOT_OPEN = 1326
554 ER_SP_DOES_NOT_EXIST = 1305
555 ER_SP_DROP_FAILED = 1306
556 ER_SP_DUP_COND = 1332
557 ER_SP_DUP_CURS = 1333
558 ER_SP_DUP_HANDLER = 1413
559 ER_SP_DUP_PARAM = 1330
560 ER_SP_DUP_VAR = 1331
561 ER_SP_FETCH_NO_DATA = 1329
562 ER_SP_GOTO_IN_HNDLR = 1358
563 ER_SP_LABEL_MISMATCH = 1310
564 ER_SP_LABEL_REDEFINE = 1309
565 ER_SP_LILABEL_MISMATCH = 1308
566 ER_SP_NO_AGGREGATE = 1460
567 ER_SP_NO_DROP_SP = 1357
568 ER_SP_NO_RECURSION = 1424
569 ER_SP_NO_RECURSIVE_CREATE = 1303
570 ER_SP_NO_RETSET = 1415
571 ER_SP_NORETURN = 1320
572 ER_SP_NORETURNEND = 1321
573 ER_SP_NOT_VAR_ARG = 1414
574 ER_SP_PROC_TABLE_CORRUPT = 1457
575 ER_SP_RECURSION_LIMIT = 1456
576 ER_SP_STORE_FAILED = 1307
577 ER_SP_SUBSELECT_NYI = 1335
578 ER_SP_UNDECLARED_VAR = 1327
579 ER_SP_UNINIT_VAR = 1311
580 ER_SP_VARCOND_AFTER_CURSHNDLR = 1337
581 ER_SP_WRONG_NAME = 1458
582 ER_SP_WRONG_NO_OF_ARGS = 1318
583 ER_SP_WRONG_NO_OF_FETCH_ARGS = 1328
584 ER_SPATIAL_CANT_HAVE_NULL = 1252
585 ER_SPATIAL_MUST_HAVE_GEOM_COL = 1687
586 ER_SPECIFIC_ACCESS_DENIED_ERROR = 1227
587 ER_SQL_SLAVE_SKIP_COUNTER_NOT_SETTABLE_IN_GTID_MODE = 1858
588 ER_SQLTHREAD_WITH_SECURE_SLAVE = 1763
589 ER_SR_INVALID_CREATION_CTX = 1601
590 ER_STACK_OVERRUN = 1119
591 ER_STACK_OVERRUN_NEED_MORE = 1436
592 ER_STARTUP = 1408
593 ER_STMT_CACHE_FULL = 1705
594 ER_STMT_HAS_NO_OPEN_CURSOR = 1421
595 ER_STMT_NOT_ALLOWED_IN_SF_OR_TRG = 1336
596 ER_STOP_SLAVE_IO_THREAD_TIMEOUT = 1876
597 ER_STOP_SLAVE_SQL_THREAD_TIMEOUT = 1875
598 ER_STORED_FUNCTION_PREVENTS_SWITCH_BINLOG_FORMAT = 1560
599 ER_STORED_FUNCTION_PREVENTS_SWITCH_SQL_LOG_BIN = 1695
600 ER_STORED_FUNCTION_PREVENTS_SWITCH_BINLOG_DIRECT = 1686
601 ER_SUBPARTITION_ERROR = 1500
602 ER_SUBPARTITION_NAME = 1634
603 ER_SUBQUERY_NO_1_ROW = 1242
604 ER_SYNTAX_ERROR = 1149
605 ER_TABLE_CANT_HANDLE_AUTO_INCREMENT = 1164
606 ER_TABLE_CANT_HANDLE_BLOB = 1163
607 ER_TABLE_CANT_HANDLE_FT = 1214
608 ER_TABLE_CANT_HANDLE_SPKEYS = 1464
609 ER_TABLE_CORRUPT = 1877
610 ER_TABLE_DEF_CHANGED = 1412
611 ER_TABLE_EXISTS_ERROR = 1050
612 ER_TABLE_HAS_NO_FT = 1764
613 ER_TABLE_IN_FK_CHECK = 1725
614 ER_TABLE_IN_SYSTEM_TABLESPACE = 1809
615 ER_TABLE_MUST_HAVE_COLUMNS = 1113
616 ER_TABLE_NAME = 1632
617 ER_TABLE_NEEDS_REBUILD = 1707
618 ER_TABLE_NEEDS_UPGRADE = 1459
619 ER_TABLE_NOT_LOCKED = 1100
620 ER_TABLE_NOT_LOCKED_FOR_WRITE = 1099
621 ER_TABLE_SCHEMA_MISMATCH = 1808
622 ER_TABLEACCESS_DENIED_ERROR = 1142
623 ER_TABLENAME_NOT_ALLOWED_HERE = 1250
624 ER_TABLES_DIFFERENT_METADATA = 1736
625 ER_TABLESPACE_AUTO_EXTEND_ERROR = 1530
626 ER_TABLESPACE_DISCARDED = 1814
627 ER_TABLESPACE_EXISTS = 1813
628 ER_TABLESPACE_MISSING = 1812
629 ER_TEMP_FILE_WRITE_FAILURE = 1878
630 ER_TEMP_TABLE_PREVENTS_SWITCH_OUT_OF_RBR = 1559
631 ER_TEMPORARY_NAME = 1635
632 ER_TEXTFILE_NOT_READABLE = 1085
633 ER_TOO_BIG_DISPLAYWIDTH = 1439
634 ER_TOO_BIG_FIELDLENGTH = 1074
635 ER_TOO_BIG_FOR_UNCOMPRESS = 1256
636 ER_TOO_BIG_PRECISION = 1426
637 ER_TOO_BIG_ROWSIZE = 1118
638 ER_TOO_BIG_SCALE = 1425
639 ER_TOO_BIG_SELECT = 1104
640 ER_TOO_BIG_SET = 1097
641 ER_TOO_HIGH_LEVEL_OF_NESTING_FOR_SELECT = 1473
642 ER_TOO_LONG_BODY = 1437
643 ER_TOO_LONG_FIELD_COMMENT = 1629
644 ER_TOO_LONG_IDENT = 1059
645 ER_TOO_LONG_INDEX_COMMENT = 1688
646 ER_TOO_LONG_KEY = 1071
647 ER_TOO_LONG_STRING = 1162
648 ER_TOO_LONG_TABLE_COMMENT = 1628
649 ER_TOO_LONG_TABLE_PARTITION_COMMENT = 1793
650 ER_TOO_MANY_CONCURRENT_TRXS = 1637
651 ER_TOO_MANY_DELAYED_THREADS = 1151
652 ER_TOO_MANY_FIELDS = 1117
653 ER_TOO_MANY_KEY_PARTS = 1070
654 ER_TOO_MANY_KEYS = 1069
655 ER_TOO_MANY_PARTITION_FUNC_FIELDS_ERROR = 1655
656 ER_TOO_MANY_PARTITIONS_ERROR = 1499
657 ER_TOO_MANY_ROWS = 1172
658 ER_TOO_MANY_TABLES = 1116
659 ER_TOO_MANY_USER_CONNECTIONS = 1203
660 ER_TOO_MANY_VALUES_ERROR = 1657
661 ER_TOO_MUCH_AUTO_TIMESTAMP_COLS = 1293
662 ER_TRANS_CACHE_FULL = 1197
663 ER_TRG_ALREADY_EXISTS = 1359
664 ER_TRG_CANT_CHANGE_ROW = 1362
665 ER_TRG_CANT_OPEN_TABLE = 1606
666 ER_TRG_CORRUPTED_FILE = 1602
667 ER_TRG_DOES_NOT_EXIST = 1360
668 ER_TRG_IN_WRONG_SCHEMA = 1435
669 ER_TRG_INVALID_CREATION_CTX = 1604
670 ER_TRG_NO_CREATION_CTX = 1603
671 ER_TRG_NO_DEFINER = 1454
672 ER_TRG_NO_SUCH_ROW_IN_TRG = 1363
673 ER_TRG_ON_VIEW_OR_TEMP_TABLE = 1361
674 ER_TRUNCATE_ILLEGAL_FK = 1701
675 ER_TRUNCATED_WRONG_VALUE = 1292
676 ER_TRUNCATED_WRONG_VALUE_FOR_FIELD = 1366
677 ER_UDF_EXISTS = 1125
678 ER_UDF_NO_PATHS = 1124
679 ER_UNDO_RECORD_TOO_BIG = 1713
680 ER_UNEXPECTED_EOF = 1039
681 ER_UNION_TABLES_IN_DIFFERENT_DIR = 1212
682 ER_UNIQUE_KEY_NEED_ALL_FIELDS_IN_PF = 1503
683 ER_UNKNOWN_ALTER_ALGORITHM = 1800
684 ER_UNKNOWN_ALTER_LOCK = 1801
685 ER_UNKNOWN_CHARACTER_SET = 1115
686 ER_UNKNOWN_COLLATION = 1273
687 ER_UNKNOWN_COM_ERROR = 1047
688 ER_UNKNOWN_ERROR = 1105
689 ER_UNKNOWN_EXPLAIN_FORMAT = 1791
690 ER_UNKNOWN_KEY_CACHE = 1284
691 ER_UNKNOWN_LOCALE = 1649
692 ER_UNKNOWN_PARTITION = 1735
693 ER_UNKNOWN_PROCEDURE = 1106
694 ER_UNKNOWN_STMT_HANDLER = 1243
695 ER_UNKNOWN_STORAGE_ENGINE = 1286
696 ER_UNKNOWN_SYSTEM_VARIABLE = 1193
697 ER_UNKNOWN_TABLE = 1109
698 ER_UNKNOWN_TARGET_BINLOG = 1373
699 ER_UNKNOWN_TIME_ZONE = 1298
700 ER_UNSUPORTED_LOG_ENGINE = 1579
701 ER_UNSUPPORTED_ENGINE = 1726
702 ER_UNSUPPORTED_EXTENSION = 1112
703 ER_UNSUPPORTED_PS = 1295
704 ER_UNTIL_COND_IGNORED = 1279
705 ER_UPDATE_INF = 1134
706 ER_UPDATE_LOG_DEPRECATED_IGNORED = 1315
707 ER_UPDATE_LOG_DEPRECATED_TRANSLATED = 1316
708 ER_UPDATE_TABLE_USED = 1093
709 ER_UPDATE_WITHOUT_KEY_IN_SAFE_MODE = 1175
710 ER_USER_LIMIT_REACHED = 1226
711 ER_USERNAME = 1468
712 ER_VALUES_IS_NOT_INT_TYPE_ERROR = 1697
713 ER_VAR_CANT_BE_READ = 1233
714 ER_VARIABLE_IS_NOT_STRUCT = 1272
715 ER_VARIABLE_IS_READONLY = 1621
716 ER_VARIABLE_NOT_SETTABLE_IN_SF_OR_TRIGGER = 1765
717 ER_VARIABLE_NOT_SETTABLE_IN_SP = 1838
718 ER_VARIABLE_NOT_SETTABLE_IN_TRANSACTION = 1766
719 ER_VIEW_CHECK_FAILED = 1369
720 ER_VIEW_CHECKSUM = 1392
721 ER_VIEW_DELETE_MERGE_VIEW = 1395
722 ER_VIEW_FRM_NO_USER = 1447
723 ER_VIEW_INVALID = 1356
724 ER_VIEW_INVALID_CREATION_CTX = 1600
725 ER_VIEW_MULTIUPDATE = 1393
726 ER_VIEW_NO_CREATION_CTX = 1599
727 ER_VIEW_NO_EXPLAIN = 1345
728 ER_VIEW_NO_INSERT_FIELD_LIST = 1394
729 ER_VIEW_NONUPD_CHECK = 1368
730 ER_VIEW_OTHER_USER = 1448
731 ER_VIEW_PREVENT_UPDATE = 1443
732 ER_VIEW_RECURSIVE = 1462
733 ER_VIEW_SELECT_CLAUSE = 1350
734 ER_VIEW_SELECT_DERIVED = 1349
735 ER_VIEW_SELECT_TMPTABLE = 1352
736 ER_VIEW_SELECT_VARIABLE = 1351
737 ER_VIEW_WRONG_LIST = 1353
738 ER_WARN_ALLOWED_PACKET_OVERFLOWED = 1301
739 ER_WARN_CANT_DROP_DEFAULT_KEYCACHE = 1438
740 ER_WARN_DATA_OUT_OF_RANGE = 1264
741 ER_WARN_DEPRECATED_SYNTAX = 1287
742 ER_WARN_DEPRECATED_SYNTAX_NO_REPLACEMENT = 1681
743 ER_WARN_DEPRECATED_SYNTAX_WITH_VER = 1554
744 ER_WARN_ENGINE_TRANSACTION_ROLLBACK = 1622
745 ER_WARN_FIELD_RESOLVED = 1276
746 ER_WARN_HOSTNAME_WONT_WORK = 1285
747 ER_WARN_I_S_SKIPPED_TABLE = 1684
748 ER_WARN_INDEX_NOT_APPLICABLE = 1739
749 ER_WARN_INVALID_TIMESTAMP = 1299
750 ER_WARN_NULL_TO_NOTNULL = 1263
751 ER_WARN_PURGE_LOG_IN_USE = 1867
752 ER_WARN_PURGE_LOG_IS_ACTIVE = 1868
753 ER_WARN_QC_RESIZE = 1282
754 ER_WARN_TOO_FEW_RECORDS = 1261
755 ER_WARN_TOO_MANY_RECORDS = 1262
756 ER_WARN_USING_OTHER_HANDLER = 1266
757 ER_WARN_VIEW_MERGE = 1354
758 ER_WARN_VIEW_WITHOUT_KEY = 1355
759 ER_WARNING_NOT_COMPLETE_ROLLBACK = 1196
760 ER_WARNING_NOT_COMPLETE_ROLLBACK_WITH_CREATED_TEMP_TABLE = 1751
761 ER_WARNING_NOT_COMPLETE_ROLLBACK_WITH_DROPPED_TEMP_TABLE = 1752
762 ER_WRONG_ARGUMENTS = 1210
763 ER_WRONG_AUTO_KEY = 1075
764 ER_WRONG_COLUMN_NAME = 1166
765 ER_WRONG_DB_NAME = 1102
766 ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR = 1486
767 ER_WRONG_FIELD_SPEC = 1063
768 ER_WRONG_FIELD_TERMINATORS = 1083
769 ER_WRONG_FIELD_WITH_GROUP = 1055
770 ER_WRONG_FK_DEF = 1239
771 ER_WRONG_GROUP_FIELD = 1056
772 ER_WRONG_KEY_COLUMN = 1167
773 ER_WRONG_LOCK_OF_SYSTEM_TABLE = 1428
774 ER_WRONG_MAGIC = 1389
775 ER_WRONG_MRG_TABLE = 1168
776 ER_WRONG_NAME_FOR_CATALOG = 1281
777 ER_WRONG_NAME_FOR_INDEX = 1280
778 ER_WRONG_NATIVE_TABLE_STRUCTURE = 1682
779 ER_WRONG_NUMBER_OF_COLUMNS_IN_SELECT = 1222
780 ER_WRONG_OBJECT = 1347
781 ER_WRONG_OUTER_JOIN = 1120
782 ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT = 1582
783 ER_WRONG_PARAMCOUNT_TO_PROCEDURE = 1107
784 ER_WRONG_PARAMETERS_TO_NATIVE_FCT = 1583
785 ER_WRONG_PARAMETERS_TO_PROCEDURE = 1108
786 ER_WRONG_PARAMETERS_TO_STORED_FCT = 1584
787 ER_WRONG_PARTITION_NAME = 1567
788 ER_WRONG_PERFSCHEMA_USAGE = 1683
789 ER_WRONG_SIZE_NUMBER = 1531
790 ER_WRONG_SPVAR_TYPE_IN_LIMIT = 1691
791 ER_WRONG_STRING_LENGTH = 1470
792 ER_WRONG_SUB_KEY = 1089
793 ER_WRONG_SUM_SELECT = 1057
794 ER_WRONG_TABLE_NAME = 1103
795 ER_WRONG_TYPE_COLUMN_VALUE_ERROR = 1654
796 ER_WRONG_TYPE_FOR_VAR = 1232
797 ER_WRONG_USAGE = 1221
798 ER_WRONG_VALUE = 1525
799 ER_WRONG_VALUE_COUNT = 1058
800 ER_WRONG_VALUE_COUNT_ON_ROW = 1136
801 ER_WRONG_VALUE_FOR_TYPE = 1411
802 ER_WRONG_VALUE_FOR_VAR = 1231
803 ER_WSAS_FAILED = 1383
804 ER_XA_RBDEADLOCK = 1614
805 ER_XA_RBROLLBACK = 1402
806 ER_XA_RBTIMEOUT = 1613
807 ER_XAER_DUPID = 1440
808 ER_XAER_INVAL = 1398
809 ER_XAER_NOTA = 1397
810 ER_XAER_OUTSIDE = 1400
811 ER_XAER_RMERR = 1401
812 ER_XAER_RMFAIL = 1399
813 ER_YES = 1003
814 ER_ZLIB_Z_BUF_ERROR = 1258
815 ER_ZLIB_Z_DATA_ERROR = 1259
816 ER_ZLIB_Z_MEM_ERROR = 1257
817 ER_BAD_DB_ERROR = 1049
818 ER_BAD_TABLE_ERROR = 1051
819 ER_KEY_COLUMN_DOES_NOT_EXIST = 1072
820 ER_DUP_FIELDNAME = 1060
821 ER_DB_DROP_DELETE = 1009
822 ER_NON_INSERTABLE_TABLE = 1471
823 ER_NOT_SUPPORTED_YET = 1235
826ERR = ERR()
829class WARN(object):
830 __slots__ = ()
831 WARN_COND_ITEM_TRUNCATED = 1647
832 WARN_DATA_TRUNCATED = 1265
833 WARN_NO_MASTER_INF = 1617
834 WARN_NON_ASCII_SEPARATOR_NOT_IMPLEMENTED = 1638
835 WARN_ON_BLOCKHOLE_IN_RBR = 1870
836 WARN_OPTION_BELOW_LIMIT = 1708
837 WARN_OPTION_IGNORED = 1618
838 WARN_PLUGIN_BUSY = 1620
839 WARN_PLUGIN_DELETE_BUILTIN = 1619
842WARN = WARN()
844# CHARACTER SET NUMBERS
846# noqa
847CHARSET_NUMBERS = {
848 "big5_chinese_ci": 1,
849 "latin2_czech_cs": 2,
850 "dec8_swedish_ci": 3,
851 "cp850_general_ci": 4,
852 "latin1_german1_ci": 5,
853 "hp8_english_ci": 6,
854 "koi8r_general_ci": 7,
855 "latin1_swedish_ci": 8,
856 "latin2_general_ci": 9,
857 "swe7_swedish_ci": 10,
858 "ascii_general_ci": 11,
859 "ujis_japanese_ci": 12,
860 "sjis_japanese_ci": 13,
861 "cp1251_bulgarian_ci": 14,
862 "latin1_danish_ci": 15,
863 "hebrew_general_ci": 16,
864 "tis620_thai_ci": 18,
865 "euckr_korean_ci": 19,
866 "latin7_estonian_cs": 20,
867 "latin2_hungarian_ci": 21,
868 "koi8u_general_ci": 22,
869 "cp1251_ukrainian_ci": 23,
870 "gb2312_chinese_ci": 24,
871 "greek_general_ci": 25,
872 "cp1250_general_ci": 26,
873 "latin2_croatian_ci": 27,
874 "gbk_chinese_ci": 28,
875 "cp1257_lithuanian_ci": 29,
876 "latin5_turkish_ci": 30,
877 "latin1_german2_ci": 31,
878 "armscii8_general_ci": 32,
879 "utf8_general_ci": 33,
880 "cp1250_czech_cs": 34,
881 "ucs2_general_ci": 35,
882 "cp866_general_ci": 36,
883 "keybcs2_general_ci": 37,
884 "macce_general_ci": 38,
885 "macroman_general_ci": 39,
886 "cp852_general_ci": 40,
887 "latin7_general_ci": 41,
888 "latin7_general_cs": 42,
889 "macce_bin": 43,
890 "cp1250_croatian_ci": 44,
891 "utf8mb4_general_ci": 45,
892 "utf8mb4_bin": 46,
893 "latin1_bin": 47,
894 "latin1_general_ci": 48,
895 "latin1_general_cs": 49,
896 "cp1251_bin": 50,
897 "cp1251_general_ci": 51,
898 "cp1251_general_cs": 52,
899 "macroman_bin": 53,
900 "utf16_general_ci": 54,
901 "utf16_bin": 55,
902 "utf16le_general_ci": 56,
903 "cp1256_general_ci": 57,
904 "cp1257_bin": 58,
905 "cp1257_general_ci": 59,
906 "utf32_general_ci": 60,
907 "utf32_bin": 61,
908 "utf16le_bin": 62,
909 "binary": 63,
910 "armscii8_bin": 64,
911 "ascii_bin": 65,
912 "cp1250_bin": 66,
913 "cp1256_bin": 67,
914 "cp866_bin": 68,
915 "dec8_bin": 69,
916 "greek_bin": 70,
917 "hebrew_bin": 71,
918 "hp8_bin": 72,
919 "keybcs2_bin": 73,
920 "koi8r_bin": 74,
921 "koi8u_bin": 75,
922 "latin2_bin": 77,
923 "latin5_bin": 78,
924 "latin7_bin": 79,
925 "cp850_bin": 80,
926 "cp852_bin": 81,
927 "swe7_bin": 82,
928 "utf8_bin": 83,
929 "big5_bin": 84,
930 "euckr_bin": 85,
931 "gb2312_bin": 86,
932 "gbk_bin": 87,
933 "sjis_bin": 88,
934 "tis620_bin": 89,
935 "ucs2_bin": 90,
936 "ujis_bin": 91,
937 "geostd8_general_ci": 92,
938 "geostd8_bin": 93,
939 "latin1_spanish_ci": 94,
940 "cp932_japanese_ci": 95,
941 "cp932_bin": 96,
942 "eucjpms_japanese_ci": 97,
943 "eucjpms_bin": 98,
944 "cp1250_polish_ci": 99,
945 "utf16_unicode_ci": 101,
946 "utf16_icelandic_ci": 102,
947 "utf16_latvian_ci": 103,
948 "utf16_romanian_ci": 104,
949 "utf16_slovenian_ci": 105,
950 "utf16_polish_ci": 106,
951 "utf16_estonian_ci": 107,
952 "utf16_spanish_ci": 108,
953 "utf16_swedish_ci": 109,
954 "utf16_turkish_ci": 110,
955 "utf16_czech_ci": 111,
956 "utf16_danish_ci": 112,
957 "utf16_lithuanian_ci": 113,
958 "utf16_slovak_ci": 114,
959 "utf16_spanish2_ci": 115,
960 "utf16_roman_ci": 116,
961 "utf16_persian_ci": 117,
962 "utf16_esperanto_ci": 118,
963 "utf16_hungarian_ci": 119,
964 "utf16_sinhala_ci": 120,
965 "utf16_german2_ci": 121,
966 "utf16_croatian_ci": 122,
967 "utf16_unicode_520_ci": 123,
968 "utf16_vietnamese_ci": 124,
969 "ucs2_unicode_ci": 128,
970 "ucs2_icelandic_ci": 129,
971 "ucs2_latvian_ci": 130,
972 "ucs2_romanian_ci": 131,
973 "ucs2_slovenian_ci": 132,
974 "ucs2_polish_ci": 133,
975 "ucs2_estonian_ci": 134,
976 "ucs2_spanish_ci": 135,
977 "ucs2_swedish_ci": 136,
978 "ucs2_turkish_ci": 137,
979 "ucs2_czech_ci": 138,
980 "ucs2_danish_ci": 139,
981 "ucs2_lithuanian_ci": 140,
982 "ucs2_slovak_ci": 141,
983 "ucs2_spanish2_ci": 142,
984 "ucs2_roman_ci": 143,
985 "ucs2_persian_ci": 144,
986 "ucs2_esperanto_ci": 145,
987 "ucs2_hungarian_ci": 146,
988 "ucs2_sinhala_ci": 147,
989 "ucs2_german2_ci": 148,
990 "ucs2_croatian_ci": 149,
991 "ucs2_unicode_520_ci": 150,
992 "ucs2_vietnamese_ci": 151,
993 "ucs2_general_mysql500_ci": 159,
994 "utf32_unicode_ci": 160,
995 "utf32_icelandic_ci": 161,
996 "utf32_latvian_ci": 162,
997 "utf32_romanian_ci": 163,
998 "utf32_slovenian_ci": 164,
999 "utf32_polish_ci": 165,
1000 "utf32_estonian_ci": 166,
1001 "utf32_spanish_ci": 167,
1002 "utf32_swedish_ci": 168,
1003 "utf32_turkish_ci": 169,
1004 "utf32_czech_ci": 170,
1005 "utf32_danish_ci": 171,
1006 "utf32_lithuanian_ci": 172,
1007 "utf32_slovak_ci": 173,
1008 "utf32_spanish2_ci": 174,
1009 "utf32_roman_ci": 175,
1010 "utf32_persian_ci": 176,
1011 "utf32_esperanto_ci": 177,
1012 "utf32_hungarian_ci": 178,
1013 "utf32_sinhala_ci": 179,
1014 "utf32_german2_ci": 180,
1015 "utf32_croatian_ci": 181,
1016 "utf32_unicode_520_ci": 182,
1017 "utf32_vietnamese_ci": 183,
1018 "utf8_unicode_ci": 192,
1019 "utf8_icelandic_ci": 193,
1020 "utf8_latvian_ci": 194,
1021 "utf8_romanian_ci": 195,
1022 "utf8_slovenian_ci": 196,
1023 "utf8_polish_ci": 197,
1024 "utf8_estonian_ci": 198,
1025 "utf8_spanish_ci": 199,
1026 "utf8_swedish_ci": 200,
1027 "utf8_turkish_ci": 201,
1028 "utf8_czech_ci": 202,
1029 "utf8_danish_ci": 203,
1030 "utf8_lithuanian_ci": 204,
1031 "utf8_slovak_ci": 205,
1032 "utf8_spanish2_ci": 206,
1033 "utf8_roman_ci": 207,
1034 "utf8_persian_ci": 208,
1035 "utf8_esperanto_ci": 209,
1036 "utf8_hungarian_ci": 210,
1037 "utf8_sinhala_ci": 211,
1038 "utf8_german2_ci": 212,
1039 "utf8_croatian_ci": 213,
1040 "utf8_unicode_520_ci": 214,
1041 "utf8_vietnamese_ci": 215,
1042 "utf8_general_mysql500_ci": 223,
1043 "utf8mb4_unicode_ci": 224,
1044 "utf8mb4_icelandic_ci": 225,
1045 "utf8mb4_latvian_ci": 226,
1046 "utf8mb4_romanian_ci": 227,
1047 "utf8mb4_slovenian_ci": 228,
1048 "utf8mb4_polish_ci": 229,
1049 "utf8mb4_estonian_ci": 230,
1050 "utf8mb4_spanish_ci": 231,
1051 "utf8mb4_swedish_ci": 232,
1052 "utf8mb4_turkish_ci": 233,
1053 "utf8mb4_czech_ci": 234,
1054 "utf8mb4_danish_ci": 235,
1055 "utf8mb4_lithuanian_ci": 236,
1056 "utf8mb4_slovak_ci": 237,
1057 "utf8mb4_spanish2_ci": 238,
1058 "utf8mb4_roman_ci": 239,
1059 "utf8mb4_persian_ci": 240,
1060 "utf8mb4_esperanto_ci": 241,
1061 "utf8mb4_hungarian_ci": 242,
1062 "utf8mb4_sinhala_ci": 243,
1063 "utf8mb4_german2_ci": 244,
1064 "utf8mb4_croatian_ci": 245,
1065 "utf8mb4_unicode_520_ci": 246,
1066 "utf8mb4_vietnamese_ci": 247,
1067}
1070SQL_RESERVED_WORDS = [
1071 "ALL",
1072 "ANALYSE",
1073 "ANALYZE",
1074 "AND",
1075 "ANY",
1076 "AS",
1077 "ASC",
1078 "AUTHORIZATION",
1079 "BETWEEN",
1080 "BINARY",
1081 "BOTH",
1082 "CASE",
1083 "CAST",
1084 "CHECK",
1085 "COLLATE",
1086 "COLUMN",
1087 "CONSTRAINT",
1088 "CREATE",
1089 "CROSS",
1090 "CURRENT_DATE",
1091 "CURRENT_TIME",
1092 "CURRENT_TIMESTAMP",
1093 "CURRENT_USER",
1094 "DEFAULT",
1095 "DEFERRABLE",
1096 "DESC",
1097 "DISTINCT",
1098 "DO",
1099 "ELSE",
1100 "END",
1101 "EXCEPT",
1102 "FALSE",
1103 "FOR",
1104 "FOREIGN",
1105 "FREEZE",
1106 "FROM",
1107 "FULL",
1108 "GRANT",
1109 "GROUP",
1110 "HAVING",
1111 "ILIKE",
1112 "IN",
1113 "INITIALLY",
1114 "INNER",
1115 "INTERSECT",
1116 "INTO",
1117 "IS",
1118 "ISNULL",
1119 "JOIN",
1120 "LEADING",
1121 "LEFT",
1122 "LIKE",
1123 "LIMIT",
1124 "LOCALTIME",
1125 "LOCALTIMESTAMP",
1126 "NATURAL",
1127 "NEW",
1128 "NOT",
1129 "NOTNULL",
1130 "NULL",
1131 "OFF",
1132 "OFFSET",
1133 "OLD",
1134 "ON",
1135 "ONLY",
1136 "OR",
1137 "ORDER",
1138 "OUTER",
1139 "OVERLAPS",
1140 "PLACING",
1141 "PRIMARY",
1142 "REFERENCES",
1143 "RIGHT",
1144 "SELECT",
1145 "SESSION_USER",
1146 "SIMILAR",
1147 "SOME",
1148 "TABLE",
1149 "THEN",
1150 "TO",
1151 "TRAILING",
1152 "TRUE",
1153 "UNION",
1154 "UNIQUE",
1155 "USER",
1156 "USING",
1157 "VERBOSE",
1158 "WHEN",
1159 "WHERE",
1160]
1162SERVER_VARIABLES = {
1163 # var_name: (value, type, charset)
1164 "@@session.auto_increment_increment": (1, TYPES.MYSQL_TYPE_LONGLONG, CHARSET_NUMBERS["binary"]),
1165 "@@auto_increment_increment": (1, TYPES.MYSQL_TYPE_LONGLONG, CHARSET_NUMBERS["binary"]),
1166 "@@character_set_client": ("utf8", TYPES.MYSQL_TYPE_VAR_STRING, CHARSET_NUMBERS["utf8_general_ci"]),
1167 "@@character_set_connection": ("utf8", TYPES.MYSQL_TYPE_VAR_STRING, CHARSET_NUMBERS["utf8_general_ci"]),
1168 "@@character_set_results": ("utf8", TYPES.MYSQL_TYPE_VAR_STRING, CHARSET_NUMBERS["utf8_general_ci"]),
1169 "@@GLOBAL.character_set_server": ("latin1", TYPES.MYSQL_TYPE_VAR_STRING, CHARSET_NUMBERS["utf8_general_ci"]),
1170 "@@character_set_server": ("latin1", TYPES.MYSQL_TYPE_VAR_STRING, CHARSET_NUMBERS["utf8_general_ci"]),
1171 "@@GLOBAL.collation_server": ("latin1_swedish_ci", TYPES.MYSQL_TYPE_VAR_STRING, CHARSET_NUMBERS["utf8_general_ci"]),
1172 "@@collation_server": ("latin1_swedish_ci", TYPES.MYSQL_TYPE_VAR_STRING, CHARSET_NUMBERS["utf8_general_ci"]),
1173 "@@init_connect": ("", TYPES.MYSQL_TYPE_VAR_STRING, CHARSET_NUMBERS["utf8_general_ci"]), # None or '' ?
1174 "@@interactive_timeout": (28800, TYPES.MYSQL_TYPE_LONGLONG, CHARSET_NUMBERS["binary"]),
1175 "@@license": ("GPL", TYPES.MYSQL_TYPE_VAR_STRING, CHARSET_NUMBERS["utf8_general_ci"]),
1176 "@@lower_case_table_names": (0, TYPES.MYSQL_TYPE_LONGLONG, CHARSET_NUMBERS["binary"]),
1177 "@@GLOBAL.lower_case_table_names": (0, TYPES.MYSQL_TYPE_LONGLONG, CHARSET_NUMBERS["binary"]),
1178 "@@max_allowed_packet": (16777216, TYPES.MYSQL_TYPE_LONGLONG, CHARSET_NUMBERS["binary"]),
1179 "@@net_buffer_length": (16384, TYPES.MYSQL_TYPE_LONGLONG, CHARSET_NUMBERS["binary"]),
1180 "@@net_write_timeout": (60, TYPES.MYSQL_TYPE_LONGLONG, CHARSET_NUMBERS["binary"]),
1181 "@@query_cache_size": (16777216, TYPES.MYSQL_TYPE_LONGLONG, CHARSET_NUMBERS["binary"]),
1182 "@@query_cache_type": ("OFF", TYPES.MYSQL_TYPE_VAR_STRING, CHARSET_NUMBERS["utf8_general_ci"]),
1183 "@@sql_mode": (
1184 "ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION",
1185 TYPES.MYSQL_TYPE_VAR_STRING,
1186 CHARSET_NUMBERS["utf8_general_ci"],
1187 ),
1188 # '@@system_time_zone': ('MSK', TYPES.MYSQL_TYPE_VAR_STRING, CHARSET_NUMBERS['utf8_general_ci']),
1189 "@@system_time_zone": ("UTC", TYPES.MYSQL_TYPE_VAR_STRING, CHARSET_NUMBERS["utf8_general_ci"]),
1190 "@@time_zone": ("SYSTEM", TYPES.MYSQL_TYPE_VAR_STRING, CHARSET_NUMBERS["utf8_general_ci"]),
1191 "@@session.tx_isolation": ("REPEATABLE-READ", TYPES.MYSQL_TYPE_VAR_STRING, CHARSET_NUMBERS["utf8_general_ci"]),
1192 "@@tx_isolation": ("REPEATABLE-READ", TYPES.MYSQL_TYPE_VAR_STRING, CHARSET_NUMBERS["utf8_general_ci"]),
1193 "@@wait_timeout": (28800, TYPES.MYSQL_TYPE_LONGLONG, CHARSET_NUMBERS["binary"]),
1194 "@@session.tx_read_only": ("0", TYPES.MYSQL_TYPE_VAR_STRING, CHARSET_NUMBERS["utf8_general_ci"]),
1195 "@@version_comment": ("(MindsDB)", TYPES.MYSQL_TYPE_VAR_STRING, CHARSET_NUMBERS["utf8_general_ci"]),
1196 "@@version": ("8.0.17", TYPES.MYSQL_TYPE_VAR_STRING, CHARSET_NUMBERS["utf8_general_ci"]),
1197 "@@collation_connection": ("utf8_general_ci", TYPES.MYSQL_TYPE_VAR_STRING, CHARSET_NUMBERS["utf8_general_ci"]),
1198 "@@performance_schema": (1, TYPES.MYSQL_TYPE_LONGLONG, CHARSET_NUMBERS["binary"]),
1199 "@@GLOBAL.transaction_isolation": (
1200 "REPEATABLE-READ",
1201 TYPES.MYSQL_TYPE_VAR_STRING,
1202 CHARSET_NUMBERS["utf8_general_ci"],
1203 ),
1204 "@@transaction_isolation": ("REPEATABLE-READ", TYPES.MYSQL_TYPE_VAR_STRING, CHARSET_NUMBERS["utf8_general_ci"]),
1205 "@@event_scheduler": ("OFF", TYPES.MYSQL_TYPE_VAR_STRING, CHARSET_NUMBERS["utf8_general_ci"]),
1206 "@@default_storage_engine": ("InnoDB", TYPES.MYSQL_TYPE_VAR_STRING, CHARSET_NUMBERS["utf8_general_ci"]),
1207 "@@default_tmp_storage_engine": ("InnoDB", TYPES.MYSQL_TYPE_VAR_STRING, CHARSET_NUMBERS["utf8_general_ci"]),
1208}
1211class SESSION_TRACK(object):
1212 __slots__ = ()
1213 SESSION_TRACK_SYSTEM_VARIABLES = 0x00
1214 SESSION_TRACK_SCHEMA = 0x01
1215 SESSION_TRACK_STATE_CHANGE = 0x02
1216 SESSION_TRACK_GTIDS = 0x03
1217 SESSION_TRACK_TRANSACTION_CHARACTERISTICS = 0x04
1218 SESSION_TRACK_TRANSACTION_STATE = 0x05
1221SESSION_TRACK = SESSION_TRACK()
1223ALL = vars()
1226def VAR_NAME(val, prefix=""):
1227 global ALL
1229 for key in ALL.keys():
1230 value = ALL[key]
1231 if value == val and key != "val":
1232 if prefix == "" or (prefix != "" and prefix == key[: len(prefix)]):
1233 return key
1234 return None
1237def getConstName(consts, value):
1238 attrs = [x for x in dir(consts) if x.startswith("__") is False]
1239 constNames = {getattr(consts, x): x for x in attrs}
1240 if value in constNames:
1241 return constNames[value]
1242 return None