Files
mayfly-go/server/internal/db/dbm/sqlparser/mysql/antlr4/MySqlLexer.g4

1352 lines
52 KiB
Plaintext
Raw Normal View History

/*
MySQL (Positive Technologies) grammar
The MIT License (MIT).
Copyright (c) 2015-2017, Ivan Kochurkin (kvanttt@gmail.com), Positive Technologies.
Copyright (c) 2017, Ivan Khudyashev (IHudyashov@ptsecurity.com)
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
// $antlr-format alignTrailingComments true, columnLimit 150, maxEmptyLinesToKeep 1, reflowComments false, useTab false
// $antlr-format allowShortRulesOnASingleLine true, allowShortBlocksOnASingleLine true, minEmptyLines 0, alignSemicolons ownLine
// $antlr-format alignColons trailing, singleLineOverrulesHangingColon true, alignLexerCommands true, alignLabels true, alignTrailers true
lexer grammar MySqlLexer;
options {
caseInsensitive = true;
}
channels {
MYSQLCOMMENT,
ERRORCHANNEL
}
// SKIP
SPACE : [ \t\r\n]+ -> channel(HIDDEN);
SPEC_MYSQL_COMMENT : '/*!' .+? '*/' -> channel(MYSQLCOMMENT);
COMMENT_INPUT : '/*' .*? '*/' -> channel(HIDDEN);
LINE_COMMENT:
(('--' [ \t]* | '#') ~[\r\n]* ('\r'? '\n' | EOF) | '--' ('\r'? '\n' | EOF)) -> channel(HIDDEN)
;
// Keywords
// Common Keywords
ADD : 'ADD';
ALL : 'ALL';
ALTER : 'ALTER';
ALWAYS : 'ALWAYS';
ANALYZE : 'ANALYZE';
AND : 'AND';
ARRAY : 'ARRAY';
AS : 'AS';
ASC : 'ASC';
ATTRIBUTE : 'ATTRIBUTE';
BEFORE : 'BEFORE';
BETWEEN : 'BETWEEN';
BOTH : 'BOTH';
BUCKETS : 'BUCKETS';
BY : 'BY';
CALL : 'CALL';
CASCADE : 'CASCADE';
CASE : 'CASE';
CAST : 'CAST';
CHANGE : 'CHANGE';
CHARACTER : 'CHARACTER';
CHECK : 'CHECK';
COLLATE : 'COLLATE';
COLUMN : 'COLUMN';
CONDITION : 'CONDITION';
CONSTRAINT : 'CONSTRAINT';
CONTINUE : 'CONTINUE';
CONVERT : 'CONVERT';
CREATE : 'CREATE';
CROSS : 'CROSS';
CURRENT : 'CURRENT';
CURRENT_ROLE : 'CURRENT_ROLE';
CURRENT_USER : 'CURRENT_USER';
CURSOR : 'CURSOR';
DATABASE : 'DATABASE';
DATABASES : 'DATABASES';
DECLARE : 'DECLARE';
DEFAULT : 'DEFAULT';
DELAYED : 'DELAYED';
DELETE : 'DELETE';
DESC : 'DESC';
DESCRIBE : 'DESCRIBE';
DETERMINISTIC : 'DETERMINISTIC';
DIAGNOSTICS : 'DIAGNOSTICS';
DISTINCT : 'DISTINCT';
DISTINCTROW : 'DISTINCTROW';
DROP : 'DROP';
EACH : 'EACH';
ELSE : 'ELSE';
ELSEIF : 'ELSEIF';
EMPTY : 'EMPTY';
ENCLOSED : 'ENCLOSED';
ENFORCED : 'ENFORCED';
ESCAPED : 'ESCAPED';
EXCEPT : 'EXCEPT';
EXISTS : 'EXISTS';
EXIT : 'EXIT';
EXPLAIN : 'EXPLAIN';
FALSE : 'FALSE';
FETCH : 'FETCH';
FOR : 'FOR';
FORCE : 'FORCE';
FOREIGN : 'FOREIGN';
FROM : 'FROM';
FULLTEXT : 'FULLTEXT';
GENERATED : 'GENERATED';
GET : 'GET';
GRANT : 'GRANT';
GROUP : 'GROUP';
HAVING : 'HAVING';
HIGH_PRIORITY : 'HIGH_PRIORITY';
HISTOGRAM : 'HISTOGRAM';
IF : 'IF';
IGNORE : 'IGNORE';
IGNORED : 'IGNORED';
IN : 'IN';
INDEX : 'INDEX';
INFILE : 'INFILE';
INNER : 'INNER';
INOUT : 'INOUT';
INSERT : 'INSERT';
INTERVAL : 'INTERVAL';
INTO : 'INTO';
IS : 'IS';
ITERATE : 'ITERATE';
JOIN : 'JOIN';
KEY : 'KEY';
KEYS : 'KEYS';
KILL : 'KILL';
LATERAL : 'LATERAL';
LEADING : 'LEADING';
LEAVE : 'LEAVE';
LEFT : 'LEFT';
LIKE : 'LIKE';
LIMIT : 'LIMIT';
LINEAR : 'LINEAR';
LINES : 'LINES';
LOAD : 'LOAD';
LOCK : 'LOCK';
LOCKED : 'LOCKED';
LOOP : 'LOOP';
LOW_PRIORITY : 'LOW_PRIORITY';
MASTER_BIND : 'MASTER_BIND';
MASTER_SSL_VERIFY_SERVER_CERT : 'MASTER_SSL_VERIFY_SERVER_CERT';
MATCH : 'MATCH';
MAXVALUE : 'MAXVALUE';
MINVALUE : 'MINVALUE';
MODIFIES : 'MODIFIES';
NATURAL : 'NATURAL';
NOT : 'NOT';
NO_WRITE_TO_BINLOG : 'NO_WRITE_TO_BINLOG';
NULL_LITERAL : 'NULL';
NUMBER : 'NUMBER';
ON : 'ON';
OPTIMIZE : 'OPTIMIZE';
OPTION : 'OPTION';
OPTIONAL : 'OPTIONAL';
OPTIONALLY : 'OPTIONALLY';
OR : 'OR';
ORDER : 'ORDER';
OUT : 'OUT';
OUTER : 'OUTER';
OUTFILE : 'OUTFILE';
OVER : 'OVER';
PARTITION : 'PARTITION';
PRIMARY : 'PRIMARY';
PROCEDURE : 'PROCEDURE';
PURGE : 'PURGE';
RANGE : 'RANGE';
READ : 'READ';
READS : 'READS';
REFERENCES : 'REFERENCES';
REGEXP : 'REGEXP';
RELEASE : 'RELEASE';
RENAME : 'RENAME';
REPEAT : 'REPEAT';
REPLACE : 'REPLACE';
REQUIRE : 'REQUIRE';
RESIGNAL : 'RESIGNAL';
RESTRICT : 'RESTRICT';
RETAIN : 'RETAIN';
RETURN : 'RETURN';
REVOKE : 'REVOKE';
RIGHT : 'RIGHT';
RLIKE : 'RLIKE';
SCHEMA : 'SCHEMA';
SCHEMAS : 'SCHEMAS';
SELECT : 'SELECT';
SET : 'SET';
SEPARATOR : 'SEPARATOR';
SHOW : 'SHOW';
SIGNAL : 'SIGNAL';
SKIP_ : 'SKIP';
SKIP_QUERY_REWRITE : 'SKIP_QUERY_REWRITE';
SPATIAL : 'SPATIAL';
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';
SSL : 'SSL';
STACKED : 'STACKED';
STARTING : 'STARTING';
STATEMENT : 'STATEMENT';
STRAIGHT_JOIN : 'STRAIGHT_JOIN';
TABLE : 'TABLE';
TERMINATED : 'TERMINATED';
THEN : 'THEN';
TO : 'TO';
TRAILING : 'TRAILING';
TRIGGER : 'TRIGGER';
TRUE : 'TRUE';
UNDO : 'UNDO';
UNION : 'UNION';
UNIQUE : 'UNIQUE';
UNLOCK : 'UNLOCK';
UNSIGNED : 'UNSIGNED';
UPDATE : 'UPDATE';
USAGE : 'USAGE';
USE : 'USE';
USING : 'USING';
VALUES : 'VALUES';
WHEN : 'WHEN';
WHERE : 'WHERE';
WHILE : 'WHILE';
WITH : 'WITH';
WRITE : 'WRITE';
XOR : 'XOR';
ZEROFILL : 'ZEROFILL';
// DATA TYPE Keywords
TINYINT : 'TINYINT';
SMALLINT : 'SMALLINT';
MEDIUMINT : 'MEDIUMINT';
MIDDLEINT : 'MIDDLEINT';
INT : 'INT';
INT1 : 'INT1';
INT2 : 'INT2';
INT3 : 'INT3';
INT4 : 'INT4';
INT8 : 'INT8';
INTEGER : 'INTEGER';
BIGINT : 'BIGINT';
REAL : 'REAL';
DOUBLE : 'DOUBLE';
PRECISION : 'PRECISION';
FLOAT : 'FLOAT';
FLOAT4 : 'FLOAT4';
FLOAT8 : 'FLOAT8';
DECIMAL : 'DECIMAL';
DEC : 'DEC';
NUMERIC : 'NUMERIC';
DATE : 'DATE';
TIME : 'TIME';
TIMESTAMP : 'TIMESTAMP';
DATETIME : 'DATETIME';
YEAR : 'YEAR';
CHAR : 'CHAR';
VARCHAR : 'VARCHAR';
NVARCHAR : 'NVARCHAR';
NATIONAL : 'NATIONAL';
BINARY : 'BINARY';
VARBINARY : 'VARBINARY';
TINYBLOB : 'TINYBLOB';
BLOB : 'BLOB';
MEDIUMBLOB : 'MEDIUMBLOB';
LONG : 'LONG';
LONGBLOB : 'LONGBLOB';
TINYTEXT : 'TINYTEXT';
TEXT : 'TEXT';
MEDIUMTEXT : 'MEDIUMTEXT';
LONGTEXT : 'LONGTEXT';
ENUM : 'ENUM';
VARYING : 'VARYING';
SERIAL : 'SERIAL';
// Interval type Keywords
YEAR_MONTH : 'YEAR_MONTH';
DAY_HOUR : 'DAY_HOUR';
DAY_MINUTE : 'DAY_MINUTE';
DAY_SECOND : 'DAY_SECOND';
HOUR_MINUTE : 'HOUR_MINUTE';
HOUR_SECOND : 'HOUR_SECOND';
MINUTE_SECOND : 'MINUTE_SECOND';
SECOND_MICROSECOND : 'SECOND_MICROSECOND';
MINUTE_MICROSECOND : 'MINUTE_MICROSECOND';
HOUR_MICROSECOND : 'HOUR_MICROSECOND';
DAY_MICROSECOND : 'DAY_MICROSECOND';
// JSON keywords
JSON_ARRAY : 'JSON_ARRAY';
JSON_ARRAYAGG : 'JSON_ARRAYAGG';
JSON_ARRAY_APPEND : 'JSON_ARRAY_APPEND';
JSON_ARRAY_INSERT : 'JSON_ARRAY_INSERT';
JSON_CONTAINS : 'JSON_CONTAINS';
JSON_CONTAINS_PATH : 'JSON_CONTAINS_PATH';
JSON_DEPTH : 'JSON_DEPTH';
JSON_EXTRACT : 'JSON_EXTRACT';
JSON_INSERT : 'JSON_INSERT';
JSON_KEYS : 'JSON_KEYS';
JSON_LENGTH : 'JSON_LENGTH';
JSON_MERGE : 'JSON_MERGE';
JSON_MERGE_PATCH : 'JSON_MERGE_PATCH';
JSON_MERGE_PRESERVE : 'JSON_MERGE_PRESERVE';
JSON_OBJECT : 'JSON_OBJECT';
JSON_OBJECTAGG : 'JSON_OBJECTAGG';
JSON_OVERLAPS : 'JSON_OVERLAPS';
JSON_PRETTY : 'JSON_PRETTY';
JSON_QUOTE : 'JSON_QUOTE';
JSON_REMOVE : 'JSON_REMOVE';
JSON_REPLACE : 'JSON_REPLACE';
JSON_SCHEMA_VALID : 'JSON_SCHEMA_VALID';
JSON_SCHEMA_VALIDATION_REPORT : 'JSON_SCHEMA_VALIDATION_REPORT';
JSON_SEARCH : 'JSON_SEARCH';
JSON_SET : 'JSON_SET';
JSON_STORAGE_FREE : 'JSON_STORAGE_FREE';
JSON_STORAGE_SIZE : 'JSON_STORAGE_SIZE';
JSON_TABLE : 'JSON_TABLE';
JSON_TYPE : 'JSON_TYPE';
JSON_UNQUOTE : 'JSON_UNQUOTE';
JSON_VALID : 'JSON_VALID';
JSON_VALUE : 'JSON_VALUE';
NESTED : 'NESTED';
ORDINALITY : 'ORDINALITY';
PATH : 'PATH';
// Group function Keywords
AVG : 'AVG';
BIT_AND : 'BIT_AND';
BIT_OR : 'BIT_OR';
BIT_XOR : 'BIT_XOR';
COUNT : 'COUNT';
CUME_DIST : 'CUME_DIST';
DENSE_RANK : 'DENSE_RANK';
FIRST_VALUE : 'FIRST_VALUE';
GROUP_CONCAT : 'GROUP_CONCAT';
LAG : 'LAG';
LAST_VALUE : 'LAST_VALUE';
LEAD : 'LEAD';
MAX : 'MAX';
MIN : 'MIN';
NTILE : 'NTILE';
NTH_VALUE : 'NTH_VALUE';
PERCENT_RANK : 'PERCENT_RANK';
RANK : 'RANK';
ROW_NUMBER : 'ROW_NUMBER';
STD : 'STD';
STDDEV : 'STDDEV';
STDDEV_POP : 'STDDEV_POP';
STDDEV_SAMP : 'STDDEV_SAMP';
SUM : 'SUM';
VAR_POP : 'VAR_POP';
VAR_SAMP : 'VAR_SAMP';
VARIANCE : 'VARIANCE';
// Common function Keywords
CURRENT_DATE : 'CURRENT_DATE';
CURRENT_TIME : 'CURRENT_TIME';
CURRENT_TIMESTAMP : 'CURRENT_TIMESTAMP';
LOCALTIME : 'LOCALTIME';
CURDATE : 'CURDATE';
CURTIME : 'CURTIME';
DATE_ADD : 'DATE_ADD';
DATE_SUB : 'DATE_SUB';
EXTRACT : 'EXTRACT';
LOCALTIMESTAMP : 'LOCALTIMESTAMP';
NOW : 'NOW';
POSITION : 'POSITION';
SUBSTR : 'SUBSTR';
SUBSTRING : 'SUBSTRING';
SYSDATE : 'SYSDATE';
TRIM : 'TRIM';
UTC_DATE : 'UTC_DATE';
UTC_TIME : 'UTC_TIME';
UTC_TIMESTAMP : 'UTC_TIMESTAMP';
// Keywords, but can be ID
// Common Keywords, but can be ID
ACCOUNT : 'ACCOUNT';
ACTION : 'ACTION';
AFTER : 'AFTER';
AGGREGATE : 'AGGREGATE';
ALGORITHM : 'ALGORITHM';
ANY : 'ANY';
AT : 'AT';
AUTHORS : 'AUTHORS';
AUTOCOMMIT : 'AUTOCOMMIT';
AUTOEXTEND_SIZE : 'AUTOEXTEND_SIZE';
AUTO_INCREMENT : 'AUTO_INCREMENT';
AVG_ROW_LENGTH : 'AVG_ROW_LENGTH';
BEGIN : 'BEGIN';
BINLOG : 'BINLOG';
BIT : 'BIT';
BLOCK : 'BLOCK';
BOOL : 'BOOL';
BOOLEAN : 'BOOLEAN';
BTREE : 'BTREE';
CACHE : 'CACHE';
CASCADED : 'CASCADED';
CHAIN : 'CHAIN';
CHANGED : 'CHANGED';
CHANNEL : 'CHANNEL';
CHECKSUM : 'CHECKSUM';
PAGE_CHECKSUM : 'PAGE_CHECKSUM';
CIPHER : 'CIPHER';
CLASS_ORIGIN : 'CLASS_ORIGIN';
CLIENT : 'CLIENT';
CLOSE : 'CLOSE';
CLUSTERING : 'CLUSTERING';
COALESCE : 'COALESCE';
CODE : 'CODE';
COLUMNS : 'COLUMNS';
COLUMN_FORMAT : 'COLUMN_FORMAT';
COLUMN_NAME : 'COLUMN_NAME';
COMMENT : 'COMMENT';
COMMIT : 'COMMIT';
COMPACT : 'COMPACT';
COMPLETION : 'COMPLETION';
COMPRESSED : 'COMPRESSED';
COMPRESSION : 'COMPRESSION';
CONCURRENT : 'CONCURRENT';
CONNECT : 'CONNECT';
CONNECTION : 'CONNECTION';
CONSISTENT : 'CONSISTENT';
CONSTRAINT_CATALOG : 'CONSTRAINT_CATALOG';
CONSTRAINT_SCHEMA : 'CONSTRAINT_SCHEMA';
CONSTRAINT_NAME : 'CONSTRAINT_NAME';
CONTAINS : 'CONTAINS';
CONTEXT : 'CONTEXT';
CONTRIBUTORS : 'CONTRIBUTORS';
COPY : 'COPY';
CPU : 'CPU';
CYCLE : 'CYCLE';
CURSOR_NAME : 'CURSOR_NAME';
DATA : 'DATA';
DATAFILE : 'DATAFILE';
DEALLOCATE : 'DEALLOCATE';
DEFAULT_AUTH : 'DEFAULT_AUTH';
DEFINER : 'DEFINER';
DELAY_KEY_WRITE : 'DELAY_KEY_WRITE';
DES_KEY_FILE : 'DES_KEY_FILE';
DIRECTORY : 'DIRECTORY';
DISABLE : 'DISABLE';
DISCARD : 'DISCARD';
DISK : 'DISK';
DO : 'DO';
DUMPFILE : 'DUMPFILE';
DUPLICATE : 'DUPLICATE';
DYNAMIC : 'DYNAMIC';
ENABLE : 'ENABLE';
ENCRYPTED : 'ENCRYPTED';
ENCRYPTION : 'ENCRYPTION';
ENCRYPTION_KEY_ID : 'ENCRYPTION_KEY_ID';
END : 'END';
ENDS : 'ENDS';
ENGINE : 'ENGINE';
ENGINES : 'ENGINES';
ERROR : 'ERROR';
ERRORS : 'ERRORS';
ESCAPE : 'ESCAPE';
EVEN : 'EVEN';
EVENT : 'EVENT';
EVENTS : 'EVENTS';
EVERY : 'EVERY';
EXCHANGE : 'EXCHANGE';
EXCLUSIVE : 'EXCLUSIVE';
EXPIRE : 'EXPIRE';
EXPORT : 'EXPORT';
EXTENDED : 'EXTENDED';
EXTENT_SIZE : 'EXTENT_SIZE';
FAILED_LOGIN_ATTEMPTS : 'FAILED_LOGIN_ATTEMPTS';
FAST : 'FAST';
FAULTS : 'FAULTS';
FIELDS : 'FIELDS';
FILE_BLOCK_SIZE : 'FILE_BLOCK_SIZE';
FILTER : 'FILTER';
FIRST : 'FIRST';
FIXED : 'FIXED';
FLUSH : 'FLUSH';
FOLLOWING : 'FOLLOWING';
FOLLOWS : 'FOLLOWS';
FOUND : 'FOUND';
FULL : 'FULL';
FUNCTION : 'FUNCTION';
GENERAL : 'GENERAL';
GLOBAL : 'GLOBAL';
GRANTS : 'GRANTS';
GROUP_REPLICATION : 'GROUP_REPLICATION';
HANDLER : 'HANDLER';
HASH : 'HASH';
HELP : 'HELP';
HISTORY : 'HISTORY';
HOST : 'HOST';
HOSTS : 'HOSTS';
IDENTIFIED : 'IDENTIFIED';
IGNORE_SERVER_IDS : 'IGNORE_SERVER_IDS';
IMPORT : 'IMPORT';
INCREMENT : 'INCREMENT';
INDEXES : 'INDEXES';
INITIAL_SIZE : 'INITIAL_SIZE';
INPLACE : 'INPLACE';
INSERT_METHOD : 'INSERT_METHOD';
INSTALL : 'INSTALL';
INSTANCE : 'INSTANCE';
INSTANT : 'INSTANT';
INVISIBLE : 'INVISIBLE';
INVOKER : 'INVOKER';
IO : 'IO';
IO_THREAD : 'IO_THREAD';
IPC : 'IPC';
ISOLATION : 'ISOLATION';
ISSUER : 'ISSUER';
JSON : 'JSON';
KEY_BLOCK_SIZE : 'KEY_BLOCK_SIZE';
LANGUAGE : 'LANGUAGE';
LAST : 'LAST';
LEAVES : 'LEAVES';
LESS : 'LESS';
LEVEL : 'LEVEL';
LIST : 'LIST';
LOCAL : 'LOCAL';
LOGFILE : 'LOGFILE';
LOGS : 'LOGS';
MASTER : 'MASTER';
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_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_TLS_VERSION : 'MASTER_TLS_VERSION';
MASTER_USER : 'MASTER_USER';
MAX_CONNECTIONS_PER_HOUR : 'MAX_CONNECTIONS_PER_HOUR';
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_USER_CONNECTIONS : 'MAX_USER_CONNECTIONS';
MEDIUM : 'MEDIUM';
MEMBER : 'MEMBER';
MERGE : 'MERGE';
MESSAGE_TEXT : 'MESSAGE_TEXT';
MID : 'MID';
MIGRATE : 'MIGRATE';
MIN_ROWS : 'MIN_ROWS';
MODE : 'MODE';
MODIFY : 'MODIFY';
MUTEX : 'MUTEX';
MYSQL : 'MYSQL';
MYSQL_ERRNO : 'MYSQL_ERRNO';
NAME : 'NAME';
NAMES : 'NAMES';
NCHAR : 'NCHAR';
NEVER : 'NEVER';
NEXT : 'NEXT';
NO : 'NO';
NOCACHE : 'NOCACHE';
NOCOPY : 'NOCOPY';
NOCYCLE : 'NOCYCLE';
NOMAXVALUE : 'NOMAXVALUE';
NOMINVALUE : 'NOMINVALUE';
NOWAIT : 'NOWAIT';
NODEGROUP : 'NODEGROUP';
NONE : 'NONE';
ODBC : 'ODBC';
OFFLINE : 'OFFLINE';
OFFSET : 'OFFSET';
OF : 'OF';
OJ : 'OJ';
OLD_PASSWORD : 'OLD_PASSWORD';
ONE : 'ONE';
ONLINE : 'ONLINE';
ONLY : 'ONLY';
OPEN : 'OPEN';
OPTIMIZER_COSTS : 'OPTIMIZER_COSTS';
OPTIONS : 'OPTIONS';
OWNER : 'OWNER';
PACK_KEYS : 'PACK_KEYS';
PAGE : 'PAGE';
PAGE_COMPRESSED : 'PAGE_COMPRESSED';
PAGE_COMPRESSION_LEVEL : 'PAGE_COMPRESSION_LEVEL';
PARSER : 'PARSER';
PARTIAL : 'PARTIAL';
PARTITIONING : 'PARTITIONING';
PARTITIONS : 'PARTITIONS';
PASSWORD : 'PASSWORD';
PASSWORD_LOCK_TIME : 'PASSWORD_LOCK_TIME';
PHASE : 'PHASE';
PLUGIN : 'PLUGIN';
PLUGIN_DIR : 'PLUGIN_DIR';
PLUGINS : 'PLUGINS';
PORT : 'PORT';
PRECEDES : 'PRECEDES';
PRECEDING : 'PRECEDING';
PREPARE : 'PREPARE';
PRESERVE : 'PRESERVE';
PREV : 'PREV';
PROCESSLIST : 'PROCESSLIST';
PROFILE : 'PROFILE';
PROFILES : 'PROFILES';
PROXY : 'PROXY';
QUERY : 'QUERY';
QUICK : 'QUICK';
REBUILD : 'REBUILD';
RECOVER : 'RECOVER';
RECURSIVE : 'RECURSIVE';
REDO_BUFFER_SIZE : 'REDO_BUFFER_SIZE';
REDUNDANT : 'REDUNDANT';
RELAY : 'RELAY';
RELAY_LOG_FILE : 'RELAY_LOG_FILE';
RELAY_LOG_POS : 'RELAY_LOG_POS';
RELAYLOG : 'RELAYLOG';
REMOVE : 'REMOVE';
REORGANIZE : 'REORGANIZE';
REPAIR : 'REPAIR';
REPLICATE_DO_DB : 'REPLICATE_DO_DB';
REPLICATE_DO_TABLE : 'REPLICATE_DO_TABLE';
REPLICATE_IGNORE_DB : 'REPLICATE_IGNORE_DB';
REPLICATE_IGNORE_TABLE : 'REPLICATE_IGNORE_TABLE';
REPLICATE_REWRITE_DB : 'REPLICATE_REWRITE_DB';
REPLICATE_WILD_DO_TABLE : 'REPLICATE_WILD_DO_TABLE';
REPLICATE_WILD_IGNORE_TABLE : 'REPLICATE_WILD_IGNORE_TABLE';
REPLICATION : 'REPLICATION';
RESET : 'RESET';
RESTART : 'RESTART';
RESUME : 'RESUME';
RETURNED_SQLSTATE : 'RETURNED_SQLSTATE';
RETURNING : 'RETURNING';
RETURNS : 'RETURNS';
REUSE : 'REUSE';
ROLE : 'ROLE';
ROLLBACK : 'ROLLBACK';
ROLLUP : 'ROLLUP';
ROTATE : 'ROTATE';
ROW : 'ROW';
ROWS : 'ROWS';
ROW_FORMAT : 'ROW_FORMAT';
RTREE : 'RTREE';
SAVEPOINT : 'SAVEPOINT';
SCHEDULE : 'SCHEDULE';
SECURITY : 'SECURITY';
SEQUENCE : 'SEQUENCE';
SERVER : 'SERVER';
SESSION : 'SESSION';
SHARE : 'SHARE';
SHARED : 'SHARED';
SIGNED : 'SIGNED';
SIMPLE : 'SIMPLE';
SLAVE : 'SLAVE';
SLOW : 'SLOW';
SNAPSHOT : 'SNAPSHOT';
SOCKET : 'SOCKET';
SOME : 'SOME';
SONAME : 'SONAME';
SOUNDS : 'SOUNDS';
SOURCE : 'SOURCE';
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_NO_CACHE : 'SQL_NO_CACHE';
SQL_THREAD : 'SQL_THREAD';
START : 'START';
STARTS : 'STARTS';
STATS_AUTO_RECALC : 'STATS_AUTO_RECALC';
STATS_PERSISTENT : 'STATS_PERSISTENT';
STATS_SAMPLE_PAGES : 'STATS_SAMPLE_PAGES';
STATUS : 'STATUS';
STOP : 'STOP';
STORAGE : 'STORAGE';
STORED : 'STORED';
STRING : 'STRING';
SUBCLASS_ORIGIN : 'SUBCLASS_ORIGIN';
SUBJECT : 'SUBJECT';
SUBPARTITION : 'SUBPARTITION';
SUBPARTITIONS : 'SUBPARTITIONS';
SUSPEND : 'SUSPEND';
SWAPS : 'SWAPS';
SWITCHES : 'SWITCHES';
TABLE_NAME : 'TABLE_NAME';
TABLESPACE : 'TABLESPACE';
TABLE_TYPE : 'TABLE_TYPE';
TEMPORARY : 'TEMPORARY';
TEMPTABLE : 'TEMPTABLE';
THAN : 'THAN';
TRADITIONAL : 'TRADITIONAL';
TRANSACTION : 'TRANSACTION';
TRANSACTIONAL : 'TRANSACTIONAL';
TRIGGERS : 'TRIGGERS';
TRUNCATE : 'TRUNCATE';
UNBOUNDED : 'UNBOUNDED';
UNDEFINED : 'UNDEFINED';
UNDOFILE : 'UNDOFILE';
UNDO_BUFFER_SIZE : 'UNDO_BUFFER_SIZE';
UNINSTALL : 'UNINSTALL';
UNKNOWN : 'UNKNOWN';
UNTIL : 'UNTIL';
UPGRADE : 'UPGRADE';
USER : 'USER';
USE_FRM : 'USE_FRM';
USER_RESOURCES : 'USER_RESOURCES';
VALIDATION : 'VALIDATION';
VALUE : 'VALUE';
VARIABLES : 'VARIABLES';
VIEW : 'VIEW';
VIRTUAL : 'VIRTUAL';
VISIBLE : 'VISIBLE';
WAIT : 'WAIT';
WARNINGS : 'WARNINGS';
WINDOW : 'WINDOW';
WITHOUT : 'WITHOUT';
WORK : 'WORK';
WRAPPER : 'WRAPPER';
X509 : 'X509';
XA : 'XA';
XML : 'XML';
YES : 'YES';
// Date format Keywords
EUR : 'EUR';
USA : 'USA';
JIS : 'JIS';
ISO : 'ISO';
INTERNAL : 'INTERNAL';
// Interval type Keywords
QUARTER : 'QUARTER';
MONTH : 'MONTH';
DAY : 'DAY';
HOUR : 'HOUR';
MINUTE : 'MINUTE';
WEEK : 'WEEK';
SECOND : 'SECOND';
MICROSECOND : 'MICROSECOND';
// PRIVILEGES
ADMIN : 'ADMIN';
APPLICATION_PASSWORD_ADMIN : 'APPLICATION_PASSWORD_ADMIN';
AUDIT_ABORT_EXEMPT : 'AUDIT_ABORT_EXEMPT';
AUDIT_ADMIN : 'AUDIT_ADMIN';
AUTHENTICATION_POLICY_ADMIN : 'AUTHENTICATION_POLICY_ADMIN';
BACKUP_ADMIN : 'BACKUP_ADMIN';
BINLOG_ADMIN : 'BINLOG_ADMIN';
BINLOG_ENCRYPTION_ADMIN : 'BINLOG_ENCRYPTION_ADMIN';
CLONE_ADMIN : 'CLONE_ADMIN';
CONNECTION_ADMIN : 'CONNECTION_ADMIN';
ENCRYPTION_KEY_ADMIN : 'ENCRYPTION_KEY_ADMIN';
EXECUTE : 'EXECUTE';
FILE : 'FILE';
FIREWALL_ADMIN : 'FIREWALL_ADMIN';
FIREWALL_EXEMPT : 'FIREWALL_EXEMPT';
FIREWALL_USER : 'FIREWALL_USER';
FLUSH_OPTIMIZER_COSTS : 'FLUSH_OPTIMIZER_COSTS';
FLUSH_STATUS : 'FLUSH_STATUS';
FLUSH_TABLES : 'FLUSH_TABLES';
FLUSH_USER_RESOURCES : 'FLUSH_USER_RESOURCES';
GROUP_REPLICATION_ADMIN : 'GROUP_REPLICATION_ADMIN';
INNODB_REDO_LOG_ARCHIVE : 'INNODB_REDO_LOG_ARCHIVE';
INNODB_REDO_LOG_ENABLE : 'INNODB_REDO_LOG_ENABLE';
INVOKE : 'INVOKE';
LAMBDA : 'LAMBDA';
NDB_STORED_USER : 'NDB_STORED_USER';
PASSWORDLESS_USER_ADMIN : 'PASSWORDLESS_USER_ADMIN';
PERSIST_RO_VARIABLES_ADMIN : 'PERSIST_RO_VARIABLES_ADMIN';
PRIVILEGES : 'PRIVILEGES';
PROCESS : 'PROCESS';
RELOAD : 'RELOAD';
REPLICATION_APPLIER : 'REPLICATION_APPLIER';
REPLICATION_SLAVE_ADMIN : 'REPLICATION_SLAVE_ADMIN';
RESOURCE_GROUP_ADMIN : 'RESOURCE_GROUP_ADMIN';
RESOURCE_GROUP_USER : 'RESOURCE_GROUP_USER';
ROLE_ADMIN : 'ROLE_ADMIN';
ROUTINE : 'ROUTINE';
S3 : 'S3';
SERVICE_CONNECTION_ADMIN : 'SERVICE_CONNECTION_ADMIN';
SESSION_VARIABLES_ADMIN : QUOTE_SYMB? 'SESSION_VARIABLES_ADMIN' QUOTE_SYMB?;
SET_USER_ID : 'SET_USER_ID';
SHOW_ROUTINE : 'SHOW_ROUTINE';
SHUTDOWN : 'SHUTDOWN';
SUPER : 'SUPER';
SYSTEM_VARIABLES_ADMIN : 'SYSTEM_VARIABLES_ADMIN';
TABLES : 'TABLES';
TABLE_ENCRYPTION_ADMIN : 'TABLE_ENCRYPTION_ADMIN';
VERSION_TOKEN_ADMIN : 'VERSION_TOKEN_ADMIN';
XA_RECOVER_ADMIN : 'XA_RECOVER_ADMIN';
// Charsets
ARMSCII8 : 'ARMSCII8';
ASCII : 'ASCII';
BIG5 : 'BIG5';
CP1250 : 'CP1250';
CP1251 : 'CP1251';
CP1256 : 'CP1256';
CP1257 : 'CP1257';
CP850 : 'CP850';
CP852 : 'CP852';
CP866 : 'CP866';
CP932 : 'CP932';
DEC8 : 'DEC8';
EUCJPMS : 'EUCJPMS';
EUCKR : 'EUCKR';
GB18030 : 'GB18030';
GB2312 : 'GB2312';
GBK : 'GBK';
GEOSTD8 : 'GEOSTD8';
GREEK : 'GREEK';
HEBREW : 'HEBREW';
HP8 : 'HP8';
KEYBCS2 : 'KEYBCS2';
KOI8R : 'KOI8R';
KOI8U : 'KOI8U';
LATIN1 : 'LATIN1';
LATIN2 : 'LATIN2';
LATIN5 : 'LATIN5';
LATIN7 : 'LATIN7';
MACCE : 'MACCE';
MACROMAN : 'MACROMAN';
SJIS : 'SJIS';
SWE7 : 'SWE7';
TIS620 : 'TIS620';
UCS2 : 'UCS2';
UJIS : 'UJIS';
UTF16 : 'UTF16';
UTF16LE : 'UTF16LE';
UTF32 : 'UTF32';
UTF8 : 'UTF8';
UTF8MB3 : 'UTF8MB3';
UTF8MB4 : 'UTF8MB4';
// DB Engines
ARCHIVE : 'ARCHIVE';
BLACKHOLE : 'BLACKHOLE';
CSV : 'CSV';
FEDERATED : 'FEDERATED';
INNODB : 'INNODB';
MEMORY : 'MEMORY';
MRG_MYISAM : 'MRG_MYISAM';
MYISAM : 'MYISAM';
NDB : 'NDB';
NDBCLUSTER : 'NDBCLUSTER';
PERFORMANCE_SCHEMA : 'PERFORMANCE_SCHEMA';
TOKUDB : 'TOKUDB';
// Transaction Levels
REPEATABLE : 'REPEATABLE';
COMMITTED : 'COMMITTED';
UNCOMMITTED : 'UNCOMMITTED';
SERIALIZABLE : 'SERIALIZABLE';
// Spatial data types
GEOMETRYCOLLECTION : 'GEOMETRYCOLLECTION';
GEOMCOLLECTION : 'GEOMCOLLECTION';
GEOMETRY : 'GEOMETRY';
LINESTRING : 'LINESTRING';
MULTILINESTRING : 'MULTILINESTRING';
MULTIPOINT : 'MULTIPOINT';
MULTIPOLYGON : 'MULTIPOLYGON';
POINT : 'POINT';
POLYGON : 'POLYGON';
// Common function names
ABS : 'ABS';
ACOS : 'ACOS';
ADDDATE : 'ADDDATE';
ADDTIME : 'ADDTIME';
AES_DECRYPT : 'AES_DECRYPT';
AES_ENCRYPT : 'AES_ENCRYPT';
AREA : 'AREA';
ASBINARY : 'ASBINARY';
ASIN : 'ASIN';
ASTEXT : 'ASTEXT';
ASWKB : 'ASWKB';
ASWKT : 'ASWKT';
ASYMMETRIC_DECRYPT : 'ASYMMETRIC_DECRYPT';
ASYMMETRIC_DERIVE : 'ASYMMETRIC_DERIVE';
ASYMMETRIC_ENCRYPT : 'ASYMMETRIC_ENCRYPT';
ASYMMETRIC_SIGN : 'ASYMMETRIC_SIGN';
ASYMMETRIC_VERIFY : 'ASYMMETRIC_VERIFY';
ATAN : 'ATAN';
ATAN2 : 'ATAN2';
BENCHMARK : 'BENCHMARK';
BIN : 'BIN';
BIT_COUNT : 'BIT_COUNT';
BIT_LENGTH : 'BIT_LENGTH';
BUFFER : 'BUFFER';
CATALOG_NAME : 'CATALOG_NAME';
CEIL : 'CEIL';
CEILING : 'CEILING';
CENTROID : 'CENTROID';
CHARACTER_LENGTH : 'CHARACTER_LENGTH';
CHARSET : 'CHARSET';
CHAR_LENGTH : 'CHAR_LENGTH';
COERCIBILITY : 'COERCIBILITY';
COLLATION : 'COLLATION';
COMPRESS : 'COMPRESS';
CONCAT : 'CONCAT';
CONCAT_WS : 'CONCAT_WS';
CONNECTION_ID : 'CONNECTION_ID';
CONV : 'CONV';
CONVERT_TZ : 'CONVERT_TZ';
COS : 'COS';
COT : 'COT';
CRC32 : 'CRC32';
CREATE_ASYMMETRIC_PRIV_KEY : 'CREATE_ASYMMETRIC_PRIV_KEY';
CREATE_ASYMMETRIC_PUB_KEY : 'CREATE_ASYMMETRIC_PUB_KEY';
CREATE_DH_PARAMETERS : 'CREATE_DH_PARAMETERS';
CREATE_DIGEST : 'CREATE_DIGEST';
CROSSES : 'CROSSES';
DATEDIFF : 'DATEDIFF';
DATE_FORMAT : 'DATE_FORMAT';
DAYNAME : 'DAYNAME';
DAYOFMONTH : 'DAYOFMONTH';
DAYOFWEEK : 'DAYOFWEEK';
DAYOFYEAR : 'DAYOFYEAR';
DECODE : 'DECODE';
DEGREES : 'DEGREES';
DES_DECRYPT : 'DES_DECRYPT';
DES_ENCRYPT : 'DES_ENCRYPT';
DIMENSION : 'DIMENSION';
DISJOINT : 'DISJOINT';
ELT : 'ELT';
ENCODE : 'ENCODE';
ENCRYPT : 'ENCRYPT';
ENDPOINT : 'ENDPOINT';
ENGINE_ATTRIBUTE : 'ENGINE_ATTRIBUTE';
ENVELOPE : 'ENVELOPE';
EQUALS : 'EQUALS';
EXP : 'EXP';
EXPORT_SET : 'EXPORT_SET';
EXTERIORRING : 'EXTERIORRING';
EXTRACTVALUE : 'EXTRACTVALUE';
FIELD : 'FIELD';
FIND_IN_SET : 'FIND_IN_SET';
FLOOR : 'FLOOR';
FORMAT : 'FORMAT';
FOUND_ROWS : 'FOUND_ROWS';
FROM_BASE64 : 'FROM_BASE64';
FROM_DAYS : 'FROM_DAYS';
FROM_UNIXTIME : 'FROM_UNIXTIME';
GEOMCOLLFROMTEXT : 'GEOMCOLLFROMTEXT';
GEOMCOLLFROMWKB : 'GEOMCOLLFROMWKB';
GEOMETRYCOLLECTIONFROMTEXT : 'GEOMETRYCOLLECTIONFROMTEXT';
GEOMETRYCOLLECTIONFROMWKB : 'GEOMETRYCOLLECTIONFROMWKB';
GEOMETRYFROMTEXT : 'GEOMETRYFROMTEXT';
GEOMETRYFROMWKB : 'GEOMETRYFROMWKB';
GEOMETRYN : 'GEOMETRYN';
GEOMETRYTYPE : 'GEOMETRYTYPE';
GEOMFROMTEXT : 'GEOMFROMTEXT';
GEOMFROMWKB : 'GEOMFROMWKB';
GET_FORMAT : 'GET_FORMAT';
GET_LOCK : 'GET_LOCK';
GLENGTH : 'GLENGTH';
GREATEST : 'GREATEST';
GTID_SUBSET : 'GTID_SUBSET';
GTID_SUBTRACT : 'GTID_SUBTRACT';
HEX : 'HEX';
IFNULL : 'IFNULL';
INET6_ATON : 'INET6_ATON';
INET6_NTOA : 'INET6_NTOA';
INET_ATON : 'INET_ATON';
INET_NTOA : 'INET_NTOA';
INSTR : 'INSTR';
INTERIORRINGN : 'INTERIORRINGN';
INTERSECTS : 'INTERSECTS';
ISCLOSED : 'ISCLOSED';
ISEMPTY : 'ISEMPTY';
ISNULL : 'ISNULL';
ISSIMPLE : 'ISSIMPLE';
IS_FREE_LOCK : 'IS_FREE_LOCK';
IS_IPV4 : 'IS_IPV4';
IS_IPV4_COMPAT : 'IS_IPV4_COMPAT';
IS_IPV4_MAPPED : 'IS_IPV4_MAPPED';
IS_IPV6 : 'IS_IPV6';
IS_USED_LOCK : 'IS_USED_LOCK';
LAST_INSERT_ID : 'LAST_INSERT_ID';
LCASE : 'LCASE';
LEAST : 'LEAST';
LENGTH : 'LENGTH';
LINEFROMTEXT : 'LINEFROMTEXT';
LINEFROMWKB : 'LINEFROMWKB';
LINESTRINGFROMTEXT : 'LINESTRINGFROMTEXT';
LINESTRINGFROMWKB : 'LINESTRINGFROMWKB';
LN : 'LN';
LOAD_FILE : 'LOAD_FILE';
LOCATE : 'LOCATE';
LOG : 'LOG';
LOG10 : 'LOG10';
LOG2 : 'LOG2';
LOWER : 'LOWER';
LPAD : 'LPAD';
LTRIM : 'LTRIM';
MAKEDATE : 'MAKEDATE';
MAKETIME : 'MAKETIME';
MAKE_SET : 'MAKE_SET';
MASTER_POS_WAIT : 'MASTER_POS_WAIT';
MBRCONTAINS : 'MBRCONTAINS';
MBRDISJOINT : 'MBRDISJOINT';
MBREQUAL : 'MBREQUAL';
MBRINTERSECTS : 'MBRINTERSECTS';
MBROVERLAPS : 'MBROVERLAPS';
MBRTOUCHES : 'MBRTOUCHES';
MBRWITHIN : 'MBRWITHIN';
MD5 : 'MD5';
MLINEFROMTEXT : 'MLINEFROMTEXT';
MLINEFROMWKB : 'MLINEFROMWKB';
MONTHNAME : 'MONTHNAME';
MPOINTFROMTEXT : 'MPOINTFROMTEXT';
MPOINTFROMWKB : 'MPOINTFROMWKB';
MPOLYFROMTEXT : 'MPOLYFROMTEXT';
MPOLYFROMWKB : 'MPOLYFROMWKB';
MULTILINESTRINGFROMTEXT : 'MULTILINESTRINGFROMTEXT';
MULTILINESTRINGFROMWKB : 'MULTILINESTRINGFROMWKB';
MULTIPOINTFROMTEXT : 'MULTIPOINTFROMTEXT';
MULTIPOINTFROMWKB : 'MULTIPOINTFROMWKB';
MULTIPOLYGONFROMTEXT : 'MULTIPOLYGONFROMTEXT';
MULTIPOLYGONFROMWKB : 'MULTIPOLYGONFROMWKB';
NAME_CONST : 'NAME_CONST';
NULLIF : 'NULLIF';
NUMGEOMETRIES : 'NUMGEOMETRIES';
NUMINTERIORRINGS : 'NUMINTERIORRINGS';
NUMPOINTS : 'NUMPOINTS';
OCT : 'OCT';
OCTET_LENGTH : 'OCTET_LENGTH';
ORD : 'ORD';
OVERLAPS : 'OVERLAPS';
PERIOD_ADD : 'PERIOD_ADD';
PERIOD_DIFF : 'PERIOD_DIFF';
PI : 'PI';
POINTFROMTEXT : 'POINTFROMTEXT';
POINTFROMWKB : 'POINTFROMWKB';
POINTN : 'POINTN';
POLYFROMTEXT : 'POLYFROMTEXT';
POLYFROMWKB : 'POLYFROMWKB';
POLYGONFROMTEXT : 'POLYGONFROMTEXT';
POLYGONFROMWKB : 'POLYGONFROMWKB';
POW : 'POW';
POWER : 'POWER';
QUOTE : 'QUOTE';
RADIANS : 'RADIANS';
RAND : 'RAND';
RANDOM : 'RANDOM';
RANDOM_BYTES : 'RANDOM_BYTES';
RELEASE_LOCK : 'RELEASE_LOCK';
REVERSE : 'REVERSE';
ROUND : 'ROUND';
ROW_COUNT : 'ROW_COUNT';
RPAD : 'RPAD';
RTRIM : 'RTRIM';
SEC_TO_TIME : 'SEC_TO_TIME';
SECONDARY_ENGINE_ATTRIBUTE : 'SECONDARY_ENGINE_ATTRIBUTE';
SESSION_USER : 'SESSION_USER';
SHA : 'SHA';
SHA1 : 'SHA1';
SHA2 : 'SHA2';
SCHEMA_NAME : 'SCHEMA_NAME';
SIGN : 'SIGN';
SIN : 'SIN';
SLEEP : 'SLEEP';
SOUNDEX : 'SOUNDEX';
SQL_THREAD_WAIT_AFTER_GTIDS : 'SQL_THREAD_WAIT_AFTER_GTIDS';
SQRT : 'SQRT';
SRID : 'SRID';
STARTPOINT : 'STARTPOINT';
STRCMP : 'STRCMP';
STR_TO_DATE : 'STR_TO_DATE';
ST_AREA : 'ST_AREA';
ST_ASBINARY : 'ST_ASBINARY';
ST_ASTEXT : 'ST_ASTEXT';
ST_ASWKB : 'ST_ASWKB';
ST_ASWKT : 'ST_ASWKT';
ST_BUFFER : 'ST_BUFFER';
ST_CENTROID : 'ST_CENTROID';
ST_CONTAINS : 'ST_CONTAINS';
ST_CROSSES : 'ST_CROSSES';
ST_DIFFERENCE : 'ST_DIFFERENCE';
ST_DIMENSION : 'ST_DIMENSION';
ST_DISJOINT : 'ST_DISJOINT';
ST_DISTANCE : 'ST_DISTANCE';
ST_ENDPOINT : 'ST_ENDPOINT';
ST_ENVELOPE : 'ST_ENVELOPE';
ST_EQUALS : 'ST_EQUALS';
ST_EXTERIORRING : 'ST_EXTERIORRING';
ST_GEOMCOLLFROMTEXT : 'ST_GEOMCOLLFROMTEXT';
ST_GEOMCOLLFROMTXT : 'ST_GEOMCOLLFROMTXT';
ST_GEOMCOLLFROMWKB : 'ST_GEOMCOLLFROMWKB';
ST_GEOMETRYCOLLECTIONFROMTEXT : 'ST_GEOMETRYCOLLECTIONFROMTEXT';
ST_GEOMETRYCOLLECTIONFROMWKB : 'ST_GEOMETRYCOLLECTIONFROMWKB';
ST_GEOMETRYFROMTEXT : 'ST_GEOMETRYFROMTEXT';
ST_GEOMETRYFROMWKB : 'ST_GEOMETRYFROMWKB';
ST_GEOMETRYN : 'ST_GEOMETRYN';
ST_GEOMETRYTYPE : 'ST_GEOMETRYTYPE';
ST_GEOMFROMTEXT : 'ST_GEOMFROMTEXT';
ST_GEOMFROMWKB : 'ST_GEOMFROMWKB';
ST_INTERIORRINGN : 'ST_INTERIORRINGN';
ST_INTERSECTION : 'ST_INTERSECTION';
ST_INTERSECTS : 'ST_INTERSECTS';
ST_ISCLOSED : 'ST_ISCLOSED';
ST_ISEMPTY : 'ST_ISEMPTY';
ST_ISSIMPLE : 'ST_ISSIMPLE';
ST_LINEFROMTEXT : 'ST_LINEFROMTEXT';
ST_LINEFROMWKB : 'ST_LINEFROMWKB';
ST_LINESTRINGFROMTEXT : 'ST_LINESTRINGFROMTEXT';
ST_LINESTRINGFROMWKB : 'ST_LINESTRINGFROMWKB';
ST_NUMGEOMETRIES : 'ST_NUMGEOMETRIES';
ST_NUMINTERIORRING : 'ST_NUMINTERIORRING';
ST_NUMINTERIORRINGS : 'ST_NUMINTERIORRINGS';
ST_NUMPOINTS : 'ST_NUMPOINTS';
ST_OVERLAPS : 'ST_OVERLAPS';
ST_POINTFROMTEXT : 'ST_POINTFROMTEXT';
ST_POINTFROMWKB : 'ST_POINTFROMWKB';
ST_POINTN : 'ST_POINTN';
ST_POLYFROMTEXT : 'ST_POLYFROMTEXT';
ST_POLYFROMWKB : 'ST_POLYFROMWKB';
ST_POLYGONFROMTEXT : 'ST_POLYGONFROMTEXT';
ST_POLYGONFROMWKB : 'ST_POLYGONFROMWKB';
ST_SRID : 'ST_SRID';
ST_STARTPOINT : 'ST_STARTPOINT';
ST_SYMDIFFERENCE : 'ST_SYMDIFFERENCE';
ST_TOUCHES : 'ST_TOUCHES';
ST_UNION : 'ST_UNION';
ST_WITHIN : 'ST_WITHIN';
ST_X : 'ST_X';
ST_Y : 'ST_Y';
SUBDATE : 'SUBDATE';
SUBSTRING_INDEX : 'SUBSTRING_INDEX';
SUBTIME : 'SUBTIME';
SYSTEM_USER : 'SYSTEM_USER';
TAN : 'TAN';
TIMEDIFF : 'TIMEDIFF';
TIMESTAMPADD : 'TIMESTAMPADD';
TIMESTAMPDIFF : 'TIMESTAMPDIFF';
TIME_FORMAT : 'TIME_FORMAT';
TIME_TO_SEC : 'TIME_TO_SEC';
TOUCHES : 'TOUCHES';
TO_BASE64 : 'TO_BASE64';
TO_DAYS : 'TO_DAYS';
TO_SECONDS : 'TO_SECONDS';
TP_CONNECTION_ADMIN : 'TP_CONNECTION_ADMIN';
UCASE : 'UCASE';
UNCOMPRESS : 'UNCOMPRESS';
UNCOMPRESSED_LENGTH : 'UNCOMPRESSED_LENGTH';
UNHEX : 'UNHEX';
UNIX_TIMESTAMP : 'UNIX_TIMESTAMP';
UPDATEXML : 'UPDATEXML';
UPPER : 'UPPER';
UUID : 'UUID';
UUID_SHORT : 'UUID_SHORT';
VALIDATE_PASSWORD_STRENGTH : 'VALIDATE_PASSWORD_STRENGTH';
VERSION : 'VERSION';
WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS : 'WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS';
WEEKDAY : 'WEEKDAY';
WEEKOFYEAR : 'WEEKOFYEAR';
WEIGHT_STRING : 'WEIGHT_STRING';
WITHIN : 'WITHIN';
YEARWEEK : 'YEARWEEK';
Y_FUNCTION : 'Y';
X_FUNCTION : 'X';
// Operators
// Operators. Assigns
VAR_ASSIGN : ':=';
PLUS_ASSIGN : '+=';
MINUS_ASSIGN : '-=';
MULT_ASSIGN : '*=';
DIV_ASSIGN : '/=';
MOD_ASSIGN : '%=';
AND_ASSIGN : '&=';
XOR_ASSIGN : '^=';
OR_ASSIGN : '|=';
// Operators. Arithmetics
STAR : '*';
DIVIDE : '/';
MODULE : '%';
PLUS : '+';
MINUS : '-';
DIV : 'DIV';
MOD : 'MOD';
// Operators. Comparation
EQUAL_SYMBOL : '=';
GREATER_SYMBOL : '>';
LESS_SYMBOL : '<';
EXCLAMATION_SYMBOL : '!';
// Operators. Bit
BIT_NOT_OP : '~';
BIT_OR_OP : '|';
BIT_AND_OP : '&';
BIT_XOR_OP : '^';
// Constructors symbols
DOT : '.';
LR_BRACKET : '(';
RR_BRACKET : ')';
COMMA : ',';
SEMI : ';';
AT_SIGN : '@';
ZERO_DECIMAL : '0';
ONE_DECIMAL : '1';
TWO_DECIMAL : '2';
SINGLE_QUOTE_SYMB : '\'';
DOUBLE_QUOTE_SYMB : '"';
REVERSE_QUOTE_SYMB : '`';
COLON_SYMB : ':';
fragment QUOTE_SYMB: SINGLE_QUOTE_SYMB | DOUBLE_QUOTE_SYMB | REVERSE_QUOTE_SYMB;
// Charsets
CHARSET_REVERSE_QOUTE_STRING: '`' CHARSET_NAME '`';
// File's sizes
FILESIZE_LITERAL: DEC_DIGIT+ ('K' | 'M' | 'G' | 'T');
// Literal Primitives
START_NATIONAL_STRING_LITERAL : 'N' SQUOTA_STRING;
STRING_LITERAL : DQUOTA_STRING | SQUOTA_STRING | BQUOTA_STRING;
DECIMAL_LITERAL : DEC_DIGIT+;
HEXADECIMAL_LITERAL : 'X' '\'' (HEX_DIGIT HEX_DIGIT)+ '\'' | '0X' HEX_DIGIT+;
REAL_LITERAL:
DEC_DIGIT* '.' DEC_DIGIT+
| DEC_DIGIT+ '.' EXPONENT_NUM_PART
| DEC_DIGIT* '.' (DEC_DIGIT+ EXPONENT_NUM_PART)
| DEC_DIGIT+ EXPONENT_NUM_PART
;
NULL_SPEC_LITERAL : '\\' 'N';
BIT_STRING : BIT_STRING_L;
STRING_CHARSET_NAME : '_' CHARSET_NAME;
// Hack for dotID
// Prevent recognize string: .123somelatin AS ((.123), FLOAT_LITERAL), ((somelatin), ID)
// it must recoginze: .123somelatin AS ((.), DOT), (123somelatin, ID)
DOT_ID: '.' ID_LITERAL;
// Identifiers
ID: ID_LITERAL;
// DOUBLE_QUOTE_ID: '"' ~'"'+ '"';
REVERSE_QUOTE_ID : BQUOTA_STRING;
HOST_IP_ADDRESS : (AT_SIGN IP_ADDRESS);
LOCAL_ID : AT_SIGN ( STRING_LITERAL | [A-Z0-9._$\u0080-\uFFFF]+);
GLOBAL_ID : AT_SIGN AT_SIGN ( [A-Z0-9._$\u0080-\uFFFF]+ | BQUOTA_STRING);
// Fragments for Literal primitives
fragment CHARSET_NAME:
ARMSCII8
| ASCII
| BIG5
| BINARY
| CP1250
| CP1251
| CP1256
| CP1257
| CP850
| CP852
| CP866
| CP932
| DEC8
| EUCJPMS
| EUCKR
| GB2312
| GBK
| GEOSTD8
| GREEK
| HEBREW
| HP8
| KEYBCS2
| KOI8R
| KOI8U
| LATIN1
| LATIN2
| LATIN5
| LATIN7
| MACCE
| MACROMAN
| SJIS
| SWE7
| TIS620
| UCS2
| UJIS
| UTF16
| UTF16LE
| UTF32
| UTF8
| UTF8MB3
| UTF8MB4
;
fragment EXPONENT_NUM_PART : 'E' [-+]? DEC_DIGIT+;
fragment ID_LITERAL : [A-Z_$0-9\u0080-\uFFFF]*? [A-Z_$\u0080-\uFFFF]+? [A-Z_$0-9\u0080-\uFFFF]*;
fragment DQUOTA_STRING : '"' ( '\\' . | '""' | ~('"' | '\\'))* '"';
fragment SQUOTA_STRING : '\'' ('\\' . | '\'\'' | ~('\'' | '\\'))* '\'';
fragment BQUOTA_STRING : '`' ( ~'`' | '``')* '`';
fragment HEX_DIGIT : [0-9A-F];
fragment DEC_DIGIT : [0-9];
fragment BIT_STRING_L : 'B' '\'' [01]+ '\'';
fragment IP_ADDRESS : [0-9]+ '.' [0-9.]+ | [0-9A-F]* ':' [0-9A-F]* ':' [0-9A-F:]+;
// Last tokens must generate Errors
ERROR_RECONGNIGION: . -> channel(ERRORCHANNEL);