 566e920620
			
		
	
	566e920620
	
	
	
		
			
			Co-authored-by: wangt1xiuyi <13547954130@163.com> Co-authored-by: yangqise7en <877793735@qq.com> Co-authored-by: Zach41 <zach_41@163.com>
		
			
				
	
	
		
			1157 lines
		
	
	
		
			30 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			1157 lines
		
	
	
		
			30 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /**
 | |
|  * Copyright (c) 2021 OceanBase
 | |
|  * OceanBase CE is licensed under Mulan PubL v2.
 | |
|  * You can use this software according to the terms and conditions of the Mulan PubL v2.
 | |
|  * You may obtain a copy of Mulan PubL v2 at:
 | |
|  *          http://license.coscl.org.cn/MulanPubL-2.0
 | |
|  * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
 | |
|  * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
 | |
|  * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
 | |
|  * See the Mulan PubL v2 for more details.
 | |
|  */
 | |
| 
 | |
| #include <stdio.h>
 | |
| #include "lib/alloc/alloc_assist.h"
 | |
| #include "ob_non_reserved_keywords.h"
 | |
| #include "sql/parser/sql_parser_mysql_mode_tab.h"
 | |
| 
 | |
| static t_node *mysql_none_reserved_keywords_root = NULL;
 | |
| static t_node *mysql_sql_keywords_in_pl_root = NULL;
 | |
| 
 | |
| /* List of non-reserved keywords */
 | |
| /*一开始会对这些word建立一颗trie树,对于每次的查找来言,树是固定的
 | |
|  *若新添加的keyword含有除大小写字母、'_'和数字以外的其它字符,请联系@叶提修改这颗树。
 | |
|  *实现不需要保证字典序,但是原则上还是保证字典序,方便维护和查找*/
 | |
| static const NonReservedKeyword Mysql_none_reserved_keywords[] =
 | |
| {
 | |
|   {"access", ACCESS},
 | |
|   {"accessible", ACCESSIBLE},
 | |
|   {"account", ACCOUNT},
 | |
|   {"action", ACTION},
 | |
|   {"activate", ACTIVATE},
 | |
|   {"active", ACTIVE},
 | |
|   {"add", ADD},
 | |
|   {"adddate", ADDDATE},
 | |
|   {"after", AFTER},
 | |
|   {"against", AGAINST},
 | |
|   {"aggregate", AGGREGATE},
 | |
|   {"algorithm", ALGORITHM},
 | |
|   {"all", ALL},
 | |
|   {"all_meta", ALL_META},
 | |
|   {"all_user", ALL_USER},
 | |
|   {"alter", ALTER},
 | |
|   {"always", ALWAYS},
 | |
|   {"analyse", ANALYSE},
 | |
|   {"analyze", ANALYZE},
 | |
|   {"and", AND},
 | |
|   {"any", ANY},
 | |
|   {"approx_count_distinct", APPROX_COUNT_DISTINCT},
 | |
|   {"approx_count_distinct_synopsis", APPROX_COUNT_DISTINCT_SYNOPSIS},
 | |
|   {"approx_count_distinct_synopsis_merge", APPROX_COUNT_DISTINCT_SYNOPSIS_MERGE},
 | |
|   {"arbitration", ARBITRATION},
 | |
|   {"archivelog", ARCHIVELOG},
 | |
|   {"as", AS},
 | |
|   {"asc", ASC},
 | |
|   {"asensitive", ASENSITIVE},
 | |
|   {"ascii", ASCII},
 | |
|   {"at", AT},
 | |
|   {"authors", AUTHORS},
 | |
|   {"auto", AUTO},
 | |
|   {"auto_increment", AUTO_INCREMENT},
 | |
|   {"auto_increment_mode", AUTO_INCREMENT_MODE},
 | |
|   {"autoextend_size", AUTOEXTEND_SIZE},
 | |
|   {"availability", AVAILABILITY},
 | |
|   {"avg", AVG},
 | |
|   {"avg_row_length", AVG_ROW_LENGTH},
 | |
|   {"backup", BACKUP},
 | |
|   {"backupset", BACKUPSET},
 | |
|   {"balance", BALANCE},
 | |
|   {"base", BASE},
 | |
|   {"baseline", BASELINE},
 | |
|   {"baseline_id", BASELINE_ID},
 | |
|   {"basic", BASIC},
 | |
|   {"before", BEFORE},
 | |
|   {"begin", BEGI},
 | |
|   {"between", BETWEEN},
 | |
|   {"bigint", BIGINT},
 | |
|   {"binary", BINARY},
 | |
|   {"binlog", BINLOG},
 | |
|   {"bit", BIT},
 | |
|   {"bit_and", BIT_AND},
 | |
|   {"bit_or", BIT_OR},
 | |
|   {"bit_xor", BIT_XOR},
 | |
|   {"blob", BLOB},
 | |
|   {"block", BLOCK},
 | |
|   {"block_size", BLOCK_SIZE},
 | |
|   {"bool", BOOL},
 | |
|   {"boolean", BOOLEAN},
 | |
|   {"bootstrap", BOOTSTRAP},
 | |
|   {"both", BOTH},
 | |
|   {"breadth", BREADTH},
 | |
|   {"btree", BTREE},
 | |
|   {"by", BY},
 | |
|   {"byte", BYTE},
 | |
|   {"buckets", BUCKETS},
 | |
|   {"backup_copies", BACKUP_COPIES},
 | |
|   {"badfile", BADFILE},
 | |
|   {"cache", CACHE},
 | |
|   {"calibration", CALIBRATION},
 | |
|   {"calibration_info", CALIBRATION_INFO},
 | |
|   {"call", CALL},
 | |
|   {"calc_partition_id", CALC_PARTITION_ID},
 | |
|   {"cancel", CANCEL},
 | |
|   {"cascaded", CASCADED},
 | |
|   {"cascade", CASCADE},
 | |
|   {"case", CASE},
 | |
|   {"cast", CAST},
 | |
|   {"catalog_name", CATALOG_NAME},
 | |
|   {"chain", CHAIN},
 | |
|   {"change", CHANGE},
 | |
|   {"changed", CHANGED},
 | |
|   {"char", CHARACTER},
 | |
|   {"character", CHARACTER},
 | |
|   {"charset", CHARSET},
 | |
|   {"check", CHECK},
 | |
|   {"checksum", CHECKSUM},
 | |
|   {"checkpoint", CHECKPOINT},
 | |
|   {"chunk", CHUNK},
 | |
|   {"cipher", CIPHER},
 | |
|   {"class_origin", CLASS_ORIGIN},
 | |
|   {"clean", CLEAN},
 | |
|   {"clear", CLEAR},
 | |
|   {"client", CLIENT},
 | |
|   {"close", CLOSE},
 | |
|   {"cluster", CLUSTER},
 | |
|   {"cluster_name", CLUSTER_NAME},
 | |
|   {"cluster_id", CLUSTER_ID},
 | |
|   {"coalesce", COALESCE},
 | |
|   {"code", CODE},
 | |
|   {"collate", COLLATE},
 | |
|   {"collation", COLLATION},
 | |
|   {"column_format", COLUMN_FORMAT},
 | |
|   {"column_name", COLUMN_NAME},
 | |
|   {"column", COLUMN},
 | |
|   {"columns", COLUMNS},
 | |
|   {"comment", COMMENT},
 | |
|   {"commit", COMMIT},
 | |
|   {"committed", COMMITTED},
 | |
|   {"compact", COMPACT},
 | |
|   {"completion", COMPLETION},
 | |
|   {"compressed", COMPRESSED},
 | |
|   {"compression", COMPRESSION},
 | |
|   {"compute", COMPUTE},
 | |
|   {"concurrent", CONCURRENT},
 | |
|   {"condensed", CONDENSED},
 | |
|   {"condition", CONDITION},
 | |
|   {"connection", CONNECTION},
 | |
|   {"consistent", CONSISTENT},
 | |
|   {"constraint", CONSTRAINT},
 | |
|   {"constraint_catalog", CONSTRAINT_CATALOG},
 | |
|   {"constraint_name", CONSTRAINT_NAME},
 | |
|   {"constraint_schema", CONSTRAINT_SCHEMA},
 | |
|   {"contains", CONTAINS},
 | |
|   {"context", CONTEXT},
 | |
|   {"contributors", CONTRIBUTORS},
 | |
|   {"continue", CONTINUE},
 | |
|   {"connect", CONNECT},
 | |
|   {"convert", CONVERT},
 | |
|   {"copy", COPY},
 | |
|   {"count", COUNT},
 | |
|   {"cpu", CPU},
 | |
|   {"create", CREATE},
 | |
|   {"create_timestamp", CREATE_TIMESTAMP},
 | |
|   {"cross", CROSS},
 | |
|   {"ctxcat", CTXCAT},
 | |
|   {"cube", CUBE},
 | |
|   {"cume_dist", CUME_DIST},
 | |
|   {"curdate", CURDATE},
 | |
|   {"current", CURRENT},
 | |
|   {"current_date", CURRENT_DATE},
 | |
|   {"current_time", CURRENT_TIME},
 | |
|   {"current_timestamp", CURRENT_TIMESTAMP},
 | |
|   {"current_user", CURRENT_USER},
 | |
|   {"cursor", CURSOR},
 | |
|   {"cursor_name", CURSOR_NAME},
 | |
|   {"curtime", CURTIME},
 | |
|   {"ctx_id", CTX_ID},
 | |
|   {"cycle", CYCLE},
 | |
|   {"dag", DAG},
 | |
|   {"data", DATA},
 | |
|   {"database_id", DATABASE_ID},
 | |
|   {"datafile", DATAFILE},
 | |
|   {"data_table_id", DATA_TABLE_ID},
 | |
|   {"database", DATABASE},
 | |
|   {"databases", DATABASES},
 | |
|   {"date", DATE},
 | |
|   {"date_add", DATE_ADD},
 | |
|   {"date_sub", DATE_SUB},
 | |
|   {"datetime", DATETIME},
 | |
|   {"day", DAY},
 | |
|   {"day_hour", DAY_HOUR},
 | |
|   {"day_microsecond", DAY_MICROSECOND},
 | |
|   {"day_minute", DAY_MINUTE},
 | |
|   {"day_second", DAY_SECOND},
 | |
|   {"deallocate", DEALLOCATE},
 | |
|   {"dec", NUMBER},
 | |
|   {"decimal", DECIMAL},
 | |
|   {"declare", DECLARE},
 | |
|   {"decryption", DECRYPTION},
 | |
|   {"default", DEFAULT},
 | |
|   {"default_auth", DEFAULT_AUTH},
 | |
|   {"definer", DEFINER},
 | |
|   {"delay", DELAY},
 | |
|   {"delayed", DELAYED},
 | |
|   {"delay_key_write", DELAY_KEY_WRITE},
 | |
|   {"delete", DELETE},
 | |
|   {"depth", DEPTH},
 | |
|   {"des_key_file", DES_KEY_FILE},
 | |
|   {"destination", DESTINATION},
 | |
|   {"desc", DESC},
 | |
|   {"describe", DESCRIBE},
 | |
|   {"description", DESCRIPTION},
 | |
|   {"deterministic", DETERMINISTIC},
 | |
|   {"dense_rank", DENSE_RANK},
 | |
|   {"diagnostics", DIAGNOSTICS},
 | |
|   {"disconnect", DISCONNECT},
 | |
|   {"directory", DIRECTORY},
 | |
|   {"disable", DISABLE},
 | |
|   {"discard", DISCARD},
 | |
|   {"disk", DISK},
 | |
|   {"diskgroup", DISKGROUP},
 | |
|   {"distinct", DISTINCT},
 | |
|   {"distinctrow", DISTINCT},
 | |
|   {"div", DIV},
 | |
|   {"do", DO},
 | |
|   {"double", DOUBLE},
 | |
|   {"drop", DROP},
 | |
|   {"dual", DUAL},
 | |
|   {"dump", DUMP},
 | |
|   {"dumpfile", DUMPFILE},
 | |
|   {"duplicate", DUPLICATE},
 | |
|   {"dynamic", DYNAMIC},
 | |
|   {"default_tablegroup", DEFAULT_TABLEGROUP},
 | |
|   {"each", EACH},
 | |
|   {"effective", EFFECTIVE},
 | |
|   {"empty", EMPTY},
 | |
|   {"else", ELSE},
 | |
|   {"elseif", ELSEIF},
 | |
|   {"enable", ENABLE},
 | |
|   {"enable_arbitration_service", ENABLE_ARBITRATION_SERVICE},
 | |
|   {"enable_extended_rowid", ENABLE_EXTENDED_ROWID},
 | |
|   {"enclosed", ENCLOSED},
 | |
|   {"encoding", ENCODING},
 | |
|   {"encrypted", ENCRYPTED},
 | |
|   {"encryption", ENCRYPTION},
 | |
|   {"end", END},
 | |
|   {"ends", ENDS},
 | |
|   {"enforced", ENFORCED},
 | |
|   {"engine", ENGINE_},
 | |
|   {"engines", ENGINES},
 | |
|   {"enum", ENUM},
 | |
|   {"empty_field_as_null", EMPTY_FIELD_AS_NULL},
 | |
|   {"entity", ENTITY},
 | |
|   {"error", ERROR_P},
 | |
|   {"error_code", ERROR_CODE},
 | |
|   {"errors", ERRORS},
 | |
|   {"escape", ESCAPE},
 | |
|   {"escaped", ESCAPED},
 | |
|   {"estimate", ESTIMATE},
 | |
|   {"event", EVENT},
 | |
|   {"events", EVENTS},
 | |
|   {"every", EVERY},
 | |
|   {"except", EXCEPT},
 | |
|   {"exchange", EXCHANGE},
 | |
|   {"execute", EXECUTE},
 | |
|   {"exists", EXISTS},
 | |
|   {"exit", EXIT},
 | |
|   {"expansion", EXPANSION},
 | |
|   {"explain", EXPLAIN},
 | |
|   {"expire", EXPIRE},
 | |
|   {"expired", EXPIRED},
 | |
|   {"expire_info", EXPIRE_INFO},
 | |
|   {"export", EXPORT},
 | |
|   {"extended", EXTENDED},
 | |
|   {"extended_noaddr", EXTENDED_NOADDR},
 | |
|   {"extent_size", EXTENT_SIZE},
 | |
|   {"external", EXTERNAL},
 | |
|   {"extract", EXTRACT},
 | |
|   {"failover", FAILOVER},
 | |
|   {"fast", FAST},
 | |
|   {"faults", FAULTS},
 | |
|   {"fetch", FETCH},
 | |
|   {"fields", FIELDS},
 | |
|   {"field_optionally_enclosed_by", FIELD_OPTIONALLY_ENCLOSED_BY},
 | |
|   {"field_delimiter", FIELD_DELIMITER},
 | |
|   {"file", FILEX},
 | |
|   {"file_id", FILE_ID},
 | |
|   {"final_count", FINAL_COUNT},
 | |
|   {"first", FIRST},
 | |
|   {"first_value", FIRST_VALUE},
 | |
|   {"fixed", FIXED},
 | |
|   {"flashback", FLASHBACK},
 | |
|   {"float", FLOAT},
 | |
|   {"float4", FLOAT},
 | |
|   {"float8", DOUBLE},
 | |
|   {"flush", FLUSH},
 | |
|   {"follower", FOLLOWER},
 | |
|   {"for", FOR},
 | |
|   {"force", FORCE},
 | |
|   {"foreign", FOREIGN},
 | |
|   {"format", FORMAT},
 | |
|   {"found", FOUND},
 | |
|   {"fragmentation", FRAGMENTATION},
 | |
|   {"freeze", FREEZE},
 | |
|   {"frequency", FREQUENCY},
 | |
|   {"from", FROM},
 | |
|   {"frozen", FROZEN},
 | |
|   {"full", FULL},
 | |
|   {"fulltext", FULLTEXT},
 | |
|   {"function", FUNCTION},
 | |
|   {"following", FOLLOWING},
 | |
|   {"general", GENERAL},
 | |
|   {"generated", GENERATED},
 | |
|   {"geometry", GEOMETRY},
 | |
|   {"geomcollection", GEOMCOLLECTION},
 | |
|   {"geometrycollection", GEOMETRYCOLLECTION},
 | |
|   {"get", GET},
 | |
|   {"get_format", GET_FORMAT},
 | |
|   {"global", GLOBAL},
 | |
|   {"global_name", GLOBAL_NAME},
 | |
|   {"grant", GRANT},
 | |
|   {"grants", GRANTS},
 | |
|   {"group", GROUP},
 | |
|   {"grouping", GROUPING},
 | |
|   {"group_concat", GROUP_CONCAT},
 | |
|   {"gts", GTS},
 | |
|   {"handler", HANDLER},
 | |
|   {"having", HAVING},
 | |
|   {"hash", HASH},
 | |
|   {"help", HELP},
 | |
|   {"high_priority", HIGH_PRIORITY},
 | |
|   {"histogram", HISTOGRAM},
 | |
|   {"host", HOST},
 | |
|   {"hosts", HOSTS},
 | |
|   {"hour", HOUR},
 | |
|   {"hour_microsecond", HOUR_MICROSECOND},
 | |
|   {"hour_minute", HOUR_MINUTE},
 | |
|   {"hour_second", HOUR_SECOND},
 | |
|   {"hidden", HIDDEN},
 | |
|   {"hybrid_hist", HYBRID_HIST},
 | |
|   {"id", ID},
 | |
|   {"idc", IDC},
 | |
|   {"identified", IDENTIFIED},
 | |
|   {"if", IF},
 | |
|   {"ignore", IGNORE},
 | |
|   {"ignore_server_ids", IGNORE_SERVER_IDS},
 | |
|   {"import", IMPORT},
 | |
|   {"in", IN},
 | |
|   {"incr", INCR},
 | |
|   {"increment", INCREMENT},
 | |
|   {"incremental", INCREMENTAL},
 | |
|   {"index", INDEX},
 | |
|   {"indexes", INDEXES},
 | |
|   {"index_table_id", INDEX_TABLE_ID},
 | |
|   {"infile", INFILE},
 | |
|   {"info", INFO},
 | |
|   {"initial_size", INITIAL_SIZE},
 | |
|   {"inner", INNER},
 | |
|   {"innodb", INNODB},
 | |
|   {"inout", INOUT},
 | |
|   {"insensitive", INSENSITIVE},
 | |
|   {"insert_method", INSERT_METHOD},
 | |
|   {"install", INSTALL},
 | |
|   {"instance", INSTANCE},
 | |
|   {"int", INTEGER},
 | |
|   {"int1", TINYINT},
 | |
|   {"int2", SMALLINT},
 | |
|   {"int3", MEDIUMINT},
 | |
|   {"int4", INTEGER},
 | |
|   {"int8", BIGINT},
 | |
|   {"insert", INSERT},
 | |
|   {"integer", INTEGER},
 | |
|   {"into", INTO},
 | |
|   {"intersect", INTERSECT},
 | |
|   {"invisible", INVISIBLE},
 | |
|   {"invoker", INVOKER},
 | |
|   {"io", IO},
 | |
|   {"iops_weight", IOPS_WEIGHT},
 | |
|   {"io_after_gtids", IO_AFTER_GTIDS},
 | |
|   {"io_before_gtids", IO_BEFORE_GTIDS},
 | |
|   {"io_thread", IO_THREAD},
 | |
|   {"ipc", IPC},
 | |
|   {"is", IS},
 | |
|   {"issuer", ISSUER},
 | |
|   {"isnull", ISNULL},
 | |
|   {"isolate", ISOLATE},
 | |
|   {"isolation", ISOLATION},
 | |
|   {"issuer", ISSUER},
 | |
|   {"iterate", ITERATE},
 | |
|   {"job", JOB},
 | |
|   {"join", JOIN},
 | |
|   {"json", JSON},
 | |
|   {"json_arrayagg", JSON_ARRAYAGG},
 | |
|   {"json_objectagg", JSON_OBJECTAGG},
 | |
|   {"json_value", JSON_VALUE},
 | |
|   {"json_table", JSON_TABLE},
 | |
|   {"key", KEY},
 | |
|   {"keys", KEYS},
 | |
|   {"key_block_size", KEY_BLOCK_SIZE},
 | |
|   {"key_version", KEY_VERSION},
 | |
|   {"kill", KILL},
 | |
|   {"kvcache", KVCACHE},
 | |
|   {"ilogcache", ILOGCACHE},
 | |
|   {"indexed", INDEXED},
 | |
|   {"file_id", FILE_ID},
 | |
|   {"lag", LAG},
 | |
|   {"language", LANGUAGE},
 | |
|   {"last", LAST},
 | |
|   {"last_value", LAST_VALUE},
 | |
|   {"lead", LEAD},
 | |
|   {"leader", LEADER},
 | |
|   {"leading", LEADING},
 | |
|   {"leave", LEAVE},
 | |
|   {"leaves", LEAVES},
 | |
|   {"leak", LEAK},
 | |
|   {"leak_mod", LEAK_MOD},
 | |
|   {"leak_rate", LEAK_RATE},
 | |
|   {"left", LEFT},
 | |
|   {"less", LESS},
 | |
|   {"level", LEVEL},
 | |
|   {"link", LINK},
 | |
|   {"lib", LIB},
 | |
|   {"like", LIKE},
 | |
|   {"limit", LIMIT},
 | |
|   {"linear", LINEAR},
 | |
|   {"lines", LINES},
 | |
|   {"linestring", LINESTRING},
 | |
|   {"line_delimiter", LINE_DELIMITER},
 | |
|   {"list", BISON_LIST},
 | |
|   {"listagg", LISTAGG},
 | |
|   {"load", LOAD},
 | |
|   {"ln", LN},
 | |
|   {"local", LOCAL},
 | |
|   {"locality", LOCALITY},
 | |
|   {"localtime", LOCALTIME},
 | |
|   {"localtimestamp", LOCALTIMESTAMP},
 | |
|   {"location", LOCATION},
 | |
|   {"lock", LOCK_},
 | |
|   {"locked", LOCKED},
 | |
|   {"locks", LOCKS},
 | |
|   {"logfile", LOGFILE},
 | |
|   {"logonly_replica_num", LOGONLY_REPLICA_NUM},
 | |
|   {"log", LOG},
 | |
|   {"logs", LOGS},
 | |
|   {"log_restore_source", LOG_RESTORE_SOURCE},
 | |
|   {"long", MEDIUMTEXT},
 | |
|   {"longblob", LONGBLOB},
 | |
|   {"longtext", LONGTEXT},
 | |
|   {"loop", LOOP},
 | |
|   {"low_priority", LOW_PRIORITY},
 | |
|   {"ls", LS},
 | |
|   {"major", MAJOR},
 | |
|   {"manual", MANUAL},
 | |
|   {"master", MASTER},
 | |
|   {"master_bind", MASTER_BIND},
 | |
|   {"master_auto_position", MASTER_AUTO_POSITION},
 | |
|   {"master_connect_retry", MASTER_CONNECT_RETRY},
 | |
|   {"master_delay", MASTER_DELAY},
 | |
|   {"master_heartbeat_period", MASTER_HEARTBEAT_PERIOD},
 | |
|   {"master_host", MASTER_HOST},
 | |
|   {"master_log_file", MASTER_LOG_FILE},
 | |
|   {"master_log_pos", MASTER_LOG_POS},
 | |
|   {"master_password", MASTER_PASSWORD},
 | |
|   {"master_port", MASTER_PORT},
 | |
|   {"master_retry_count", MASTER_RETRY_COUNT},
 | |
|   {"master_server_id", MASTER_SERVER_ID},
 | |
|   {"master_ssl", MASTER_SSL},
 | |
|   {"master_ssl_ca", MASTER_SSL_CA},
 | |
|   {"master_ssl_capath", MASTER_SSL_CAPATH},
 | |
|   {"master_ssl_cert", MASTER_SSL_CERT},
 | |
|   {"master_ssl_cipher", MASTER_SSL_CIPHER},
 | |
|   {"master_ssl_crl", MASTER_SSL_CRL},
 | |
|   {"master_ssl_crlpath", MASTER_SSL_CRLPATH},
 | |
|   {"master_ssl_key", MASTER_SSL_KEY},
 | |
|   {"master_ssl_verify_server_cert", MASTER_SSL_VERIFY_SERVER_CERT},
 | |
|   {"master_user", MASTER_USER},
 | |
|   {"match", MATCH},
 | |
|   {"max", MAX},
 | |
|   {"maxvalue", MAXVALUE},
 | |
|   {"maximize", MAXIMIZE},
 | |
|   {"max_connections_per_hour", MAX_CONNECTIONS_PER_HOUR},
 | |
|   {"max_cpu", MAX_CPU},
 | |
|   {"log_disk_size", LOG_DISK_SIZE},
 | |
|   {"max_iops", MAX_IOPS},
 | |
|   {"memory_size", MEMORY_SIZE},
 | |
|   {"max_queries_per_hour", MAX_QUERIES_PER_HOUR},
 | |
|   {"max_rows", MAX_ROWS},
 | |
|   {"max_size", MAX_SIZE},
 | |
|   {"max_updates_per_hour", MAX_UPDATES_PER_HOUR},
 | |
|   {"max_used_part_id", MAX_USED_PART_ID},
 | |
|   {"max_user_connections", MAX_USER_CONNECTIONS},
 | |
|   {"medium", MEDIUM},
 | |
|   {"member", MEMBER},
 | |
|   {"mediumblob", MEDIUMBLOB},
 | |
|   {"mediumint", MEDIUMINT},
 | |
|   {"mediumtext", MEDIUMTEXT},
 | |
|   {"memory", MEMORY},
 | |
|   {"memstore_percent", MEMSTORE_PERCENT},
 | |
|   {"memtable", MEMTABLE},
 | |
|   {"merge", MERGE},
 | |
|   {"message_text", MESSAGE_TEXT},
 | |
|   {"meta", META},
 | |
|   {"microsecond", MICROSECOND},
 | |
|   {"middleint", MEDIUMINT},
 | |
|   {"migrate", MIGRATE},
 | |
|   {"migration", MIGRATION},
 | |
|   {"min", MIN},
 | |
|   {"minvalue", MINVALUE},
 | |
|   {"min_cpu", MIN_CPU},
 | |
|   {"min_iops", MIN_IOPS},
 | |
|   {"min_max", MIN_MAX},
 | |
|   {"min_rows", MIN_ROWS},
 | |
|   {"minor", MINOR},
 | |
|   {"minute", MINUTE},
 | |
|   {"minute_microsecond", MINUTE_MICROSECOND},
 | |
|   {"minute_second", MINUTE_SECOND},
 | |
|   {"minus", MINUS},
 | |
|   {"mod", MOD},
 | |
|   {"mode", MODE},
 | |
|   {"modify", MODIFY},
 | |
|   {"modifies", MODIFIES},
 | |
|   {"month", MONTH},
 | |
|   {"move", MOVE},
 | |
|   {"multilinestring", MULTILINESTRING},
 | |
|   {"multipoint", MULTIPOINT},
 | |
|   {"multipolygon", MULTIPOLYGON},
 | |
|   {"mutex", MUTEX},
 | |
|   {"mysql_errno", MYSQL_ERRNO},
 | |
|   {"my_name", MY_NAME},
 | |
|   {"name", NAME},
 | |
|   {"names", NAMES},
 | |
|   {"namespace", NAMESPACE},
 | |
|   {"national", NATIONAL},
 | |
|   {"natural", NATURAL},
 | |
|   {"nchar", NCHAR},
 | |
|   {"ndb", NDB},
 | |
|   {"ndbcluster", NDBCLUSTER},
 | |
|   {"nested", NESTED},
 | |
|   {"new", NEW},
 | |
|   {"next", NEXT},
 | |
|   {"no", NO},
 | |
|   {"no_write_to_binlog", NO_WRITE_TO_BINLOG},
 | |
|   {"noarchivelog", NOARCHIVELOG},
 | |
|   {"noaudit", NOAUDIT},
 | |
|   {"nocache", NOCACHE},
 | |
|   {"nocycle", NOCYCLE},
 | |
|   {"nomaxvalue", NOMAXVALUE},
 | |
|   {"nominvalue", NOMINVALUE},
 | |
|   {"noorder", NOORDER},
 | |
|   {"no_parallel", NO_PARALLEL},
 | |
|   {"no_rewrite", NO_REWRITE},
 | |
|   {"no_wait", NO_WAIT},
 | |
|   {"nodegroup", NODEGROUP},
 | |
|   {"none", NONE},
 | |
|   {"noparallel", NOPARALLEL},
 | |
|   {"normal", NORMAL},
 | |
|   {"now", NOW},
 | |
|   {"nowait", NOWAIT},
 | |
|   {"nulls", NULLS},
 | |
|   {"null_if", NULL_IF_EXETERNAL},
 | |
|   {"numeric", DECIMAL},
 | |
|   {"number", NUMBER},
 | |
|   {"nvarchar", NVARCHAR},
 | |
|   {"occur", OCCUR},
 | |
|   {"ntile", NTILE},
 | |
|   {"nth_value", NTH_VALUE},
 | |
|   {"obconfig_url", OBCONFIG_URL},
 | |
|   {"of", OF},
 | |
|   {"off", OFF},
 | |
|   {"offset", OFFSET},
 | |
|   {"old", OLD},
 | |
|   {"old_key", OLD_KEY},
 | |
|   {"oj", OJ},
 | |
|   {"over", OVER},
 | |
|   {"old_password", OLD_PASSWORD},
 | |
|   {"on", ON},
 | |
|   {"one", ONE},
 | |
|   {"one_shot", ONE_SHOT},
 | |
|   {"only", ONLY},
 | |
|   {"open", OPEN},
 | |
|   {"optimize", OPTIMIZE},
 | |
|   {"option", OPTION},
 | |
|   {"optionally", OPTIONALLY},
 | |
|   {"options", OPTIONS},
 | |
|   {"or", OR},
 | |
|   {"order", ORDER},
 | |
|   {"ordinality", ORDINALITY},
 | |
|   {"orig_default", ORIG_DEFAULT},
 | |
|   {"out", OUT},
 | |
|   {"outer", OUTER},
 | |
|   {"outfile", OUTFILE},
 | |
|   {"outline", OUTLINE},
 | |
|   {"owner", OWNER},
 | |
|   {"pack_keys", PACK_KEYS},
 | |
|   {"page", PAGE},
 | |
|   {"parameters", PARAMETERS},
 | |
|   {"parallel", PARALLEL},
 | |
|   {"parser", PARSER},
 | |
|   {"partial", PARTIAL},
 | |
|   {"partition", PARTITION},
 | |
|   {"partition_id", PARTITION_ID},
 | |
|   {"partitioning", PARTITIONING},
 | |
|   {"partitions", PARTITIONS},
 | |
|   {"password", PASSWORD},
 | |
|   {"path", PATH},
 | |
|   {"pattern", PATTERN},
 | |
|   {"pause", PAUSE},
 | |
|   {"percentage", PERCENTAGE},
 | |
|   {"percent_rank", PERCENT_RANK},
 | |
|   {"performance", PERFORMANCE},
 | |
|   {"phase", PHASE},
 | |
|   {"physical", PHYSICAL},
 | |
|   {"plan", PLAN},
 | |
|   {"planregress", PLANREGRESS},
 | |
|   {"plugin", PLUGIN},
 | |
|   {"plugin_dir", PLUGIN_DIR},
 | |
|   {"plugins", PLUGINS},
 | |
|   {"plus", PLUS},
 | |
|   {"point", POINT},
 | |
|   {"policy", POLICY},
 | |
|   {"polygon", POLYGON},
 | |
|   {"pool", POOL},
 | |
|   {"port", PORT},
 | |
|   {"position", POSITION},
 | |
|   {"precision", PRECISION},
 | |
|   {"prepare", PREPARE},
 | |
|   {"preserve", PRESERVE},
 | |
|   {"prev", PREV},
 | |
|   {"primary", PRIMARY},
 | |
|   {"primary_zone", PRIMARY_ZONE},
 | |
|   {"privileges", PRIVILEGES},
 | |
|   {"procedure", PROCEDURE},
 | |
|   {"process", PROCESS},
 | |
|   {"processlist", PROCESSLIST},
 | |
|   {"profile", PROFILE},
 | |
|   {"profiles", PROFILES},
 | |
|   {"progressive_merge_num", PROGRESSIVE_MERGE_NUM},
 | |
|   {"protection", PROTECTION},
 | |
|   {"proxy", PROXY},
 | |
|   {"public", PUBLIC},
 | |
|   {"purge", PURGE},
 | |
|   {"p_entity", P_ENTITY},
 | |
|   {"p_chunk", P_CHUNK},
 | |
|   {"preceding", PRECEDING},
 | |
|   {"pctfree", PCTFREE},
 | |
|   {"ps", PS},
 | |
|   {"quarter", QUARTER},
 | |
|   {"query", QUERY},
 | |
|   {"quick", QUICK},
 | |
|   {"range", RANGE},
 | |
|   {"rank", RANK},
 | |
|   {"read", READ},
 | |
|   {"read_write", READ_WRITE},
 | |
|   {"read_consistency", READ_CONSISTENCY},
 | |
|   {"read_only", READ_ONLY},
 | |
|   {"reads", READS},
 | |
|   {"real", REAL},
 | |
|   {"rebuild", REBUILD},
 | |
|   {"recover", RECOVER},
 | |
|   {"recovery", RECOVERY},
 | |
|   {"recovery_window", RECOVERY_WINDOW},
 | |
|   {"recycle", RECYCLE},
 | |
|   {"recyclebin", RECYCLEBIN},
 | |
|   {"redo_buffer_size", REDO_BUFFER_SIZE},
 | |
|   {"redo_transport_options", REDO_TRANSPORT_OPTIONS},
 | |
|   {"redofile", REDOFILE},
 | |
|   {"redundancy", REDUNDANCY},
 | |
|   {"redundant", REDUNDANT},
 | |
|   {"references", REFERENCES},
 | |
|   {"refresh", REFRESH},
 | |
|   {"regexp", REGEXP},
 | |
|   {"region", REGION},
 | |
|   {"reject", REJECT},
 | |
|   {"relay", RELAY},
 | |
|   {"relay_log_file", RELAY_LOG_FILE},
 | |
|   {"relay_log_pos", RELAY_LOG_POS},
 | |
|   {"relay_thread", RELAY_THREAD},
 | |
|   {"relaylog", RELAYLOG},
 | |
|   {"release", RELEASE},
 | |
|   {"reload", RELOAD},
 | |
|   {"remap", REMAP},
 | |
|   {"remove", REMOVE},
 | |
|   {"rename", RENAME},
 | |
|   {"reorganize", REORGANIZE},
 | |
|   {"repair", REPAIR},
 | |
|   {"repeat", REPEAT},
 | |
|   {"repeatable", REPEATABLE},
 | |
|   {"replace", REPLACE},
 | |
|   {"replica", REPLICA},
 | |
|   {"replica_num", REPLICA_NUM},
 | |
|   {"replica_type", REPLICA_TYPE},
 | |
|   {"duplicate_scope", DUPLICATE_SCOPE},
 | |
|   {"replication", REPLICATION},
 | |
|   {"report", REPORT},
 | |
|   {"require", REQUIRE},
 | |
|   {"reset", RESET},
 | |
|   {"resignal", RESIGNAL},
 | |
|   {"resource", RESOURCE},
 | |
|   {"resource_pool_list", RESOURCE_POOL_LIST},
 | |
|   {"respect", RESPECT},
 | |
|   {"restart", RESTART},
 | |
|   {"restore", RESTORE},
 | |
|   {"restrict", RESTRICT},
 | |
|   {"resume", RESUME},
 | |
|   {"returning", RETURNING},
 | |
|   {"returned_sqlstate", RETURNED_SQLSTATE},
 | |
|   {"return", RETURN},
 | |
|   {"returns", RETURNS},
 | |
|   {"reverse", REVERSE},
 | |
|   {"revoke", REVOKE},
 | |
|   {"right", RIGHT},
 | |
|   {"rlike", REGEXP},
 | |
|   {"rollback", ROLLBACK},
 | |
|   {"rolling", ROLLING},
 | |
|   {"rollup", ROLLUP},
 | |
|   {"root", ROOT},
 | |
|   {"rootservice", ROOTSERVICE},
 | |
|   {"rootservice_list", ROOTSERVICE_LIST},
 | |
|   {"roottable", ROOTTABLE},
 | |
|   {"rotate", ROTATE},
 | |
|   {"routine", ROUTINE},
 | |
|   {"row", ROW},
 | |
|   {"row_count", ROW_COUNT},
 | |
|   {"row_format", ROW_FORMAT},
 | |
|   {"row_number", ROW_NUMBER},
 | |
|   {"rows", ROWS},
 | |
|   {"rtree", RTREE},
 | |
|   {"run", RUN},
 | |
|   {"sample", SAMPLE},
 | |
|   {"savepoint", SAVEPOINT},
 | |
|   {"schedule", SCHEDULE},
 | |
|   {"schema_name", SCHEMA_NAME},
 | |
|   {"scn", SCN},
 | |
|   {"scope", SCOPE},
 | |
|   {"second", SECOND},
 | |
|   {"second_microsecond", SECOND_MICROSECOND},
 | |
|   {"security", SECURITY},
 | |
|   {"seed", SEED},
 | |
|   {"sensitive", SENSITIVE},
 | |
|   {"sequence", SEQUENCE},
 | |
|   {"sequences", SEQUENCES},
 | |
|   {"serial", SERIAL},
 | |
|   {"serializable", SERIALIZABLE},
 | |
|   {"server", SERVER},
 | |
|   {"server_ip", SERVER_IP},
 | |
|   {"server_port", SERVER_PORT},
 | |
|   {"server_type", SERVER_TYPE},
 | |
|   {"service", SERVICE},
 | |
|   {"set", SET},
 | |
|   {"session", SESSION},
 | |
|   {"session_user", SESSION_USER},
 | |
|   {"skip_header", SKIP_HEADER},
 | |
|   {"skip_blank_lines", SKIP_BLANK_LINES},
 | |
|   {"statements", STATEMENTS},
 | |
|   {"statistics", STATISTICS},
 | |
|   {"binding", BINDING},
 | |
|   {"sharding", SHARDING},
 | |
|   {"schema", SCHEMA},
 | |
|   {"schemas", SCHEMAS},
 | |
|   {"select", SELECT},
 | |
|   {"set_master_cluster", SET_MASTER_CLUSTER},
 | |
|   {"set_slave_cluster", SET_SLAVE_CLUSTER},
 | |
|   {"set_tp", SET_TP},
 | |
|   {"separator", SEPARATOR},
 | |
|   {"share", SHARE},
 | |
|   {"show", SHOW},
 | |
|   {"skewonly", SKEWONLY},
 | |
|   {"skip_index", SKIP_INDEX},
 | |
|   {"shutdown", SHUTDOWN},
 | |
|   {"signed", SIGNED},
 | |
|   {"signal", SIGNAL},
 | |
|   {"simple", SIMPLE},
 | |
|   {"slave", SLAVE},
 | |
|   {"size", SIZE},
 | |
|   {"slog", SLOG},
 | |
|   {"slow", SLOW},
 | |
|   {"slot_idx", SLOT_IDX},
 | |
|   {"smallint", SMALLINT},
 | |
|   {"snapshot", SNAPSHOT},
 | |
|   {"socket", SOCKET},
 | |
|   {"some", SOME},
 | |
|   {"soname", SONAME},
 | |
|   {"sounds", SOUNDS},
 | |
|   {"source", SOURCE},
 | |
|   {"spatial", SPATIAL},
 | |
|   {"specific", SPECIFIC},
 | |
|   {"spfile", SPFILE},
 | |
|   {"split", SPLIT},
 | |
|   {"sql", SQL},
 | |
|   {"sqlexception", SQLEXCEPTION},
 | |
|   {"sqlstate", SQLSTATE},
 | |
|   {"sqlwarning", SQLWARNING},
 | |
|   {"sql_big_result", SQL_BIG_RESULT},
 | |
|   {"sql_calc_found_rows", SQL_CALC_FOUND_ROWS},
 | |
|   {"sql_small_result", SQL_SMALL_RESULT},
 | |
|   {"sql_after_gtids", SQL_AFTER_GTIDS},
 | |
|   {"sql_after_mts_gaps", SQL_AFTER_MTS_GAPS},
 | |
|   {"sql_before_gtids", SQL_BEFORE_GTIDS},
 | |
|   {"sql_buffer_result", SQL_BUFFER_RESULT},
 | |
|   {"sql_cache", SQL_CACHE},
 | |
|   {"sql_id", SQL_ID},
 | |
|   {"sql_no_cache", SQL_NO_CACHE},
 | |
|   {"sql_thread", SQL_THREAD},
 | |
|   {"sql_tsi_day", SQL_TSI_DAY},
 | |
|   {"sql_tsi_hour", SQL_TSI_HOUR},
 | |
|   {"sql_tsi_minute", SQL_TSI_MINUTE},
 | |
|   {"sql_tsi_month", SQL_TSI_MONTH},
 | |
|   {"sql_tsi_quarter", SQL_TSI_QUARTER},
 | |
|   {"sql_tsi_second", SQL_TSI_SECOND},
 | |
|   {"sql_tsi_week", SQL_TSI_WEEK},
 | |
|   {"sql_tsi_year", SQL_TSI_YEAR},
 | |
|   {"srid", SRID},
 | |
|   {"ssl", SSL},
 | |
|   {"stacked", STACKED},
 | |
|   {"standby", STANDBY},
 | |
|   {"start", START},
 | |
|   {"starts", STARTS},
 | |
|   {"starting", STARTING},
 | |
|   {"straight_join", STRAIGHT_JOIN},
 | |
|   {"stat", STAT},
 | |
|   {"stats_auto_recalc", STATS_AUTO_RECALC},
 | |
|   {"stats_persistent", STATS_PERSISTENT},
 | |
|   {"stats_sample_pages", STATS_SAMPLE_PAGES},
 | |
|   {"status", STATUS},
 | |
|   {"std", STD},
 | |
|   {"stddev", STDDEV},
 | |
|   {"stddev_pop", STDDEV_POP},
 | |
|   {"stddev_samp", STDDEV_SAMP},
 | |
|   {"stop", STOP},
 | |
|   {"storage", STORAGE},
 | |
|   {"storage_format_version", STORAGE_FORMAT_VERSION},
 | |
|   {"stored", STORED},
 | |
|   {"storing", STORING},
 | |
|   {"string", STRING},
 | |
|   {"strong", STRONG},
 | |
|   {"subclass_origin", SUBCLASS_ORIGIN},
 | |
|   {"subdate", SUBDATE},
 | |
|   {"subject", SUBJECT},
 | |
|   {"subpartition", SUBPARTITION},
 | |
|   {"subpartitions", SUBPARTITIONS},
 | |
|   {"substr", SUBSTR},
 | |
|   {"substring", SUBSTRING},
 | |
|   {"sum", SUM},
 | |
|   {"super", SUPER},
 | |
|   {"suspend", SUSPEND},
 | |
|   {"successful", SUCCESSFUL},
 | |
|   {"synchronization", SYNCHRONIZATION},
 | |
|   {"sysdate", SYSDATE},
 | |
|   {"system", SYSTEM},
 | |
|   {"system_user", SYSTEM_USER},
 | |
|   {"swaps", SWAPS},
 | |
|   {"switch", SWITCH},
 | |
|   {"switches", SWITCHES},
 | |
|   {"switchover", SWITCHOVER},
 | |
|   {"table", TABLE},
 | |
|   {"table_checksum", TABLE_CHECKSUM},
 | |
|   {"table_mode", TABLE_MODE},
 | |
|   {"table_id", TABLE_ID},
 | |
|   {"table_name", TABLE_NAME},
 | |
|   {"tablegroup", TABLEGROUP},
 | |
|   {"tablegroups", TABLEGROUPS},
 | |
|   {"tablegroup_id", TABLEGROUP_ID},
 | |
|   {"tables", TABLES},
 | |
|   {"tablespace", TABLESPACE},
 | |
|   {"tablet", TABLET},
 | |
|   {"tablet_id", TABLET_ID},
 | |
|   {"tablet_max_size", TABLET_MAX_SIZE},
 | |
|   {"task", TASK},
 | |
|   {"template", TEMPLATE},
 | |
|   {"temporary", TEMPORARY},
 | |
|   {"temptable", TEMPTABLE},
 | |
|   {"tenant", TENANT},
 | |
|   {"tenant_id", TENANT_ID},
 | |
|   {"terminated", TERMINATED},
 | |
|   {"text", TEXT},
 | |
|   {"than", THAN},
 | |
|   {"then", THEN},
 | |
|   {"time", TIME},
 | |
|   {"timestamp", TIMESTAMP},
 | |
|   {"timestampadd", TIMESTAMPADD},
 | |
|   {"timestampdiff", TIMESTAMPDIFF},
 | |
|   {"tinyblob", TINYBLOB},
 | |
|   {"tinyint", TINYINT},
 | |
|   {"tinytext", TINYTEXT},
 | |
|   {"tablet_size", TABLET_SIZE},
 | |
|   {"tp_name", TP_NAME},
 | |
|   {"tp_no", TP_NO},
 | |
|   {"trace", TRACE},
 | |
|   {"traditional", TRADITIONAL},
 | |
|   {"trailing", TRAILING},
 | |
|   {"transaction", TRANSACTION},
 | |
|   {"trigger", TRIGGER},
 | |
|   {"triggers", TRIGGERS},
 | |
|   {"trim", TRIM},
 | |
|   {"trim_space", TRIM_SPACE},
 | |
|   {"truncate", TRUNCATE},
 | |
|   {"type", TYPE},
 | |
|   {"types", TYPES},
 | |
|   {"to", TO},
 | |
|   {"top_k_fre_hist", TOP_K_FRE_HIST},
 | |
|   {"uncommitted", UNCOMMITTED},
 | |
|   {"undefined", UNDEFINED},
 | |
|   {"undo", UNDO},
 | |
|   {"undo_buffer_size", UNDO_BUFFER_SIZE},
 | |
|   {"undofile", UNDOFILE},
 | |
|   {"union", UNION},
 | |
|   {"unique", UNIQUE},
 | |
|   {"unicode", UNICODE},
 | |
|   {"uninstall", UNINSTALL},
 | |
|   {"unit", UNIT},
 | |
|   {"unit_group", UNIT_GROUP},
 | |
|   {"unit_num", UNIT_NUM},
 | |
|   {"unknown", UNKNOWN},
 | |
|   {"unlock", UNLOCK},
 | |
|   {"unlocked", UNLOCKED},
 | |
|   {"unsigned", UNSIGNED},
 | |
|   {"until", UNTIL},
 | |
|   {"unusual", UNUSUAL},
 | |
|   {"update", UPDATE},
 | |
|   {"upgrade", UPGRADE},
 | |
|   {"usage", USAGE},
 | |
|   {"use", USE},
 | |
|   {"using", USING},
 | |
|   {"use_bloom_filter", USE_BLOOM_FILTER},
 | |
|   {"use_frm", USE_FRM},
 | |
|   {"user", USER},
 | |
|   {"user_resources", USER_RESOURCES},
 | |
|   {"utc_date", UTC_DATE},
 | |
|   {"utc_time", UTC_TIME},
 | |
|   {"utc_timestamp", UTC_TIMESTAMP},
 | |
|   {"unbounded", UNBOUNDED},
 | |
|   {"unlimited", UNLIMITED},
 | |
|   {"valid", VALID},
 | |
|   {"validate", VALIDATE},
 | |
|   {"value", VALUE},
 | |
|   {"varbinary", VARBINARY},
 | |
|   {"varchar", VARCHAR},
 | |
|   {"varcharacter", VARCHAR},
 | |
|   {"variance", VARIANCE},
 | |
|   {"variables", VARIABLES},
 | |
|   {"var_pop", VAR_POP},
 | |
|   {"var_samp", VAR_SAMP},
 | |
|   {"verbose", VERBOSE},
 | |
|   {"verify", VERIFY},
 | |
|   {"materialized", MATERIALIZED},
 | |
|   {"validate", VALIDATE},
 | |
|   {"values", VALUES},
 | |
|   {"varying", VARYING},
 | |
|   {"view", VIEW},
 | |
|   {"virtual", VIRTUAL},
 | |
|   {"virtual_column_id", VIRTUAL_COLUMN_ID},
 | |
|   {"visible", VISIBLE},
 | |
|   {"wait", WAIT},
 | |
|   {"warnings", WARNINGS},
 | |
|   {"weak", WEAK},
 | |
|   {"week", WEEK},
 | |
|   {"weight_string", WEIGHT_STRING},
 | |
|   {"where", WHERE},
 | |
|   {"when", WHEN},
 | |
|   {"whenever", WHENEVER},
 | |
|   {"while", WHILE},
 | |
|   {"window", WINDOW},
 | |
|   {"with", WITH},
 | |
|   {"work", WORK},
 | |
|   {"write", WRITE},
 | |
|   {"wrapper", WRAPPER},
 | |
|   {"x509", X509},
 | |
|   {"xa", XA},
 | |
|   {"xml", XML},
 | |
|   {"xor", XOR},
 | |
|   {"year", YEAR},
 | |
|   {"year_month", YEAR_MONTH},
 | |
|   {"zone", ZONE},
 | |
|   {"zone_list", ZONE_LIST},
 | |
|   {"time_zone_info", TIME_ZONE_INFO},
 | |
|   {"zone_type", ZONE_TYPE},
 | |
|   {"zerofill", ZEROFILL},
 | |
|   {"audit", AUDIT},
 | |
|   {"PL", PL},
 | |
|   {"remote_oss", REMOTE_OSS},
 | |
|   {"throttle", THROTTLE},
 | |
|   {"priority", PRIORITY},
 | |
|   {"rt", RT},
 | |
|   {"network", NETWORK},
 | |
|   {"logical_reads", LOGICAL_READS},
 | |
|   {"queue_time", QUEUE_TIME},
 | |
|   {"obsolete", OBSOLETE},
 | |
|   {"bandwidth", BANDWIDTH},
 | |
|   {"backuppiece", BACKUPPIECE},
 | |
|   {"backup_backup_dest", BACKUP_BACKUP_DEST},
 | |
|   {"backed", BACKED},
 | |
|   {"pretty", PRETTY},
 | |
|   {"pretty_color", PRETTY_COLOR},
 | |
|   {"preview", PREVIEW},
 | |
|   {"up", UP},
 | |
|   {"times", TIMES},
 | |
|   {"backupround", BACKUPROUND},
 | |
|   {"recursive", RECURSIVE},
 | |
|   {"wash", WASH},
 | |
|   {"query_response_time",QUERY_RESPONSE_TIME},
 | |
|   {"statement_id", STATEMENT_ID},
 | |
|   {"TTL", TTL},
 | |
|   {"kv_attributes", KV_ATTRIBUTES},
 | |
| };
 | |
| 
 | |
| /** https://dev.mysql.com/doc/refman/5.7/en/sql-syntax-prepared-statements.html
 | |
|  ALTER TABLE
 | |
|  ALTER USER
 | |
|  ANALYZE TABLE
 | |
|  CACHE INDEX
 | |
|  CALL
 | |
|  CHANGE MASTER
 | |
|  CHECKSUM {TABLE | TABLES}
 | |
|  COMMIT
 | |
|  {CREATE | DROP} INDEX
 | |
|  {CREATE | RENAME | DROP} DATABASE
 | |
|  {CREATE | DROP} TABLE
 | |
|  {CREATE | RENAME | DROP} USER
 | |
|  {CREATE | DROP} VIEW
 | |
|  DELETE
 | |
|  DO
 | |
|  FLUSH {TABLE | TABLES | TABLES WITH READ LOCK | HOSTS | PRIVILEGES
 | |
|    | LOGS | STATUS | MASTER | SLAVE | DES_KEY_FILE | USER_RESOURCES}
 | |
|  GRANT
 | |
|  INSERT
 | |
|  INSTALL PLUGIN
 | |
|  KILL
 | |
|  \LOAD INDEX INTO CACHE
 | |
|  OPTIMIZE TABLE
 | |
|  RENAME TABLE
 | |
|  REPAIR TABLE
 | |
|  REPLACE
 | |
|  RESET {MASTER | SLAVE | QUERY CACHE}
 | |
|  REVOKE
 | |
|  SELECT
 | |
|  SET
 | |
|  SHOW {WARNINGS | ERRORS}
 | |
|  SHOW BINLOG EVENTS
 | |
|  SHOW CREATE {PROCEDURE | FUNCTION | EVENT | TABLE | VIEW}
 | |
|  SHOW {MASTER | BINARY} LOGS
 | |
|  SHOW {MASTER | SLAVE} STATUS
 | |
|  SLAVE {START | STOP}
 | |
|  TRUNCATE TABLE
 | |
|  UNINSTALL PLUGIN
 | |
|  UPDATE
 | |
|  */
 | |
| static const NonReservedKeyword Mysql_sql_keywords_in_pl[] =
 | |
| {
 | |
|   {"alter", ALTER},
 | |
|   {"analyze", ANALYZE},
 | |
|   {"binary", BINARY},
 | |
|   {"binlog", BINLOG},
 | |
|   {"cache", CACHE},
 | |
|   {"call", CALL},
 | |
|   {"change", CHANGE},
 | |
|   {"checksum", CHECKSUM},
 | |
|   {"commit", COMMIT},
 | |
|   {"create", CREATE},
 | |
|   {"database", DATABASE},
 | |
|   {"delete", DELETE},
 | |
|   {"des_key_file", DES_KEY_FILE},
 | |
|   {"do", DO},
 | |
|   {"drop", DROP},
 | |
|   {"errors", ERRORS},
 | |
|   {"event", EVENT},
 | |
|   {"events", EVENTS},
 | |
|   {"flush", FLUSH},
 | |
|   {"function", FUNCTION},
 | |
|   {"get", GET},
 | |
|   {"grant", GRANT},
 | |
|   {"index", INDEX},
 | |
|   {"insert", INSERT},
 | |
|   {"install", INSTALL},
 | |
|   {"into", INTO},
 | |
|   {"kill", KILL},
 | |
|   {"load", LOAD},
 | |
|   {"lock", LOCK_},
 | |
|   {"logs", LOGS},
 | |
|   {"master", MASTER},
 | |
|   {"optimize", OPTIMIZE},
 | |
|   {"plugin", PLUGIN},
 | |
|   {"privileges", PRIVILEGES},
 | |
|   {"procedure", PROCEDURE},
 | |
|   {"query", QUERY},
 | |
|   {"read", READ},
 | |
|   {"rename", RENAME},
 | |
|   {"repair", REPAIR},
 | |
|   {"replace", REPLACE},
 | |
|   {"reset", RESET},
 | |
|   {"revoke", REVOKE},
 | |
|   {"select", SELECT},
 | |
|   {"set", SET},
 | |
|   {"show", SHOW},
 | |
|   {"slave", SLAVE},
 | |
|   {"start", START},
 | |
|   {"status", STATUS},
 | |
|   {"stop", STOP},
 | |
|   {"table", TABLE},
 | |
|   {"tables", TABLES},
 | |
|   {"truncate", TRUNCATE},
 | |
|   {"uninstall", UNINSTALL},
 | |
|   {"update", UPDATE},
 | |
|   {"user", USER},
 | |
|   {"user_resources", USER_RESOURCES},
 | |
|   {"view", VIEW},
 | |
|   {"warnings", WARNINGS},
 | |
|   {"with", WITH},
 | |
|   /*
 | |
|    * 其他在PL中出现的SQL关键字
 | |
|    */
 | |
|   {"prepare", PREPARE},
 | |
|   {"execute", EXECUTE},
 | |
|   {"deallocate", DEALLOCATE},
 | |
|   {"unique", UNIQUE},
 | |
|   {"temporary", TEMPORARY},
 | |
|   {"savepoint", SAVEPOINT},
 | |
|   {"rollback", ROLLBACK},
 | |
|   {"desc", DESC},
 | |
|   {"describe", DESCRIBE},
 | |
|   {"explain", EXPLAIN},
 | |
|   {"release", RELEASE},
 | |
| };
 | |
| 
 | |
| const NonReservedKeyword *mysql_non_reserved_keyword_lookup(const char *word)
 | |
| {
 | |
|   return find_word(word, mysql_none_reserved_keywords_root, Mysql_none_reserved_keywords);
 | |
| }
 | |
| 
 | |
| int mysql_sql_reserved_keyword_lookup(const char *word)
 | |
| {
 | |
|   int ret = -1;
 | |
|   const NonReservedKeyword *res_word = find_word(word, mysql_sql_keywords_in_pl_root, Mysql_sql_keywords_in_pl);
 | |
|   if (NULL != res_word) {
 | |
|     ret = res_word->keyword_type;
 | |
|   }
 | |
|   return ret;
 | |
| }
 | |
| 
 | |
| //return 0 if succ, return 1 if fail
 | |
| int create_mysql_trie_tree()
 | |
| {
 | |
|   int ret = 0;
 | |
|   if (0 != (ret = create_trie_tree(Mysql_none_reserved_keywords, LENGTH_OF(Mysql_none_reserved_keywords), &mysql_none_reserved_keywords_root))) {
 | |
|     (void)printf("ERROR create trie tree failed! \n");
 | |
|   } else if (0 != (ret = create_trie_tree(Mysql_sql_keywords_in_pl, LENGTH_OF(Mysql_sql_keywords_in_pl), &mysql_sql_keywords_in_pl_root))) {
 | |
|     (void)printf("ERROR create trie tree failed! \n");
 | |
|   } else { /*do nothing*/ }
 | |
|   return ret;
 | |
| }
 | |
| 
 | |
| void  __attribute__((constructor)) init_mysql_non_reserved_keywords_tree()
 | |
| {
 | |
|   int ret = 0;
 | |
|   if (0 != (ret = create_mysql_trie_tree())) {
 | |
|     (void)printf("ERROR build mysql_non_reserved_keywords tree failed=>%d", ret);
 | |
|   }
 | |
| }
 |