diff options
author | Dan Ungureanu <udan1107@gmail.com> | 2015-06-25 19:37:04 +0300 |
---|---|---|
committer | Dan Ungureanu <udan1107@gmail.com> | 2015-06-25 23:02:05 +0300 |
commit | 1254db42ba8d1967c6e2d71cc4711f933ef853d0 (patch) | |
tree | c130476953adca99d9ea2d666a9ca073ec76498c /src | |
parent | 8bfff84044f750d32e2c8e4a7c6ec668d435d409 (diff) | |
download | sql-parser-1254db42ba8d1967c6e2d71cc4711f933ef853d0.zip sql-parser-1254db42ba8d1967c6e2d71cc4711f933ef853d0.tar.gz sql-parser-1254db42ba8d1967c6e2d71cc4711f933ef853d0.tar.bz2 |
Added query utilities.
Included basic support for ANALYZE, BACKUP, CHECK, CHECKSUM, OPTIMIZE, REPAIR and RESTORE statements.
Better parsing for fields, SELECT statement, INTO keyword.
Improved contexts (included functions).
Improved documentation.
Refactoring and coding style fixes.
Diffstat (limited to 'src')
30 files changed, 1896 insertions, 519 deletions
diff --git a/src/Contexts/ContextMySql50000.php b/src/Contexts/ContextMySql50000.php index 63f4ca2..d4b80e1 100644 --- a/src/Contexts/ContextMySql50000.php +++ b/src/Contexts/ContextMySql50000.php @@ -34,121 +34,111 @@ class ContextMySql50000 extends Context public static $KEYWORDS = array( 'DO' => 1, 'IO' => 1, 'NO' => 1, 'XA' => 1, - 'ANY' => 1, 'AVG' => 1, 'BDB' => 1, 'BIT' => 1, 'CPU' => 1, 'DAY' => 1, - 'END' => 1, 'IPC' => 1, 'NDB' => 1, 'NEW' => 1, 'ONE' => 1, 'ROW' => 1, + 'ANY' => 1, 'BDB' => 1, 'BIT' => 1, 'CPU' => 1, 'END' => 1, 'IPC' => 1, + 'NDB' => 1, 'NEW' => 1, 'ONE' => 1, 'ROW' => 1, 'BOOL' => 1, 'BYTE' => 1, 'CODE' => 1, 'CUBE' => 1, 'DATA' => 1, 'FAST' => 1, - 'FILE' => 1, 'FULL' => 1, 'HASH' => 1, 'HELP' => 1, 'HOUR' => 1, 'LAST' => 1, - 'LOGS' => 1, 'MODE' => 1, 'NAME' => 1, 'NEXT' => 1, 'NONE' => 1, 'OPEN' => 1, - 'PAGE' => 1, 'PREV' => 1, 'ROWS' => 1, 'SOME' => 1, 'STOP' => 1, 'TYPE' => 1, - 'USER' => 1, 'VIEW' => 1, 'WEEK' => 1, 'WORK' => 1, 'X509' => 1, - 'AFTER' => 1, 'ASCII' => 1, 'BEGIN' => 1, 'BLOCK' => 1, 'BTREE' => 1, - 'CACHE' => 1, 'CHAIN' => 1, 'CLOSE' => 1, 'FIRST' => 1, 'FIXED' => 1, - 'FLUSH' => 1, 'FOUND' => 1, 'HOSTS' => 1, 'LEVEL' => 1, 'LOCAL' => 1, - 'LOCKS' => 1, 'MERGE' => 1, 'MONTH' => 1, 'MUTEX' => 1, 'NAMES' => 1, - 'NCHAR' => 1, 'PHASE' => 1, 'POINT' => 1, 'QUERY' => 1, 'QUICK' => 1, - 'RAID0' => 1, 'RESET' => 1, 'RTREE' => 1, 'SHARE' => 1, 'SLAVE' => 1, - 'START' => 1, 'SUPER' => 1, 'SWAPS' => 1, 'TYPES' => 1, 'UNTIL' => 1, - 'VALUE' => 1, + 'FILE' => 1, 'FULL' => 1, 'HASH' => 1, 'HELP' => 1, 'LAST' => 1, 'LOGS' => 1, + 'MODE' => 1, 'NAME' => 1, 'NEXT' => 1, 'NONE' => 1, 'OPEN' => 1, 'PAGE' => 1, + 'PREV' => 1, 'ROWS' => 1, 'SOME' => 1, 'STOP' => 1, 'TYPE' => 1, 'VIEW' => 1, + 'WORK' => 1, 'X509' => 1, + 'AFTER' => 1, 'BEGIN' => 1, 'BLOCK' => 1, 'BTREE' => 1, 'CACHE' => 1, + 'CHAIN' => 1, 'CLOSE' => 1, 'FIRST' => 1, 'FIXED' => 1, 'FLUSH' => 1, + 'FOUND' => 1, 'HOSTS' => 1, 'LEVEL' => 1, 'LOCAL' => 1, 'LOCKS' => 1, + 'MERGE' => 1, 'MUTEX' => 1, 'NAMES' => 1, 'NCHAR' => 1, 'PHASE' => 1, + 'QUERY' => 1, 'QUICK' => 1, 'RAID0' => 1, 'RESET' => 1, 'RTREE' => 1, + 'SHARE' => 1, 'SLAVE' => 1, 'START' => 1, 'SUPER' => 1, 'SWAPS' => 1, + 'TYPES' => 1, 'UNTIL' => 1, 'VALUE' => 1, 'ACTION' => 1, 'BACKUP' => 1, 'BINLOG' => 1, 'CIPHER' => 1, 'CLIENT' => 1, 'COMMIT' => 1, 'ENABLE' => 1, 'ENGINE' => 1, 'ERRORS' => 1, 'ESCAPE' => 1, 'EVENTS' => 1, 'FAULTS' => 1, 'FIELDS' => 1, 'GLOBAL' => 1, 'GRANTS' => 1, 'IMPORT' => 1, 'INNODB' => 1, 'ISSUER' => 1, 'LEAVES' => 1, 'MASTER' => 1, - 'MEDIUM' => 1, 'MEMORY' => 1, 'MINUTE' => 1, 'MODIFY' => 1, 'OFFSET' => 1, - 'RELOAD' => 1, 'REPAIR' => 1, 'RESUME' => 1, 'ROLLUP' => 1, 'SECOND' => 1, - 'SERIAL' => 1, 'SIGNED' => 1, 'SIMPLE' => 1, 'SOUNDS' => 1, 'SOURCE' => 1, - 'STATUS' => 1, 'STRING' => 1, 'TABLES' => 1, - 'AGAINST' => 1, 'CHANGED' => 1, 'CHARSET' => 1, 'COLUMNS' => 1, 'COMMENT' => 1, - 'COMPACT' => 1, 'CONTEXT' => 1, 'DEFINER' => 1, 'DISABLE' => 1, 'DISCARD' => 1, - 'DYNAMIC' => 1, 'ENGINES' => 1, 'EXECUTE' => 1, 'HANDLER' => 1, 'INDEXES' => 1, - 'INVOKER' => 1, 'MIGRATE' => 1, 'PARTIAL' => 1, 'POLYGON' => 1, 'PREPARE' => 1, - 'PROFILE' => 1, 'QUARTER' => 1, 'RECOVER' => 1, 'RESTORE' => 1, 'RETURNS' => 1, - 'ROUTINE' => 1, 'SESSION' => 1, 'STORAGE' => 1, 'STRIPED' => 1, 'SUBJECT' => 1, - 'SUSPEND' => 1, 'UNICODE' => 1, 'UNKNOWN' => 1, 'UPGRADE' => 1, 'USE_FRM' => 1, - 'CASCADED' => 1, 'CHECKSUM' => 1, 'CONTAINS' => 1, 'DUMPFILE' => 1, - 'EXTENDED' => 1, 'FUNCTION' => 1, 'GEOMETRY' => 1, 'INNOBASE' => 1, - 'LANGUAGE' => 1, 'MAX_ROWS' => 1, 'MIN_ROWS' => 1, 'NATIONAL' => 1, - 'NVARCHAR' => 1, 'ONE_SHOT' => 1, 'PASSWORD' => 1, 'PROFILES' => 1, - 'ROLLBACK' => 1, 'SECURITY' => 1, 'SHUTDOWN' => 1, 'SNAPSHOT' => 1, - 'SWITCHES' => 1, 'TRIGGERS' => 1, 'TRUNCATE' => 1, 'WARNINGS' => 1, - 'AGGREGATE' => 1, 'ALGORITHM' => 1, 'COLLATION' => 1, 'COMMITTED' => 1, - 'DIRECTORY' => 1, 'DUPLICATE' => 1, 'EXPANSION' => 1, 'IO_THREAD' => 1, - 'ISOLATION' => 1, 'PACK_KEYS' => 1, 'RAID_TYPE' => 1, 'REDUNDANT' => 1, - 'SAVEPOINT' => 1, 'SQL_CACHE' => 1, 'TEMPORARY' => 1, 'TEMPTABLE' => 1, - 'UNDEFINED' => 1, 'VARIABLES' => 1, + 'MEDIUM' => 1, 'MEMORY' => 1, 'MODIFY' => 1, 'OFFSET' => 1, 'RELOAD' => 1, + 'REPAIR' => 1, 'RESUME' => 1, 'ROLLUP' => 1, 'SERIAL' => 1, 'SIGNED' => 1, + 'SIMPLE' => 1, 'SOUNDS' => 1, 'SOURCE' => 1, 'STATUS' => 1, 'STRING' => 1, + 'TABLES' => 1, + 'AGAINST' => 1, 'CHANGED' => 1, 'COLUMNS' => 1, 'COMMENT' => 1, 'COMPACT' => 1, + 'CONTEXT' => 1, 'DEFINER' => 1, 'DISABLE' => 1, 'DISCARD' => 1, 'DYNAMIC' => 1, + 'ENGINES' => 1, 'EXECUTE' => 1, 'HANDLER' => 1, 'INDEXES' => 1, 'INVOKER' => 1, + 'MIGRATE' => 1, 'PARTIAL' => 1, 'PREPARE' => 1, 'PROFILE' => 1, 'RECOVER' => 1, + 'RESTORE' => 1, 'RETURNS' => 1, 'ROUTINE' => 1, 'SESSION' => 1, 'STORAGE' => 1, + 'STRIPED' => 1, 'SUBJECT' => 1, 'SUSPEND' => 1, 'UNICODE' => 1, 'UNKNOWN' => 1, + 'UPGRADE' => 1, 'USE_FRM' => 1, + 'CASCADED' => 1, 'CHECKSUM' => 1, 'DUMPFILE' => 1, 'EXTENDED' => 1, + 'FUNCTION' => 1, 'GEOMETRY' => 1, 'INNOBASE' => 1, 'LANGUAGE' => 1, + 'MAX_ROWS' => 1, 'MIN_ROWS' => 1, 'NATIONAL' => 1, 'NVARCHAR' => 1, + 'ONE_SHOT' => 1, 'PROFILES' => 1, 'ROLLBACK' => 1, 'SECURITY' => 1, + 'SHUTDOWN' => 1, 'SNAPSHOT' => 1, 'SWITCHES' => 1, 'TRIGGERS' => 1, + 'WARNINGS' => 1, + 'AGGREGATE' => 1, 'ALGORITHM' => 1, 'COMMITTED' => 1, 'DIRECTORY' => 1, + 'DUPLICATE' => 1, 'EXPANSION' => 1, 'IO_THREAD' => 1, 'ISOLATION' => 1, + 'PACK_KEYS' => 1, 'RAID_TYPE' => 1, 'REDUNDANT' => 1, 'SAVEPOINT' => 1, + 'SQL_CACHE' => 1, 'TEMPORARY' => 1, 'TEMPTABLE' => 1, 'UNDEFINED' => 1, + 'VARIABLES' => 1, 'BERKELEYDB' => 1, 'COMPRESSED' => 1, 'CONCURRENT' => 1, 'CONNECTION' => 1, - 'CONSISTENT' => 1, 'DEALLOCATE' => 1, 'GET_FORMAT' => 1, 'IDENTIFIED' => 1, - 'LINESTRING' => 1, 'MASTER_SSL' => 1, 'MULTIPOINT' => 1, 'NDBCLUSTER' => 1, - 'PRIVILEGES' => 1, 'REPEATABLE' => 1, 'ROW_FORMAT' => 1, 'SQL_THREAD' => 1, - 'TABLESPACE' => 1, + 'CONSISTENT' => 1, 'DEALLOCATE' => 1, 'IDENTIFIED' => 1, 'MASTER_SSL' => 1, + 'NDBCLUSTER' => 1, 'PRIVILEGES' => 1, 'REPEATABLE' => 1, 'ROW_FORMAT' => 1, + 'SQL_THREAD' => 1, 'TABLESPACE' => 1, 'FRAC_SECOND' => 1, 'MASTER_HOST' => 1, 'MASTER_PORT' => 1, 'MASTER_USER' => 1, - 'MICROSECOND' => 1, 'PROCESSLIST' => 1, 'RAID_CHUNKS' => 1, 'REPLICATION' => 1, - 'SQL_TSI_DAY' => 1, 'TRANSACTION' => 1, 'UNCOMMITTED' => 1, - 'DES_KEY_FILE' => 1, 'MULTIPOLYGON' => 1, 'OLD_PASSWORD' => 1, - 'RELAY_THREAD' => 1, 'SERIALIZABLE' => 1, 'SQL_NO_CACHE' => 1, - 'SQL_TSI_HOUR' => 1, 'SQL_TSI_WEEK' => 1, 'SQL_TSI_YEAR' => 1, - 'TIMESTAMPADD' => 1, + 'PROCESSLIST' => 1, 'RAID_CHUNKS' => 1, 'REPLICATION' => 1, 'SQL_TSI_DAY' => 1, + 'TRANSACTION' => 1, 'UNCOMMITTED' => 1, + 'DES_KEY_FILE' => 1, 'RELAY_THREAD' => 1, 'SERIALIZABLE' => 1, + 'SQL_NO_CACHE' => 1, 'SQL_TSI_HOUR' => 1, 'SQL_TSI_WEEK' => 1, + 'SQL_TSI_YEAR' => 1, 'INSERT_METHOD' => 1, 'MASTER_SSL_CA' => 1, 'RELAY_LOG_POS' => 1, - 'SQL_TSI_MONTH' => 1, 'TIMESTAMPDIFF' => 1, + 'SQL_TSI_MONTH' => 1, 'AUTO_INCREMENT' => 1, 'AVG_ROW_LENGTH' => 1, 'MASTER_LOG_POS' => 1, 'MASTER_SSL_KEY' => 1, 'RAID_CHUNKSIZE' => 1, 'RELAY_LOG_FILE' => 1, 'SQL_TSI_MINUTE' => 1, 'SQL_TSI_SECOND' => 1, 'USER_RESOURCES' => 1, 'DELAY_KEY_WRITE' => 1, 'MASTER_LOG_FILE' => 1, 'MASTER_PASSWORD' => 1, - 'MASTER_SSL_CERT' => 1, 'MULTILINESTRING' => 1, 'SQL_TSI_QUARTER' => 1, + 'MASTER_SSL_CERT' => 1, 'SQL_TSI_QUARTER' => 1, 'MASTER_SERVER_ID' => 1, 'MASTER_SSL_CAPATH' => 1, 'MASTER_SSL_CIPHER' => 1, 'SQL_BUFFER_RESULT' => 1, - 'GEOMETRYCOLLECTION' => 1, 'SQL_TSI_FRAC_SECOND' => 1, 'MASTER_CONNECT_RETRY' => 1, 'MAX_QUERIES_PER_HOUR' => 1, 'MAX_UPDATES_PER_HOUR' => 1, 'MAX_USER_CONNECTIONS' => 1, 'MAX_CONNECTIONS_PER_HOUR' => 1, - 'AS' => 3, 'BY' => 3, 'IF' => 3, 'IN' => 3, 'IS' => 3, 'ON' => 3, 'OR' => 3, - 'TO' => 3, + 'AS' => 3, 'BY' => 3, 'IS' => 3, 'ON' => 3, 'OR' => 3, 'TO' => 3, 'ADD' => 3, 'ALL' => 3, 'AND' => 3, 'ASC' => 3, 'DEC' => 3, 'DIV' => 3, - 'FOR' => 3, 'MOD' => 3, 'NOT' => 3, 'OUT' => 3, 'SQL' => 3, 'SSL' => 3, - 'USE' => 3, 'XOR' => 3, + 'FOR' => 3, 'NOT' => 3, 'OUT' => 3, 'SQL' => 3, 'SSL' => 3, 'USE' => 3, + 'XOR' => 3, 'BOTH' => 3, 'CALL' => 3, 'CASE' => 3, 'DESC' => 3, 'DROP' => 3, 'DUAL' => 3, 'EACH' => 3, 'ELSE' => 3, 'EXIT' => 3, 'FROM' => 3, 'INT1' => 3, 'INT2' => 3, 'INT3' => 3, 'INT4' => 3, 'INT8' => 3, 'INTO' => 3, 'JOIN' => 3, 'KEYS' => 3, - 'KILL' => 3, 'LEFT' => 3, 'LIKE' => 3, 'LOAD' => 3, 'LOCK' => 3, 'LONG' => 3, - 'LOOP' => 3, 'NULL' => 3, 'READ' => 3, 'SHOW' => 3, 'THEN' => 3, 'TRUE' => 3, - 'UNDO' => 3, 'WHEN' => 3, 'WITH' => 3, + 'KILL' => 3, 'LIKE' => 3, 'LOAD' => 3, 'LOCK' => 3, 'LONG' => 3, 'LOOP' => 3, + 'NULL' => 3, 'READ' => 3, 'SHOW' => 3, 'THEN' => 3, 'TRUE' => 3, 'UNDO' => 3, + 'WHEN' => 3, 'WITH' => 3, 'ALTER' => 3, 'CHECK' => 3, 'CROSS' => 3, 'FALSE' => 3, 'FETCH' => 3, 'FORCE' => 3, 'GRANT' => 3, 'GROUP' => 3, 'INNER' => 3, 'INOUT' => 3, 'LEAVE' => 3, 'LIMIT' => 3, 'LINES' => 3, 'MATCH' => 3, 'ORDER' => 3, - 'OUTER' => 3, 'PURGE' => 3, 'READS' => 3, 'RIGHT' => 3, 'RLIKE' => 3, - 'TABLE' => 3, 'UNION' => 3, 'USAGE' => 3, 'USING' => 3, 'WHERE' => 3, - 'WHILE' => 3, 'WRITE' => 3, + 'OUTER' => 3, 'PURGE' => 3, 'READS' => 3, 'RLIKE' => 3, 'TABLE' => 3, + 'UNION' => 3, 'USAGE' => 3, 'USING' => 3, 'WHERE' => 3, 'WHILE' => 3, + 'WRITE' => 3, 'BEFORE' => 3, 'CHANGE' => 3, 'COLUMN' => 3, 'CREATE' => 3, 'CURSOR' => 3, 'DELETE' => 3, 'ELSEIF' => 3, 'EXISTS' => 3, 'FLOAT4' => 3, 'FLOAT8' => 3, - 'HAVING' => 3, 'IGNORE' => 3, 'INFILE' => 3, 'INSERT' => 3, 'OPTION' => 3, - 'REGEXP' => 3, 'RENAME' => 3, 'REPEAT' => 3, 'RETURN' => 3, 'REVOKE' => 3, - 'SCHEMA' => 3, 'SELECT' => 3, 'SONAME' => 3, 'UNLOCK' => 3, 'UPDATE' => 3, - 'VALUES' => 3, - 'ANALYZE' => 3, 'BETWEEN' => 3, 'CASCADE' => 3, 'COLLATE' => 3, 'CONVERT' => 3, - 'DECLARE' => 3, 'DEFAULT' => 3, 'DELAYED' => 3, 'ESCAPED' => 3, 'EXPLAIN' => 3, - 'FOREIGN' => 3, 'ITERATE' => 3, 'LEADING' => 3, 'NATURAL' => 3, 'OUTFILE' => 3, - 'PRIMARY' => 3, 'RELEASE' => 3, 'REPLACE' => 3, 'REQUIRE' => 3, 'SCHEMAS' => 3, - 'SPATIAL' => 3, 'TRIGGER' => 3, 'VARYING' => 3, - 'CONTINUE' => 3, 'DATABASE' => 3, 'DAY_HOUR' => 3, 'DESCRIBE' => 3, - 'DISTINCT' => 3, 'ENCLOSED' => 3, 'FULLTEXT' => 3, 'MODIFIES' => 3, - 'OPTIMIZE' => 3, 'RESTRICT' => 3, 'SPECIFIC' => 3, 'SQLSTATE' => 3, - 'STARTING' => 3, 'TRAILING' => 3, 'UNSIGNED' => 3, 'UTC_DATE' => 3, - 'UTC_TIME' => 3, 'ZEROFILL' => 3, - 'CONDITION' => 3, 'DATABASES' => 3, 'LOCALTIME' => 3, 'MIDDLEINT' => 3, - 'PRECISION' => 3, 'PROCEDURE' => 3, 'SENSITIVE' => 3, 'SEPARATOR' => 3, + 'HAVING' => 3, 'IGNORE' => 3, 'INFILE' => 3, 'OPTION' => 3, 'REGEXP' => 3, + 'RENAME' => 3, 'RETURN' => 3, 'REVOKE' => 3, 'SELECT' => 3, 'SONAME' => 3, + 'UNLOCK' => 3, 'UPDATE' => 3, + 'ANALYZE' => 3, 'BETWEEN' => 3, 'CASCADE' => 3, 'COLLATE' => 3, 'DECLARE' => 3, + 'DELAYED' => 3, 'ESCAPED' => 3, 'EXPLAIN' => 3, 'FOREIGN' => 3, 'ITERATE' => 3, + 'LEADING' => 3, 'NATURAL' => 3, 'OUTFILE' => 3, 'PRIMARY' => 3, 'RELEASE' => 3, + 'REQUIRE' => 3, 'SCHEMAS' => 3, 'SPATIAL' => 3, 'TRIGGER' => 3, 'VARYING' => 3, + 'CONTINUE' => 3, 'DAY_HOUR' => 3, 'DESCRIBE' => 3, 'DISTINCT' => 3, + 'ENCLOSED' => 3, 'FULLTEXT' => 3, 'MODIFIES' => 3, 'OPTIMIZE' => 3, + 'RESTRICT' => 3, 'SPECIFIC' => 3, 'SQLSTATE' => 3, 'STARTING' => 3, + 'TRAILING' => 3, 'UNSIGNED' => 3, 'ZEROFILL' => 3, + 'CONDITION' => 3, 'DATABASES' => 3, 'MIDDLEINT' => 3, 'PRECISION' => 3, + 'PROCEDURE' => 3, 'SENSITIVE' => 3, 'SEPARATOR' => 3, 'ASENSITIVE' => 3, 'CONSTRAINT' => 3, 'DAY_MINUTE' => 3, 'DAY_SECOND' => 3, 'OPTIONALLY' => 3, 'REFERENCES' => 3, 'SQLWARNING' => 3, 'TERMINATED' => 3, 'YEAR_MONTH' => 3, 'DISTINCTROW' => 3, 'HOUR_MINUTE' => 3, 'HOUR_SECOND' => 3, 'INSENSITIVE' => 3, - 'CURRENT_DATE' => 3, 'CURRENT_TIME' => 3, 'CURRENT_USER' => 3, 'LOW_PRIORITY' => 3, 'SQLEXCEPTION' => 3, 'VARCHARACTER' => 3, 'DETERMINISTIC' => 3, 'HIGH_PRIORITY' => 3, 'MINUTE_SECOND' => 3, - 'STRAIGHT_JOIN' => 3, 'UTC_TIMESTAMP' => 3, - 'LOCALTIMESTAMP' => 3, 'SQL_BIG_RESULT' => 3, + 'STRAIGHT_JOIN' => 3, + 'SQL_BIG_RESULT' => 3, 'DAY_MICROSECOND' => 3, 'HOUR_MICROSECOND' => 3, 'SQL_SMALL_RESULT' => 3, - 'CURRENT_TIMESTAMP' => 3, 'MINUTE_MICROSECOND' => 3, 'NO_WRITE_TO_BINLOG' => 3, 'SECOND_MICROSECOND' => 3, 'SQL_CALC_FOUND_ROWS' => 3, @@ -162,19 +152,18 @@ class ContextMySql50000 extends Context 'GROUP BY' => 7, 'ORDER BY' => 7, 'XML' => 9, - 'DATE' => 9, 'ENUM' => 9, 'TEXT' => 9, 'TIME' => 9, 'YEAR' => 9, + 'ENUM' => 9, 'TEXT' => 9, 'ARRAY' => 9, 'BOOLEAN' => 9, 'DATETIME' => 9, 'MULTISET' => 9, - 'TIMESTAMP' => 9, 'INT' => 11, 'SET' => 11, - 'BLOB' => 11, 'CHAR' => 11, 'REAL' => 11, + 'BLOB' => 11, 'REAL' => 11, 'FLOAT' => 11, 'BIGINT' => 11, 'BINARY' => 11, 'DOUBLE' => 11, 'DECIMAL' => 11, 'INTEGER' => 11, 'NUMERIC' => 11, 'TINYINT' => 11, 'VARCHAR' => 11, - 'INTERVAL' => 11, 'LONGBLOB' => 11, 'LONGTEXT' => 11, 'SMALLINT' => 11, - 'TINYBLOB' => 11, 'TINYTEXT' => 11, + 'LONGBLOB' => 11, 'LONGTEXT' => 11, 'SMALLINT' => 11, 'TINYBLOB' => 11, + 'TINYTEXT' => 11, 'CHARACTER' => 11, 'MEDIUMINT' => 11, 'VARBINARY' => 11, 'MEDIUMBLOB' => 11, 'MEDIUMTEXT' => 11, @@ -191,5 +180,91 @@ class ContextMySql50000 extends Context 'SPATIAL INDEX' => 21, 'FULLTEXT INDEX' => 21, + 'X' => 33, 'Y' => 33, + 'LN' => 33, 'PI' => 33, + 'ABS' => 33, 'AVG' => 33, 'BIN' => 33, 'COS' => 33, 'COT' => 33, 'DAY' => 33, + 'ELT' => 33, 'EXP' => 33, 'HEX' => 33, 'LOG' => 33, 'MAX' => 33, 'MD5' => 33, + 'MID' => 33, 'MIN' => 33, 'NOW' => 33, 'OCT' => 33, 'ORD' => 33, 'POW' => 33, + 'SIN' => 33, 'STD' => 33, 'SUM' => 33, 'TAN' => 33, + 'ACOS' => 33, 'AREA' => 33, 'ASIN' => 33, 'ATAN' => 33, 'CAST' => 33, 'CEIL' => 33, + 'CONV' => 33, 'HOUR' => 33, 'LOG2' => 33, 'LPAD' => 33, 'RAND' => 33, 'RPAD' => 33, + 'SHA1' => 33, 'SIGN' => 33, 'SQRT' => 33, 'SRID' => 33, 'TRIM' => 33, 'USER' => 33, + 'UUID' => 33, 'WEEK' => 33, + 'ASCII' => 33, 'ATAN2' => 33, 'COUNT' => 33, 'CRC32' => 33, 'FIELD' => 33, + 'FLOOR' => 33, 'INSTR' => 33, 'LCASE' => 33, 'LEAST' => 33, 'LOG10' => 33, + 'LOWER' => 33, 'LTRIM' => 33, 'MONTH' => 33, 'POINT' => 33, 'POWER' => 33, + 'QUOTE' => 33, 'ROUND' => 33, 'RTRIM' => 33, 'SLEEP' => 33, 'SPACE' => 33, + 'UCASE' => 33, 'UNHEX' => 33, 'UPPER' => 33, + 'ASTEXT' => 33, 'BIT_OR' => 33, 'CONCAT' => 33, 'DECODE' => 33, 'ENCODE' => 33, + 'EQUALS' => 33, 'FORMAT' => 33, 'IFNULL' => 33, 'ISNULL' => 33, 'LENGTH' => 33, + 'LOCATE' => 33, 'MINUTE' => 33, 'NULLIF' => 33, 'POINTN' => 33, 'SECOND' => 33, + 'STDDEV' => 33, 'STRCMP' => 33, 'SUBSTR' => 33, 'WITHIN' => 33, + 'ADDDATE' => 33, 'ADDTIME' => 33, 'BIT_AND' => 33, 'BIT_XOR' => 33, 'CEILING' => 33, + 'CHARSET' => 33, 'CROSSES' => 33, 'CURDATE' => 33, 'CURTIME' => 33, 'DAYNAME' => 33, + 'DEGREES' => 33, 'ENCRYPT' => 33, 'EXTRACT' => 33, 'GLENGTH' => 33, 'ISEMPTY' => 33, + 'POLYGON' => 33, 'QUARTER' => 33, 'RADIANS' => 33, 'REVERSE' => 33, 'SOUNDEX' => 33, + 'SUBDATE' => 33, 'SUBTIME' => 33, 'SYSDATE' => 33, 'TOUCHES' => 33, 'TO_DAYS' => 33, + 'VAR_POP' => 33, 'VERSION' => 33, 'WEEKDAY' => 33, + 'ASBINARY' => 33, 'CENTROID' => 33, 'COALESCE' => 33, 'COMPRESS' => 33, + 'CONTAINS' => 33, 'DATEDIFF' => 33, 'DATE_ADD' => 33, 'DATE_SUB' => 33, + 'DISJOINT' => 33, 'ENDPOINT' => 33, 'ENVELOPE' => 33, 'GET_LOCK' => 33, + 'GREATEST' => 33, 'ISCLOSED' => 33, 'ISSIMPLE' => 33, 'MAKEDATE' => 33, + 'MAKETIME' => 33, 'MAKE_SET' => 33, 'MBREQUAL' => 33, 'OVERLAPS' => 33, + 'PASSWORD' => 33, 'POSITION' => 33, 'TIMEDIFF' => 33, 'TRUNCATE' => 33, + 'VARIANCE' => 33, 'VAR_SAMP' => 33, 'YEARWEEK' => 33, + 'BENCHMARK' => 33, 'BIT_COUNT' => 33, 'COLLATION' => 33, 'CONCAT_WS' => 33, + 'DAYOFWEEK' => 33, 'DAYOFYEAR' => 33, 'DIMENSION' => 33, 'FROM_DAYS' => 33, + 'GEOMETRYN' => 33, 'INET_ATON' => 33, 'INET_NTOA' => 33, 'LOAD_FILE' => 33, + 'MBRWITHIN' => 33, 'MONTHNAME' => 33, 'NUMPOINTS' => 33, 'ROW_COUNT' => 33, + 'SUBSTRING' => 33, + 'BIT_LENGTH' => 33, 'CONVERT_TZ' => 33, 'DAYOFMONTH' => 33, 'EXPORT_SET' => 33, + 'FOUND_ROWS' => 33, 'GET_FORMAT' => 33, 'INTERSECTS' => 33, 'LINESTRING' => 33, + 'MBRTOUCHES' => 33, 'MULTIPOINT' => 33, 'NAME_CONST' => 33, 'PERIOD_ADD' => 33, + 'STARTPOINT' => 33, 'STDDEV_POP' => 33, 'UNCOMPRESS' => 33, 'WEEKOFYEAR' => 33, + 'AES_DECRYPT' => 33, 'AES_ENCRYPT' => 33, 'CHAR_LENGTH' => 33, 'DATE_FORMAT' => 33, + 'DES_DECRYPT' => 33, 'DES_ENCRYPT' => 33, 'FIND_IN_SET' => 33, 'GEOMFROMWKB' => 33, + 'LINEFROMWKB' => 33, 'MBRCONTAINS' => 33, 'MBRDISJOINT' => 33, 'MBROVERLAPS' => 33, + 'MICROSECOND' => 33, 'PERIOD_DIFF' => 33, 'POLYFROMWKB' => 33, 'SEC_TO_TIME' => 33, + 'STDDEV_SAMP' => 33, 'STR_TO_DATE' => 33, 'SYSTEM_USER' => 33, 'TIME_FORMAT' => 33, + 'TIME_TO_SEC' => 33, + 'COERCIBILITY' => 33, 'EXTERIORRING' => 33, 'GEOMETRYTYPE' => 33, + 'GEOMFROMTEXT' => 33, 'GROUP_CONCAT' => 33, 'IS_FREE_LOCK' => 33, + 'IS_USED_LOCK' => 33, 'LINEFROMTEXT' => 33, 'MLINEFROMWKB' => 33, + 'MPOLYFROMWKB' => 33, 'MULTIPOLYGON' => 33, 'OCTET_LENGTH' => 33, + 'OLD_PASSWORD' => 33, 'POINTFROMWKB' => 33, 'POLYFROMTEXT' => 33, + 'RELEASE_LOCK' => 33, 'SESSION_USER' => 33, 'TIMESTAMPADD' => 33, + 'CONNECTION_ID' => 33, 'FROM_UNIXTIME' => 33, 'INTERIORRINGN' => 33, + 'MBRINTERSECTS' => 33, 'MLINEFROMTEXT' => 33, 'MPOINTFROMWKB' => 33, + 'MPOLYFROMTEXT' => 33, 'NUMGEOMETRIES' => 33, 'POINTFROMTEXT' => 33, + 'TIMESTAMPDIFF' => 33, + 'LAST_INSERT_ID' => 33, 'MPOINTFROMTEXT' => 33, 'UNIX_TIMESTAMP' => 33, + 'GEOMCOLLFROMWKB' => 33, 'MASTER_POS_WAIT' => 33, 'MULTILINESTRING' => 33, + 'SUBSTRING_INDEX' => 33, + 'CHARACTER_LENGTH' => 33, 'GEOMCOLLFROMTEXT' => 33, 'NUMINTERIORRINGS' => 33, + 'GEOMETRYCOLLECTION' => 33, + 'UNCOMPRESSED_LENGTH' => 33, + + 'IF' => 35, 'IN' => 35, + 'MOD' => 35, + 'LEFT' => 35, + 'RIGHT' => 35, + 'INSERT' => 35, 'REPEAT' => 35, 'SCHEMA' => 35, 'VALUES' => 35, + 'CONVERT' => 35, 'DEFAULT' => 35, 'REPLACE' => 35, + 'DATABASE' => 35, 'UTC_DATE' => 35, 'UTC_TIME' => 35, + 'LOCALTIME' => 35, + 'CURRENT_DATE' => 35, 'CURRENT_TIME' => 35, 'CURRENT_USER' => 35, + 'UTC_TIMESTAMP' => 35, + 'LOCALTIMESTAMP' => 35, + 'CURRENT_TIMESTAMP' => 35, + + 'NOT IN' => 37, + 'PROCEDURE ANALYSE' => 37, + + 'DATE' => 41, 'TIME' => 41, 'YEAR' => 41, + 'TIMESTAMP' => 41, + + 'CHAR' => 43, + 'INTERVAL' => 43, + ); } diff --git a/src/Contexts/ContextMySql50100.php b/src/Contexts/ContextMySql50100.php index 265979f..c6db3d5 100644 --- a/src/Contexts/ContextMySql50100.php +++ b/src/Contexts/ContextMySql50100.php @@ -34,134 +34,121 @@ class ContextMySql50100 extends Context public static $KEYWORDS = array( 'AT' => 1, 'DO' => 1, 'IO' => 1, 'NO' => 1, 'XA' => 1, - 'ANY' => 1, 'AVG' => 1, 'BDB' => 1, 'BIT' => 1, 'CPU' => 1, 'DAY' => 1, - 'END' => 1, 'IPC' => 1, 'NDB' => 1, 'NEW' => 1, 'ONE' => 1, 'ROW' => 1, + 'ANY' => 1, 'BDB' => 1, 'BIT' => 1, 'CPU' => 1, 'END' => 1, 'IPC' => 1, + 'NDB' => 1, 'NEW' => 1, 'ONE' => 1, 'ROW' => 1, 'BOOL' => 1, 'BYTE' => 1, 'CODE' => 1, 'CUBE' => 1, 'DATA' => 1, 'DISK' => 1, 'ENDS' => 1, 'FAST' => 1, 'FILE' => 1, 'FULL' => 1, 'GOTO' => 1, 'HASH' => 1, - 'HELP' => 1, 'HOST' => 1, 'HOUR' => 1, 'LAST' => 1, 'LESS' => 1, 'LIST' => 1, - 'LOGS' => 1, 'MODE' => 1, 'NAME' => 1, 'NEXT' => 1, 'NONE' => 1, 'OPEN' => 1, - 'PAGE' => 1, 'PORT' => 1, 'PREV' => 1, 'ROWS' => 1, 'SOME' => 1, 'STOP' => 1, - 'THAN' => 1, 'TYPE' => 1, 'USER' => 1, 'VIEW' => 1, 'WAIT' => 1, 'WEEK' => 1, - 'WORK' => 1, 'X509' => 1, - 'AFTER' => 1, 'ASCII' => 1, 'BEGIN' => 1, 'BLOCK' => 1, 'BTREE' => 1, - 'CACHE' => 1, 'CHAIN' => 1, 'CLOSE' => 1, 'EVENT' => 1, 'EVERY' => 1, - 'FIRST' => 1, 'FIXED' => 1, 'FLUSH' => 1, 'FOUND' => 1, 'HOSTS' => 1, - 'LABEL' => 1, 'LEVEL' => 1, 'LOCAL' => 1, 'LOCKS' => 1, 'MERGE' => 1, - 'MONTH' => 1, 'MUTEX' => 1, 'NAMES' => 1, 'NCHAR' => 1, 'OWNER' => 1, - 'PHASE' => 1, 'POINT' => 1, 'QUERY' => 1, 'QUICK' => 1, 'RAID0' => 1, - 'RESET' => 1, 'RTREE' => 1, 'SHARE' => 1, 'SLAVE' => 1, 'START' => 1, - 'SUPER' => 1, 'SWAPS' => 1, 'TYPES' => 1, 'UNTIL' => 1, 'VALUE' => 1, + 'HELP' => 1, 'HOST' => 1, 'LAST' => 1, 'LESS' => 1, 'LIST' => 1, 'LOGS' => 1, + 'MODE' => 1, 'NAME' => 1, 'NEXT' => 1, 'NONE' => 1, 'OPEN' => 1, 'PAGE' => 1, + 'PORT' => 1, 'PREV' => 1, 'ROWS' => 1, 'SOME' => 1, 'STOP' => 1, 'THAN' => 1, + 'TYPE' => 1, 'VIEW' => 1, 'WAIT' => 1, 'WORK' => 1, 'X509' => 1, + 'AFTER' => 1, 'BEGIN' => 1, 'BLOCK' => 1, 'BTREE' => 1, 'CACHE' => 1, + 'CHAIN' => 1, 'CLOSE' => 1, 'EVENT' => 1, 'EVERY' => 1, 'FIRST' => 1, + 'FIXED' => 1, 'FLUSH' => 1, 'FOUND' => 1, 'HOSTS' => 1, 'LABEL' => 1, + 'LEVEL' => 1, 'LOCAL' => 1, 'LOCKS' => 1, 'MERGE' => 1, 'MUTEX' => 1, + 'NAMES' => 1, 'NCHAR' => 1, 'OWNER' => 1, 'PHASE' => 1, 'QUERY' => 1, + 'QUICK' => 1, 'RAID0' => 1, 'RESET' => 1, 'RTREE' => 1, 'SHARE' => 1, + 'SLAVE' => 1, 'START' => 1, 'SUPER' => 1, 'SWAPS' => 1, 'TYPES' => 1, + 'UNTIL' => 1, 'VALUE' => 1, 'ACTION' => 1, 'BACKUP' => 1, 'BINLOG' => 1, 'CIPHER' => 1, 'CLIENT' => 1, 'COMMIT' => 1, 'ENABLE' => 1, 'ENGINE' => 1, 'ERRORS' => 1, 'ESCAPE' => 1, 'EVENTS' => 1, 'FAULTS' => 1, 'FIELDS' => 1, 'GLOBAL' => 1, 'GRANTS' => 1, 'IMPORT' => 1, 'INNODB' => 1, 'ISSUER' => 1, 'LEAVES' => 1, 'MASTER' => 1, - 'MEDIUM' => 1, 'MEMORY' => 1, 'MINUTE' => 1, 'MODIFY' => 1, 'OFFSET' => 1, - 'PARSER' => 1, 'PLUGIN' => 1, 'RELOAD' => 1, 'REMOVE' => 1, 'REPAIR' => 1, - 'RESUME' => 1, 'ROLLUP' => 1, 'SECOND' => 1, 'SERIAL' => 1, 'SERVER' => 1, - 'SIGNED' => 1, 'SIMPLE' => 1, 'SOCKET' => 1, 'SONAME' => 1, 'SOUNDS' => 1, - 'SOURCE' => 1, 'STARTS' => 1, 'STATUS' => 1, 'STRING' => 1, 'TABLES' => 1, - 'AGAINST' => 1, 'AUTHORS' => 1, 'CHANGED' => 1, 'CHARSET' => 1, 'COLUMNS' => 1, - 'COMMENT' => 1, 'COMPACT' => 1, 'CONTEXT' => 1, 'DEFINER' => 1, 'DISABLE' => 1, - 'DISCARD' => 1, 'DYNAMIC' => 1, 'ENGINES' => 1, 'EXECUTE' => 1, 'HANDLER' => 1, - 'INDEXES' => 1, 'INSTALL' => 1, 'INVOKER' => 1, 'LOGFILE' => 1, 'MIGRATE' => 1, - 'NO_WAIT' => 1, 'OPTIONS' => 1, 'PARTIAL' => 1, 'PLUGINS' => 1, 'POLYGON' => 1, - 'PREPARE' => 1, 'PROFILE' => 1, 'QUARTER' => 1, 'REBUILD' => 1, 'RECOVER' => 1, - 'RESTORE' => 1, 'RETURNS' => 1, 'ROUTINE' => 1, 'SESSION' => 1, 'STORAGE' => 1, - 'STRIPED' => 1, 'SUBJECT' => 1, 'SUSPEND' => 1, 'UNICODE' => 1, 'UNKNOWN' => 1, - 'UPGRADE' => 1, 'USE_FRM' => 1, 'WRAPPER' => 1, - 'CASCADED' => 1, 'CHECKSUM' => 1, 'COALESCE' => 1, 'CONTAINS' => 1, - 'DATAFILE' => 1, 'DUMPFILE' => 1, 'EXTENDED' => 1, 'FUNCTION' => 1, - 'GEOMETRY' => 1, 'INNOBASE' => 1, 'LANGUAGE' => 1, 'MAXVALUE' => 1, - 'MAX_ROWS' => 1, 'MAX_SIZE' => 1, 'MIN_ROWS' => 1, 'NATIONAL' => 1, - 'NVARCHAR' => 1, 'ONE_SHOT' => 1, 'PASSWORD' => 1, 'PRESERVE' => 1, - 'PROFILES' => 1, 'REDOFILE' => 1, 'ROLLBACK' => 1, 'SCHEDULE' => 1, - 'SECURITY' => 1, 'SHUTDOWN' => 1, 'SNAPSHOT' => 1, 'SWITCHES' => 1, - 'TRIGGERS' => 1, 'TRUNCATE' => 1, 'UNDOFILE' => 1, 'WARNINGS' => 1, - 'AGGREGATE' => 1, 'ALGORITHM' => 1, 'COLLATION' => 1, 'COMMITTED' => 1, - 'DIRECTORY' => 1, 'DUPLICATE' => 1, 'EXPANSION' => 1, 'IO_THREAD' => 1, - 'ISOLATION' => 1, 'NODEGROUP' => 1, 'PACK_KEYS' => 1, 'PARTITION' => 1, - 'RAID_TYPE' => 1, 'READ_ONLY' => 1, 'REDUNDANT' => 1, 'SAVEPOINT' => 1, - 'SCHEDULER' => 1, 'SQL_CACHE' => 1, 'TEMPORARY' => 1, 'TEMPTABLE' => 1, - 'UNDEFINED' => 1, 'UNINSTALL' => 1, 'VARIABLES' => 1, + 'MEDIUM' => 1, 'MEMORY' => 1, 'MODIFY' => 1, 'OFFSET' => 1, 'PARSER' => 1, + 'PLUGIN' => 1, 'RELOAD' => 1, 'REMOVE' => 1, 'REPAIR' => 1, 'RESUME' => 1, + 'ROLLUP' => 1, 'SERIAL' => 1, 'SERVER' => 1, 'SIGNED' => 1, 'SIMPLE' => 1, + 'SOCKET' => 1, 'SONAME' => 1, 'SOUNDS' => 1, 'SOURCE' => 1, 'STARTS' => 1, + 'STATUS' => 1, 'STRING' => 1, 'TABLES' => 1, + 'AGAINST' => 1, 'AUTHORS' => 1, 'CHANGED' => 1, 'COLUMNS' => 1, 'COMMENT' => 1, + 'COMPACT' => 1, 'CONTEXT' => 1, 'DEFINER' => 1, 'DISABLE' => 1, 'DISCARD' => 1, + 'DYNAMIC' => 1, 'ENGINES' => 1, 'EXECUTE' => 1, 'HANDLER' => 1, 'INDEXES' => 1, + 'INSTALL' => 1, 'INVOKER' => 1, 'LOGFILE' => 1, 'MIGRATE' => 1, 'NO_WAIT' => 1, + 'OPTIONS' => 1, 'PARTIAL' => 1, 'PLUGINS' => 1, 'PREPARE' => 1, 'PROFILE' => 1, + 'REBUILD' => 1, 'RECOVER' => 1, 'RESTORE' => 1, 'RETURNS' => 1, 'ROUTINE' => 1, + 'SESSION' => 1, 'STORAGE' => 1, 'STRIPED' => 1, 'SUBJECT' => 1, 'SUSPEND' => 1, + 'UNICODE' => 1, 'UNKNOWN' => 1, 'UPGRADE' => 1, 'USE_FRM' => 1, 'WRAPPER' => 1, + 'CASCADED' => 1, 'CHECKSUM' => 1, 'DATAFILE' => 1, 'DUMPFILE' => 1, + 'EXTENDED' => 1, 'FUNCTION' => 1, 'GEOMETRY' => 1, 'INNOBASE' => 1, + 'LANGUAGE' => 1, 'MAXVALUE' => 1, 'MAX_ROWS' => 1, 'MAX_SIZE' => 1, + 'MIN_ROWS' => 1, 'NATIONAL' => 1, 'NVARCHAR' => 1, 'ONE_SHOT' => 1, + 'PRESERVE' => 1, 'PROFILES' => 1, 'REDOFILE' => 1, 'ROLLBACK' => 1, + 'SCHEDULE' => 1, 'SECURITY' => 1, 'SHUTDOWN' => 1, 'SNAPSHOT' => 1, + 'SWITCHES' => 1, 'TRIGGERS' => 1, 'UNDOFILE' => 1, 'WARNINGS' => 1, + 'AGGREGATE' => 1, 'ALGORITHM' => 1, 'COMMITTED' => 1, 'DIRECTORY' => 1, + 'DUPLICATE' => 1, 'EXPANSION' => 1, 'IO_THREAD' => 1, 'ISOLATION' => 1, + 'NODEGROUP' => 1, 'PACK_KEYS' => 1, 'PARTITION' => 1, 'RAID_TYPE' => 1, + 'READ_ONLY' => 1, 'REDUNDANT' => 1, 'SAVEPOINT' => 1, 'SCHEDULER' => 1, + 'SQL_CACHE' => 1, 'TEMPORARY' => 1, 'TEMPTABLE' => 1, 'UNDEFINED' => 1, + 'UNINSTALL' => 1, 'VARIABLES' => 1, 'BERKELEYDB' => 1, 'COMPLETION' => 1, 'COMPRESSED' => 1, 'CONCURRENT' => 1, - 'CONNECTION' => 1, 'CONSISTENT' => 1, 'DEALLOCATE' => 1, 'GET_FORMAT' => 1, - 'IDENTIFIED' => 1, 'LINESTRING' => 1, 'MASTER_SSL' => 1, 'MULTIPOINT' => 1, - 'NDBCLUSTER' => 1, 'PARTITIONS' => 1, 'PRIVILEGES' => 1, 'REORGANISE' => 1, - 'REORGANIZE' => 1, 'REPEATABLE' => 1, 'ROW_FORMAT' => 1, 'SQL_THREAD' => 1, - 'TABLESPACE' => 1, + 'CONNECTION' => 1, 'CONSISTENT' => 1, 'DEALLOCATE' => 1, 'IDENTIFIED' => 1, + 'MASTER_SSL' => 1, 'NDBCLUSTER' => 1, 'PARTITIONS' => 1, 'PRIVILEGES' => 1, + 'REORGANISE' => 1, 'REORGANIZE' => 1, 'REPEATABLE' => 1, 'ROW_FORMAT' => 1, + 'SQL_THREAD' => 1, 'TABLESPACE' => 1, 'EXTENT_SIZE' => 1, 'FRAC_SECOND' => 1, 'MASTER_HOST' => 1, 'MASTER_PORT' => 1, - 'MASTER_USER' => 1, 'MICROSECOND' => 1, 'PROCESSLIST' => 1, 'RAID_CHUNKS' => 1, - 'REPLICATION' => 1, 'SQL_TSI_DAY' => 1, 'TRANSACTION' => 1, 'UNCOMMITTED' => 1, + 'MASTER_USER' => 1, 'PROCESSLIST' => 1, 'RAID_CHUNKS' => 1, 'REPLICATION' => 1, + 'SQL_TSI_DAY' => 1, 'TRANSACTION' => 1, 'UNCOMMITTED' => 1, 'CONTRIBUTORS' => 1, 'DES_KEY_FILE' => 1, 'INITIAL_SIZE' => 1, - 'MULTIPOLYGON' => 1, 'OLD_PASSWORD' => 1, 'PARTITIONING' => 1, - 'RELAY_THREAD' => 1, 'SERIALIZABLE' => 1, 'SQL_NO_CACHE' => 1, - 'SQL_TSI_HOUR' => 1, 'SQL_TSI_WEEK' => 1, 'SQL_TSI_YEAR' => 1, - 'SUBPARTITION' => 1, 'TIMESTAMPADD' => 1, + 'PARTITIONING' => 1, 'RELAY_THREAD' => 1, 'SERIALIZABLE' => 1, + 'SQL_NO_CACHE' => 1, 'SQL_TSI_HOUR' => 1, 'SQL_TSI_WEEK' => 1, + 'SQL_TSI_YEAR' => 1, 'SUBPARTITION' => 1, 'INSERT_METHOD' => 1, 'MASTER_SSL_CA' => 1, 'PAGE_CHECKSUM' => 1, 'RELAY_LOG_POS' => 1, 'SQL_TSI_MONTH' => 1, 'SUBPARTITIONS' => 1, - 'TIMESTAMPDIFF' => 1, 'TRANSACTIONAL' => 1, + 'TRANSACTIONAL' => 1, 'AUTO_INCREMENT' => 1, 'AVG_ROW_LENGTH' => 1, 'KEY_BLOCK_SIZE' => 1, 'MASTER_LOG_POS' => 1, 'MASTER_SSL_KEY' => 1, 'RAID_CHUNKSIZE' => 1, 'RELAY_LOG_FILE' => 1, 'SQL_TSI_MINUTE' => 1, 'SQL_TSI_SECOND' => 1, 'TABLE_CHECKSUM' => 1, 'USER_RESOURCES' => 1, 'AUTOEXTEND_SIZE' => 1, 'DELAY_KEY_WRITE' => 1, 'MASTER_LOG_FILE' => 1, - 'MASTER_PASSWORD' => 1, 'MASTER_SSL_CERT' => 1, 'MULTILINESTRING' => 1, - 'SQL_TSI_QUARTER' => 1, + 'MASTER_PASSWORD' => 1, 'MASTER_SSL_CERT' => 1, 'SQL_TSI_QUARTER' => 1, 'MASTER_SERVER_ID' => 1, 'REDO_BUFFER_SIZE' => 1, 'UNDO_BUFFER_SIZE' => 1, 'MASTER_SSL_CAPATH' => 1, 'MASTER_SSL_CIPHER' => 1, 'SQL_BUFFER_RESULT' => 1, - 'GEOMETRYCOLLECTION' => 1, 'SQL_TSI_FRAC_SECOND' => 1, 'MASTER_CONNECT_RETRY' => 1, 'MAX_QUERIES_PER_HOUR' => 1, 'MAX_UPDATES_PER_HOUR' => 1, 'MAX_USER_CONNECTIONS' => 1, 'MAX_CONNECTIONS_PER_HOUR' => 1, - 'AS' => 3, 'BY' => 3, 'IF' => 3, 'IN' => 3, 'IS' => 3, 'ON' => 3, 'OR' => 3, - 'TO' => 3, + 'AS' => 3, 'BY' => 3, 'IS' => 3, 'ON' => 3, 'OR' => 3, 'TO' => 3, 'ADD' => 3, 'ALL' => 3, 'AND' => 3, 'ASC' => 3, 'DEC' => 3, 'DIV' => 3, - 'FOR' => 3, 'MOD' => 3, 'NOT' => 3, 'OUT' => 3, 'SQL' => 3, 'SSL' => 3, - 'USE' => 3, 'XOR' => 3, + 'FOR' => 3, 'NOT' => 3, 'OUT' => 3, 'SQL' => 3, 'SSL' => 3, 'USE' => 3, + 'XOR' => 3, 'BOTH' => 3, 'CALL' => 3, 'CASE' => 3, 'DESC' => 3, 'DROP' => 3, 'DUAL' => 3, 'EACH' => 3, 'ELSE' => 3, 'EXIT' => 3, 'FROM' => 3, 'INT1' => 3, 'INT2' => 3, 'INT3' => 3, 'INT4' => 3, 'INT8' => 3, 'INTO' => 3, 'JOIN' => 3, 'KEYS' => 3, - 'KILL' => 3, 'LEFT' => 3, 'LIKE' => 3, 'LOAD' => 3, 'LOCK' => 3, 'LONG' => 3, - 'LOOP' => 3, 'NULL' => 3, 'READ' => 3, 'SHOW' => 3, 'THEN' => 3, 'TRUE' => 3, - 'UNDO' => 3, 'WHEN' => 3, 'WITH' => 3, + 'KILL' => 3, 'LIKE' => 3, 'LOAD' => 3, 'LOCK' => 3, 'LONG' => 3, 'LOOP' => 3, + 'NULL' => 3, 'READ' => 3, 'SHOW' => 3, 'THEN' => 3, 'TRUE' => 3, 'UNDO' => 3, + 'WHEN' => 3, 'WITH' => 3, 'ALTER' => 3, 'CHECK' => 3, 'CROSS' => 3, 'FALSE' => 3, 'FETCH' => 3, 'FORCE' => 3, 'GRANT' => 3, 'GROUP' => 3, 'INNER' => 3, 'INOUT' => 3, 'LEAVE' => 3, 'LIMIT' => 3, 'LINES' => 3, 'MATCH' => 3, 'ORDER' => 3, - 'OUTER' => 3, 'PURGE' => 3, 'RANGE' => 3, 'READS' => 3, 'RIGHT' => 3, - 'RLIKE' => 3, 'TABLE' => 3, 'UNION' => 3, 'USAGE' => 3, 'USING' => 3, - 'WHERE' => 3, 'WHILE' => 3, 'WRITE' => 3, + 'OUTER' => 3, 'PURGE' => 3, 'RANGE' => 3, 'READS' => 3, 'RLIKE' => 3, + 'TABLE' => 3, 'UNION' => 3, 'USAGE' => 3, 'USING' => 3, 'WHERE' => 3, + 'WHILE' => 3, 'WRITE' => 3, 'BEFORE' => 3, 'CHANGE' => 3, 'COLUMN' => 3, 'CREATE' => 3, 'CURSOR' => 3, 'DELETE' => 3, 'ELSEIF' => 3, 'EXISTS' => 3, 'FLOAT4' => 3, 'FLOAT8' => 3, - 'HAVING' => 3, 'IGNORE' => 3, 'INFILE' => 3, 'INSERT' => 3, 'LINEAR' => 3, - 'OPTION' => 3, 'REGEXP' => 3, 'RENAME' => 3, 'REPEAT' => 3, 'RETURN' => 3, - 'REVOKE' => 3, 'SCHEMA' => 3, 'SELECT' => 3, 'UNLOCK' => 3, 'UPDATE' => 3, - 'VALUES' => 3, - 'ANALYZE' => 3, 'BETWEEN' => 3, 'CASCADE' => 3, 'COLLATE' => 3, 'CONVERT' => 3, - 'DECLARE' => 3, 'DEFAULT' => 3, 'DELAYED' => 3, 'ESCAPED' => 3, 'EXPLAIN' => 3, - 'FOREIGN' => 3, 'ITERATE' => 3, 'LEADING' => 3, 'NATURAL' => 3, 'OUTFILE' => 3, - 'PRIMARY' => 3, 'RELEASE' => 3, 'REPLACE' => 3, 'REQUIRE' => 3, 'SCHEMAS' => 3, - 'SPATIAL' => 3, 'TRIGGER' => 3, 'VARYING' => 3, - 'CONTINUE' => 3, 'DATABASE' => 3, 'DAY_HOUR' => 3, 'DESCRIBE' => 3, - 'DISTINCT' => 3, 'ENCLOSED' => 3, 'FULLTEXT' => 3, 'MODIFIES' => 3, - 'OPTIMIZE' => 3, 'RESTRICT' => 3, 'SPECIFIC' => 3, 'SQLSTATE' => 3, - 'STARTING' => 3, 'TRAILING' => 3, 'UNSIGNED' => 3, 'UTC_DATE' => 3, - 'UTC_TIME' => 3, 'ZEROFILL' => 3, - 'CONDITION' => 3, 'DATABASES' => 3, 'LOCALTIME' => 3, 'MIDDLEINT' => 3, - 'PRECISION' => 3, 'PROCEDURE' => 3, 'SENSITIVE' => 3, 'SEPARATOR' => 3, + 'HAVING' => 3, 'IGNORE' => 3, 'INFILE' => 3, 'LINEAR' => 3, 'OPTION' => 3, + 'REGEXP' => 3, 'RENAME' => 3, 'RETURN' => 3, 'REVOKE' => 3, 'SELECT' => 3, + 'UNLOCK' => 3, 'UPDATE' => 3, + 'ANALYZE' => 3, 'BETWEEN' => 3, 'CASCADE' => 3, 'COLLATE' => 3, 'DECLARE' => 3, + 'DELAYED' => 3, 'ESCAPED' => 3, 'EXPLAIN' => 3, 'FOREIGN' => 3, 'ITERATE' => 3, + 'LEADING' => 3, 'NATURAL' => 3, 'OUTFILE' => 3, 'PRIMARY' => 3, 'RELEASE' => 3, + 'REQUIRE' => 3, 'SCHEMAS' => 3, 'SPATIAL' => 3, 'TRIGGER' => 3, 'VARYING' => 3, + 'CONTINUE' => 3, 'DAY_HOUR' => 3, 'DESCRIBE' => 3, 'DISTINCT' => 3, + 'ENCLOSED' => 3, 'FULLTEXT' => 3, 'MODIFIES' => 3, 'OPTIMIZE' => 3, + 'RESTRICT' => 3, 'SPECIFIC' => 3, 'SQLSTATE' => 3, 'STARTING' => 3, + 'TRAILING' => 3, 'UNSIGNED' => 3, 'ZEROFILL' => 3, + 'CONDITION' => 3, 'DATABASES' => 3, 'MIDDLEINT' => 3, 'PRECISION' => 3, + 'PROCEDURE' => 3, 'SENSITIVE' => 3, 'SEPARATOR' => 3, 'ACCESSIBLE' => 3, 'ASENSITIVE' => 3, 'CONSTRAINT' => 3, 'DAY_MINUTE' => 3, 'DAY_SECOND' => 3, 'OPTIONALLY' => 3, 'READ_WRITE' => 3, 'REFERENCES' => 3, 'SQLWARNING' => 3, 'TERMINATED' => 3, 'YEAR_MONTH' => 3, 'DISTINCTROW' => 3, 'HOUR_MINUTE' => 3, 'HOUR_SECOND' => 3, 'INSENSITIVE' => 3, - 'CURRENT_DATE' => 3, 'CURRENT_TIME' => 3, 'CURRENT_USER' => 3, 'LOW_PRIORITY' => 3, 'SQLEXCEPTION' => 3, 'VARCHARACTER' => 3, 'DETERMINISTIC' => 3, 'HIGH_PRIORITY' => 3, 'MINUTE_SECOND' => 3, - 'STRAIGHT_JOIN' => 3, 'UTC_TIMESTAMP' => 3, - 'LOCALTIMESTAMP' => 3, 'SQL_BIG_RESULT' => 3, + 'STRAIGHT_JOIN' => 3, + 'SQL_BIG_RESULT' => 3, 'DAY_MICROSECOND' => 3, 'HOUR_MICROSECOND' => 3, 'SQL_SMALL_RESULT' => 3, - 'CURRENT_TIMESTAMP' => 3, 'MINUTE_MICROSECOND' => 3, 'NO_WRITE_TO_BINLOG' => 3, 'SECOND_MICROSECOND' => 3, 'SQL_CALC_FOUND_ROWS' => 3, 'MASTER_SSL_VERIFY_SERVER_CERT' => 3, @@ -176,19 +163,18 @@ class ContextMySql50100 extends Context 'GROUP BY' => 7, 'ORDER BY' => 7, 'XML' => 9, - 'DATE' => 9, 'ENUM' => 9, 'TEXT' => 9, 'TIME' => 9, 'YEAR' => 9, + 'ENUM' => 9, 'TEXT' => 9, 'ARRAY' => 9, 'BOOLEAN' => 9, 'DATETIME' => 9, 'MULTISET' => 9, - 'TIMESTAMP' => 9, 'INT' => 11, 'SET' => 11, - 'BLOB' => 11, 'CHAR' => 11, 'REAL' => 11, + 'BLOB' => 11, 'REAL' => 11, 'FLOAT' => 11, 'BIGINT' => 11, 'BINARY' => 11, 'DOUBLE' => 11, 'DECIMAL' => 11, 'INTEGER' => 11, 'NUMERIC' => 11, 'TINYINT' => 11, 'VARCHAR' => 11, - 'INTERVAL' => 11, 'LONGBLOB' => 11, 'LONGTEXT' => 11, 'SMALLINT' => 11, - 'TINYBLOB' => 11, 'TINYTEXT' => 11, + 'LONGBLOB' => 11, 'LONGTEXT' => 11, 'SMALLINT' => 11, 'TINYBLOB' => 11, + 'TINYTEXT' => 11, 'CHARACTER' => 11, 'MEDIUMINT' => 11, 'VARBINARY' => 11, 'MEDIUMBLOB' => 11, 'MEDIUMTEXT' => 11, @@ -205,5 +191,102 @@ class ContextMySql50100 extends Context 'SPATIAL INDEX' => 21, 'FULLTEXT INDEX' => 21, + 'X' => 33, 'Y' => 33, + 'LN' => 33, 'PI' => 33, + 'ABS' => 33, 'AVG' => 33, 'BIN' => 33, 'COS' => 33, 'COT' => 33, 'DAY' => 33, + 'ELT' => 33, 'EXP' => 33, 'HEX' => 33, 'LOG' => 33, 'MAX' => 33, 'MD5' => 33, + 'MID' => 33, 'MIN' => 33, 'NOW' => 33, 'OCT' => 33, 'ORD' => 33, 'POW' => 33, + 'SHA' => 33, 'SIN' => 33, 'STD' => 33, 'SUM' => 33, 'TAN' => 33, + 'ACOS' => 33, 'AREA' => 33, 'ASIN' => 33, 'ATAN' => 33, 'CAST' => 33, 'CEIL' => 33, + 'CONV' => 33, 'HOUR' => 33, 'LOG2' => 33, 'LPAD' => 33, 'RAND' => 33, 'RPAD' => 33, + 'SHA1' => 33, 'SIGN' => 33, 'SQRT' => 33, 'SRID' => 33, 'TRIM' => 33, 'USER' => 33, + 'UUID' => 33, 'WEEK' => 33, + 'ASCII' => 33, 'ASWKB' => 33, 'ASWKT' => 33, 'ATAN2' => 33, 'COUNT' => 33, + 'CRC32' => 33, 'DECOD' => 33, 'FIELD' => 33, 'FLOOR' => 33, 'INSTR' => 33, + 'LCASE' => 33, 'LEAST' => 33, 'LOG10' => 33, 'LOWER' => 33, 'LTRIM' => 33, + 'MONTH' => 33, 'POINT' => 33, 'POWER' => 33, 'QUOTE' => 33, 'ROUND' => 33, + 'RTRIM' => 33, 'SLEEP' => 33, 'SPACE' => 33, 'UCASE' => 33, 'UNHEX' => 33, + 'UPPER' => 33, + 'ASTEXT' => 33, 'BIT_OR' => 33, 'CONCAT' => 33, 'ENCODE' => 33, 'EQUALS' => 33, + 'FORMAT' => 33, 'IFNULL' => 33, 'ISNULL' => 33, 'LENGTH' => 33, 'LOCATE' => 33, + 'MINUTE' => 33, 'NULLIF' => 33, 'POINTN' => 33, 'SECOND' => 33, 'STDDEV' => 33, + 'STRCMP' => 33, 'SUBSTR' => 33, 'WITHIN' => 33, + 'ADDDATE' => 33, 'ADDTIME' => 33, 'BIT_AND' => 33, 'BIT_XOR' => 33, 'CEILING' => 33, + 'CHARSET' => 33, 'CROSSES' => 33, 'CURDATE' => 33, 'CURTIME' => 33, 'DAYNAME' => 33, + 'DEGREES' => 33, 'ENCRYPT' => 33, 'EXTRACT' => 33, 'GLENGTH' => 33, 'ISEMPTY' => 33, + 'POLYGON' => 33, 'QUARTER' => 33, 'RADIANS' => 33, 'REVERSE' => 33, 'SOUNDEX' => 33, + 'SUBDATE' => 33, 'SUBTIME' => 33, 'SYSDATE' => 33, 'TOUCHES' => 33, 'TO_DAYS' => 33, + 'VAR_POP' => 33, 'VERSION' => 33, 'WEEKDAY' => 33, + 'ASBINARY' => 33, 'CENTROID' => 33, 'COALESCE' => 33, 'COMPRESS' => 33, + 'CONTAINS' => 33, 'DATEDIFF' => 33, 'DATE_ADD' => 33, 'DATE_SUB' => 33, + 'DISJOINT' => 33, 'ENDPOINT' => 33, 'ENVELOPE' => 33, 'GET_LOCK' => 33, + 'GREATEST' => 33, 'ISCLOSED' => 33, 'ISSIMPLE' => 33, 'MAKEDATE' => 33, + 'MAKETIME' => 33, 'MAKE_SET' => 33, 'MBREQUAL' => 33, 'OVERLAPS' => 33, + 'PASSWORD' => 33, 'POSITION' => 33, 'TIMEDIFF' => 33, 'TRUNCATE' => 33, + 'VARIANCE' => 33, 'VAR_SAMP' => 33, 'YEARWEEK' => 33, + 'BENCHMARK' => 33, 'BIT_COUNT' => 33, 'COLLATION' => 33, 'CONCAT_WS' => 33, + 'DAYOFWEEK' => 33, 'DAYOFYEAR' => 33, 'DIMENSION' => 33, 'FROM_DAYS' => 33, + 'GEOMETRYN' => 33, 'INET_ATON' => 33, 'INET_NTOA' => 33, 'LOAD_FILE' => 33, + 'MBRWITHIN' => 33, 'MONTHNAME' => 33, 'NUMPOINTS' => 33, 'ROW_COUNT' => 33, + 'SUBSTRING' => 33, 'UPDATEXML' => 33, + 'BIT_LENGTH' => 33, 'CONVERT_TZ' => 33, 'DAYOFMONTH' => 33, 'EXPORT_SET' => 33, + 'FOUND_ROWS' => 33, 'GET_FORMAT' => 33, 'INTERSECTS' => 33, 'LINESTRING' => 33, + 'MBRTOUCHES' => 33, 'MULTIPOINT' => 33, 'NAME_CONST' => 33, 'PERIOD_ADD' => 33, + 'STARTPOINT' => 33, 'STDDEV_POP' => 33, 'UNCOMPRESS' => 33, 'UUID_SHORT' => 33, + 'WEEKOFYEAR' => 33, + 'AES_DECRYPT' => 33, 'AES_ENCRYPT' => 33, 'CHAR_LENGTH' => 33, 'DATE_FORMAT' => 33, + 'DES_DECRYPT' => 33, 'DES_ENCRYPT' => 33, 'FIND_IN_SET' => 33, 'GEOMFROMWKB' => 33, + 'LINEFROMWKB' => 33, 'MBRCONTAINS' => 33, 'MBRDISJOINT' => 33, 'MBROVERLAPS' => 33, + 'MICROSECOND' => 33, 'PERIOD_DIFF' => 33, 'POLYFROMWKB' => 33, 'SEC_TO_TIME' => 33, + 'STDDEV_SAMP' => 33, 'STR_TO_DATE' => 33, 'SYSTEM_USER' => 33, 'TIME_FORMAT' => 33, + 'TIME_TO_SEC' => 33, + 'COERCIBILITY' => 33, 'EXTERIORRING' => 33, 'EXTRACTVALUE' => 33, + 'GEOMETRYTYPE' => 33, 'GEOMFROMTEXT' => 33, 'GROUP_CONCAT' => 33, + 'IS_FREE_LOCK' => 33, 'IS_USED_LOCK' => 33, 'LINEFROMTEXT' => 33, + 'MLINEFROMWKB' => 33, 'MPOLYFROMWKB' => 33, 'MULTIPOLYGON' => 33, + 'OCTET_LENGTH' => 33, 'OLD_PASSWORD' => 33, 'POINTFROMWKB' => 33, + 'POLYFROMTEXT' => 33, 'RELEASE_LOCK' => 33, 'SESSION_USER' => 33, + 'TIMESTAMPADD' => 33, + 'CONNECTION_ID' => 33, 'FROM_UNIXTIME' => 33, 'INTERIORRINGN' => 33, + 'MBRINTERSECTS' => 33, 'MLINEFROMTEXT' => 33, 'MPOINTFROMWKB' => 33, + 'MPOLYFROMTEXT' => 33, 'NUMGEOMETRIES' => 33, 'POINTFROMTEXT' => 33, + 'TIMESTAMPDIFF' => 33, + 'LAST_INSERT_ID' => 33, 'MPOINTFROMTEXT' => 33, 'POLYGONFROMWKB' => 33, + 'UNIX_TIMESTAMP' => 33, + 'GEOMCOLLFROMWKB' => 33, 'MASTER_POS_WAIT' => 33, 'MULTILINESTRING' => 33, + 'POLYGONFROMTEXT' => 33, 'SUBSTRING_INDEX' => 33, + 'CHARACTER_LENGTH' => 33, 'GEOMCOLLFROMTEXT' => 33, 'GEOMETRYFROMTEXT' => 33, + 'NUMINTERIORRINGS' => 33, + 'LINESTRINGFROMWKB' => 33, 'MULTIPOINTFROMWKB' => 33, + 'GEOMETRYCOLLECTION' => 33, 'MULTIPOINTFROMTEXT' => 33, + 'MULTIPOLYGONFROMWKB' => 33, 'UNCOMPRESSED_LENGTH' => 33, + 'MULTIPOLYGONFROMTEXT' => 33, + 'MULTILINESTRINGFROMWKB' => 33, + 'MULTILINESTRINGFROMTEXT' => 33, + 'GEOMETRYCOLLECTIONFROMWKB' => 33, + 'GEOMETRYCOLLECTIONFROMTEXT' => 33, + + 'IF' => 35, 'IN' => 35, + 'MOD' => 35, + 'LEFT' => 35, + 'RIGHT' => 35, + 'INSERT' => 35, 'REPEAT' => 35, 'SCHEMA' => 35, 'VALUES' => 35, + 'CONVERT' => 35, 'DEFAULT' => 35, 'REPLACE' => 35, + 'DATABASE' => 35, 'UTC_DATE' => 35, 'UTC_TIME' => 35, + 'LOCALTIME' => 35, + 'CURRENT_DATE' => 35, 'CURRENT_TIME' => 35, 'CURRENT_USER' => 35, + 'UTC_TIMESTAMP' => 35, + 'LOCALTIMESTAMP' => 35, + 'CURRENT_TIMESTAMP' => 35, + + 'NOT IN' => 37, + 'PROCEDURE ANALYSE' => 37, + + 'DATE' => 41, 'TIME' => 41, 'YEAR' => 41, + 'TIMESTAMP' => 41, + + 'CHAR' => 43, + 'INTERVAL' => 43, + ); } diff --git a/src/Contexts/ContextMySql50500.php b/src/Contexts/ContextMySql50500.php index 3a5496a..26aa40e 100644 --- a/src/Contexts/ContextMySql50500.php +++ b/src/Contexts/ContextMySql50500.php @@ -34,137 +34,126 @@ class ContextMySql50500 extends Context public static $KEYWORDS = array( 'AT' => 1, 'DO' => 1, 'IO' => 1, 'NO' => 1, 'XA' => 1, - 'ANY' => 1, 'AVG' => 1, 'BIT' => 1, 'CPU' => 1, 'DAY' => 1, 'END' => 1, - 'IPC' => 1, 'NDB' => 1, 'NEW' => 1, 'ONE' => 1, 'ROW' => 1, + 'ANY' => 1, 'BIT' => 1, 'CPU' => 1, 'END' => 1, 'IPC' => 1, 'NDB' => 1, + 'NEW' => 1, 'ONE' => 1, 'ROW' => 1, 'BOOL' => 1, 'BYTE' => 1, 'CODE' => 1, 'CUBE' => 1, 'DATA' => 1, 'DISK' => 1, 'ENDS' => 1, 'FAST' => 1, 'FILE' => 1, 'FULL' => 1, 'HASH' => 1, 'HELP' => 1, - 'HOST' => 1, 'HOUR' => 1, 'LAST' => 1, 'LESS' => 1, 'LIST' => 1, 'LOGS' => 1, - 'MODE' => 1, 'NAME' => 1, 'NEXT' => 1, 'NONE' => 1, 'OPEN' => 1, 'PAGE' => 1, - 'PORT' => 1, 'PREV' => 1, 'ROWS' => 1, 'SLOW' => 1, 'SOME' => 1, 'STOP' => 1, - 'THAN' => 1, 'TYPE' => 1, 'USER' => 1, 'VIEW' => 1, 'WAIT' => 1, 'WEEK' => 1, - 'WORK' => 1, 'X509' => 1, - 'AFTER' => 1, 'ASCII' => 1, 'BEGIN' => 1, 'BLOCK' => 1, 'BTREE' => 1, - 'CACHE' => 1, 'CHAIN' => 1, 'CLOSE' => 1, 'ERROR' => 1, 'EVENT' => 1, - 'EVERY' => 1, 'FIRST' => 1, 'FIXED' => 1, 'FLUSH' => 1, 'FOUND' => 1, - 'HOSTS' => 1, 'LEVEL' => 1, 'LOCAL' => 1, 'LOCKS' => 1, 'MERGE' => 1, - 'MONTH' => 1, 'MUTEX' => 1, 'NAMES' => 1, 'NCHAR' => 1, 'OWNER' => 1, - 'PHASE' => 1, 'POINT' => 1, 'PROXY' => 1, 'QUERY' => 1, 'QUICK' => 1, - 'RELAY' => 1, 'RESET' => 1, 'RTREE' => 1, 'SHARE' => 1, 'SLAVE' => 1, - 'START' => 1, 'SUPER' => 1, 'SWAPS' => 1, 'TYPES' => 1, 'UNTIL' => 1, - 'VALUE' => 1, + 'HOST' => 1, 'LAST' => 1, 'LESS' => 1, 'LIST' => 1, 'LOGS' => 1, 'MODE' => 1, + 'NAME' => 1, 'NEXT' => 1, 'NONE' => 1, 'OPEN' => 1, 'PAGE' => 1, 'PORT' => 1, + 'PREV' => 1, 'ROWS' => 1, 'SLOW' => 1, 'SOME' => 1, 'STOP' => 1, 'THAN' => 1, + 'TYPE' => 1, 'VIEW' => 1, 'WAIT' => 1, 'WORK' => 1, 'X509' => 1, + 'AFTER' => 1, 'BEGIN' => 1, 'BLOCK' => 1, 'BTREE' => 1, 'CACHE' => 1, + 'CHAIN' => 1, 'CLOSE' => 1, 'ERROR' => 1, 'EVENT' => 1, 'EVERY' => 1, + 'FIRST' => 1, 'FIXED' => 1, 'FLUSH' => 1, 'FOUND' => 1, 'HOSTS' => 1, + 'LEVEL' => 1, 'LOCAL' => 1, 'LOCKS' => 1, 'MERGE' => 1, 'MUTEX' => 1, + 'NAMES' => 1, 'NCHAR' => 1, 'OWNER' => 1, 'PHASE' => 1, 'PROXY' => 1, + 'QUERY' => 1, 'QUICK' => 1, 'RELAY' => 1, 'RESET' => 1, 'RTREE' => 1, + 'SHARE' => 1, 'SLAVE' => 1, 'START' => 1, 'SUPER' => 1, 'SWAPS' => 1, + 'TYPES' => 1, 'UNTIL' => 1, 'VALUE' => 1, 'ACTION' => 1, 'BACKUP' => 1, 'BINLOG' => 1, 'CIPHER' => 1, 'CLIENT' => 1, 'COMMIT' => 1, 'ENABLE' => 1, 'ENGINE' => 1, 'ERRORS' => 1, 'ESCAPE' => 1, 'EVENTS' => 1, 'FAULTS' => 1, 'FIELDS' => 1, 'GLOBAL' => 1, 'GRANTS' => 1, 'IMPORT' => 1, 'INNODB' => 1, 'ISSUER' => 1, 'LEAVES' => 1, 'MASTER' => 1, - 'MEDIUM' => 1, 'MEMORY' => 1, 'MINUTE' => 1, 'MODIFY' => 1, 'OFFSET' => 1, - 'PARSER' => 1, 'PLUGIN' => 1, 'RELOAD' => 1, 'REMOVE' => 1, 'REPAIR' => 1, - 'RESUME' => 1, 'ROLLUP' => 1, 'SECOND' => 1, 'SERIAL' => 1, 'SERVER' => 1, - 'SIGNED' => 1, 'SIMPLE' => 1, 'SOCKET' => 1, 'SONAME' => 1, 'SOUNDS' => 1, - 'SOURCE' => 1, 'STARTS' => 1, 'STATUS' => 1, 'STRING' => 1, 'TABLES' => 1, - 'AGAINST' => 1, 'AUTHORS' => 1, 'CHANGED' => 1, 'CHARSET' => 1, 'COLUMNS' => 1, - 'COMMENT' => 1, 'COMPACT' => 1, 'CONTEXT' => 1, 'DEFINER' => 1, 'DISABLE' => 1, - 'DISCARD' => 1, 'DYNAMIC' => 1, 'ENGINES' => 1, 'EXECUTE' => 1, 'GENERAL' => 1, - 'HANDLER' => 1, 'INDEXES' => 1, 'INSTALL' => 1, 'INVOKER' => 1, 'LOGFILE' => 1, - 'MIGRATE' => 1, 'NO_WAIT' => 1, 'OPTIONS' => 1, 'PARTIAL' => 1, 'PLUGINS' => 1, - 'POLYGON' => 1, 'PREPARE' => 1, 'PROFILE' => 1, 'QUARTER' => 1, 'REBUILD' => 1, - 'RECOVER' => 1, 'RESTORE' => 1, 'RETURNS' => 1, 'ROUTINE' => 1, 'SESSION' => 1, - 'STORAGE' => 1, 'SUBJECT' => 1, 'SUSPEND' => 1, 'UNICODE' => 1, 'UNKNOWN' => 1, - 'UPGRADE' => 1, 'USE_FRM' => 1, 'WRAPPER' => 1, - 'CASCADED' => 1, 'CHECKSUM' => 1, 'COALESCE' => 1, 'CONTAINS' => 1, - 'DATAFILE' => 1, 'DUMPFILE' => 1, 'EXTENDED' => 1, 'FUNCTION' => 1, - 'GEOMETRY' => 1, 'INNOBASE' => 1, 'LANGUAGE' => 1, 'MAX_ROWS' => 1, - 'MAX_SIZE' => 1, 'MIN_ROWS' => 1, 'NATIONAL' => 1, 'NVARCHAR' => 1, - 'ONE_SHOT' => 1, 'PASSWORD' => 1, 'PRESERVE' => 1, 'PROFILES' => 1, - 'REDOFILE' => 1, 'RELAYLOG' => 1, 'ROLLBACK' => 1, 'SCHEDULE' => 1, - 'SECURITY' => 1, 'SHUTDOWN' => 1, 'SNAPSHOT' => 1, 'SWITCHES' => 1, - 'TRIGGERS' => 1, 'TRUNCATE' => 1, 'UNDOFILE' => 1, 'WARNINGS' => 1, - 'AGGREGATE' => 1, 'ALGORITHM' => 1, 'COLLATION' => 1, 'COMMITTED' => 1, - 'DIRECTORY' => 1, 'DUPLICATE' => 1, 'EXPANSION' => 1, 'IO_THREAD' => 1, - 'ISOLATION' => 1, 'NODEGROUP' => 1, 'PACK_KEYS' => 1, 'PARTITION' => 1, - 'READ_ONLY' => 1, 'REDUNDANT' => 1, 'SAVEPOINT' => 1, 'SQL_CACHE' => 1, - 'TEMPORARY' => 1, 'TEMPTABLE' => 1, 'UNDEFINED' => 1, 'UNINSTALL' => 1, - 'VARIABLES' => 1, + 'MEDIUM' => 1, 'MEMORY' => 1, 'MODIFY' => 1, 'OFFSET' => 1, 'PARSER' => 1, + 'PLUGIN' => 1, 'RELOAD' => 1, 'REMOVE' => 1, 'REPAIR' => 1, 'RESUME' => 1, + 'ROLLUP' => 1, 'SERIAL' => 1, 'SERVER' => 1, 'SIGNED' => 1, 'SIMPLE' => 1, + 'SOCKET' => 1, 'SONAME' => 1, 'SOUNDS' => 1, 'SOURCE' => 1, 'STARTS' => 1, + 'STATUS' => 1, 'STRING' => 1, 'TABLES' => 1, + 'AGAINST' => 1, 'AUTHORS' => 1, 'CHANGED' => 1, 'COLUMNS' => 1, 'COMMENT' => 1, + 'COMPACT' => 1, 'CONTEXT' => 1, 'DEFINER' => 1, 'DISABLE' => 1, 'DISCARD' => 1, + 'DYNAMIC' => 1, 'ENGINES' => 1, 'EXECUTE' => 1, 'GENERAL' => 1, 'HANDLER' => 1, + 'INDEXES' => 1, 'INSTALL' => 1, 'INVOKER' => 1, 'LOGFILE' => 1, 'MIGRATE' => 1, + 'NO_WAIT' => 1, 'OPTIONS' => 1, 'PARTIAL' => 1, 'PLUGINS' => 1, 'PREPARE' => 1, + 'PROFILE' => 1, 'REBUILD' => 1, 'RECOVER' => 1, 'RESTORE' => 1, 'RETURNS' => 1, + 'ROUTINE' => 1, 'SESSION' => 1, 'STORAGE' => 1, 'SUBJECT' => 1, 'SUSPEND' => 1, + 'UNICODE' => 1, 'UNKNOWN' => 1, 'UPGRADE' => 1, 'USE_FRM' => 1, 'WRAPPER' => 1, + 'CASCADED' => 1, 'CHECKSUM' => 1, 'DATAFILE' => 1, 'DUMPFILE' => 1, + 'EXTENDED' => 1, 'FUNCTION' => 1, 'GEOMETRY' => 1, 'INNOBASE' => 1, + 'LANGUAGE' => 1, 'MAX_ROWS' => 1, 'MAX_SIZE' => 1, 'MIN_ROWS' => 1, + 'NATIONAL' => 1, 'NVARCHAR' => 1, 'ONE_SHOT' => 1, 'PRESERVE' => 1, + 'PROFILES' => 1, 'REDOFILE' => 1, 'RELAYLOG' => 1, 'ROLLBACK' => 1, + 'SCHEDULE' => 1, 'SECURITY' => 1, 'SHUTDOWN' => 1, 'SNAPSHOT' => 1, + 'SWITCHES' => 1, 'TRIGGERS' => 1, 'UNDOFILE' => 1, 'WARNINGS' => 1, + 'AGGREGATE' => 1, 'ALGORITHM' => 1, 'COMMITTED' => 1, 'DIRECTORY' => 1, + 'DUPLICATE' => 1, 'EXPANSION' => 1, 'IO_THREAD' => 1, 'ISOLATION' => 1, + 'NODEGROUP' => 1, 'PACK_KEYS' => 1, 'PARTITION' => 1, 'READ_ONLY' => 1, + 'REDUNDANT' => 1, 'SAVEPOINT' => 1, 'SQL_CACHE' => 1, 'TEMPORARY' => 1, + 'TEMPTABLE' => 1, 'UNDEFINED' => 1, 'UNINSTALL' => 1, 'VARIABLES' => 1, 'COMPLETION' => 1, 'COMPRESSED' => 1, 'CONCURRENT' => 1, 'CONNECTION' => 1, - 'CONSISTENT' => 1, 'DEALLOCATE' => 1, 'GET_FORMAT' => 1, 'IDENTIFIED' => 1, - 'LINESTRING' => 1, 'MASTER_SSL' => 1, 'MULTIPOINT' => 1, 'NDBCLUSTER' => 1, - 'PARTITIONS' => 1, 'PRIVILEGES' => 1, 'REORGANIZE' => 1, 'REPEATABLE' => 1, - 'ROW_FORMAT' => 1, 'SQL_THREAD' => 1, 'TABLESPACE' => 1, 'TABLE_NAME' => 1, + 'CONSISTENT' => 1, 'DEALLOCATE' => 1, 'IDENTIFIED' => 1, 'MASTER_SSL' => 1, + 'NDBCLUSTER' => 1, 'PARTITIONS' => 1, 'PRIVILEGES' => 1, 'REORGANIZE' => 1, + 'REPEATABLE' => 1, 'ROW_FORMAT' => 1, 'SQL_THREAD' => 1, 'TABLESPACE' => 1, + 'TABLE_NAME' => 1, 'COLUMN_NAME' => 1, 'CURSOR_NAME' => 1, 'EXTENT_SIZE' => 1, 'FRAC_SECOND' => 1, - 'MASTER_HOST' => 1, 'MASTER_PORT' => 1, 'MASTER_USER' => 1, 'MICROSECOND' => 1, - 'MYSQL_ERRNO' => 1, 'PROCESSLIST' => 1, 'REPLICATION' => 1, 'SCHEMA_NAME' => 1, - 'SQL_TSI_DAY' => 1, 'TRANSACTION' => 1, 'UNCOMMITTED' => 1, + 'MASTER_HOST' => 1, 'MASTER_PORT' => 1, 'MASTER_USER' => 1, 'MYSQL_ERRNO' => 1, + 'PROCESSLIST' => 1, 'REPLICATION' => 1, 'SCHEMA_NAME' => 1, 'SQL_TSI_DAY' => 1, + 'TRANSACTION' => 1, 'UNCOMMITTED' => 1, 'CATALOG_NAME' => 1, 'CLASS_ORIGIN' => 1, 'CONTRIBUTORS' => 1, 'DES_KEY_FILE' => 1, 'INITIAL_SIZE' => 1, 'MESSAGE_TEXT' => 1, - 'MULTIPOLYGON' => 1, 'OLD_PASSWORD' => 1, 'PARTITIONING' => 1, - 'RELAY_THREAD' => 1, 'SERIALIZABLE' => 1, 'SQL_NO_CACHE' => 1, - 'SQL_TSI_HOUR' => 1, 'SQL_TSI_WEEK' => 1, 'SQL_TSI_YEAR' => 1, - 'SUBPARTITION' => 1, 'TIMESTAMPADD' => 1, + 'PARTITIONING' => 1, 'RELAY_THREAD' => 1, 'SERIALIZABLE' => 1, + 'SQL_NO_CACHE' => 1, 'SQL_TSI_HOUR' => 1, 'SQL_TSI_WEEK' => 1, + 'SQL_TSI_YEAR' => 1, 'SUBPARTITION' => 1, 'INSERT_METHOD' => 1, 'MASTER_SSL_CA' => 1, 'RELAY_LOG_POS' => 1, - 'SQL_TSI_MONTH' => 1, 'SUBPARTITIONS' => 1, 'TIMESTAMPDIFF' => 1, + 'SQL_TSI_MONTH' => 1, 'SUBPARTITIONS' => 1, 'AUTO_INCREMENT' => 1, 'AVG_ROW_LENGTH' => 1, 'KEY_BLOCK_SIZE' => 1, 'MASTER_LOG_POS' => 1, 'MASTER_SSL_KEY' => 1, 'RELAY_LOG_FILE' => 1, 'SQL_TSI_MINUTE' => 1, 'SQL_TSI_SECOND' => 1, 'TABLE_CHECKSUM' => 1, 'USER_RESOURCES' => 1, 'AUTOEXTEND_SIZE' => 1, 'CONSTRAINT_NAME' => 1, 'DELAY_KEY_WRITE' => 1, 'MASTER_LOG_FILE' => 1, 'MASTER_PASSWORD' => 1, 'MASTER_SSL_CERT' => 1, - 'MULTILINESTRING' => 1, 'SQL_TSI_QUARTER' => 1, 'SUBCLASS_ORIGIN' => 1, + 'SQL_TSI_QUARTER' => 1, 'SUBCLASS_ORIGIN' => 1, 'MASTER_SERVER_ID' => 1, 'REDO_BUFFER_SIZE' => 1, 'UNDO_BUFFER_SIZE' => 1, 'CONSTRAINT_SCHEMA' => 1, 'IGNORE_SERVER_IDS' => 1, 'MASTER_SSL_CAPATH' => 1, 'MASTER_SSL_CIPHER' => 1, 'SQL_BUFFER_RESULT' => 1, - 'CONSTRAINT_CATALOG' => 1, 'GEOMETRYCOLLECTION' => 1, + 'CONSTRAINT_CATALOG' => 1, 'SQL_TSI_FRAC_SECOND' => 1, 'MASTER_CONNECT_RETRY' => 1, 'MAX_QUERIES_PER_HOUR' => 1, 'MAX_UPDATES_PER_HOUR' => 1, 'MAX_USER_CONNECTIONS' => 1, 'MASTER_HEARTBEAT_PERIOD' => 1, 'MAX_CONNECTIONS_PER_HOUR' => 1, - 'AS' => 3, 'BY' => 3, 'IF' => 3, 'IN' => 3, 'IS' => 3, 'ON' => 3, 'OR' => 3, - 'TO' => 3, + 'AS' => 3, 'BY' => 3, 'IS' => 3, 'ON' => 3, 'OR' => 3, 'TO' => 3, 'ADD' => 3, 'ALL' => 3, 'AND' => 3, 'ASC' => 3, 'DEC' => 3, 'DIV' => 3, - 'FOR' => 3, 'MOD' => 3, 'NOT' => 3, 'OUT' => 3, 'SQL' => 3, 'SSL' => 3, - 'USE' => 3, 'XOR' => 3, + 'FOR' => 3, 'NOT' => 3, 'OUT' => 3, 'SQL' => 3, 'SSL' => 3, 'USE' => 3, + 'XOR' => 3, 'BOTH' => 3, 'CALL' => 3, 'CASE' => 3, 'DESC' => 3, 'DROP' => 3, 'DUAL' => 3, 'EACH' => 3, 'ELSE' => 3, 'EXIT' => 3, 'FROM' => 3, 'INT1' => 3, 'INT2' => 3, 'INT3' => 3, 'INT4' => 3, 'INT8' => 3, 'INTO' => 3, 'JOIN' => 3, 'KEYS' => 3, - 'KILL' => 3, 'LEFT' => 3, 'LIKE' => 3, 'LOAD' => 3, 'LOCK' => 3, 'LONG' => 3, - 'LOOP' => 3, 'NULL' => 3, 'READ' => 3, 'SHOW' => 3, 'THEN' => 3, 'TRUE' => 3, - 'UNDO' => 3, 'WHEN' => 3, 'WITH' => 3, + 'KILL' => 3, 'LIKE' => 3, 'LOAD' => 3, 'LOCK' => 3, 'LONG' => 3, 'LOOP' => 3, + 'NULL' => 3, 'READ' => 3, 'SHOW' => 3, 'THEN' => 3, 'TRUE' => 3, 'UNDO' => 3, + 'WHEN' => 3, 'WITH' => 3, 'ALTER' => 3, 'CHECK' => 3, 'CROSS' => 3, 'FALSE' => 3, 'FETCH' => 3, 'FORCE' => 3, 'GRANT' => 3, 'GROUP' => 3, 'INNER' => 3, 'INOUT' => 3, 'LEAVE' => 3, 'LIMIT' => 3, 'LINES' => 3, 'MATCH' => 3, 'ORDER' => 3, - 'OUTER' => 3, 'PURGE' => 3, 'RANGE' => 3, 'READS' => 3, 'RIGHT' => 3, - 'RLIKE' => 3, 'TABLE' => 3, 'UNION' => 3, 'USAGE' => 3, 'USING' => 3, - 'WHERE' => 3, 'WHILE' => 3, 'WRITE' => 3, + 'OUTER' => 3, 'PURGE' => 3, 'RANGE' => 3, 'READS' => 3, 'RLIKE' => 3, + 'TABLE' => 3, 'UNION' => 3, 'USAGE' => 3, 'USING' => 3, 'WHERE' => 3, + 'WHILE' => 3, 'WRITE' => 3, 'BEFORE' => 3, 'CHANGE' => 3, 'COLUMN' => 3, 'CREATE' => 3, 'CURSOR' => 3, 'DELETE' => 3, 'ELSEIF' => 3, 'EXISTS' => 3, 'FLOAT4' => 3, 'FLOAT8' => 3, - 'HAVING' => 3, 'IGNORE' => 3, 'INFILE' => 3, 'INSERT' => 3, 'LINEAR' => 3, - 'OPTION' => 3, 'REGEXP' => 3, 'RENAME' => 3, 'REPEAT' => 3, 'RETURN' => 3, - 'REVOKE' => 3, 'SCHEMA' => 3, 'SELECT' => 3, 'SIGNAL' => 3, 'UNLOCK' => 3, - 'UPDATE' => 3, 'VALUES' => 3, - 'ANALYZE' => 3, 'BETWEEN' => 3, 'CASCADE' => 3, 'COLLATE' => 3, 'CONVERT' => 3, - 'DECLARE' => 3, 'DEFAULT' => 3, 'DELAYED' => 3, 'ESCAPED' => 3, 'EXPLAIN' => 3, - 'FOREIGN' => 3, 'ITERATE' => 3, 'LEADING' => 3, 'NATURAL' => 3, 'OUTFILE' => 3, - 'PRIMARY' => 3, 'RELEASE' => 3, 'REPLACE' => 3, 'REQUIRE' => 3, 'SCHEMAS' => 3, - 'SPATIAL' => 3, 'TRIGGER' => 3, 'VARYING' => 3, - 'CONTINUE' => 3, 'DATABASE' => 3, 'DAY_HOUR' => 3, 'DESCRIBE' => 3, - 'DISTINCT' => 3, 'ENCLOSED' => 3, 'FULLTEXT' => 3, 'MAXVALUE' => 3, - 'MODIFIES' => 3, 'OPTIMIZE' => 3, 'RESIGNAL' => 3, 'RESTRICT' => 3, - 'SPECIFIC' => 3, 'SQLSTATE' => 3, 'STARTING' => 3, 'TRAILING' => 3, - 'UNSIGNED' => 3, 'UTC_DATE' => 3, 'UTC_TIME' => 3, 'ZEROFILL' => 3, - 'CONDITION' => 3, 'DATABASES' => 3, 'LOCALTIME' => 3, 'MIDDLEINT' => 3, - 'PRECISION' => 3, 'PROCEDURE' => 3, 'SENSITIVE' => 3, 'SEPARATOR' => 3, + 'HAVING' => 3, 'IGNORE' => 3, 'INFILE' => 3, 'LINEAR' => 3, 'OPTION' => 3, + 'REGEXP' => 3, 'RENAME' => 3, 'RETURN' => 3, 'REVOKE' => 3, 'SELECT' => 3, + 'SIGNAL' => 3, 'UNLOCK' => 3, 'UPDATE' => 3, + 'ANALYZE' => 3, 'BETWEEN' => 3, 'CASCADE' => 3, 'COLLATE' => 3, 'DECLARE' => 3, + 'DELAYED' => 3, 'ESCAPED' => 3, 'EXPLAIN' => 3, 'FOREIGN' => 3, 'ITERATE' => 3, + 'LEADING' => 3, 'NATURAL' => 3, 'OUTFILE' => 3, 'PRIMARY' => 3, 'RELEASE' => 3, + 'REQUIRE' => 3, 'SCHEMAS' => 3, 'SPATIAL' => 3, 'TRIGGER' => 3, 'VARYING' => 3, + 'CONTINUE' => 3, 'DAY_HOUR' => 3, 'DESCRIBE' => 3, 'DISTINCT' => 3, + 'ENCLOSED' => 3, 'FULLTEXT' => 3, 'MAXVALUE' => 3, 'MODIFIES' => 3, + 'OPTIMIZE' => 3, 'RESIGNAL' => 3, 'RESTRICT' => 3, 'SPECIFIC' => 3, + 'SQLSTATE' => 3, 'STARTING' => 3, 'TRAILING' => 3, 'UNSIGNED' => 3, + 'ZEROFILL' => 3, + 'CONDITION' => 3, 'DATABASES' => 3, 'MIDDLEINT' => 3, 'PRECISION' => 3, + 'PROCEDURE' => 3, 'SENSITIVE' => 3, 'SEPARATOR' => 3, 'ACCESSIBLE' => 3, 'ASENSITIVE' => 3, 'CONSTRAINT' => 3, 'DAY_MINUTE' => 3, 'DAY_SECOND' => 3, 'OPTIONALLY' => 3, 'READ_WRITE' => 3, 'REFERENCES' => 3, 'SQLWARNING' => 3, 'TERMINATED' => 3, 'YEAR_MONTH' => 3, 'DISTINCTROW' => 3, 'HOUR_MINUTE' => 3, 'HOUR_SECOND' => 3, 'INSENSITIVE' => 3, - 'CURRENT_DATE' => 3, 'CURRENT_TIME' => 3, 'CURRENT_USER' => 3, 'LOW_PRIORITY' => 3, 'SQLEXCEPTION' => 3, 'VARCHARACTER' => 3, 'DETERMINISTIC' => 3, 'HIGH_PRIORITY' => 3, 'MINUTE_SECOND' => 3, - 'STRAIGHT_JOIN' => 3, 'UTC_TIMESTAMP' => 3, - 'LOCALTIMESTAMP' => 3, 'SQL_BIG_RESULT' => 3, + 'STRAIGHT_JOIN' => 3, + 'SQL_BIG_RESULT' => 3, 'DAY_MICROSECOND' => 3, 'HOUR_MICROSECOND' => 3, 'SQL_SMALL_RESULT' => 3, - 'CURRENT_TIMESTAMP' => 3, 'MINUTE_MICROSECOND' => 3, 'NO_WRITE_TO_BINLOG' => 3, 'SECOND_MICROSECOND' => 3, 'SQL_CALC_FOUND_ROWS' => 3, 'MASTER_SSL_VERIFY_SERVER_CERT' => 3, @@ -179,19 +168,18 @@ class ContextMySql50500 extends Context 'GROUP BY' => 7, 'ORDER BY' => 7, 'XML' => 9, - 'DATE' => 9, 'ENUM' => 9, 'TEXT' => 9, 'TIME' => 9, 'YEAR' => 9, + 'ENUM' => 9, 'TEXT' => 9, 'ARRAY' => 9, 'BOOLEAN' => 9, 'DATETIME' => 9, 'MULTISET' => 9, - 'TIMESTAMP' => 9, 'INT' => 11, 'SET' => 11, - 'BLOB' => 11, 'CHAR' => 11, 'REAL' => 11, + 'BLOB' => 11, 'REAL' => 11, 'FLOAT' => 11, 'BIGINT' => 11, 'BINARY' => 11, 'DOUBLE' => 11, 'DECIMAL' => 11, 'INTEGER' => 11, 'NUMERIC' => 11, 'TINYINT' => 11, 'VARCHAR' => 11, - 'INTERVAL' => 11, 'LONGBLOB' => 11, 'LONGTEXT' => 11, 'SMALLINT' => 11, - 'TINYBLOB' => 11, 'TINYTEXT' => 11, + 'LONGBLOB' => 11, 'LONGTEXT' => 11, 'SMALLINT' => 11, 'TINYBLOB' => 11, + 'TINYTEXT' => 11, 'CHARACTER' => 11, 'MEDIUMINT' => 11, 'VARBINARY' => 11, 'MEDIUMBLOB' => 11, 'MEDIUMTEXT' => 11, @@ -208,5 +196,101 @@ class ContextMySql50500 extends Context 'SPATIAL INDEX' => 21, 'FULLTEXT INDEX' => 21, + 'X' => 33, 'Y' => 33, + 'LN' => 33, 'PI' => 33, + 'ABS' => 33, 'AVG' => 33, 'BIN' => 33, 'COS' => 33, 'COT' => 33, 'DAY' => 33, + 'ELT' => 33, 'EXP' => 33, 'HEX' => 33, 'LOG' => 33, 'MAX' => 33, 'MD5' => 33, + 'MID' => 33, 'MIN' => 33, 'NOW' => 33, 'OCT' => 33, 'ORD' => 33, 'POW' => 33, + 'SHA' => 33, 'SIN' => 33, 'STD' => 33, 'SUM' => 33, 'TAN' => 33, + 'ACOS' => 33, 'AREA' => 33, 'ASIN' => 33, 'ATAN' => 33, 'CAST' => 33, 'CEIL' => 33, + 'CONV' => 33, 'HOUR' => 33, 'LOG2' => 33, 'LPAD' => 33, 'RAND' => 33, 'RPAD' => 33, + 'SHA1' => 33, 'SHA2' => 33, 'SIGN' => 33, 'SQRT' => 33, 'SRID' => 33, 'TRIM' => 33, + 'USER' => 33, 'UUID' => 33, 'WEEK' => 33, + 'ASCII' => 33, 'ASWKB' => 33, 'ASWKT' => 33, 'ATAN2' => 33, 'COUNT' => 33, + 'CRC32' => 33, 'FIELD' => 33, 'FLOOR' => 33, 'INSTR' => 33, 'LCASE' => 33, + 'LEAST' => 33, 'LOG10' => 33, 'LOWER' => 33, 'LTRIM' => 33, 'MONTH' => 33, + 'POINT' => 33, 'POWER' => 33, 'QUOTE' => 33, 'ROUND' => 33, 'RTRIM' => 33, + 'SLEEP' => 33, 'SPACE' => 33, 'UCASE' => 33, 'UNHEX' => 33, 'UPPER' => 33, + 'ASTEXT' => 33, 'BIT_OR' => 33, 'CONCAT' => 33, 'DECODE' => 33, 'ENCODE' => 33, + 'EQUALS' => 33, 'FORMAT' => 33, 'IFNULL' => 33, 'ISNULL' => 33, 'LENGTH' => 33, + 'LOCATE' => 33, 'MINUTE' => 33, 'NULLIF' => 33, 'POINTN' => 33, 'SECOND' => 33, + 'STDDEV' => 33, 'STRCMP' => 33, 'SUBSTR' => 33, 'WITHIN' => 33, + 'ADDDATE' => 33, 'ADDTIME' => 33, 'BIT_AND' => 33, 'BIT_XOR' => 33, 'CEILING' => 33, + 'CHARSET' => 33, 'CROSSES' => 33, 'CURDATE' => 33, 'CURTIME' => 33, 'DAYNAME' => 33, + 'DEGREES' => 33, 'ENCRYPT' => 33, 'EXTRACT' => 33, 'GLENGTH' => 33, 'ISEMPTY' => 33, + 'POLYGON' => 33, 'QUARTER' => 33, 'RADIANS' => 33, 'REVERSE' => 33, 'SOUNDEX' => 33, + 'SUBDATE' => 33, 'SUBTIME' => 33, 'SYSDATE' => 33, 'TOUCHES' => 33, 'TO_DAYS' => 33, + 'VAR_POP' => 33, 'VERSION' => 33, 'WEEKDAY' => 33, + 'ASBINARY' => 33, 'CENTROID' => 33, 'COALESCE' => 33, 'COMPRESS' => 33, + 'CONTAINS' => 33, 'DATEDIFF' => 33, 'DATE_ADD' => 33, 'DATE_SUB' => 33, + 'DISJOINT' => 33, 'ENDPOINT' => 33, 'ENVELOPE' => 33, 'GET_LOCK' => 33, + 'GREATEST' => 33, 'ISCLOSED' => 33, 'ISSIMPLE' => 33, 'MAKEDATE' => 33, + 'MAKETIME' => 33, 'MAKE_SET' => 33, 'MBREQUAL' => 33, 'OVERLAPS' => 33, + 'PASSWORD' => 33, 'POSITION' => 33, 'TIMEDIFF' => 33, 'TRUNCATE' => 33, + 'VARIANCE' => 33, 'VAR_SAMP' => 33, 'YEARWEEK' => 33, + 'BENCHMARK' => 33, 'BIT_COUNT' => 33, 'COLLATION' => 33, 'CONCAT_WS' => 33, + 'DAYOFWEEK' => 33, 'DAYOFYEAR' => 33, 'DIMENSION' => 33, 'FROM_DAYS' => 33, + 'GEOMETRYN' => 33, 'INET_ATON' => 33, 'INET_NTOA' => 33, 'LOAD_FILE' => 33, + 'MBRWITHIN' => 33, 'MONTHNAME' => 33, 'NUMPOINTS' => 33, 'ROW_COUNT' => 33, + 'SUBSTRING' => 33, 'UPDATEXML' => 33, + 'BIT_LENGTH' => 33, 'CONVERT_TZ' => 33, 'DAYOFMONTH' => 33, 'EXPORT_SET' => 33, + 'FOUND_ROWS' => 33, 'GET_FORMAT' => 33, 'INTERSECTS' => 33, 'LINESTRING' => 33, + 'MBRTOUCHES' => 33, 'MULTIPOINT' => 33, 'NAME_CONST' => 33, 'PERIOD_ADD' => 33, + 'STARTPOINT' => 33, 'STDDEV_POP' => 33, 'TO_SECONDS' => 33, 'UNCOMPRESS' => 33, + 'UUID_SHORT' => 33, 'WEEKOFYEAR' => 33, + 'AES_DECRYPT' => 33, 'AES_ENCRYPT' => 33, 'CHAR_LENGTH' => 33, 'DATE_FORMAT' => 33, + 'DES_DECRYPT' => 33, 'DES_ENCRYPT' => 33, 'FIND_IN_SET' => 33, 'GEOMFROMWKB' => 33, + 'LINEFROMWKB' => 33, 'MBRCONTAINS' => 33, 'MBRDISJOINT' => 33, 'MBROVERLAPS' => 33, + 'MICROSECOND' => 33, 'PERIOD_DIFF' => 33, 'POLYFROMWKB' => 33, 'SEC_TO_TIME' => 33, + 'STDDEV_SAMP' => 33, 'STR_TO_DATE' => 33, 'SYSTEM_USER' => 33, 'TIME_FORMAT' => 33, + 'TIME_TO_SEC' => 33, + 'COERCIBILITY' => 33, 'EXTERIORRING' => 33, 'EXTRACTVALUE' => 33, + 'GEOMETRYTYPE' => 33, 'GEOMFROMTEXT' => 33, 'GROUP_CONCAT' => 33, + 'IS_FREE_LOCK' => 33, 'IS_USED_LOCK' => 33, 'LINEFROMTEXT' => 33, + 'MLINEFROMWKB' => 33, 'MPOLYFROMWKB' => 33, 'MULTIPOLYGON' => 33, + 'OCTET_LENGTH' => 33, 'OLD_PASSWORD' => 33, 'POINTFROMWKB' => 33, + 'POLYFROMTEXT' => 33, 'RELEASE_LOCK' => 33, 'SESSION_USER' => 33, + 'TIMESTAMPADD' => 33, + 'CONNECTION_ID' => 33, 'FROM_UNIXTIME' => 33, 'INTERIORRINGN' => 33, + 'MBRINTERSECTS' => 33, 'MLINEFROMTEXT' => 33, 'MPOINTFROMWKB' => 33, + 'MPOLYFROMTEXT' => 33, 'NUMGEOMETRIES' => 33, 'POINTFROMTEXT' => 33, + 'TIMESTAMPDIFF' => 33, + 'LAST_INSERT_ID' => 33, 'MPOINTFROMTEXT' => 33, 'POLYGONFROMWKB' => 33, + 'UNIX_TIMESTAMP' => 33, + 'GEOMCOLLFROMWKB' => 33, 'MASTER_POS_WAIT' => 33, 'MULTILINESTRING' => 33, + 'POLYGONFROMTEXT' => 33, 'SUBSTRING_INDEX' => 33, + 'CHARACTER_LENGTH' => 33, 'GEOMCOLLFROMTEXT' => 33, 'GEOMETRYFROMTEXT' => 33, + 'NUMINTERIORRINGS' => 33, + 'LINESTRINGFROMWKB' => 33, 'MULTIPOINTFROMWKB' => 33, + 'GEOMETRYCOLLECTION' => 33, 'MULTIPOINTFROMTEXT' => 33, + 'MULTIPOLYGONFROMWKB' => 33, 'UNCOMPRESSED_LENGTH' => 33, + 'MULTIPOLYGONFROMTEXT' => 33, + 'MULTILINESTRINGFROMWKB' => 33, + 'MULTILINESTRINGFROMTEXT' => 33, + 'GEOMETRYCOLLECTIONFROMWKB' => 33, + 'GEOMETRYCOLLECTIONFROMTEXT' => 33, + + 'IF' => 35, 'IN' => 35, + 'MOD' => 35, + 'LEFT' => 35, + 'RIGHT' => 35, + 'INSERT' => 35, 'REPEAT' => 35, 'SCHEMA' => 35, 'VALUES' => 35, + 'CONVERT' => 35, 'DEFAULT' => 35, 'REPLACE' => 35, + 'DATABASE' => 35, 'UTC_DATE' => 35, 'UTC_TIME' => 35, + 'LOCALTIME' => 35, + 'CURRENT_DATE' => 35, 'CURRENT_TIME' => 35, 'CURRENT_USER' => 35, + 'UTC_TIMESTAMP' => 35, + 'LOCALTIMESTAMP' => 35, + 'CURRENT_TIMESTAMP' => 35, + + 'NOT IN' => 37, + 'PROCEDURE ANALYSE' => 37, + + 'DATE' => 41, 'TIME' => 41, 'YEAR' => 41, + 'TIMESTAMP' => 41, + + 'CHAR' => 43, + 'INTERVAL' => 43, + ); } diff --git a/src/Contexts/ContextMySql50600.php b/src/Contexts/ContextMySql50600.php index d9fcf71..39521ef 100644 --- a/src/Contexts/ContextMySql50600.php +++ b/src/Contexts/ContextMySql50600.php @@ -34,148 +34,132 @@ class ContextMySql50600 extends Context public static $KEYWORDS = array( 'AT' => 1, 'DO' => 1, 'IO' => 1, 'NO' => 1, 'XA' => 1, - 'ANY' => 1, 'AVG' => 1, 'BIT' => 1, 'CPU' => 1, 'DAY' => 1, 'END' => 1, - 'IPC' => 1, 'NDB' => 1, 'NEW' => 1, 'ONE' => 1, 'ROW' => 1, + 'ANY' => 1, 'BIT' => 1, 'CPU' => 1, 'END' => 1, 'IPC' => 1, 'NDB' => 1, + 'NEW' => 1, 'ONE' => 1, 'ROW' => 1, 'BOOL' => 1, 'BYTE' => 1, 'CODE' => 1, 'CUBE' => 1, 'DATA' => 1, 'DISK' => 1, 'ENDS' => 1, 'FAST' => 1, 'FILE' => 1, 'FULL' => 1, 'HASH' => 1, 'HELP' => 1, - 'HOST' => 1, 'HOUR' => 1, 'LAST' => 1, 'LESS' => 1, 'LIST' => 1, 'LOGS' => 1, - 'MODE' => 1, 'NAME' => 1, 'NEXT' => 1, 'NONE' => 1, 'ONLY' => 1, 'OPEN' => 1, - 'PAGE' => 1, 'PORT' => 1, 'PREV' => 1, 'ROWS' => 1, 'SLOW' => 1, 'SOME' => 1, - 'STOP' => 1, 'THAN' => 1, 'TYPE' => 1, 'USER' => 1, 'VIEW' => 1, 'WAIT' => 1, - 'WEEK' => 1, 'WORK' => 1, 'X509' => 1, - 'AFTER' => 1, 'ASCII' => 1, 'BEGIN' => 1, 'BLOCK' => 1, 'BTREE' => 1, - 'CACHE' => 1, 'CHAIN' => 1, 'CLOSE' => 1, 'ERROR' => 1, 'EVENT' => 1, - 'EVERY' => 1, 'FIRST' => 1, 'FIXED' => 1, 'FLUSH' => 1, 'FOUND' => 1, - 'HOSTS' => 1, 'LEVEL' => 1, 'LOCAL' => 1, 'LOCKS' => 1, 'MERGE' => 1, - 'MONTH' => 1, 'MUTEX' => 1, 'NAMES' => 1, 'NCHAR' => 1, 'OWNER' => 1, - 'PHASE' => 1, 'POINT' => 1, 'PROXY' => 1, 'QUERY' => 1, 'QUICK' => 1, - 'RELAY' => 1, 'RESET' => 1, 'RTREE' => 1, 'SHARE' => 1, 'SLAVE' => 1, - 'START' => 1, 'SUPER' => 1, 'SWAPS' => 1, 'TYPES' => 1, 'UNTIL' => 1, - 'VALUE' => 1, + 'HOST' => 1, 'LAST' => 1, 'LESS' => 1, 'LIST' => 1, 'LOGS' => 1, 'MODE' => 1, + 'NAME' => 1, 'NEXT' => 1, 'NONE' => 1, 'ONLY' => 1, 'OPEN' => 1, 'PAGE' => 1, + 'PORT' => 1, 'PREV' => 1, 'ROWS' => 1, 'SLOW' => 1, 'SOME' => 1, 'STOP' => 1, + 'THAN' => 1, 'TYPE' => 1, 'VIEW' => 1, 'WAIT' => 1, 'WORK' => 1, 'X509' => 1, + 'AFTER' => 1, 'BEGIN' => 1, 'BLOCK' => 1, 'BTREE' => 1, 'CACHE' => 1, + 'CHAIN' => 1, 'CLOSE' => 1, 'ERROR' => 1, 'EVENT' => 1, 'EVERY' => 1, + 'FIRST' => 1, 'FIXED' => 1, 'FLUSH' => 1, 'FOUND' => 1, 'HOSTS' => 1, + 'LEVEL' => 1, 'LOCAL' => 1, 'LOCKS' => 1, 'MERGE' => 1, 'MUTEX' => 1, + 'NAMES' => 1, 'NCHAR' => 1, 'OWNER' => 1, 'PHASE' => 1, 'PROXY' => 1, + 'QUERY' => 1, 'QUICK' => 1, 'RELAY' => 1, 'RESET' => 1, 'RTREE' => 1, + 'SHARE' => 1, 'SLAVE' => 1, 'START' => 1, 'SUPER' => 1, 'SWAPS' => 1, + 'TYPES' => 1, 'UNTIL' => 1, 'VALUE' => 1, 'ACTION' => 1, 'BACKUP' => 1, 'BINLOG' => 1, 'CIPHER' => 1, 'CLIENT' => 1, 'COMMIT' => 1, 'ENABLE' => 1, 'ENGINE' => 1, 'ERRORS' => 1, 'ESCAPE' => 1, 'EVENTS' => 1, 'EXPIRE' => 1, 'EXPORT' => 1, 'FAULTS' => 1, 'FIELDS' => 1, - 'FORMAT' => 1, 'GLOBAL' => 1, 'GRANTS' => 1, 'IMPORT' => 1, 'ISSUER' => 1, - 'LEAVES' => 1, 'MASTER' => 1, 'MEDIUM' => 1, 'MEMORY' => 1, 'MINUTE' => 1, - 'MODIFY' => 1, 'NUMBER' => 1, 'OFFSET' => 1, 'PARSER' => 1, 'PLUGIN' => 1, - 'RELOAD' => 1, 'REMOVE' => 1, 'REPAIR' => 1, 'RESUME' => 1, 'ROLLUP' => 1, - 'SECOND' => 1, 'SERIAL' => 1, 'SERVER' => 1, 'SIGNED' => 1, 'SIMPLE' => 1, - 'SOCKET' => 1, 'SONAME' => 1, 'SOUNDS' => 1, 'SOURCE' => 1, 'STARTS' => 1, - 'STATUS' => 1, 'STRING' => 1, 'TABLES' => 1, - 'AGAINST' => 1, 'ANALYSE' => 1, 'AUTHORS' => 1, 'CHANGED' => 1, 'CHARSET' => 1, - 'COLUMNS' => 1, 'COMMENT' => 1, 'COMPACT' => 1, 'CONTEXT' => 1, 'CURRENT' => 1, - 'DEFINER' => 1, 'DISABLE' => 1, 'DISCARD' => 1, 'DYNAMIC' => 1, 'ENGINES' => 1, - 'EXECUTE' => 1, 'GENERAL' => 1, 'HANDLER' => 1, 'INDEXES' => 1, 'INSTALL' => 1, - 'INVOKER' => 1, 'LOGFILE' => 1, 'MIGRATE' => 1, 'NO_WAIT' => 1, 'OPTIONS' => 1, - 'PARTIAL' => 1, 'PLUGINS' => 1, 'POLYGON' => 1, 'PREPARE' => 1, 'PROFILE' => 1, - 'QUARTER' => 1, 'REBUILD' => 1, 'RECOVER' => 1, 'RESTORE' => 1, 'RETURNS' => 1, - 'REVERSE' => 1, 'ROUTINE' => 1, 'SESSION' => 1, 'STORAGE' => 1, 'SUBJECT' => 1, - 'SUSPEND' => 1, 'UNICODE' => 1, 'UNKNOWN' => 1, 'UPGRADE' => 1, 'USE_FRM' => 1, - 'WRAPPER' => 1, - 'CASCADED' => 1, 'CHECKSUM' => 1, 'COALESCE' => 1, 'CONTAINS' => 1, - 'DATAFILE' => 1, 'DUMPFILE' => 1, 'EXCHANGE' => 1, 'EXTENDED' => 1, - 'FUNCTION' => 1, 'GEOMETRY' => 1, 'LANGUAGE' => 1, 'MAX_ROWS' => 1, - 'MAX_SIZE' => 1, 'MIN_ROWS' => 1, 'NATIONAL' => 1, 'NVARCHAR' => 1, - 'ONE_SHOT' => 1, 'PASSWORD' => 1, 'PRESERVE' => 1, 'PROFILES' => 1, - 'REDOFILE' => 1, 'RELAYLOG' => 1, 'ROLLBACK' => 1, 'SCHEDULE' => 1, - 'SECURITY' => 1, 'SHUTDOWN' => 1, 'SNAPSHOT' => 1, 'SWITCHES' => 1, - 'TRIGGERS' => 1, 'TRUNCATE' => 1, 'UNDOFILE' => 1, 'WARNINGS' => 1, - 'AGGREGATE' => 1, 'ALGORITHM' => 1, 'COLLATION' => 1, 'COMMITTED' => 1, - 'DIRECTORY' => 1, 'DUPLICATE' => 1, 'EXPANSION' => 1, 'IO_THREAD' => 1, - 'ISOLATION' => 1, 'NODEGROUP' => 1, 'PACK_KEYS' => 1, 'READ_ONLY' => 1, - 'REDUNDANT' => 1, 'ROW_COUNT' => 1, 'SAVEPOINT' => 1, 'SQL_CACHE' => 1, - 'TEMPORARY' => 1, 'TEMPTABLE' => 1, 'UNDEFINED' => 1, 'UNINSTALL' => 1, - 'VARIABLES' => 1, + 'GLOBAL' => 1, 'GRANTS' => 1, 'IMPORT' => 1, 'ISSUER' => 1, 'LEAVES' => 1, + 'MASTER' => 1, 'MEDIUM' => 1, 'MEMORY' => 1, 'MODIFY' => 1, 'NUMBER' => 1, + 'OFFSET' => 1, 'PARSER' => 1, 'PLUGIN' => 1, 'RELOAD' => 1, 'REMOVE' => 1, + 'REPAIR' => 1, 'RESUME' => 1, 'ROLLUP' => 1, 'SERIAL' => 1, 'SERVER' => 1, + 'SIGNED' => 1, 'SIMPLE' => 1, 'SOCKET' => 1, 'SONAME' => 1, 'SOUNDS' => 1, + 'SOURCE' => 1, 'STARTS' => 1, 'STATUS' => 1, 'STRING' => 1, 'TABLES' => 1, + 'AGAINST' => 1, 'ANALYSE' => 1, 'AUTHORS' => 1, 'CHANGED' => 1, 'COLUMNS' => 1, + 'COMMENT' => 1, 'COMPACT' => 1, 'CONTEXT' => 1, 'CURRENT' => 1, 'DEFINER' => 1, + 'DISABLE' => 1, 'DISCARD' => 1, 'DYNAMIC' => 1, 'ENGINES' => 1, 'EXECUTE' => 1, + 'GENERAL' => 1, 'HANDLER' => 1, 'INDEXES' => 1, 'INSTALL' => 1, 'INVOKER' => 1, + 'LOGFILE' => 1, 'MIGRATE' => 1, 'NO_WAIT' => 1, 'OPTIONS' => 1, 'PARTIAL' => 1, + 'PLUGINS' => 1, 'PREPARE' => 1, 'PROFILE' => 1, 'REBUILD' => 1, 'RECOVER' => 1, + 'RESTORE' => 1, 'RETURNS' => 1, 'ROUTINE' => 1, 'SESSION' => 1, 'STORAGE' => 1, + 'SUBJECT' => 1, 'SUSPEND' => 1, 'UNICODE' => 1, 'UNKNOWN' => 1, 'UPGRADE' => 1, + 'USE_FRM' => 1, 'WRAPPER' => 1, + 'CASCADED' => 1, 'CHECKSUM' => 1, 'DATAFILE' => 1, 'DUMPFILE' => 1, + 'EXCHANGE' => 1, 'EXTENDED' => 1, 'FUNCTION' => 1, 'GEOMETRY' => 1, + 'LANGUAGE' => 1, 'MAX_ROWS' => 1, 'MAX_SIZE' => 1, 'MIN_ROWS' => 1, + 'NATIONAL' => 1, 'NVARCHAR' => 1, 'ONE_SHOT' => 1, 'PRESERVE' => 1, + 'PROFILES' => 1, 'REDOFILE' => 1, 'RELAYLOG' => 1, 'ROLLBACK' => 1, + 'SCHEDULE' => 1, 'SECURITY' => 1, 'SHUTDOWN' => 1, 'SNAPSHOT' => 1, + 'SWITCHES' => 1, 'TRIGGERS' => 1, 'UNDOFILE' => 1, 'WARNINGS' => 1, + 'AGGREGATE' => 1, 'ALGORITHM' => 1, 'COMMITTED' => 1, 'DIRECTORY' => 1, + 'DUPLICATE' => 1, 'EXPANSION' => 1, 'IO_THREAD' => 1, 'ISOLATION' => 1, + 'NODEGROUP' => 1, 'PACK_KEYS' => 1, 'READ_ONLY' => 1, 'REDUNDANT' => 1, + 'SAVEPOINT' => 1, 'SQL_CACHE' => 1, 'TEMPORARY' => 1, 'TEMPTABLE' => 1, + 'UNDEFINED' => 1, 'UNINSTALL' => 1, 'VARIABLES' => 1, 'COMPLETION' => 1, 'COMPRESSED' => 1, 'CONCURRENT' => 1, 'CONNECTION' => 1, - 'CONSISTENT' => 1, 'DEALLOCATE' => 1, 'GET_FORMAT' => 1, 'IDENTIFIED' => 1, - 'LINESTRING' => 1, 'MASTER_SSL' => 1, 'MULTIPOINT' => 1, 'NDBCLUSTER' => 1, - 'PARTITIONS' => 1, 'PLUGIN_DIR' => 1, 'PRIVILEGES' => 1, 'REORGANIZE' => 1, - 'REPEATABLE' => 1, 'ROW_FORMAT' => 1, 'SQL_THREAD' => 1, 'TABLESPACE' => 1, - 'TABLE_NAME' => 1, + 'CONSISTENT' => 1, 'DEALLOCATE' => 1, 'IDENTIFIED' => 1, 'MASTER_SSL' => 1, + 'NDBCLUSTER' => 1, 'PARTITIONS' => 1, 'PLUGIN_DIR' => 1, 'PRIVILEGES' => 1, + 'REORGANIZE' => 1, 'REPEATABLE' => 1, 'ROW_FORMAT' => 1, 'SQL_THREAD' => 1, + 'TABLESPACE' => 1, 'TABLE_NAME' => 1, 'COLUMN_NAME' => 1, 'CURSOR_NAME' => 1, 'DIAGNOSTICS' => 1, 'EXTENT_SIZE' => 1, - 'MASTER_HOST' => 1, 'MASTER_PORT' => 1, 'MASTER_USER' => 1, 'MICROSECOND' => 1, - 'MYSQL_ERRNO' => 1, 'PROCESSLIST' => 1, 'REPLICATION' => 1, 'SCHEMA_NAME' => 1, - 'SQL_TSI_DAY' => 1, 'TRANSACTION' => 1, 'UNCOMMITTED' => 1, + 'MASTER_HOST' => 1, 'MASTER_PORT' => 1, 'MASTER_USER' => 1, 'MYSQL_ERRNO' => 1, + 'PROCESSLIST' => 1, 'REPLICATION' => 1, 'SCHEMA_NAME' => 1, 'SQL_TSI_DAY' => 1, + 'TRANSACTION' => 1, 'UNCOMMITTED' => 1, 'CATALOG_NAME' => 1, 'CLASS_ORIGIN' => 1, 'CONTRIBUTORS' => 1, 'DEFAULT_AUTH' => 1, 'DES_KEY_FILE' => 1, 'INITIAL_SIZE' => 1, - 'MASTER_DELAY' => 1, 'MESSAGE_TEXT' => 1, 'MULTIPOLYGON' => 1, - 'OLD_PASSWORD' => 1, 'PARTITIONING' => 1, 'RELAY_THREAD' => 1, - 'SERIALIZABLE' => 1, 'SQL_NO_CACHE' => 1, 'SQL_TSI_HOUR' => 1, - 'SQL_TSI_WEEK' => 1, 'SQL_TSI_YEAR' => 1, 'SUBPARTITION' => 1, - 'TIMESTAMPADD' => 1, + 'MASTER_DELAY' => 1, 'MESSAGE_TEXT' => 1, 'PARTITIONING' => 1, + 'RELAY_THREAD' => 1, 'SERIALIZABLE' => 1, 'SQL_NO_CACHE' => 1, + 'SQL_TSI_HOUR' => 1, 'SQL_TSI_WEEK' => 1, 'SQL_TSI_YEAR' => 1, + 'SUBPARTITION' => 1, 'COLUMN_FORMAT' => 1, 'INSERT_METHOD' => 1, 'MASTER_SSL_CA' => 1, 'RELAY_LOG_POS' => 1, 'SQL_TSI_MONTH' => 1, 'SUBPARTITIONS' => 1, - 'TIMESTAMPDIFF' => 1, 'WEIGHT_STRING' => 1, 'AUTO_INCREMENT' => 1, 'AVG_ROW_LENGTH' => 1, 'KEY_BLOCK_SIZE' => 1, 'MASTER_LOG_POS' => 1, 'MASTER_SSL_CRL' => 1, 'MASTER_SSL_KEY' => 1, 'RELAY_LOG_FILE' => 1, 'SQL_TSI_MINUTE' => 1, 'SQL_TSI_SECOND' => 1, 'TABLE_CHECKSUM' => 1, 'USER_RESOURCES' => 1, 'AUTOEXTEND_SIZE' => 1, 'CONSTRAINT_NAME' => 1, 'DELAY_KEY_WRITE' => 1, 'MASTER_LOG_FILE' => 1, 'MASTER_PASSWORD' => 1, 'MASTER_SSL_CERT' => 1, - 'MULTILINESTRING' => 1, 'SQL_AFTER_GTIDS' => 1, 'SQL_TSI_QUARTER' => 1, - 'SUBCLASS_ORIGIN' => 1, + 'SQL_AFTER_GTIDS' => 1, 'SQL_TSI_QUARTER' => 1, 'SUBCLASS_ORIGIN' => 1, 'MASTER_SERVER_ID' => 1, 'REDO_BUFFER_SIZE' => 1, 'SQL_BEFORE_GTIDS' => 1, 'STATS_PERSISTENT' => 1, 'UNDO_BUFFER_SIZE' => 1, 'CONSTRAINT_SCHEMA' => 1, 'IGNORE_SERVER_IDS' => 1, 'MASTER_SSL_CAPATH' => 1, 'MASTER_SSL_CIPHER' => 1, 'RETURNED_SQLSTATE' => 1, 'SQL_BUFFER_RESULT' => 1, 'STATS_AUTO_RECALC' => 1, - 'CONSTRAINT_CATALOG' => 1, 'GEOMETRYCOLLECTION' => 1, 'MASTER_RETRY_COUNT' => 1, - 'MASTER_SSL_CRLPATH' => 1, 'SQL_AFTER_MTS_GAPS' => 1, 'STATS_SAMPLE_PAGES' => 1, + 'CONSTRAINT_CATALOG' => 1, 'MASTER_RETRY_COUNT' => 1, 'MASTER_SSL_CRLPATH' => 1, + 'SQL_AFTER_MTS_GAPS' => 1, 'STATS_SAMPLE_PAGES' => 1, 'MASTER_AUTO_POSITION' => 1, 'MASTER_CONNECT_RETRY' => 1, 'MAX_QUERIES_PER_HOUR' => 1, 'MAX_UPDATES_PER_HOUR' => 1, 'MAX_USER_CONNECTIONS' => 1, 'MASTER_HEARTBEAT_PERIOD' => 1, 'MAX_CONNECTIONS_PER_HOUR' => 1, - 'AS' => 3, 'BY' => 3, 'IF' => 3, 'IN' => 3, 'IS' => 3, 'ON' => 3, 'OR' => 3, - 'TO' => 3, + 'AS' => 3, 'BY' => 3, 'IS' => 3, 'ON' => 3, 'OR' => 3, 'TO' => 3, 'ADD' => 3, 'ALL' => 3, 'AND' => 3, 'ASC' => 3, 'DEC' => 3, 'DIV' => 3, - 'FOR' => 3, 'GET' => 3, 'MOD' => 3, 'NOT' => 3, 'OUT' => 3, 'SQL' => 3, - 'SSL' => 3, 'USE' => 3, 'XOR' => 3, + 'FOR' => 3, 'GET' => 3, 'NOT' => 3, 'OUT' => 3, 'SQL' => 3, 'SSL' => 3, + 'USE' => 3, 'XOR' => 3, 'BOTH' => 3, 'CALL' => 3, 'CASE' => 3, 'DESC' => 3, 'DROP' => 3, 'DUAL' => 3, 'EACH' => 3, 'ELSE' => 3, 'EXIT' => 3, 'FROM' => 3, 'INT1' => 3, 'INT2' => 3, 'INT3' => 3, 'INT4' => 3, 'INT8' => 3, 'INTO' => 3, 'JOIN' => 3, 'KEYS' => 3, - 'KILL' => 3, 'LEFT' => 3, 'LIKE' => 3, 'LOAD' => 3, 'LOCK' => 3, 'LONG' => 3, - 'LOOP' => 3, 'NULL' => 3, 'READ' => 3, 'SHOW' => 3, 'THEN' => 3, 'TRUE' => 3, - 'UNDO' => 3, 'WHEN' => 3, 'WITH' => 3, + 'KILL' => 3, 'LIKE' => 3, 'LOAD' => 3, 'LOCK' => 3, 'LONG' => 3, 'LOOP' => 3, + 'NULL' => 3, 'READ' => 3, 'SHOW' => 3, 'THEN' => 3, 'TRUE' => 3, 'UNDO' => 3, + 'WHEN' => 3, 'WITH' => 3, 'ALTER' => 3, 'CHECK' => 3, 'CROSS' => 3, 'FALSE' => 3, 'FETCH' => 3, 'FORCE' => 3, 'GRANT' => 3, 'GROUP' => 3, 'INNER' => 3, 'INOUT' => 3, 'LEAVE' => 3, 'LIMIT' => 3, 'LINES' => 3, 'MATCH' => 3, 'ORDER' => 3, - 'OUTER' => 3, 'PURGE' => 3, 'RANGE' => 3, 'READS' => 3, 'RIGHT' => 3, - 'RLIKE' => 3, 'TABLE' => 3, 'UNION' => 3, 'USAGE' => 3, 'USING' => 3, - 'WHERE' => 3, 'WHILE' => 3, 'WRITE' => 3, + 'OUTER' => 3, 'PURGE' => 3, 'RANGE' => 3, 'READS' => 3, 'RLIKE' => 3, + 'TABLE' => 3, 'UNION' => 3, 'USAGE' => 3, 'USING' => 3, 'WHERE' => 3, + 'WHILE' => 3, 'WRITE' => 3, 'BEFORE' => 3, 'CHANGE' => 3, 'COLUMN' => 3, 'CREATE' => 3, 'CURSOR' => 3, 'DELETE' => 3, 'ELSEIF' => 3, 'EXISTS' => 3, 'FLOAT4' => 3, 'FLOAT8' => 3, - 'HAVING' => 3, 'IGNORE' => 3, 'INFILE' => 3, 'INSERT' => 3, 'LINEAR' => 3, - 'OPTION' => 3, 'REGEXP' => 3, 'RENAME' => 3, 'REPEAT' => 3, 'RETURN' => 3, - 'REVOKE' => 3, 'SCHEMA' => 3, 'SELECT' => 3, 'SIGNAL' => 3, 'UNLOCK' => 3, - 'UPDATE' => 3, 'VALUES' => 3, - 'ANALYZE' => 3, 'BETWEEN' => 3, 'CASCADE' => 3, 'COLLATE' => 3, 'CONVERT' => 3, - 'DECLARE' => 3, 'DEFAULT' => 3, 'DELAYED' => 3, 'ESCAPED' => 3, 'EXPLAIN' => 3, - 'FOREIGN' => 3, 'ITERATE' => 3, 'LEADING' => 3, 'NATURAL' => 3, 'OUTFILE' => 3, - 'PRIMARY' => 3, 'RELEASE' => 3, 'REPLACE' => 3, 'REQUIRE' => 3, 'SCHEMAS' => 3, - 'SPATIAL' => 3, 'TRIGGER' => 3, 'VARYING' => 3, - 'CONTINUE' => 3, 'DATABASE' => 3, 'DAY_HOUR' => 3, 'DESCRIBE' => 3, - 'DISTINCT' => 3, 'ENCLOSED' => 3, 'FULLTEXT' => 3, 'MAXVALUE' => 3, - 'MODIFIES' => 3, 'OPTIMIZE' => 3, 'RESIGNAL' => 3, 'RESTRICT' => 3, - 'SPECIFIC' => 3, 'SQLSTATE' => 3, 'STARTING' => 3, 'TRAILING' => 3, - 'UNSIGNED' => 3, 'UTC_DATE' => 3, 'UTC_TIME' => 3, 'ZEROFILL' => 3, - 'CONDITION' => 3, 'DATABASES' => 3, 'LOCALTIME' => 3, 'MIDDLEINT' => 3, - 'PARTITION' => 3, 'PRECISION' => 3, 'PROCEDURE' => 3, 'SENSITIVE' => 3, - 'SEPARATOR' => 3, + 'HAVING' => 3, 'IGNORE' => 3, 'INFILE' => 3, 'LINEAR' => 3, 'OPTION' => 3, + 'REGEXP' => 3, 'RENAME' => 3, 'RETURN' => 3, 'REVOKE' => 3, 'SELECT' => 3, + 'SIGNAL' => 3, 'UNLOCK' => 3, 'UPDATE' => 3, + 'ANALYZE' => 3, 'BETWEEN' => 3, 'CASCADE' => 3, 'COLLATE' => 3, 'DECLARE' => 3, + 'DELAYED' => 3, 'ESCAPED' => 3, 'EXPLAIN' => 3, 'FOREIGN' => 3, 'ITERATE' => 3, + 'LEADING' => 3, 'NATURAL' => 3, 'OUTFILE' => 3, 'PRIMARY' => 3, 'RELEASE' => 3, + 'REQUIRE' => 3, 'SCHEMAS' => 3, 'SPATIAL' => 3, 'TRIGGER' => 3, 'VARYING' => 3, + 'CONTINUE' => 3, 'DAY_HOUR' => 3, 'DESCRIBE' => 3, 'DISTINCT' => 3, + 'ENCLOSED' => 3, 'FULLTEXT' => 3, 'MAXVALUE' => 3, 'MODIFIES' => 3, + 'OPTIMIZE' => 3, 'RESIGNAL' => 3, 'RESTRICT' => 3, 'SPECIFIC' => 3, + 'SQLSTATE' => 3, 'STARTING' => 3, 'TRAILING' => 3, 'UNSIGNED' => 3, + 'ZEROFILL' => 3, + 'CONDITION' => 3, 'DATABASES' => 3, 'MIDDLEINT' => 3, 'PARTITION' => 3, + 'PRECISION' => 3, 'PROCEDURE' => 3, 'SENSITIVE' => 3, 'SEPARATOR' => 3, 'ACCESSIBLE' => 3, 'ASENSITIVE' => 3, 'CONSTRAINT' => 3, 'DAY_MINUTE' => 3, 'DAY_SECOND' => 3, 'OPTIONALLY' => 3, 'READ_WRITE' => 3, 'REFERENCES' => 3, 'SQLWARNING' => 3, 'TERMINATED' => 3, 'YEAR_MONTH' => 3, 'DISTINCTROW' => 3, 'HOUR_MINUTE' => 3, 'HOUR_SECOND' => 3, 'INSENSITIVE' => 3, 'MASTER_BIND' => 3, - 'CURRENT_DATE' => 3, 'CURRENT_TIME' => 3, 'CURRENT_USER' => 3, 'LOW_PRIORITY' => 3, 'SQLEXCEPTION' => 3, 'VARCHARACTER' => 3, 'DETERMINISTIC' => 3, 'HIGH_PRIORITY' => 3, 'MINUTE_SECOND' => 3, - 'STRAIGHT_JOIN' => 3, 'UTC_TIMESTAMP' => 3, - 'IO_AFTER_GTIDS' => 3, 'LOCALTIMESTAMP' => 3, 'SQL_BIG_RESULT' => 3, + 'STRAIGHT_JOIN' => 3, + 'IO_AFTER_GTIDS' => 3, 'SQL_BIG_RESULT' => 3, 'DAY_MICROSECOND' => 3, 'IO_BEFORE_GTIDS' => 3, 'HOUR_MICROSECOND' => 3, 'SQL_SMALL_RESULT' => 3, - 'CURRENT_TIMESTAMP' => 3, 'MINUTE_MICROSECOND' => 3, 'NO_WRITE_TO_BINLOG' => 3, 'SECOND_MICROSECOND' => 3, 'SQL_CALC_FOUND_ROWS' => 3, 'MASTER_SSL_VERIFY_SERVER_CERT' => 3, @@ -190,19 +174,18 @@ class ContextMySql50600 extends Context 'GROUP BY' => 7, 'ORDER BY' => 7, 'XML' => 9, - 'DATE' => 9, 'ENUM' => 9, 'TEXT' => 9, 'TIME' => 9, 'YEAR' => 9, + 'ENUM' => 9, 'TEXT' => 9, 'ARRAY' => 9, 'BOOLEAN' => 9, 'DATETIME' => 9, 'MULTISET' => 9, - 'TIMESTAMP' => 9, 'INT' => 11, 'SET' => 11, - 'BLOB' => 11, 'CHAR' => 11, 'REAL' => 11, + 'BLOB' => 11, 'REAL' => 11, 'FLOAT' => 11, 'BIGINT' => 11, 'BINARY' => 11, 'DOUBLE' => 11, 'DECIMAL' => 11, 'INTEGER' => 11, 'NUMERIC' => 11, 'TINYINT' => 11, 'VARCHAR' => 11, - 'INTERVAL' => 11, 'LONGBLOB' => 11, 'LONGTEXT' => 11, 'SMALLINT' => 11, - 'TINYBLOB' => 11, 'TINYTEXT' => 11, + 'LONGBLOB' => 11, 'LONGTEXT' => 11, 'SMALLINT' => 11, 'TINYBLOB' => 11, + 'TINYTEXT' => 11, 'CHARACTER' => 11, 'MEDIUMINT' => 11, 'VARBINARY' => 11, 'MEDIUMBLOB' => 11, 'MEDIUMTEXT' => 11, @@ -219,5 +202,126 @@ class ContextMySql50600 extends Context 'SPATIAL INDEX' => 21, 'FULLTEXT INDEX' => 21, + 'X' => 33, 'Y' => 33, + 'LN' => 33, 'PI' => 33, + 'ABS' => 33, 'AVG' => 33, 'BIN' => 33, 'COS' => 33, 'COT' => 33, 'DAY' => 33, + 'ELT' => 33, 'EXP' => 33, 'HEX' => 33, 'LOG' => 33, 'MAX' => 33, 'MD5' => 33, + 'MID' => 33, 'MIN' => 33, 'NOW' => 33, 'OCT' => 33, 'ORD' => 33, 'POW' => 33, + 'SHA' => 33, 'SIN' => 33, 'STD' => 33, 'SUM' => 33, 'TAN' => 33, + 'ACOS' => 33, 'AREA' => 33, 'ASIN' => 33, 'ATAN' => 33, 'CAST' => 33, 'CEIL' => 33, + 'CONV' => 33, 'HOUR' => 33, 'LOG2' => 33, 'LPAD' => 33, 'RAND' => 33, 'RPAD' => 33, + 'SHA1' => 33, 'SHA2' => 33, 'SIGN' => 33, 'SQRT' => 33, 'SRID' => 33, 'ST_X' => 33, + 'ST_Y' => 33, 'TRIM' => 33, 'USER' => 33, 'UUID' => 33, 'WEEK' => 33, + 'ASCII' => 33, 'ASWKB' => 33, 'ASWKT' => 33, 'ATAN2' => 33, 'COUNT' => 33, + 'CRC32' => 33, 'FIELD' => 33, 'FLOOR' => 33, 'INSTR' => 33, 'LCASE' => 33, + 'LEAST' => 33, 'LOG10' => 33, 'LOWER' => 33, 'LTRIM' => 33, 'MONTH' => 33, + 'POINT' => 33, 'POWER' => 33, 'QUOTE' => 33, 'ROUND' => 33, 'RTRIM' => 33, + 'SLEEP' => 33, 'SPACE' => 33, 'UCASE' => 33, 'UNHEX' => 33, 'UPPER' => 33, + 'ASTEXT' => 33, 'BIT_OR' => 33, 'BUFFER' => 33, 'CONCAT' => 33, 'DECODE' => 33, + 'ENCODE' => 33, 'EQUALS' => 33, 'FORMAT' => 33, 'IFNULL' => 33, 'ISNULL' => 33, + 'LENGTH' => 33, 'LOCATE' => 33, 'MINUTE' => 33, 'NULLIF' => 33, 'POINTN' => 33, + 'SECOND' => 33, 'STDDEV' => 33, 'STRCMP' => 33, 'SUBSTR' => 33, 'WITHIN' => 33, + 'ADDDATE' => 33, 'ADDTIME' => 33, 'BIT_AND' => 33, 'BIT_XOR' => 33, 'CEILING' => 33, + 'CHARSET' => 33, 'CROSSES' => 33, 'CURDATE' => 33, 'CURTIME' => 33, 'DAYNAME' => 33, + 'DEGREES' => 33, 'ENCRYPT' => 33, 'EXTRACT' => 33, 'GLENGTH' => 33, 'ISEMPTY' => 33, + 'IS_IPV4' => 33, 'IS_IPV6' => 33, 'POLYGON' => 33, 'QUARTER' => 33, 'RADIANS' => 33, + 'REVERSE' => 33, 'SOUNDEX' => 33, 'ST_AREA' => 33, 'ST_SRID' => 33, 'SUBDATE' => 33, + 'SUBTIME' => 33, 'SYSDATE' => 33, 'TOUCHES' => 33, 'TO_DAYS' => 33, 'VAR_POP' => 33, + 'VERSION' => 33, 'WEEKDAY' => 33, + 'ASBINARY' => 33, 'CENTROID' => 33, 'COALESCE' => 33, 'COMPRESS' => 33, + 'CONTAINS' => 33, 'DATEDIFF' => 33, 'DATE_ADD' => 33, 'DATE_SUB' => 33, + 'DISJOINT' => 33, 'ENDPOINT' => 33, 'ENVELOPE' => 33, 'GET_LOCK' => 33, + 'GREATEST' => 33, 'ISCLOSED' => 33, 'ISSIMPLE' => 33, 'MAKEDATE' => 33, + 'MAKETIME' => 33, 'MAKE_SET' => 33, 'MBREQUAL' => 33, 'OVERLAPS' => 33, + 'PASSWORD' => 33, 'POSITION' => 33, 'ST_ASWKB' => 33, 'ST_ASWKT' => 33, + 'ST_UNION' => 33, 'TIMEDIFF' => 33, 'TRUNCATE' => 33, 'VARIANCE' => 33, + 'VAR_SAMP' => 33, 'YEARWEEK' => 33, + 'BENCHMARK' => 33, 'BIT_COUNT' => 33, 'COLLATION' => 33, 'CONCAT_WS' => 33, + 'DAYOFWEEK' => 33, 'DAYOFYEAR' => 33, 'DIMENSION' => 33, 'FROM_DAYS' => 33, + 'GEOMETRYN' => 33, 'INET_ATON' => 33, 'INET_NTOA' => 33, 'LOAD_FILE' => 33, + 'MBRWITHIN' => 33, 'MONTHNAME' => 33, 'NUMPOINTS' => 33, 'ROW_COUNT' => 33, + 'ST_ASTEXT' => 33, 'ST_BUFFER' => 33, 'ST_EQUALS' => 33, 'ST_POINTN' => 33, + 'ST_WITHIN' => 33, 'SUBSTRING' => 33, 'TO_BASE64' => 33, 'UPDATEXML' => 33, + 'BIT_LENGTH' => 33, 'CONVERT_TZ' => 33, 'DAYOFMONTH' => 33, 'EXPORT_SET' => 33, + 'FOUND_ROWS' => 33, 'GET_FORMAT' => 33, 'INET6_ATON' => 33, 'INET6_NTOA' => 33, + 'INTERSECTS' => 33, 'LINESTRING' => 33, 'MBRTOUCHES' => 33, 'MULTIPOINT' => 33, + 'NAME_CONST' => 33, 'PERIOD_ADD' => 33, 'STARTPOINT' => 33, 'STDDEV_POP' => 33, + 'ST_CROSSES' => 33, 'ST_ISEMPTY' => 33, 'ST_TOUCHES' => 33, 'TO_SECONDS' => 33, + 'UNCOMPRESS' => 33, 'UUID_SHORT' => 33, 'WEEKOFYEAR' => 33, + 'AES_DECRYPT' => 33, 'AES_ENCRYPT' => 33, 'CHAR_LENGTH' => 33, 'DATE_FORMAT' => 33, + 'DES_DECRYPT' => 33, 'DES_ENCRYPT' => 33, 'FIND_IN_SET' => 33, 'FROM_BASE64' => 33, + 'GEOMFROMWKB' => 33, 'GTID_SUBSET' => 33, 'LINEFROMWKB' => 33, 'MBRCONTAINS' => 33, + 'MBRDISJOINT' => 33, 'MBROVERLAPS' => 33, 'MICROSECOND' => 33, 'PERIOD_DIFF' => 33, + 'POLYFROMWKB' => 33, 'SEC_TO_TIME' => 33, 'STDDEV_SAMP' => 33, 'STR_TO_DATE' => 33, + 'ST_ASBINARY' => 33, 'ST_CENTROID' => 33, 'ST_CONTAINS' => 33, 'ST_DISJOINT' => 33, + 'ST_DISTANCE' => 33, 'ST_ENDPOINT' => 33, 'ST_ENVELOPE' => 33, 'ST_ISCLOSED' => 33, + 'ST_ISSIMPLE' => 33, 'ST_OVERLAPS' => 33, 'SYSTEM_USER' => 33, 'TIME_FORMAT' => 33, + 'TIME_TO_SEC' => 33, + 'COERCIBILITY' => 33, 'EXTERIORRING' => 33, 'EXTRACTVALUE' => 33, + 'GEOMETRYTYPE' => 33, 'GEOMFROMTEXT' => 33, 'GROUP_CONCAT' => 33, + 'IS_FREE_LOCK' => 33, 'IS_USED_LOCK' => 33, 'LINEFROMTEXT' => 33, + 'MLINEFROMWKB' => 33, 'MPOLYFROMWKB' => 33, 'MULTIPOLYGON' => 33, + 'OCTET_LENGTH' => 33, 'OLD_PASSWORD' => 33, 'POINTFROMWKB' => 33, + 'POLYFROMTEXT' => 33, 'RANDOM_BYTES' => 33, 'RELEASE_LOCK' => 33, + 'SESSION_USER' => 33, 'ST_DIMENSION' => 33, 'ST_GEOMETRYN' => 33, + 'ST_NUMPOINTS' => 33, 'TIMESTAMPADD' => 33, + 'CONNECTION_ID' => 33, 'CREATE_DIGEST' => 33, 'FROM_UNIXTIME' => 33, + 'GTID_SUBTRACT' => 33, 'INTERIORRINGN' => 33, 'MBRINTERSECTS' => 33, + 'MLINEFROMTEXT' => 33, 'MPOINTFROMWKB' => 33, 'MPOLYFROMTEXT' => 33, + 'NUMGEOMETRIES' => 33, 'POINTFROMTEXT' => 33, 'ST_DIFFERENCE' => 33, + 'ST_INTERSECTS' => 33, 'ST_STARTPOINT' => 33, 'TIMESTAMPDIFF' => 33, + 'WEIGHT_STRING' => 33, + 'IS_IPV4_COMPAT' => 33, 'IS_IPV4_MAPPED' => 33, 'LAST_INSERT_ID' => 33, + 'MPOINTFROMTEXT' => 33, 'POLYGONFROMWKB' => 33, 'ST_GEOMFROMWKB' => 33, + 'ST_LINEFROMWKB' => 33, 'ST_POLYFROMWKB' => 33, 'UNIX_TIMESTAMP' => 33, + 'ASYMMETRIC_SIGN' => 33, 'GEOMCOLLFROMWKB' => 33, 'MASTER_POS_WAIT' => 33, + 'MULTILINESTRING' => 33, 'POLYGONFROMTEXT' => 33, 'ST_EXTERIORRING' => 33, + 'ST_GEOMETRYTYPE' => 33, 'ST_GEOMFROMTEXT' => 33, 'ST_INTERSECTION' => 33, + 'ST_LINEFROMTEXT' => 33, 'ST_POINTFROMWKB' => 33, 'ST_POLYFROMTEXT' => 33, + 'SUBSTRING_INDEX' => 33, + 'CHARACTER_LENGTH' => 33, 'GEOMCOLLFROMTEXT' => 33, 'GEOMETRYFROMTEXT' => 33, + 'NUMINTERIORRINGS' => 33, 'ST_INTERIORRINGN' => 33, 'ST_NUMGEOMETRIES' => 33, + 'ST_POINTFROMTEXT' => 33, 'ST_SYMDIFFERENCE' => 33, + 'ASYMMETRIC_DERIVE' => 33, 'ASYMMETRIC_VERIFY' => 33, 'LINESTRINGFROMWKB' => 33, + 'MULTIPOINTFROMWKB' => 33, 'ST_POLYGONFROMWKB' => 33, + 'ASYMMETRIC_DECRYPT' => 33, 'ASYMMETRIC_ENCRYPT' => 33, 'GEOMETRYCOLLECTION' => 33, + 'MULTIPOINTFROMTEXT' => 33, 'ST_GEOMCOLLFROMTXT' => 33, 'ST_GEOMCOLLFROMWKB' => 33, + 'ST_POLYGONFROMTEXT' => 33, + 'MULTIPOLYGONFROMWKB' => 33, 'ST_GEOMCOLLFROMTEXT' => 33, 'ST_GEOMETRYFROMTEXT' => 33, + 'ST_NUMINTERIORRINGS' => 33, 'UNCOMPRESSED_LENGTH' => 33, + 'CREATE_DH_PARAMETERS' => 33, 'MULTIPOLYGONFROMTEXT' => 33, + 'ST_LINESTRINGFROMWKB' => 33, + 'MULTILINESTRINGFROMWKB' => 33, + 'MULTILINESTRINGFROMTEXT' => 33, + 'CREATE_ASYMMETRIC_PUB_KEY' => 33, 'GEOMETRYCOLLECTIONFROMWKB' => 33, + 'CREATE_ASYMMETRIC_PRIV_KEY' => 33, 'GEOMETRYCOLLECTIONFROMTEXT' => 33, + 'VALIDATE_PASSWORD_STRENGTH' => 33, + 'SQL_THREAD_WAIT_AFTER_GTIDS' => 33, + 'ST_GEOMETRYCOLLECTIONFROMWKB' => 33, + 'ST_GEOMETRYCOLLECTIONFROMTEXT' => 33, + 'WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS' => 33, + + 'IF' => 35, 'IN' => 35, + 'MOD' => 35, + 'LEFT' => 35, + 'RIGHT' => 35, + 'INSERT' => 35, 'REPEAT' => 35, 'SCHEMA' => 35, 'VALUES' => 35, + 'CONVERT' => 35, 'DEFAULT' => 35, 'REPLACE' => 35, + 'DATABASE' => 35, 'UTC_DATE' => 35, 'UTC_TIME' => 35, + 'LOCALTIME' => 35, + 'CURRENT_DATE' => 35, 'CURRENT_TIME' => 35, 'CURRENT_USER' => 35, + 'UTC_TIMESTAMP' => 35, + 'LOCALTIMESTAMP' => 35, + 'CURRENT_TIMESTAMP' => 35, + + 'NOT IN' => 37, + 'PROCEDURE ANALYSE' => 37, + + 'DATE' => 41, 'TIME' => 41, 'YEAR' => 41, + 'TIMESTAMP' => 41, + + 'CHAR' => 43, + 'INTERVAL' => 43, + ); } diff --git a/src/Contexts/ContextMySql50700.php b/src/Contexts/ContextMySql50700.php index 808de0d..99dae9e 100644 --- a/src/Contexts/ContextMySql50700.php +++ b/src/Contexts/ContextMySql50700.php @@ -34,95 +34,86 @@ class ContextMySql50700 extends Context public static $KEYWORDS = array( 'AT' => 1, 'DO' => 1, 'IO' => 1, 'NO' => 1, 'XA' => 1, - 'ANY' => 1, 'AVG' => 1, 'BIT' => 1, 'CPU' => 1, 'DAY' => 1, 'END' => 1, - 'IPC' => 1, 'NDB' => 1, 'NEW' => 1, 'ONE' => 1, 'ROW' => 1, 'XID' => 1, + 'ANY' => 1, 'BIT' => 1, 'CPU' => 1, 'END' => 1, 'IPC' => 1, 'NDB' => 1, + 'NEW' => 1, 'ONE' => 1, 'ROW' => 1, 'XID' => 1, 'BOOL' => 1, 'BYTE' => 1, 'CODE' => 1, 'CUBE' => 1, 'DATA' => 1, 'DISK' => 1, 'ENDS' => 1, 'FAST' => 1, 'FILE' => 1, 'FULL' => 1, 'HASH' => 1, 'HELP' => 1, - 'HOST' => 1, 'HOUR' => 1, 'LAST' => 1, 'LESS' => 1, 'LIST' => 1, 'LOGS' => 1, - 'MODE' => 1, 'NAME' => 1, 'NEXT' => 1, 'NONE' => 1, 'ONLY' => 1, 'OPEN' => 1, - 'PAGE' => 1, 'PORT' => 1, 'PREV' => 1, 'ROWS' => 1, 'SLOW' => 1, 'SOME' => 1, - 'STOP' => 1, 'THAN' => 1, 'TYPE' => 1, 'USER' => 1, 'VIEW' => 1, 'WAIT' => 1, - 'WEEK' => 1, 'WORK' => 1, 'X509' => 1, - 'AFTER' => 1, 'ASCII' => 1, 'BEGIN' => 1, 'BLOCK' => 1, 'BTREE' => 1, - 'CACHE' => 1, 'CHAIN' => 1, 'CLOSE' => 1, 'ERROR' => 1, 'EVENT' => 1, - 'EVERY' => 1, 'FIRST' => 1, 'FIXED' => 1, 'FLUSH' => 1, 'FOUND' => 1, - 'HOSTS' => 1, 'LEVEL' => 1, 'LOCAL' => 1, 'LOCKS' => 1, 'MERGE' => 1, - 'MONTH' => 1, 'MUTEX' => 1, 'NAMES' => 1, 'NCHAR' => 1, 'NEVER' => 1, - 'OWNER' => 1, 'PHASE' => 1, 'POINT' => 1, 'PROXY' => 1, 'QUERY' => 1, - 'QUICK' => 1, 'RELAY' => 1, 'RESET' => 1, 'RTREE' => 1, 'SHARE' => 1, - 'SLAVE' => 1, 'START' => 1, 'SUPER' => 1, 'SWAPS' => 1, 'TYPES' => 1, - 'UNTIL' => 1, 'VALUE' => 1, + 'HOST' => 1, 'LAST' => 1, 'LESS' => 1, 'LIST' => 1, 'LOGS' => 1, 'MODE' => 1, + 'NAME' => 1, 'NEXT' => 1, 'NONE' => 1, 'ONLY' => 1, 'OPEN' => 1, 'PAGE' => 1, + 'PORT' => 1, 'PREV' => 1, 'ROWS' => 1, 'SLOW' => 1, 'SOME' => 1, 'STOP' => 1, + 'THAN' => 1, 'TYPE' => 1, 'VIEW' => 1, 'WAIT' => 1, 'WORK' => 1, 'X509' => 1, + 'AFTER' => 1, 'BEGIN' => 1, 'BLOCK' => 1, 'BTREE' => 1, 'CACHE' => 1, + 'CHAIN' => 1, 'CLOSE' => 1, 'ERROR' => 1, 'EVENT' => 1, 'EVERY' => 1, + 'FIRST' => 1, 'FIXED' => 1, 'FLUSH' => 1, 'FOUND' => 1, 'HOSTS' => 1, + 'LEVEL' => 1, 'LOCAL' => 1, 'LOCKS' => 1, 'MERGE' => 1, 'MUTEX' => 1, + 'NAMES' => 1, 'NCHAR' => 1, 'NEVER' => 1, 'OWNER' => 1, 'PHASE' => 1, + 'PROXY' => 1, 'QUERY' => 1, 'QUICK' => 1, 'RELAY' => 1, 'RESET' => 1, + 'RTREE' => 1, 'SHARE' => 1, 'SLAVE' => 1, 'START' => 1, 'SUPER' => 1, + 'SWAPS' => 1, 'TYPES' => 1, 'UNTIL' => 1, 'VALUE' => 1, 'ACTION' => 1, 'ALWAYS' => 1, 'BACKUP' => 1, 'BINLOG' => 1, 'CIPHER' => 1, 'CLIENT' => 1, 'COMMIT' => 1, 'ENABLE' => 1, 'ENGINE' => 1, 'ERRORS' => 1, 'ESCAPE' => 1, 'EVENTS' => 1, 'EXPIRE' => 1, 'EXPORT' => 1, 'FAULTS' => 1, - 'FIELDS' => 1, 'FILTER' => 1, 'FORMAT' => 1, 'GLOBAL' => 1, 'GRANTS' => 1, - 'IMPORT' => 1, 'ISSUER' => 1, 'LEAVES' => 1, 'MASTER' => 1, 'MEDIUM' => 1, - 'MEMORY' => 1, 'MINUTE' => 1, 'MODIFY' => 1, 'NUMBER' => 1, 'OFFSET' => 1, - 'PARSER' => 1, 'PLUGIN' => 1, 'RELOAD' => 1, 'REMOVE' => 1, 'REPAIR' => 1, - 'RESUME' => 1, 'ROLLUP' => 1, 'SECOND' => 1, 'SERIAL' => 1, 'SERVER' => 1, - 'SIGNED' => 1, 'SIMPLE' => 1, 'SOCKET' => 1, 'SONAME' => 1, 'SOUNDS' => 1, - 'SOURCE' => 1, 'STARTS' => 1, 'STATUS' => 1, 'STRING' => 1, 'TABLES' => 1, + 'FIELDS' => 1, 'FILTER' => 1, 'GLOBAL' => 1, 'GRANTS' => 1, 'IMPORT' => 1, + 'ISSUER' => 1, 'LEAVES' => 1, 'MASTER' => 1, 'MEDIUM' => 1, 'MEMORY' => 1, + 'MODIFY' => 1, 'NUMBER' => 1, 'OFFSET' => 1, 'PARSER' => 1, 'PLUGIN' => 1, + 'RELOAD' => 1, 'REMOVE' => 1, 'REPAIR' => 1, 'RESUME' => 1, 'ROLLUP' => 1, + 'SERIAL' => 1, 'SERVER' => 1, 'SIGNED' => 1, 'SIMPLE' => 1, 'SOCKET' => 1, + 'SONAME' => 1, 'SOUNDS' => 1, 'SOURCE' => 1, 'STARTS' => 1, 'STATUS' => 1, + 'STRING' => 1, 'TABLES' => 1, 'ACCOUNT' => 1, 'AGAINST' => 1, 'ANALYSE' => 1, 'CHANGED' => 1, 'CHANNEL' => 1, - 'CHARSET' => 1, 'COLUMNS' => 1, 'COMMENT' => 1, 'COMPACT' => 1, 'CONTEXT' => 1, - 'CURRENT' => 1, 'DEFINER' => 1, 'DISABLE' => 1, 'DISCARD' => 1, 'DYNAMIC' => 1, - 'ENGINES' => 1, 'EXECUTE' => 1, 'FOLLOWS' => 1, 'GENERAL' => 1, 'HANDLER' => 1, - 'INDEXES' => 1, 'INSTALL' => 1, 'INVOKER' => 1, 'LOGFILE' => 1, 'MIGRATE' => 1, - 'NO_WAIT' => 1, 'OPTIONS' => 1, 'PARTIAL' => 1, 'PLUGINS' => 1, 'POLYGON' => 1, - 'PREPARE' => 1, 'PROFILE' => 1, 'QUARTER' => 1, 'REBUILD' => 1, 'RECOVER' => 1, - 'RESTORE' => 1, 'RETURNS' => 1, 'REVERSE' => 1, 'ROUTINE' => 1, 'SESSION' => 1, - 'STACKED' => 1, 'STORAGE' => 1, 'SUBJECT' => 1, 'SUSPEND' => 1, 'UNICODE' => 1, - 'UNKNOWN' => 1, 'UPGRADE' => 1, 'USE_FRM' => 1, 'WITHOUT' => 1, 'WRAPPER' => 1, - 'CASCADED' => 1, 'CHECKSUM' => 1, 'COALESCE' => 1, 'CONTAINS' => 1, - 'DATAFILE' => 1, 'DUMPFILE' => 1, 'EXCHANGE' => 1, 'EXTENDED' => 1, - 'FUNCTION' => 1, 'GEOMETRY' => 1, 'LANGUAGE' => 1, 'MAX_ROWS' => 1, - 'MAX_SIZE' => 1, 'MIN_ROWS' => 1, 'NATIONAL' => 1, 'NVARCHAR' => 1, - 'PASSWORD' => 1, 'PRECEDES' => 1, 'PRESERVE' => 1, 'PROFILES' => 1, - 'REDOFILE' => 1, 'RELAYLOG' => 1, 'ROLLBACK' => 1, 'SCHEDULE' => 1, - 'SECURITY' => 1, 'SHUTDOWN' => 1, 'SNAPSHOT' => 1, 'SWITCHES' => 1, - 'TRIGGERS' => 1, 'TRUNCATE' => 1, 'UNDOFILE' => 1, 'WARNINGS' => 1, - 'AGGREGATE' => 1, 'ALGORITHM' => 1, 'COLLATION' => 1, 'COMMITTED' => 1, - 'DIRECTORY' => 1, 'DUPLICATE' => 1, 'EXPANSION' => 1, 'IO_THREAD' => 1, - 'ISOLATION' => 1, 'NODEGROUP' => 1, 'PACK_KEYS' => 1, 'READ_ONLY' => 1, - 'REDUNDANT' => 1, 'ROW_COUNT' => 1, 'SAVEPOINT' => 1, 'SQL_CACHE' => 1, - 'TEMPORARY' => 1, 'TEMPTABLE' => 1, 'UNDEFINED' => 1, 'UNINSTALL' => 1, - 'VARIABLES' => 1, + 'COLUMNS' => 1, 'COMMENT' => 1, 'COMPACT' => 1, 'CONTEXT' => 1, 'CURRENT' => 1, + 'DEFINER' => 1, 'DISABLE' => 1, 'DISCARD' => 1, 'DYNAMIC' => 1, 'ENGINES' => 1, + 'EXECUTE' => 1, 'FOLLOWS' => 1, 'GENERAL' => 1, 'HANDLER' => 1, 'INDEXES' => 1, + 'INSTALL' => 1, 'INVOKER' => 1, 'LOGFILE' => 1, 'MIGRATE' => 1, 'NO_WAIT' => 1, + 'OPTIONS' => 1, 'PARTIAL' => 1, 'PLUGINS' => 1, 'PREPARE' => 1, 'PROFILE' => 1, + 'REBUILD' => 1, 'RECOVER' => 1, 'RESTORE' => 1, 'RETURNS' => 1, 'ROUTINE' => 1, + 'SESSION' => 1, 'STACKED' => 1, 'STORAGE' => 1, 'SUBJECT' => 1, 'SUSPEND' => 1, + 'UNICODE' => 1, 'UNKNOWN' => 1, 'UPGRADE' => 1, 'USE_FRM' => 1, 'WITHOUT' => 1, + 'WRAPPER' => 1, + 'CASCADED' => 1, 'CHECKSUM' => 1, 'DATAFILE' => 1, 'DUMPFILE' => 1, + 'EXCHANGE' => 1, 'EXTENDED' => 1, 'FUNCTION' => 1, 'GEOMETRY' => 1, + 'LANGUAGE' => 1, 'MAX_ROWS' => 1, 'MAX_SIZE' => 1, 'MIN_ROWS' => 1, + 'NATIONAL' => 1, 'NVARCHAR' => 1, 'PRECEDES' => 1, 'PRESERVE' => 1, + 'PROFILES' => 1, 'REDOFILE' => 1, 'RELAYLOG' => 1, 'ROLLBACK' => 1, + 'SCHEDULE' => 1, 'SECURITY' => 1, 'SHUTDOWN' => 1, 'SNAPSHOT' => 1, + 'SWITCHES' => 1, 'TRIGGERS' => 1, 'UNDOFILE' => 1, 'WARNINGS' => 1, + 'AGGREGATE' => 1, 'ALGORITHM' => 1, 'COMMITTED' => 1, 'DIRECTORY' => 1, + 'DUPLICATE' => 1, 'EXPANSION' => 1, 'IO_THREAD' => 1, 'ISOLATION' => 1, + 'NODEGROUP' => 1, 'PACK_KEYS' => 1, 'READ_ONLY' => 1, 'REDUNDANT' => 1, + 'SAVEPOINT' => 1, 'SQL_CACHE' => 1, 'TEMPORARY' => 1, 'TEMPTABLE' => 1, + 'UNDEFINED' => 1, 'UNINSTALL' => 1, 'VARIABLES' => 1, 'COMPLETION' => 1, 'COMPRESSED' => 1, 'CONCURRENT' => 1, 'CONNECTION' => 1, - 'CONSISTENT' => 1, 'DEALLOCATE' => 1, 'GET_FORMAT' => 1, 'IDENTIFIED' => 1, - 'LINESTRING' => 1, 'MASTER_SSL' => 1, 'MULTIPOINT' => 1, 'NDBCLUSTER' => 1, - 'PARTITIONS' => 1, 'PLUGIN_DIR' => 1, 'PRIVILEGES' => 1, 'REORGANIZE' => 1, - 'REPEATABLE' => 1, 'ROW_FORMAT' => 1, 'SQL_THREAD' => 1, 'TABLESPACE' => 1, - 'TABLE_NAME' => 1, 'VALIDATION' => 1, + 'CONSISTENT' => 1, 'DEALLOCATE' => 1, 'IDENTIFIED' => 1, 'MASTER_SSL' => 1, + 'NDBCLUSTER' => 1, 'PARTITIONS' => 1, 'PLUGIN_DIR' => 1, 'PRIVILEGES' => 1, + 'REORGANIZE' => 1, 'REPEATABLE' => 1, 'ROW_FORMAT' => 1, 'SQL_THREAD' => 1, + 'TABLESPACE' => 1, 'TABLE_NAME' => 1, 'VALIDATION' => 1, 'COLUMN_NAME' => 1, 'COMPRESSION' => 1, 'CURSOR_NAME' => 1, 'DIAGNOSTICS' => 1, 'EXTENT_SIZE' => 1, 'MASTER_HOST' => 1, 'MASTER_PORT' => 1, 'MASTER_USER' => 1, - 'MICROSECOND' => 1, 'MYSQL_ERRNO' => 1, 'NONBLOCKING' => 1, 'PROCESSLIST' => 1, - 'REPLICATION' => 1, 'SCHEMA_NAME' => 1, 'SQL_TSI_DAY' => 1, 'TRANSACTION' => 1, - 'UNCOMMITTED' => 1, + 'MYSQL_ERRNO' => 1, 'NONBLOCKING' => 1, 'PROCESSLIST' => 1, 'REPLICATION' => 1, + 'SCHEMA_NAME' => 1, 'SQL_TSI_DAY' => 1, 'TRANSACTION' => 1, 'UNCOMMITTED' => 1, 'CATALOG_NAME' => 1, 'CLASS_ORIGIN' => 1, 'DEFAULT_AUTH' => 1, 'DES_KEY_FILE' => 1, 'INITIAL_SIZE' => 1, 'MASTER_DELAY' => 1, - 'MESSAGE_TEXT' => 1, 'MULTIPOLYGON' => 1, 'OLD_PASSWORD' => 1, - 'PARTITIONING' => 1, 'RELAY_THREAD' => 1, 'SERIALIZABLE' => 1, - 'SQL_NO_CACHE' => 1, 'SQL_TSI_HOUR' => 1, 'SQL_TSI_WEEK' => 1, - 'SQL_TSI_YEAR' => 1, 'SUBPARTITION' => 1, 'TIMESTAMPADD' => 1, + 'MESSAGE_TEXT' => 1, 'PARTITIONING' => 1, 'RELAY_THREAD' => 1, + 'SERIALIZABLE' => 1, 'SQL_NO_CACHE' => 1, 'SQL_TSI_HOUR' => 1, + 'SQL_TSI_WEEK' => 1, 'SQL_TSI_YEAR' => 1, 'SUBPARTITION' => 1, 'COLUMN_FORMAT' => 1, 'INSERT_METHOD' => 1, 'MASTER_SSL_CA' => 1, 'RELAY_LOG_POS' => 1, 'SQL_TSI_MONTH' => 1, 'SUBPARTITIONS' => 1, - 'TIMESTAMPDIFF' => 1, 'WEIGHT_STRING' => 1, 'AUTO_INCREMENT' => 1, 'AVG_ROW_LENGTH' => 1, 'KEY_BLOCK_SIZE' => 1, 'MASTER_LOG_POS' => 1, 'MASTER_SSL_CRL' => 1, 'MASTER_SSL_KEY' => 1, 'RELAY_LOG_FILE' => 1, 'SQL_TSI_MINUTE' => 1, 'SQL_TSI_SECOND' => 1, 'TABLE_CHECKSUM' => 1, 'USER_RESOURCES' => 1, 'AUTOEXTEND_SIZE' => 1, 'CONSTRAINT_NAME' => 1, 'DELAY_KEY_WRITE' => 1, 'FILE_BLOCK_SIZE' => 1, 'MASTER_LOG_FILE' => 1, 'MASTER_PASSWORD' => 1, - 'MASTER_SSL_CERT' => 1, 'MULTILINESTRING' => 1, 'PARSE_GCOL_EXPR' => 1, - 'REPLICATE_DO_DB' => 1, 'SQL_AFTER_GTIDS' => 1, 'SQL_TSI_QUARTER' => 1, - 'SUBCLASS_ORIGIN' => 1, + 'MASTER_SSL_CERT' => 1, 'PARSE_GCOL_EXPR' => 1, 'REPLICATE_DO_DB' => 1, + 'SQL_AFTER_GTIDS' => 1, 'SQL_TSI_QUARTER' => 1, 'SUBCLASS_ORIGIN' => 1, 'MASTER_SERVER_ID' => 1, 'REDO_BUFFER_SIZE' => 1, 'SQL_BEFORE_GTIDS' => 1, 'STATS_PERSISTENT' => 1, 'UNDO_BUFFER_SIZE' => 1, 'CONSTRAINT_SCHEMA' => 1, 'GROUP_REPLICATION' => 1, 'IGNORE_SERVER_IDS' => 1, 'MASTER_SSL_CAPATH' => 1, 'MASTER_SSL_CIPHER' => 1, 'RETURNED_SQLSTATE' => 1, 'SQL_BUFFER_RESULT' => 1, 'STATS_AUTO_RECALC' => 1, - 'CONSTRAINT_CATALOG' => 1, 'GEOMETRYCOLLECTION' => 1, 'MASTER_RETRY_COUNT' => 1, - 'MASTER_SSL_CRLPATH' => 1, 'MAX_STATEMENT_TIME' => 1, 'REPLICATE_DO_TABLE' => 1, - 'SQL_AFTER_MTS_GAPS' => 1, 'STATS_SAMPLE_PAGES' => 1, + 'CONSTRAINT_CATALOG' => 1, 'MASTER_RETRY_COUNT' => 1, 'MASTER_SSL_CRLPATH' => 1, + 'MAX_STATEMENT_TIME' => 1, 'REPLICATE_DO_TABLE' => 1, 'SQL_AFTER_MTS_GAPS' => 1, + 'STATS_SAMPLE_PAGES' => 1, 'REPLICATE_IGNORE_DB' => 1, 'MASTER_AUTO_POSITION' => 1, 'MASTER_CONNECT_RETRY' => 1, 'MAX_QUERIES_PER_HOUR' => 1, 'MAX_UPDATES_PER_HOUR' => 1, @@ -132,55 +123,51 @@ class ContextMySql50700 extends Context 'MAX_CONNECTIONS_PER_HOUR' => 1, 'REPLICATE_WILD_IGNORE_TABLE' => 1, - 'AS' => 3, 'BY' => 3, 'IF' => 3, 'IN' => 3, 'IS' => 3, 'ON' => 3, 'OR' => 3, - 'TO' => 3, + 'AS' => 3, 'BY' => 3, 'IS' => 3, 'ON' => 3, 'OR' => 3, 'TO' => 3, 'ADD' => 3, 'ALL' => 3, 'AND' => 3, 'ASC' => 3, 'DEC' => 3, 'DIV' => 3, - 'FOR' => 3, 'GET' => 3, 'MOD' => 3, 'NOT' => 3, 'OUT' => 3, 'SQL' => 3, - 'SSL' => 3, 'USE' => 3, 'XOR' => 3, + 'FOR' => 3, 'GET' => 3, 'NOT' => 3, 'OUT' => 3, 'SQL' => 3, 'SSL' => 3, + 'USE' => 3, 'XOR' => 3, 'BOTH' => 3, 'CALL' => 3, 'CASE' => 3, 'DESC' => 3, 'DROP' => 3, 'DUAL' => 3, 'EACH' => 3, 'ELSE' => 3, 'EXIT' => 3, 'FROM' => 3, 'INT1' => 3, 'INT2' => 3, 'INT3' => 3, 'INT4' => 3, 'INT8' => 3, 'INTO' => 3, 'JOIN' => 3, 'KEYS' => 3, - 'KILL' => 3, 'LEFT' => 3, 'LIKE' => 3, 'LOAD' => 3, 'LOCK' => 3, 'LONG' => 3, - 'LOOP' => 3, 'NULL' => 3, 'READ' => 3, 'SHOW' => 3, 'THEN' => 3, 'TRUE' => 3, - 'UNDO' => 3, 'WHEN' => 3, 'WITH' => 3, + 'KILL' => 3, 'LIKE' => 3, 'LOAD' => 3, 'LOCK' => 3, 'LONG' => 3, 'LOOP' => 3, + 'NULL' => 3, 'READ' => 3, 'SHOW' => 3, 'THEN' => 3, 'TRUE' => 3, 'UNDO' => 3, + 'WHEN' => 3, 'WITH' => 3, 'ALTER' => 3, 'CHECK' => 3, 'CROSS' => 3, 'FALSE' => 3, 'FETCH' => 3, 'FORCE' => 3, 'GRANT' => 3, 'GROUP' => 3, 'INNER' => 3, 'INOUT' => 3, 'LEAVE' => 3, 'LIMIT' => 3, 'LINES' => 3, 'MATCH' => 3, 'ORDER' => 3, - 'OUTER' => 3, 'PURGE' => 3, 'RANGE' => 3, 'READS' => 3, 'RIGHT' => 3, - 'RLIKE' => 3, 'TABLE' => 3, 'UNION' => 3, 'USAGE' => 3, 'USING' => 3, - 'WHERE' => 3, 'WHILE' => 3, 'WRITE' => 3, + 'OUTER' => 3, 'PURGE' => 3, 'RANGE' => 3, 'READS' => 3, 'RLIKE' => 3, + 'TABLE' => 3, 'UNION' => 3, 'USAGE' => 3, 'USING' => 3, 'WHERE' => 3, + 'WHILE' => 3, 'WRITE' => 3, 'BEFORE' => 3, 'CHANGE' => 3, 'COLUMN' => 3, 'CREATE' => 3, 'CURSOR' => 3, 'DELETE' => 3, 'ELSEIF' => 3, 'EXISTS' => 3, 'FLOAT4' => 3, 'FLOAT8' => 3, - 'HAVING' => 3, 'IGNORE' => 3, 'INFILE' => 3, 'INSERT' => 3, 'LINEAR' => 3, - 'OPTION' => 3, 'REGEXP' => 3, 'RENAME' => 3, 'REPEAT' => 3, 'RETURN' => 3, - 'REVOKE' => 3, 'SCHEMA' => 3, 'SELECT' => 3, 'SIGNAL' => 3, 'STORED' => 3, - 'UNLOCK' => 3, 'UPDATE' => 3, 'VALUES' => 3, - 'ANALYZE' => 3, 'BETWEEN' => 3, 'CASCADE' => 3, 'COLLATE' => 3, 'CONVERT' => 3, - 'DECLARE' => 3, 'DEFAULT' => 3, 'DELAYED' => 3, 'ESCAPED' => 3, 'EXPLAIN' => 3, - 'FOREIGN' => 3, 'ITERATE' => 3, 'LEADING' => 3, 'NATURAL' => 3, 'OUTFILE' => 3, - 'PRIMARY' => 3, 'RELEASE' => 3, 'REPLACE' => 3, 'REQUIRE' => 3, 'SCHEMAS' => 3, - 'SPATIAL' => 3, 'TRIGGER' => 3, 'VARYING' => 3, 'VIRTUAL' => 3, - 'CONTINUE' => 3, 'DATABASE' => 3, 'DAY_HOUR' => 3, 'DESCRIBE' => 3, - 'DISTINCT' => 3, 'ENCLOSED' => 3, 'FULLTEXT' => 3, 'MAXVALUE' => 3, - 'MODIFIES' => 3, 'OPTIMIZE' => 3, 'RESIGNAL' => 3, 'RESTRICT' => 3, - 'SPECIFIC' => 3, 'SQLSTATE' => 3, 'STARTING' => 3, 'TRAILING' => 3, - 'UNSIGNED' => 3, 'UTC_DATE' => 3, 'UTC_TIME' => 3, 'ZEROFILL' => 3, - 'CONDITION' => 3, 'DATABASES' => 3, 'GENERATED' => 3, 'LOCALTIME' => 3, - 'MIDDLEINT' => 3, 'PARTITION' => 3, 'PRECISION' => 3, 'PROCEDURE' => 3, - 'SENSITIVE' => 3, 'SEPARATOR' => 3, + 'HAVING' => 3, 'IGNORE' => 3, 'INFILE' => 3, 'LINEAR' => 3, 'OPTION' => 3, + 'REGEXP' => 3, 'RENAME' => 3, 'RETURN' => 3, 'REVOKE' => 3, 'SELECT' => 3, + 'SIGNAL' => 3, 'STORED' => 3, 'UNLOCK' => 3, 'UPDATE' => 3, + 'ANALYZE' => 3, 'BETWEEN' => 3, 'CASCADE' => 3, 'COLLATE' => 3, 'DECLARE' => 3, + 'DELAYED' => 3, 'ESCAPED' => 3, 'EXPLAIN' => 3, 'FOREIGN' => 3, 'ITERATE' => 3, + 'LEADING' => 3, 'NATURAL' => 3, 'OUTFILE' => 3, 'PRIMARY' => 3, 'RELEASE' => 3, + 'REQUIRE' => 3, 'SCHEMAS' => 3, 'SPATIAL' => 3, 'TRIGGER' => 3, 'VARYING' => 3, + 'VIRTUAL' => 3, + 'CONTINUE' => 3, 'DAY_HOUR' => 3, 'DESCRIBE' => 3, 'DISTINCT' => 3, + 'ENCLOSED' => 3, 'FULLTEXT' => 3, 'MAXVALUE' => 3, 'MODIFIES' => 3, + 'OPTIMIZE' => 3, 'RESIGNAL' => 3, 'RESTRICT' => 3, 'SPECIFIC' => 3, + 'SQLSTATE' => 3, 'STARTING' => 3, 'TRAILING' => 3, 'UNSIGNED' => 3, + 'ZEROFILL' => 3, + 'CONDITION' => 3, 'DATABASES' => 3, 'GENERATED' => 3, 'MIDDLEINT' => 3, + 'PARTITION' => 3, 'PRECISION' => 3, 'PROCEDURE' => 3, 'SENSITIVE' => 3, + 'SEPARATOR' => 3, 'ACCESSIBLE' => 3, 'ASENSITIVE' => 3, 'CONSTRAINT' => 3, 'DAY_MINUTE' => 3, 'DAY_SECOND' => 3, 'OPTIONALLY' => 3, 'READ_WRITE' => 3, 'REFERENCES' => 3, 'SQLWARNING' => 3, 'TERMINATED' => 3, 'YEAR_MONTH' => 3, 'DISTINCTROW' => 3, 'HOUR_MINUTE' => 3, 'HOUR_SECOND' => 3, 'INSENSITIVE' => 3, 'MASTER_BIND' => 3, - 'CURRENT_DATE' => 3, 'CURRENT_TIME' => 3, 'CURRENT_USER' => 3, 'LOW_PRIORITY' => 3, 'SQLEXCEPTION' => 3, 'VARCHARACTER' => 3, 'DETERMINISTIC' => 3, 'HIGH_PRIORITY' => 3, 'MINUTE_SECOND' => 3, - 'STRAIGHT_JOIN' => 3, 'UTC_TIMESTAMP' => 3, - 'IO_AFTER_GTIDS' => 3, 'LOCALTIMESTAMP' => 3, 'SQL_BIG_RESULT' => 3, + 'STRAIGHT_JOIN' => 3, + 'IO_AFTER_GTIDS' => 3, 'SQL_BIG_RESULT' => 3, 'DAY_MICROSECOND' => 3, 'IO_BEFORE_GTIDS' => 3, 'OPTIMIZER_COSTS' => 3, 'HOUR_MICROSECOND' => 3, 'SQL_SMALL_RESULT' => 3, - 'CURRENT_TIMESTAMP' => 3, 'MINUTE_MICROSECOND' => 3, 'NO_WRITE_TO_BINLOG' => 3, 'SECOND_MICROSECOND' => 3, 'SQL_CALC_FOUND_ROWS' => 3, 'MASTER_SSL_VERIFY_SERVER_CERT' => 3, @@ -195,19 +182,18 @@ class ContextMySql50700 extends Context 'GROUP BY' => 7, 'ORDER BY' => 7, 'XML' => 9, - 'DATE' => 9, 'ENUM' => 9, 'TEXT' => 9, 'TIME' => 9, 'YEAR' => 9, + 'ENUM' => 9, 'TEXT' => 9, 'ARRAY' => 9, 'BOOLEAN' => 9, 'DATETIME' => 9, 'MULTISET' => 9, - 'TIMESTAMP' => 9, 'INT' => 11, 'SET' => 11, - 'BLOB' => 11, 'CHAR' => 11, 'REAL' => 11, + 'BLOB' => 11, 'REAL' => 11, 'FLOAT' => 11, 'BIGINT' => 11, 'BINARY' => 11, 'DOUBLE' => 11, 'DECIMAL' => 11, 'INTEGER' => 11, 'NUMERIC' => 11, 'TINYINT' => 11, 'VARCHAR' => 11, - 'INTERVAL' => 11, 'LONGBLOB' => 11, 'LONGTEXT' => 11, 'SMALLINT' => 11, - 'TINYBLOB' => 11, 'TINYTEXT' => 11, + 'LONGBLOB' => 11, 'LONGTEXT' => 11, 'SMALLINT' => 11, 'TINYBLOB' => 11, + 'TINYTEXT' => 11, 'CHARACTER' => 11, 'MEDIUMINT' => 11, 'VARBINARY' => 11, 'MEDIUMBLOB' => 11, 'MEDIUMTEXT' => 11, @@ -224,5 +210,130 @@ class ContextMySql50700 extends Context 'SPATIAL INDEX' => 21, 'FULLTEXT INDEX' => 21, + 'X' => 33, 'Y' => 33, + 'LN' => 33, 'PI' => 33, + 'ABS' => 33, 'AVG' => 33, 'BIN' => 33, 'COS' => 33, 'COT' => 33, 'DAY' => 33, + 'ELT' => 33, 'EXP' => 33, 'HEX' => 33, 'LOG' => 33, 'MAX' => 33, 'MD5' => 33, + 'MID' => 33, 'MIN' => 33, 'NOW' => 33, 'OCT' => 33, 'ORD' => 33, 'POW' => 33, + 'SHA' => 33, 'SIN' => 33, 'STD' => 33, 'SUM' => 33, 'TAN' => 33, + 'ACOS' => 33, 'AREA' => 33, 'ASIN' => 33, 'ATAN' => 33, 'CAST' => 33, 'CEIL' => 33, + 'CONV' => 33, 'HOUR' => 33, 'LOG2' => 33, 'LPAD' => 33, 'RAND' => 33, 'RPAD' => 33, + 'SHA1' => 33, 'SHA2' => 33, 'SIGN' => 33, 'SQRT' => 33, 'SRID' => 33, 'ST_X' => 33, + 'ST_Y' => 33, 'TRIM' => 33, 'USER' => 33, 'UUID' => 33, 'WEEK' => 33, + 'ASCII' => 33, 'ASWKB' => 33, 'ASWKT' => 33, 'ATAN2' => 33, 'COUNT' => 33, + 'CRC32' => 33, 'FIELD' => 33, 'FLOOR' => 33, 'INSTR' => 33, 'LCASE' => 33, + 'LEAST' => 33, 'LOG10' => 33, 'LOWER' => 33, 'LTRIM' => 33, 'MONTH' => 33, + 'POINT' => 33, 'POWER' => 33, 'QUOTE' => 33, 'ROUND' => 33, 'RTRIM' => 33, + 'SLEEP' => 33, 'SPACE' => 33, 'UCASE' => 33, 'UNHEX' => 33, 'UPPER' => 33, + 'ASTEXT' => 33, 'BIT_OR' => 33, 'BUFFER' => 33, 'CONCAT' => 33, 'DECODE' => 33, + 'ENCODE' => 33, 'EQUALS' => 33, 'FORMAT' => 33, 'IFNULL' => 33, 'ISNULL' => 33, + 'LENGTH' => 33, 'LOCATE' => 33, 'MINUTE' => 33, 'NULLIF' => 33, 'POINTN' => 33, + 'SECOND' => 33, 'STDDEV' => 33, 'STRCMP' => 33, 'SUBSTR' => 33, 'WITHIN' => 33, + 'ADDDATE' => 33, 'ADDTIME' => 33, 'BIT_AND' => 33, 'BIT_XOR' => 33, 'CEILING' => 33, + 'CHARSET' => 33, 'CROSSES' => 33, 'CURDATE' => 33, 'CURTIME' => 33, 'DAYNAME' => 33, + 'DEGREES' => 33, 'ENCRYPT' => 33, 'EXTRACT' => 33, 'GLENGTH' => 33, 'ISEMPTY' => 33, + 'IS_IPV4' => 33, 'IS_IPV6' => 33, 'POLYGON' => 33, 'QUARTER' => 33, 'RADIANS' => 33, + 'REVERSE' => 33, 'SOUNDEX' => 33, 'ST_AREA' => 33, 'ST_SRID' => 33, 'SUBDATE' => 33, + 'SUBTIME' => 33, 'SYSDATE' => 33, 'TOUCHES' => 33, 'TO_DAYS' => 33, 'VAR_POP' => 33, + 'VERSION' => 33, 'WEEKDAY' => 33, + 'ASBINARY' => 33, 'CENTROID' => 33, 'COALESCE' => 33, 'COMPRESS' => 33, + 'CONTAINS' => 33, 'DATEDIFF' => 33, 'DATE_ADD' => 33, 'DATE_SUB' => 33, + 'DISJOINT' => 33, 'DISTANCE' => 33, 'ENDPOINT' => 33, 'ENVELOPE' => 33, + 'GET_LOCK' => 33, 'GREATEST' => 33, 'ISCLOSED' => 33, 'ISSIMPLE' => 33, + 'MAKEDATE' => 33, 'MAKETIME' => 33, 'MAKE_SET' => 33, 'MBREQUAL' => 33, + 'OVERLAPS' => 33, 'PASSWORD' => 33, 'POSITION' => 33, 'ST_ASWKB' => 33, + 'ST_ASWKT' => 33, 'ST_UNION' => 33, 'TIMEDIFF' => 33, 'TRUNCATE' => 33, + 'VARIANCE' => 33, 'VAR_SAMP' => 33, 'YEARWEEK' => 33, + 'ANY_VALUE' => 33, 'BENCHMARK' => 33, 'BIT_COUNT' => 33, 'COLLATION' => 33, + 'CONCAT_WS' => 33, 'DAYOFWEEK' => 33, 'DAYOFYEAR' => 33, 'DIMENSION' => 33, + 'FROM_DAYS' => 33, 'GEOMETRYN' => 33, 'INET_ATON' => 33, 'INET_NTOA' => 33, + 'LOAD_FILE' => 33, 'MBRCOVERS' => 33, 'MBREQUALS' => 33, 'MBRWITHIN' => 33, + 'MONTHNAME' => 33, 'NUMPOINTS' => 33, 'ROW_COUNT' => 33, 'ST_ASTEXT' => 33, + 'ST_BUFFER' => 33, 'ST_EQUALS' => 33, 'ST_LENGTH' => 33, 'ST_POINTN' => 33, + 'ST_WITHIN' => 33, 'SUBSTRING' => 33, 'TO_BASE64' => 33, 'UPDATEXML' => 33, + 'BIT_LENGTH' => 33, 'CONVERT_TZ' => 33, 'CONVEXHULL' => 33, 'DAYOFMONTH' => 33, + 'EXPORT_SET' => 33, 'FOUND_ROWS' => 33, 'GET_FORMAT' => 33, 'INET6_ATON' => 33, + 'INET6_NTOA' => 33, 'INTERSECTS' => 33, 'LINESTRING' => 33, 'MBRTOUCHES' => 33, + 'MULTIPOINT' => 33, 'NAME_CONST' => 33, 'PERIOD_ADD' => 33, 'STARTPOINT' => 33, + 'STDDEV_POP' => 33, 'ST_CROSSES' => 33, 'ST_GEOHASH' => 33, 'ST_ISEMPTY' => 33, + 'ST_ISVALID' => 33, 'ST_TOUCHES' => 33, 'TO_SECONDS' => 33, 'UNCOMPRESS' => 33, + 'UUID_SHORT' => 33, 'WEEKOFYEAR' => 33, + 'AES_DECRYPT' => 33, 'AES_ENCRYPT' => 33, 'CHAR_LENGTH' => 33, 'DATE_FORMAT' => 33, + 'DES_DECRYPT' => 33, 'DES_ENCRYPT' => 33, 'FIND_IN_SET' => 33, 'FROM_BASE64' => 33, + 'GEOMFROMWKB' => 33, 'GTID_SUBSET' => 33, 'LINEFROMWKB' => 33, 'MBRCONTAINS' => 33, + 'MBRDISJOINT' => 33, 'MBROVERLAPS' => 33, 'MICROSECOND' => 33, 'PERIOD_DIFF' => 33, + 'POLYFROMWKB' => 33, 'SEC_TO_TIME' => 33, 'STDDEV_SAMP' => 33, 'STR_TO_DATE' => 33, + 'ST_ASBINARY' => 33, 'ST_CENTROID' => 33, 'ST_CONTAINS' => 33, 'ST_DISJOINT' => 33, + 'ST_DISTANCE' => 33, 'ST_ENDPOINT' => 33, 'ST_ENVELOPE' => 33, 'ST_ISCLOSED' => 33, + 'ST_ISSIMPLE' => 33, 'ST_OVERLAPS' => 33, 'ST_SIMPLIFY' => 33, 'ST_VALIDATE' => 33, + 'SYSTEM_USER' => 33, 'TIME_FORMAT' => 33, 'TIME_TO_SEC' => 33, + 'COERCIBILITY' => 33, 'EXTERIORRING' => 33, 'EXTRACTVALUE' => 33, + 'GEOMETRYTYPE' => 33, 'GEOMFROMTEXT' => 33, 'GROUP_CONCAT' => 33, + 'IS_FREE_LOCK' => 33, 'IS_USED_LOCK' => 33, 'LINEFROMTEXT' => 33, + 'MBRCOVEREDBY' => 33, 'MLINEFROMWKB' => 33, 'MPOLYFROMWKB' => 33, + 'MULTIPOLYGON' => 33, 'OCTET_LENGTH' => 33, 'OLD_PASSWORD' => 33, + 'POINTFROMWKB' => 33, 'POLYFROMTEXT' => 33, 'RANDOM_BYTES' => 33, + 'RELEASE_LOCK' => 33, 'SESSION_USER' => 33, 'ST_ASGEOJSON' => 33, + 'ST_DIMENSION' => 33, 'ST_GEOMETRYN' => 33, 'ST_NUMPOINTS' => 33, + 'TIMESTAMPADD' => 33, + 'CONNECTION_ID' => 33, 'FROM_UNIXTIME' => 33, 'GTID_SUBTRACT' => 33, + 'INTERIORRINGN' => 33, 'MBRINTERSECTS' => 33, 'MLINEFROMTEXT' => 33, + 'MPOINTFROMWKB' => 33, 'MPOLYFROMTEXT' => 33, 'NUMGEOMETRIES' => 33, + 'POINTFROMTEXT' => 33, 'ST_CONVEXHULL' => 33, 'ST_DIFFERENCE' => 33, + 'ST_INTERSECTS' => 33, 'ST_STARTPOINT' => 33, 'TIMESTAMPDIFF' => 33, + 'WEIGHT_STRING' => 33, + 'IS_IPV4_COMPAT' => 33, 'IS_IPV4_MAPPED' => 33, 'LAST_INSERT_ID' => 33, + 'MPOINTFROMTEXT' => 33, 'POLYGONFROMWKB' => 33, 'ST_GEOMFROMWKB' => 33, + 'ST_LINEFROMWKB' => 33, 'ST_POLYFROMWKB' => 33, 'UNIX_TIMESTAMP' => 33, + 'GEOMCOLLFROMWKB' => 33, 'MASTER_POS_WAIT' => 33, 'MULTILINESTRING' => 33, + 'POLYGONFROMTEXT' => 33, 'ST_EXTERIORRING' => 33, 'ST_GEOMETRYTYPE' => 33, + 'ST_GEOMFROMTEXT' => 33, 'ST_INTERSECTION' => 33, 'ST_LINEFROMTEXT' => 33, + 'ST_MAKEENVELOPE' => 33, 'ST_MLINEFROMWKB' => 33, 'ST_MPOLYFROMWKB' => 33, + 'ST_POINTFROMWKB' => 33, 'ST_POLYFROMTEXT' => 33, 'SUBSTRING_INDEX' => 33, + 'CHARACTER_LENGTH' => 33, 'GEOMCOLLFROMTEXT' => 33, 'GEOMETRYFROMTEXT' => 33, + 'NUMINTERIORRINGS' => 33, 'ST_INTERIORRINGN' => 33, 'ST_MLINEFROMTEXT' => 33, + 'ST_MPOINTFROMWKB' => 33, 'ST_MPOLYFROMTEXT' => 33, 'ST_NUMGEOMETRIES' => 33, + 'ST_POINTFROMTEXT' => 33, 'ST_SYMDIFFERENCE' => 33, + 'LINESTRINGFROMWKB' => 33, 'MULTIPOINTFROMWKB' => 33, 'RELEASE_ALL_LOCKS' => 33, + 'ST_LATFROMGEOHASH' => 33, 'ST_MPOINTFROMTEXT' => 33, 'ST_POLYGONFROMWKB' => 33, + 'GEOMETRYCOLLECTION' => 33, 'MULTIPOINTFROMTEXT' => 33, 'ST_BUFFER_STRATEGY' => 33, + 'ST_DISTANCE_SPHERE' => 33, 'ST_GEOMCOLLFROMTXT' => 33, 'ST_GEOMCOLLFROMWKB' => 33, + 'ST_GEOMFROMGEOJSON' => 33, 'ST_LONGFROMGEOHASH' => 33, 'ST_POLYGONFROMTEXT' => 33, + 'MULTIPOLYGONFROMWKB' => 33, 'ST_GEOMCOLLFROMTEXT' => 33, 'ST_GEOMETRYFROMTEXT' => 33, + 'ST_NUMINTERIORRINGS' => 33, 'ST_POINTFROMGEOHASH' => 33, 'UNCOMPRESSED_LENGTH' => 33, + 'MULTIPOLYGONFROMTEXT' => 33, 'ST_LINESTRINGFROMWKB' => 33, + 'ST_MULTIPOINTFROMWKB' => 33, + 'ST_MULTIPOINTFROMTEXT' => 33, + 'MULTILINESTRINGFROMWKB' => 33, 'ST_MULTIPOLYGONFROMWKB' => 33, + 'MULTILINESTRINGFROMTEXT' => 33, 'ST_MULTIPOLYGONFROMTEXT' => 33, + 'GEOMETRYCOLLECTIONFROMWKB' => 33, 'ST_MULTILINESTRINGFROMWKB' => 33, + 'GEOMETRYCOLLECTIONFROMTEXT' => 33, 'ST_MULTILINESTRINGFROMTEXT' => 33, + 'VALIDATE_PASSWORD_STRENGTH' => 33, 'WAIT_FOR_EXECUTED_GTID_SET' => 33, + 'ST_GEOMETRYCOLLECTIONFROMWKB' => 33, + 'ST_GEOMETRYCOLLECTIONFROMTEXT' => 33, + 'WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS' => 33, + + 'IF' => 35, 'IN' => 35, + 'MOD' => 35, + 'LEFT' => 35, + 'RIGHT' => 35, + 'INSERT' => 35, 'REPEAT' => 35, 'SCHEMA' => 35, 'VALUES' => 35, + 'CONVERT' => 35, 'DEFAULT' => 35, 'REPLACE' => 35, + 'DATABASE' => 35, 'UTC_DATE' => 35, 'UTC_TIME' => 35, + 'LOCALTIME' => 35, + 'CURRENT_DATE' => 35, 'CURRENT_TIME' => 35, 'CURRENT_USER' => 35, + 'UTC_TIMESTAMP' => 35, + 'LOCALTIMESTAMP' => 35, + 'CURRENT_TIMESTAMP' => 35, + + 'NOT IN' => 37, + 'PROCEDURE ANALYSE' => 37, + + 'DATE' => 41, 'TIME' => 41, 'YEAR' => 41, + 'TIMESTAMP' => 41, + + 'CHAR' => 43, + 'INTERVAL' => 43, + ); } diff --git a/src/Fragments/FieldFragment.php b/src/Fragments/FieldFragment.php index 4adbba5..a45c0fe 100644 --- a/src/Fragments/FieldFragment.php +++ b/src/Fragments/FieldFragment.php @@ -55,6 +55,20 @@ class FieldFragment extends Fragment public $alias; /** + * The name of the function. + * + * @var string + */ + public $function; + + /** + * The type of subquery. + * + * @var string + */ + public $subquery; + + /** * @param Parser $parser The parser that serves as context. * @param TokensList $list The list of tokens that are being parsed. * @param array $options Parameters for parsing. @@ -89,6 +103,16 @@ class FieldFragment extends Fragment */ $brackets = 0; + /** + * Keeps track of the previous token. + * Possible values: + * string, if function was previously found; + * true, if open bracket was previously found; + * null, in any other case. + * @var string|bool + */ + $prev = null; + for (; $list->idx < $list->count; ++$list->idx) { /** @@ -121,12 +145,26 @@ class FieldFragment extends Fragment continue; } break; + } else if ($prev === true) { + if ((empty($ret->subquery) && (!empty(Parser::$STATEMENT_PARSERS[$token->value])))) { + // A `(` was previously found and this keyword is the + // beginning of a statement, so this is a subquery. + $ret->subquery = $token->value; + } } } if ($token->type === Token::TYPE_OPERATOR) { if ($token->value === '(') { ++$brackets; + // We don't check to see if `$prev` is `true` (open bracke + // was found before) because the brackets count is one (the + // only bracket we found is this one). + if (($brackets === 1) && (empty($ret->function)) && ($prev !== null) && ($prev !== true)) { + // A function name was previously found and now an open + // bracket, so this is a function call. + $ret->function = $prev; + } $isExpr = true; } elseif ($token->value === ')') { --$brackets; @@ -150,15 +188,24 @@ class FieldFragment extends Fragment } if ($alias) { + // An alias is expected (the keyword `AS` was previously found). $ret->alias = $token->value; $alias = 0; } else { if (!$isExpr) { if (($token->type === Token::TYPE_OPERATOR) && ($token->value === '.')) { + // Found a `.` which means we expect a column name and + // the column name we parsed is actually the table name + // and the table name is actually a database name. + if ((!empty($ret->database)) || ($period)) { + $parser->error('Unexpected dot.', $token); + } $ret->database = $ret->table; $ret->table = $ret->column; $period = true; } else { + // We found the name of a column (or table if column + // field should be skipped; used to parse table names). if (!empty($options['skipColumn'])) { $ret->table = $token->value; } else { @@ -167,6 +214,8 @@ class FieldFragment extends Fragment $period = false; } } else { + // Parsing aliases without `AS` keyword. + // Example: SELECT 'foo' `bar` if ($brackets === 0) { if (($token->type === Token::TYPE_NONE) || ($token->type === Token::TYPE_STRING) || (($token->type === Token::TYPE_SYMBOL) && ($token->flags & Token::FLAG_SYMBOL_BACKTICK)) @@ -178,12 +227,24 @@ class FieldFragment extends Fragment $ret->expr .= $token->token; } + + if (($token->type === Token::TYPE_KEYWORD) && ($token->flags & Token::FLAG_KEYWORD_FUNCTION)) { + $prev = strtoupper($token->value); + } else if (($token->type === Token::TYPE_OPERATOR) || ($token->value === '(')) { + $prev = true; + } else { + $prev = null; + } + } if ($alias === 2) { $parser->error('Alias was expected.'); } + // Whitespaces might be added at the end. + $ret->expr = trim($ret->expr); + if (empty($ret->expr)) { return null; } diff --git a/src/Fragments/IntoKeyword.php b/src/Fragments/IntoKeyword.php index 9cf634c..f5c9592 100644 --- a/src/Fragments/IntoKeyword.php +++ b/src/Fragments/IntoKeyword.php @@ -20,11 +20,18 @@ class IntoKeyword extends Fragment { /** - * The name of the table. + * Type of target (OUTFILE or SYMBOL). * * @var string */ - public $table; + public $type; + + /** + * The name of the table or file. + * + * @var string + */ + public $name; /** * The name of the columns. @@ -49,11 +56,12 @@ class IntoKeyword extends Fragment * * Below are the states of the parser. * - * 0 ------------------------[ ( ]------------------------> 1 + * 0 -----------------------[ name ]----------------------> 1 + * 0 ---------------------[ OUTFILE ]---------------------> 2 * - * 1 --------------------[ field name ]-------------------> 2 + * 1 ------------------------[ ( ]------------------------> -1 * - * 2 ------------------------[ , ]------------------------> 1 + * 2 ---------------------[ filename ]--------------------> 1 * * @var int */ @@ -77,19 +85,31 @@ class IntoKeyword extends Fragment continue; } - // No keyword is expected. if (($token->type === Token::TYPE_KEYWORD) && ($token->flags & Token::FLAG_KEYWORD_RESERVED)) { + if (($state === 0) && ($token->value === 'OUTFILE')) { + $ret->type = 'OUTFILE'; + $state = 2; + continue; + } + + // No other keyword is expected. break; } - if (($token->type === Token::TYPE_OPERATOR) && ($token->value === '(')) { - $ret->fields = ArrayFragment::parse($parser, $list)->values; + if ($state === 0) { + $ret->name = $token->value; + $state = 1; + } else if ($state === 1) { + if (($token->type === Token::TYPE_OPERATOR) && ($token->value === '(')) { + $ret->fields = ArrayFragment::parse($parser, $list)->values; + ++$list->idx; + } + break; + } else if ($state === 2) { + $ret->name = $token->value; ++$list->idx; break; - } else { - $ret->table = $token->value; } - } --$list->idx; diff --git a/src/Fragments/KeyFragment.php b/src/Fragments/KeyFragment.php index 11f4caf..e1ac679 100644 --- a/src/Fragments/KeyFragment.php +++ b/src/Fragments/KeyFragment.php @@ -55,6 +55,13 @@ class KeyFragment extends Fragment public $type; /** + * The options of this key. + * + * @var OptionsFragment + */ + public $options; + + /** * @param Parser $parser The parser that serves as context. * @param TokensList $list The list of tokens that are being parsed. * @param array $options Parameters for parsing. diff --git a/src/Fragments/LimitKeyword.php b/src/Fragments/LimitKeyword.php index 6e12b44..1e4ae4f 100644 --- a/src/Fragments/LimitKeyword.php +++ b/src/Fragments/LimitKeyword.php @@ -31,7 +31,7 @@ class LimitKeyword extends Fragment * * @var int */ - public $row_count; + public $rowCount; /** * @param Parser $parser The parser that serves as context. diff --git a/src/Fragments/OptionsFragment.php b/src/Fragments/OptionsFragment.php index dfb4fc9..dbd3676 100644 --- a/src/Fragments/OptionsFragment.php +++ b/src/Fragments/OptionsFragment.php @@ -139,4 +139,21 @@ class OptionsFragment extends Fragment } return false; } + + /** + * Merges the specified options with these ones. Values with same ID will be + * replaced. + * + * @param array|OptionsFragment $options + * + * @return void + */ + public function merge($options) + { + if (is_array($options)) { + $this->options = array_merge_recursive($this->options, $options); + } else if ($options instanceof OptionsFragment) { + $this->options = array_merge_recursive($this->options, $options->options); + } + } } diff --git a/src/Parser.php b/src/Parser.php index a5fe233..ba0a144 100644 --- a/src/Parser.php +++ b/src/Parser.php @@ -23,11 +23,28 @@ class Parser */ public static $STATEMENT_PARSERS = array( + 'EXPLAIN' => 'SqlParser\\Statements\\ExplainStatement', + + // Table Maintenance Statements + // https://dev.mysql.com/doc/refman/5.7/en/table-maintenance-sql.html + 'ANALYZE' => 'SqlParser\\Statements\\AnalyzeStatement', + 'BACKUP' => 'SqlParser\\Statements\\BackupStatement', + 'CHECK' => 'SqlParser\\Statements\\CheckStatement', + 'CHECKSUM' => 'SqlParser\\Statements\\ChecsumStatement', + 'OPTIMIZE' => 'SqlParser\\Statements\\OptimizeStatement', + 'REPAIR' => 'SqlParser\\Statements\\RepairStatement', + 'RESTORE' => 'SqlParser\\Statements\\RestoreStatement', + + // Database Administration Statements + // https://dev.mysql.com/doc/refman/5.7/en/sql-syntax-server-administration.html + 'SET' => '', + 'SHOW' => 'SqlParser\\Statements\\ShowStatement', + // Data Definition Statements. // https://dev.mysql.com/doc/refman/5.7/en/sql-syntax-data-definition.html - 'ALTER' => '', + 'ALTER' => 'SqlParser\\Statements\\AlterStatement', 'CREATE' => 'SqlParser\\Statements\\CreateStatement', - 'DROP' => '', + 'DROP' => 'SqlParser\\Statements\\DropStatement', 'RENAME' => 'SqlParser\\Statements\\RenameStatement', 'TRUNCATE' => '', @@ -56,10 +73,26 @@ class Parser */ public static $KEYWORD_PARSERS = array( + 'ANALYZE' => array( + 'class' => 'SqlParser\\Fragments\\FromKeyword', + 'field' => 'tables', + ), + 'BACKUP' => array( + 'class' => 'SqlParser\\Fragments\\FromKeyword', + 'field' => 'tables', + ), 'CALL' => array( 'class' => 'SqlParser\\Fragments\\CallKeyword', 'field' => 'call', ), + 'CHECK' => array( + 'class' => 'SqlParser\\Fragments\\FromKeyword', + 'field' => 'tables', + ), + 'CHECKSUM' => array( + 'class' => 'SqlParser\\Fragments\\FromKeyword', + 'field' => 'tables', + ), 'FROM' => array( 'class' => 'SqlParser\\Fragments\\FromKeyword', 'field' => 'from', @@ -84,6 +117,10 @@ class Parser 'class' => 'SqlParser\\Fragments\\LimitKeyword', 'field' => 'limit', ), + 'OPTIMIZE' => array( + 'class' => 'SqlParser\\Fragments\\FromKeyword', + 'field' => 'tables', + ), 'ORDER BY' => array( 'class' => 'SqlParser\\Fragments\\OrderKeyword', 'field' => 'order', @@ -92,10 +129,22 @@ class Parser 'class' => 'SqlParser\\Fragments\\ArrayFragment', 'field' => 'partition', ), + 'PROCEDURE' => array( + 'class' => 'SqlParser\\Fragments\\CallKeyword', + 'field' => 'procedure', + ), 'RENAME' => array( 'class' => 'SqlParser\\Fragments\\RenameKeyword', 'field' => 'renames', ), + 'REPAIR' => array( + 'class' => 'SqlParser\\Fragments\\FromKeyword', + 'field' => 'tables', + ), + 'RESTORE' => array( + 'class' => 'SqlParser\\Fragments\\FromKeyword', + 'field' => 'tables', + ), 'SET' => array( 'class' => 'SqlParser\\Fragments\\SetKeyword', 'field' => 'set', @@ -188,17 +237,15 @@ class Parser */ public function parse() { - $tokens = &$this->list->tokens; - $count = &$this->list->count; - $last = &$this->list->idx; + $list = &$this->list; - for (; $last < $count; ++$last) { + for (; $list->idx < $list->count; ++$list->idx) { /** * Token parsed at this moment. * @var Token */ - $token = $tokens[$last]; + $token = $list->tokens[$list->idx]; // Statements can start with keywords only. // Comments, whitespaces, etc. are ignored. @@ -212,7 +259,7 @@ class Parser 'Unrecognized statement type "' . $token->value . '".', $token ); - // TODO: Skip to first delimiter. + $list->getNextOfType(Token::TYPE_DELIMITER); continue; } diff --git a/src/Statement.php b/src/Statement.php index 0e57bfd..0fa1fc2 100644 --- a/src/Statement.php +++ b/src/Statement.php @@ -5,15 +5,21 @@ namespace SqlParser; use SqlParser\Parser; use SqlParser\Statement; use SqlParser\Token; -use SqlParser\Fragments\CallKeyword; use SqlParser\Fragments\CreateDefFragment; use SqlParser\Fragments\DataTypeFragment; use SqlParser\Fragments\FieldDefFragment; -use SqlParser\Fragments\FromKeyword; use SqlParser\Fragments\OptionsFragment; use SqlParser\Fragments\ParamDefFragment; -use SqlParser\Fragments\RenameKeyword; -use SqlParser\Fragments\SelectKeyword; +use SqlParser\Statements\AlterStatement; +use SqlParser\Statements\BackupStatement; +use SqlParser\Statements\CheckStatement; +use SqlParser\Statements\ChecksumStatement; +use SqlParser\Statements\CreateStatement; +use SqlParser\Statements\ExplainStatement; +use SqlParser\Statements\RenameStatement; +use SqlParser\Statements\RepairStatement; +use SqlParser\Statements\RestoreStatement; +use SqlParser\Statements\ShowStatement; /** * Abstract statement definition. @@ -50,9 +56,8 @@ abstract class Statement */ public function parse(Parser $parser, TokensList $list) { - /** - * Whether otpions were parsed or not. + * Whether options were parsed or not. * For statements that do not have any options this is set to `true` by * default. * @var bool @@ -115,15 +120,15 @@ abstract class Statement continue; } - // Special cases. - if ($token->value === 'CREATE') { + // Special cases: before parsing this keyword. + if ($this instanceof CreateStatement) { ++$list->idx; $this->name = CreateDefFragment::parse($parser, $list); if ($this->options->has('TABLE')) { ++$list->idx; $this->fields = FieldDefFragment::parse($parser, $list); ++$list->idx; - $this->tableOptions = OptionsFragment::parse( + $this->entityOptions = OptionsFragment::parse( $parser, $list, CreateDefFragment::$TABLE_OPTIONS @@ -149,7 +154,7 @@ abstract class Statement } } ++$list->idx; - $this->funcOptions = OptionsFragment::parse( + $this->entityOptions = OptionsFragment::parse( $parser, $list, CreateDefFragment::$FUNC_OPTIONS @@ -167,14 +172,50 @@ abstract class Statement } $class = null; // The statement has been processed here. } - } else if ($token->value === 'RENAME') { + } else if ($this instanceof RenameStatement) { $list->getNextOfTypeAndValue(Token::TYPE_KEYWORD, 'TABLE'); } + // Parsing this keyword. if ($class !== null) { ++$list->idx; // Skipping keyword. $this->$field = $class::parse($parser, $list, array()); } + + // Special cases: after parsing this keyword. + if (($this instanceof BackupStatement) + || ($this instanceof CheckStatement) + || ($this instanceof ChecksumStatement) + || ($this instanceof RepairStatement) + || ($this instanceof RestoreStatement) + ) { + + // The statements mentioned above follow this template: + // `STMT` <some options> <tables> <some more options> + // + // First of all, because static::$OPTIONS is set for all of the + // statements above, <some options> is going to be parsed first. + // + // There is a parser specified in `Parser::$KEYWORD_PARSERS` + // which parses <tables>. + // + // Finally, we pares <some more options> here and that's all. + ++$list->idx; + $this->options->merge( + OptionsFragment::parse( + $parser, + $list, + static::$OPTIONS + ) + ); + } else if (($this instanceof AlterStatement) + || ($this instanceof ExplainStatement) + || ($this instanceof ShowStatement) + ) { + // TODO: Implement the statements above. + $list->getNextOfType(Token::TYPE_DELIMITER); + ++$list->idx; + } } $this->last = --$list->idx; // Go back to last used token. diff --git a/src/Statements/AlterStatement.php b/src/Statements/AlterStatement.php new file mode 100644 index 0000000..47d34bb --- /dev/null +++ b/src/Statements/AlterStatement.php @@ -0,0 +1,48 @@ +<?php + +namespace SqlParser\Statements; + +use SqlParser\Statement; + +/** + * `ALTER` statement. + * + * @category Statements + * @package SqlParser + * @subpackage Statements + * @author Dan Ungureanu <udan1107@gmail.com> + * @license http://opensource.org/licenses/GPL-2.0 GNU Public License + */ +class AlterStatement extends Statement +{ + + /** + * Options of this statement. + * + * @var array + */ + public static $OPTIONS = array( + + 'DATABASE' => 1, + 'EVENT' => 1, + 'FUNCTION' => 1, + 'INDEX' => 1, + 'LOGFILE' => 1, + 'PROCEDURE' => 1, + 'SCHEMA' => 1, + 'SERVER' => 1, + 'TABLE' => 1, + 'TABLESPACE' => 1, + 'TRIGGER' => 1, + ); + + /** + * The options of this query. + * + * @var OptionsFragment + * + * @see static::$OPTIONS + */ + public $options; + +} diff --git a/src/Statements/AnalyzeStatement.php b/src/Statements/AnalyzeStatement.php new file mode 100644 index 0000000..abe872c --- /dev/null +++ b/src/Statements/AnalyzeStatement.php @@ -0,0 +1,50 @@ +<?php + +namespace SqlParser\Statements; + +use SqlParser\Statement; + +/** + * `ANALYZE` statement. + * + * ANALYZE [NO_WRITE_TO_BINLOG | LOCAL] TABLE + * tbl_name [, tbl_name] ... + * + * @category Statements + * @package SqlParser + * @subpackage Statements + * @author Dan Ungureanu <udan1107@gmail.com> + * @license http://opensource.org/licenses/GPL-2.0 GNU Public License + */ +class AnalyzeStatement extends Statement +{ + + /** + * Options of this statement. + * + * @var array + */ + public static $OPTIONS = array( + + 'TABLE' => 1, + + 'NO_WRITE_TO_BINLOG' => 2, + 'LOCAL' => 3, + ); + + /** + * The options of this query. + * + * @var OptionsFragment + * + * @see static::$OPTIONS + */ + public $options; + + /** + * Analyzed tables. + * + * @var FieldFragment[] + */ + public $tables; +} diff --git a/src/Statements/BackupStatement.php b/src/Statements/BackupStatement.php new file mode 100644 index 0000000..bca4be7 --- /dev/null +++ b/src/Statements/BackupStatement.php @@ -0,0 +1,51 @@ +<?php + +namespace SqlParser\Statements; + +use SqlParser\Statement; + +/** + * `BACKUP` statement. + * + * BACKUP TABLE tbl_name [, tbl_name] ... TO '/path/to/backup/directory' + * + * @category Statements + * @package SqlParser + * @subpackage Statements + * @author Dan Ungureanu <udan1107@gmail.com> + * @license http://opensource.org/licenses/GPL-2.0 GNU Public License + */ +class BackupStatement extends Statement +{ + + /** + * Options of this statement. + * + * @var array + */ + public static $OPTIONS = array( + + 'TABLE' => 1, + + 'NO_WRITE_TO_BINLOG' => 2, + 'LOCAL' => 3, + + 'TO' => array(4, 'var'), + ); + + /** + * The options of this query. + * + * @var OptionsFragment + * + * @see static::$OPTIONS + */ + public $options; + + /** + * Backup tables. + * + * @var FieldFragment[] + */ + public $tables; +} diff --git a/src/Statements/CheckStatement.php b/src/Statements/CheckStatement.php new file mode 100644 index 0000000..fa54591 --- /dev/null +++ b/src/Statements/CheckStatement.php @@ -0,0 +1,53 @@ +<?php + +namespace SqlParser\Statements; + +use SqlParser\Statement; + +/** + * `CHECK` statement. + * + * CHECK TABLE tbl_name [, tbl_name] ... [option] ... + * + * @category Statements + * @package SqlParser + * @subpackage Statements + * @author Dan Ungureanu <udan1107@gmail.com> + * @license http://opensource.org/licenses/GPL-2.0 GNU Public License + */ +class CheckStatement extends Statement +{ + + /** + * Options of this statement. + * + * @var array + */ + public static $OPTIONS = array( + + 'TABLE' => 1, + + 'FOR UPGRADE' => 2, + 'QUICK' => 3, + 'FAST' => 4, + 'MEDIUM' => 5, + 'EXTENDED' => 6, + 'CHANGED' => 7, + ); + + /** + * The options of this query. + * + * @var OptionsFragment + * + * @see static::$OPTIONS + */ + public $options; + + /** + * Checked tables. + * + * @var FieldFragment[] + */ + public $tables; +} diff --git a/src/Statements/ChecsumStatement.php b/src/Statements/ChecsumStatement.php new file mode 100644 index 0000000..ff879c2 --- /dev/null +++ b/src/Statements/ChecsumStatement.php @@ -0,0 +1,49 @@ +<?php + +namespace SqlParser\Statements; + +use SqlParser\Statement; + +/** + * `CHECKSUM` statement. + * + * CHECKSUM TABLE tbl_name [, tbl_name] ... [ QUICK | EXTENDED ] + * + * @category Statements + * @package SqlParser + * @subpackage Statements + * @author Dan Ungureanu <udan1107@gmail.com> + * @license http://opensource.org/licenses/GPL-2.0 GNU Public License + */ +class ChecksumStatement extends Statement +{ + + /** + * Options of this statement. + * + * @var array + */ + public static $OPTIONS = array( + + 'TABLE' => 1, + + 'QUICK' => 2, + 'EXTENDED' => 3, + ); + + /** + * The options of this query. + * + * @var OptionsFragment + * + * @see static::$OPTIONS + */ + public $options; + + /** + * Checked tables. + * + * @var FieldFragment[] + */ + public $tables; +} diff --git a/src/Statements/CreateStatement.php b/src/Statements/CreateStatement.php index edb87ea..69e3f7f 100644 --- a/src/Statements/CreateStatement.php +++ b/src/Statements/CreateStatement.php @@ -57,20 +57,14 @@ class CreateStatement extends Statement public $options; /** - * The parameters of this routine. - * - * @var ParamDefFragment[] - */ - public $parameters; - - /** - * The options of the table. + * The options of the entity (table, procedure, function, etc.). * * @var OptionsFragment * * @see CreateDefFragment::$TABLE_OPTIONS + * @see CreateDefFragment::$FUNC_OPTIONS */ - public $tableOptions; + public $entityOptions; /** * Field created by this statement. @@ -80,6 +74,20 @@ class CreateStatement extends Statement public $fields; /** + * The return data type of this routine. + * + * @var DataTypeFragment + */ + public $return; + + /** + * The parameters of this routine. + * + * @var ParamDefFragment[] + */ + public $parameters; + + /** * The body of this function or procedure. * * @var Token[] diff --git a/src/Statements/DropStatement.php b/src/Statements/DropStatement.php new file mode 100644 index 0000000..00d1591 --- /dev/null +++ b/src/Statements/DropStatement.php @@ -0,0 +1,57 @@ +<?php + +namespace SqlParser\Statements; + +use SqlParser\Statement; + +/** + * `DROP` statement. + * + * @category Statements + * @package SqlParser + * @subpackage Statements + * @author Dan Ungureanu <udan1107@gmail.com> + * @license http://opensource.org/licenses/GPL-2.0 GNU Public License + */ +class DropStatement extends Statement +{ + + /** + * Options of this statement. + * + * @var array + */ + public static $OPTIONS = array( + + 'DATABASE' => 1, + 'EVENT' => 1, + 'FUNCTION' => 1, + 'INDEX' => 1, + 'LOGFILE' => 1, + 'PROCEDURE' => 1, + 'SCHEMA' => 1, + 'SERVER' => 1, + 'TABLE' => 1, + 'TABLESPACE' => 1, + 'TRIGGER' => 1, + + 'TEMPORARY' => 2, + 'IF EXISTS' => 3, + ); + + /** + * The options of this query. + * + * @var OptionsFragment + * + * @see static::$OPTIONS + */ + public $options; + + /** + * Dropped elements. + * + * @var FromKeyworrd[] + */ + public $name; +} diff --git a/src/Statements/ExplainStatement.php b/src/Statements/ExplainStatement.php new file mode 100644 index 0000000..1983413 --- /dev/null +++ b/src/Statements/ExplainStatement.php @@ -0,0 +1,19 @@ +<?php + +namespace SqlParser\Statements; + +use SqlParser\Statement; + +/** + * `EXPLAIN` statement. + * + * @category Statements + * @package SqlParser + * @subpackage Statements + * @author Dan Ungureanu <udan1107@gmail.com> + * @license http://opensource.org/licenses/GPL-2.0 GNU Public License + */ +class ExplainStatement extends Statement +{ + +} diff --git a/src/Statements/OptimizeStatement.php b/src/Statements/OptimizeStatement.php new file mode 100644 index 0000000..cb90f08 --- /dev/null +++ b/src/Statements/OptimizeStatement.php @@ -0,0 +1,50 @@ +<?php + +namespace SqlParser\Statements; + +use SqlParser\Statement; + +/** + * `OPTIMIZE` statement. + * + * OPTIMIZE [NO_WRITE_TO_BINLOG | LOCAL] TABLE + * tbl_name [, tbl_name] ... + * + * @category Statements + * @package SqlParser + * @subpackage Statements + * @author Dan Ungureanu <udan1107@gmail.com> + * @license http://opensource.org/licenses/GPL-2.0 GNU Public License + */ +class OptimizeStatement extends Statement +{ + + /** + * Options of this statement. + * + * @var array + */ + public static $OPTIONS = array( + + 'TABLE' => 1, + + 'NO_WRITE_TO_BINLOG' => 2, + 'LOCAL' => 3, + ); + + /** + * The options of this query. + * + * @var OptionsFragment + * + * @see static::$OPTIONS + */ + public $options; + + /** + * Optimized tables. + * + * @var FieldFragment[] + */ + public $tables; +} diff --git a/src/Statements/RepairStatement.php b/src/Statements/RepairStatement.php new file mode 100644 index 0000000..a3f1afe --- /dev/null +++ b/src/Statements/RepairStatement.php @@ -0,0 +1,55 @@ +<?php + +namespace SqlParser\Statements; + +use SqlParser\Statement; + +/** + * `REPAIR` statement. + * + * REPAIR [NO_WRITE_TO_BINLOG | LOCAL] TABLE + * tbl_name [, tbl_name] ... + * [QUICK] [EXTENDED] [USE_FRM] + * + * @category Statements + * @package SqlParser + * @subpackage Statements + * @author Dan Ungureanu <udan1107@gmail.com> + * @license http://opensource.org/licenses/GPL-2.0 GNU Public License + */ +class RepairStatement extends Statement +{ + + /** + * Options of this statement. + * + * @var array + */ + public static $OPTIONS = array( + + 'TABLE' => 1, + + 'NO_WRITE_TO_BINLOG' => 2, + 'LOCAL' => 3, + + 'QUICK' => 4, + 'EXTENDED' => 5, + 'USE_FRM' => 6, + ); + + /** + * The options of this query. + * + * @var OptionsFragment + * + * @see static::$OPTIONS + */ + public $options; + + /** + * Repaired tables. + * + * @var FieldFragment[] + */ + public $tables; +} diff --git a/src/Statements/RestoreStatement.php b/src/Statements/RestoreStatement.php new file mode 100644 index 0000000..e8c46f8 --- /dev/null +++ b/src/Statements/RestoreStatement.php @@ -0,0 +1,48 @@ +<?php + +namespace SqlParser\Statements; + +use SqlParser\Statement; + +/** + * `RESTORE` statement. + * + * RESTORE TABLE tbl_name [, tbl_name] ... FROM '/path/to/backup/directory' + * + * @category Statements + * @package SqlParser + * @subpackage Statements + * @author Dan Ungureanu <udan1107@gmail.com> + * @license http://opensource.org/licenses/GPL-2.0 GNU Public License + */ +class RestoreStatement extends Statement +{ + + /** + * Options of this statement. + * + * @var array + */ + public static $OPTIONS = array( + + 'TABLE' => 1, + + 'FROM' => array(2, 'var'), + ); + + /** + * The options of this query. + * + * @var OptionsFragment + * + * @see static::$OPTIONS + */ + public $options; + + /** + * Restored tables. + * + * @var FieldFragment[] + */ + public $tables; +} diff --git a/src/Statements/SelectStatement.php b/src/Statements/SelectStatement.php index 50ce281..d8c9baa 100644 --- a/src/Statements/SelectStatement.php +++ b/src/Statements/SelectStatement.php @@ -127,6 +127,20 @@ class SelectStatement extends Statement public $limit; /** + * Procedure that should process the data in the result set. + * + * @var CallKeyword + */ + public $procedure; + + /** + * Destination of this result set. + * + * @var IntoKeyword + */ + public $into; + + /** * Joins. * * @var JoinKeyword diff --git a/src/Statements/ShowStatement.php b/src/Statements/ShowStatement.php new file mode 100644 index 0000000..962a7a3 --- /dev/null +++ b/src/Statements/ShowStatement.php @@ -0,0 +1,76 @@ +<?php + +namespace SqlParser\Statements; + +use SqlParser\Statement; + +/** + * `SHOW` statement. + * + * @category Statements + * @package SqlParser + * @subpackage Statements + * @author Dan Ungureanu <udan1107@gmail.com> + * @license http://opensource.org/licenses/GPL-2.0 GNU Public License + */ +class ShowStatement extends Statement +{ + + /** + * Options of this statement. + * + * @var array + */ + public static $OPTIONS = array( + 'CREATE' => 1, + 'AUTHORS' => 2, + 'BINARY' => 2, + 'BINLOG' => 2, + 'CHARACTER' => 2, + 'CODE' => 2, + 'COLLATION' => 2, + 'COLUMNS' => 2, + 'CONTRIBUTORS' => 2, + 'DATABASE' => 2, + 'DATABASES' => 2, + 'ENGINE' => 2, + 'ENGINES' => 2, + 'ERRORS' => 2, + 'EVENT' => 2, + 'EVENTS' => 2, + 'FUNCTION' => 2, + 'GRANTS' => 2, + 'HOSTS' => 2, + 'INDEX' => 2, + 'INNODB' => 2, + 'LOGS' => 2, + 'MASTER' => 2, + 'OPEN' => 2, + 'PLUGINS' => 2, + 'PRIVILEGES' => 2, + 'PROCEDURE' => 2, + 'PROCESSLIST' => 2, + 'PROFILE' => 2, + 'PROFILES' => 2, + 'SCHEDULER' => 2, + 'SET' => 2, + 'SLAVE' => 2, + 'STATUS' => 2, + 'TABLE' => 2, + 'TABLES' => 2, + 'TRIGGER' => 2, + 'TRIGGERS' => 2, + 'VARIABLES' => 2, + 'VIEW' => 2, + 'WARNINGS' => 2, + ); + + /** + * The options of this query. + * + * @var OptionsFragment + * + * @see static::$OPTIONS + */ + public $options; +} diff --git a/src/Token.php b/src/Token.php index 867976c..160efcd 100644 --- a/src/Token.php +++ b/src/Token.php @@ -120,6 +120,7 @@ class Token const FLAG_KEYWORD_COMPOSED = 4; const FLAG_KEYWORD_DATA_TYPE = 8; const FLAG_KEYWORD_KEY = 16; + const FLAG_KEYWORD_FUNCTION = 32; // Numbers related flags. const FLAG_NUMBER_HEX = 1; diff --git a/src/Utils/Misc.php b/src/Utils/Misc.php index 4332ae0..55ae33b 100644 --- a/src/Utils/Misc.php +++ b/src/Utils/Misc.php @@ -3,6 +3,7 @@ namespace SqlParser\Utils; use SqlParser\Statement; +use SqlParser\Statements\SelectStatement; /** * Miscellaneous utilities. @@ -19,12 +20,12 @@ class Misc /** * Gets a list of all aliases and their original names. * - * @param Statement $tree The tree that was generated after parsing. - * @param string $database The name of the database. + * @param SelectStatement $tree The tree that was generated after parsing. + * @param string $database The name of the database. * * @return array */ - public static function getAliases(Statement $tree, $database) + public static function getAliases($tree, $database) { if ((empty($tree->from)) || (empty($tree->expr))) { return array(); diff --git a/src/Utils/Query.php b/src/Utils/Query.php new file mode 100644 index 0000000..0bd56d8 --- /dev/null +++ b/src/Utils/Query.php @@ -0,0 +1,131 @@ +<?php + +namespace SqlParser\Utils; + +use SqlParser\Statement; +use SqlParser\Statements\AlterStatement; +use SqlParser\Statements\AnalyzeStatement; +use SqlParser\Statement\CallStatement; +use SqlParser\Statements\CheckStatement; +use SqlParser\Statements\ChecksumStatement; +use SqlParser\Statements\CreateStatement; +use SqlParser\Statements\DeleteStatement; +use SqlParser\Statements\DropStatement; +use SqlParser\Statements\ExplainStatement; +use SqlParser\Statements\InsertStatement; +use SqlParser\Statements\OptimizeStatement; +use SqlParser\Statements\RepairStatement; +use SqlParser\Statements\ReplaceStatement; +use SqlParser\Statements\SelectStatement; +use SqlParser\Statements\ShowStatement; +use SqlParser\Statements\UpdateStatement; + +/** + * Statement utilities. + * + * @category Routines + * @package SqlParser + * @subpackage Utils + * @author Dan Ungureanu <udan1107@gmail.com> + * @license http://opensource.org/licenses/GPL-2.0 GNU Public License + */ +class Query +{ + + /** + * Functions that set the flag `is_func`. + * + * @var array + */ + public static $FUNCTIONS = array( + 'SUM','AVG','STD','STDDEV','MIN','MAX','BIT_OR','BIT_AND' + ); + + /** + * Gets an array with flags this statement has. + * + * @param Statement $statement + * + * @return array + */ + public static function getFlags($statement) + { + $flags = array(); + // TODO: 'union', 'join', 'offset' + + if (($statement instanceof AlterStatement) + || ($statement instanceof CreateStatement) + ) { + $flags['reload'] = true; + } else if ($statement instanceof AnalyzeStatement) { + $flags['is_maint'] = true; + $flags['is_analyze'] = true; + } else if ($statement instanceof CallStatement) { + $flags['is_procedure'] = true; + } else if (($statement instanceof CheckStatement) + || ($statement instanceof ChecksumStatement) + || ($statement instanceof OptimizeStatement) + || ($statement instanceof RepairStatement) + ) { + $flags['is_maint'] = true; + } else if ($statement instanceof DeleteStatement) { + $flags['is_delete'] = true; + $flags['is_affected'] = true; + } else if ($statement instanceof DropStatement) { + $flags['reload'] = true; + + if (($statement->options->has('DATABASE') + || ($statement->options->has('SCHEMA'))) + ) { + $flags['drop_database'] = true; + } + } else if ($statement instanceof ExplainStatement) { + $flags['is_explain'] = true; + } else if ($statement instanceof InsertStatement) { + $flags['is_affected'] = true; + $flags['is_insert'] = true; + } else if ($statement instanceof ReplaceStatement) { + $flags['is_affected'] = true; + $flags['is_replace'] = true; + } else if ($statement instanceof SelectStatement) { + + if (!empty($statement->from)) { + $flags['select_from'] = true; + } + + if ($statement->options->has('DISTINCT')) { + $flags['distinct'] = true; + } + + if ((!empty($statement->group)) || (!empty($statement->having))) { + $flags['is_group'] = true; + } + + if ((!empty($statement->into)) + && ($statement->into->type === 'OUTFILE') + ) { + $flags['is_export'] = true; + } + + foreach ($statement->expr as $expr) { + if (!empty($expr->function)) { + if ($expr->function === 'COUNT') { + $flags['is_count'] = true; + } else if (in_array($expr->function, static::$FUNCTIONS)) { + $flags['is_func'] = true; + } + } + if (!empty($expr->subquery)) { + $flags['is_subquery'] = true; + } + } + } else if ($statement instanceof ShowStatement) { + $flags['is_show'] = true; + } else if ($statement instanceof UpdateStatement) { + $flags['is_affected'] = true; + } + + return $flags; + } + +} diff --git a/src/Utils/Routine.php b/src/Utils/Routine.php index 740ace3..76d3d71 100644 --- a/src/Utils/Routine.php +++ b/src/Utils/Routine.php @@ -7,6 +7,7 @@ use SqlParser\Parser; use SqlParser\Statement; use SqlParser\Fragments\DataTypeFragment; use SqlParser\Fragments\ParamDefFragment; +use SqlParser\Statements\CreateStatement; /** * Routine utilities. @@ -89,11 +90,11 @@ class Routine /** * Gets the parameters of a routine from the parse tree. * - * @param Statement $tree The tree that was generated after parsing. + * @param CreateStatement $tree The tree that was generated after parsing. * * @return array */ - public static function getParameters(Statement $tree) + public static function getParameters($tree) { $retval = array( 'num' => 0, diff --git a/src/Utils/Table.php b/src/Utils/Table.php index 7be3eac..6bc83a5 100644 --- a/src/Utils/Table.php +++ b/src/Utils/Table.php @@ -7,6 +7,7 @@ use SqlParser\Parser; use SqlParser\Statement; use SqlParser\Fragments\DataTypeFragment; use SqlParser\Fragments\ParamDefFragment; +use SqlParser\Statements\CreateStatement; /** * Table utilities. @@ -20,7 +21,14 @@ use SqlParser\Fragments\ParamDefFragment; class Table { - public static function getForeignKeys(Statement $tree) + /** + * Gets the foreign keys of the table. + * + * @param CreateStatement $tree + * + * @return array + */ + public static function getForeignKeys($tree) { if ((empty($tree->fields)) || (!$tree->options->has('TABLE'))) { return array(); @@ -63,7 +71,14 @@ class Table return $ret; } - public static function getFields(Statement $tree) + /** + * Gets fields of the table. + * + * @param CreateStatement $tree + * + * @return array + */ + public static function getFields($tree) { if ((empty($tree->fields)) || (!$tree->options->has('TABLE'))) { return array(); |