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

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""" 

11 

12import enum 

13from dataclasses import dataclass, field 

14 

15# CAPABILITIES 

16# As defined in : https://dev.mysql.com/doc/dev/mysql-server/8.0.0/group__group__cs__capabilities__flags.html 

17 

18MAX_PACKET_SIZE = 16777215 

19 

20 

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 

54 

55 

56CAPABILITIES = CAPABILITIES() 

57 

58 

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 

82 

83 

84SERVER_STATUS = SERVER_STATUS() 

85 

86 

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 

108 

109 

110COMMANDS = COMMANDS() 

111 

112 

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 

153 

154 

155C_TYPES = TYPES() 

156TYPES = TYPES() 

157 

158 

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" 

190 

191 

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} 

281 

282 

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 

300 

301 

302FIELD_FLAG = FIELD_FLAG() 

303 

304 

305@dataclass(frozen=True) 

306class CTypeProperties: 

307 """Properties that describe int-representation of mysql column. 

308 

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 """ 

314 

315 code: int 

316 size: int | None = None 

317 flags: list[int] = field(default_factory=list) 

318 

319 

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} 

369 

370 

371# HANDSHAKE 

372 

373DEFAULT_COALLITION_ID = 83 

374SERVER_STATUS_AUTOCOMMIT = 2 

375 

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) 

393 

394DEFAULT_AUTH_METHOD = "caching_sha2_password" # [mysql_native_password|caching_sha2_password] 

395 

396FILLER_FOR_WIRESHARK_DUMP = 21 

397 

398 

399# Datum lenenc encoding 

400 

401NULL_VALUE = b"\xfb" 

402ONE_BYTE_ENC = b"\xfa" 

403TWO_BYTE_ENC = b"\xfc" 

404THREE_BYTE_ENC = b"\xfd" 

405EIGHT_BYTE_ENC = b"\xfe" 

406 

407 

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 

824 

825 

826ERR = ERR() 

827 

828 

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 

840 

841 

842WARN = WARN() 

843 

844# CHARACTER SET NUMBERS 

845 

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} 

1068 

1069 

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] 

1161 

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} 

1209 

1210 

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 

1219 

1220 

1221SESSION_TRACK = SESSION_TRACK() 

1222 

1223ALL = vars() 

1224 

1225 

1226def VAR_NAME(val, prefix=""): 

1227 global ALL 

1228 

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 

1235 

1236 

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