DBZ-252 Create new debezium-ddl-parser module
This commit is contained in:
parent
785c346bcb
commit
1df0b2033c
@ -16,6 +16,10 @@
|
|||||||
<groupId>io.debezium</groupId>
|
<groupId>io.debezium</groupId>
|
||||||
<artifactId>debezium-core</artifactId>
|
<artifactId>debezium-core</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>io.debezium</groupId>
|
||||||
|
<artifactId>debezium-ddl-parser</artifactId>
|
||||||
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.github.shyiko</groupId>
|
<groupId>com.github.shyiko</groupId>
|
||||||
<artifactId>mysql-binlog-connector-java</artifactId>
|
<artifactId>mysql-binlog-connector-java</artifactId>
|
||||||
@ -39,11 +43,6 @@
|
|||||||
<groupId>mysql</groupId>
|
<groupId>mysql</groupId>
|
||||||
<artifactId>mysql-connector-java</artifactId>
|
<artifactId>mysql-connector-java</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
|
||||||
<groupId>org.antlr</groupId>
|
|
||||||
<artifactId>antlr4-runtime</artifactId>
|
|
||||||
<version>${antlr.version}</version>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<!-- Testing -->
|
<!-- Testing -->
|
||||||
<dependency>
|
<dependency>
|
||||||
@ -110,9 +109,6 @@
|
|||||||
<docker.skip>false</docker.skip>
|
<docker.skip>false</docker.skip>
|
||||||
<docker.initimage>ln -s /usr/share/zoneinfo/US/Samoa /etc/localtime</docker.initimage>
|
<docker.initimage>ln -s /usr/share/zoneinfo/US/Samoa /etc/localtime</docker.initimage>
|
||||||
|
|
||||||
<!-- ANTLR properties -->
|
|
||||||
<antlr.version>4.7</antlr.version>
|
|
||||||
<antlr.source.dir>${project.basedir}/src/main/resources/antlr4</antlr.source.dir>
|
|
||||||
</properties>
|
</properties>
|
||||||
<build>
|
<build>
|
||||||
<plugins>
|
<plugins>
|
||||||
@ -342,21 +338,6 @@
|
|||||||
</execution>
|
</execution>
|
||||||
</executions>
|
</executions>
|
||||||
</plugin>
|
</plugin>
|
||||||
<plugin>
|
|
||||||
<groupId>org.antlr</groupId>
|
|
||||||
<artifactId>antlr4-maven-plugin</artifactId>
|
|
||||||
<version>${antlr.version}</version>
|
|
||||||
<configuration>
|
|
||||||
<sourceDirectory>${antlr.source.dir}</sourceDirectory>
|
|
||||||
</configuration>
|
|
||||||
<executions>
|
|
||||||
<execution>
|
|
||||||
<goals>
|
|
||||||
<goal>antlr4</goal>
|
|
||||||
</goals>
|
|
||||||
</execution>
|
|
||||||
</executions>
|
|
||||||
</plugin>
|
|
||||||
</plugins>
|
</plugins>
|
||||||
<resources>
|
<resources>
|
||||||
<!-- Apply the properties set in the POM to the resource files -->
|
<!-- Apply the properties set in the POM to the resource files -->
|
||||||
|
@ -1,1197 +0,0 @@
|
|||||||
/*
|
|
||||||
MySQL (Positive Technologies) grammar
|
|
||||||
The MIT License (MIT).
|
|
||||||
Copyright (c) 2015-2017, Ivan Kochurkin (kvanttt@gmail.com), Positive Technologies.
|
|
||||||
Copyright (c) 2017, Ivan Khudyashev (IHudyashov@ptsecurity.com)
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in
|
|
||||||
all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
||||||
THE SOFTWARE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
lexer grammar MySqlLexer;
|
|
||||||
|
|
||||||
channels { MYSQLCOMMENT, ERRORCHANNEL }
|
|
||||||
|
|
||||||
// SKIP
|
|
||||||
|
|
||||||
SPACE: [ \t\r\n]+ -> channel(HIDDEN);
|
|
||||||
SPEC_MYSQL_COMMENT: '/*!' .+? '*/' -> channel(MYSQLCOMMENT);
|
|
||||||
COMMENT_INPUT: '/*' .*? '*/' -> channel(HIDDEN);
|
|
||||||
LINE_COMMENT: (
|
|
||||||
('-- ' | '#') ~[\r\n]* ('\r'? '\n' | EOF)
|
|
||||||
| '--' ('\r'? '\n' | EOF)
|
|
||||||
) -> channel(HIDDEN);
|
|
||||||
|
|
||||||
|
|
||||||
// Keywords
|
|
||||||
// Common Keywords
|
|
||||||
|
|
||||||
|
|
||||||
ADD: A D D ;
|
|
||||||
ALL: A L L ;
|
|
||||||
ALTER: A L T E R ;
|
|
||||||
ANALYZE: A N A L Y Z E ;
|
|
||||||
AND: A N D ;
|
|
||||||
AS: A S ;
|
|
||||||
ASC: A S C ;
|
|
||||||
BEFORE: B E F O R E ;
|
|
||||||
BETWEEN: B E T W E E N ;
|
|
||||||
BOTH: B O T H ;
|
|
||||||
BY: B Y;
|
|
||||||
CALL: C A L L ;
|
|
||||||
CASCADE: C A S C A D E ;
|
|
||||||
CASE: C A S E ;
|
|
||||||
CAST: C A S T ;
|
|
||||||
CHANGE: C H A N G E ;
|
|
||||||
CHARACTER: C H A R A C T E R ;
|
|
||||||
CHECK: C H E C K ;
|
|
||||||
COLLATE: C O L L A T E ;
|
|
||||||
COLUMN: C O L U M N ;
|
|
||||||
CONDITION: C O N D I T I O N ;
|
|
||||||
CONSTRAINT: C O N S T R A I N T ;
|
|
||||||
CONTINUE: C O N T I N U E ;
|
|
||||||
CONVERT: C O N V E R T ;
|
|
||||||
CREATE: C R E A T E ;
|
|
||||||
CROSS: C R O S S ;
|
|
||||||
CURRENT_USER: C U R R E N T '_' U S E R ;
|
|
||||||
CURSOR: C U R S O R ;
|
|
||||||
DATABASE: D A T A B A S E ;
|
|
||||||
DATABASES: D A T A B A S E S ;
|
|
||||||
DECLARE: D E C L A R E ;
|
|
||||||
DEFAULT: D E F A U L T ;
|
|
||||||
DELAYED: D E L A Y E D ;
|
|
||||||
DELETE: D E L E T E ;
|
|
||||||
DESC: D E S C ;
|
|
||||||
DESCRIBE: D E S C R I B E ;
|
|
||||||
DETERMINISTIC: D E T E R M I N I S T I C ;
|
|
||||||
DISTINCT: D I S T I N C T ;
|
|
||||||
DISTINCTROW: D I S T I N C T R O W ;
|
|
||||||
DROP: D R O P ;
|
|
||||||
EACH: E A C H ;
|
|
||||||
ELSE: E L S E ;
|
|
||||||
ELSEIF: E L S E I F ;
|
|
||||||
ENCLOSED: E N C L O S E D ;
|
|
||||||
ESCAPED: E S C A P E D ;
|
|
||||||
EXISTS: E X I S T S ;
|
|
||||||
EXIT: E X I T ;
|
|
||||||
EXPLAIN: E X P L A I N ;
|
|
||||||
FALSE: F A L S E ;
|
|
||||||
FETCH: F E T C H ;
|
|
||||||
FOR: F O R ;
|
|
||||||
FORCE: F O R C E ;
|
|
||||||
FOREIGN: F O R E I G N ;
|
|
||||||
FROM: F R O M ;
|
|
||||||
FULLTEXT: F U L L T E X T ;
|
|
||||||
GRANT: G R A N T ;
|
|
||||||
GROUP: G R O U P ;
|
|
||||||
HAVING: H A V I N G ;
|
|
||||||
HIGH_PRIORITY: H I G H '_' P R I O R I T Y ;
|
|
||||||
IF: I F ;
|
|
||||||
IGNORE: I G N O R E ;
|
|
||||||
IN: I N ;
|
|
||||||
INDEX: I N D E X ;
|
|
||||||
INFILE: I N F I L E ;
|
|
||||||
INNER: I N N E R ;
|
|
||||||
INOUT: I N O U T ;
|
|
||||||
INSERT: I N S E R T ;
|
|
||||||
INTERVAL: I N T E R V A L ;
|
|
||||||
INTO: I N T O ;
|
|
||||||
IS: I S ;
|
|
||||||
ITERATE: I T E R A T E ;
|
|
||||||
JOIN: J O I N ;
|
|
||||||
KEY: K E Y ;
|
|
||||||
KEYS: K E Y S ;
|
|
||||||
KILL: K I L L ;
|
|
||||||
LEADING: L E A D I N G ;
|
|
||||||
LEAVE: L E A V E ;
|
|
||||||
LEFT: L E F T ;
|
|
||||||
LIKE: L I K E ;
|
|
||||||
LIMIT: L I M I T ;
|
|
||||||
LINEAR: L I N E A R ;
|
|
||||||
LINES: L I N E S ;
|
|
||||||
LOAD: L O A D ;
|
|
||||||
LOCK: L O C K ;
|
|
||||||
LOOP: L O O P ;
|
|
||||||
LOW_PRIORITY: L O W '_' P R I O R I T Y ;
|
|
||||||
MASTER_BIND: M A S T E R '_' B I N D ;
|
|
||||||
MASTER_SSL_VERIFY_SERVER_CERT: M A S T E R '_' S S L '_' V E R I F Y '_' S E R V E R '_' C E R T;
|
|
||||||
MATCH: M A T C H ;
|
|
||||||
MAXVALUE: M A X V A L U E ;
|
|
||||||
MODIFIES: M O D I F I E S ;
|
|
||||||
NATURAL: N A T U R A L ;
|
|
||||||
NOT: N O T ;
|
|
||||||
NO_WRITE_TO_BINLOG: N O '_' W R I T E '_' T O '_' B I N L O G ;
|
|
||||||
NULL_LITERAL: N U L L ;
|
|
||||||
ON: O N ;
|
|
||||||
OPTIMIZE: O P T I M I Z E ;
|
|
||||||
OPTION: O P T I O N ;
|
|
||||||
OPTIONALLY: O P T I O N A L L Y ;
|
|
||||||
OR: O R ;
|
|
||||||
ORDER: O R D E R ;
|
|
||||||
OUT: O U T ;
|
|
||||||
OUTER: O U T E R ;
|
|
||||||
OUTFILE: O U T F I L E ;
|
|
||||||
PARTITION: P A R T I T I O N ;
|
|
||||||
PRIMARY: P R I M A R Y ;
|
|
||||||
PROCEDURE: P R O C E D U R E ;
|
|
||||||
PURGE: P U R G E ;
|
|
||||||
RANGE: R A N G E ;
|
|
||||||
READ: R E A D ;
|
|
||||||
READS: R E A D S ;
|
|
||||||
REFERENCES: R E F E R E N C E S ;
|
|
||||||
REGEXP: R E G E X P ;
|
|
||||||
RELEASE: R E L E A S E ;
|
|
||||||
RENAME: R E N A M E ;
|
|
||||||
REPEAT: R E P E A T ;
|
|
||||||
REPLACE: R E P L A C E ;
|
|
||||||
REQUIRE: R E Q U I R E ;
|
|
||||||
RESTRICT: R E S T R I C T ;
|
|
||||||
RETURN: R E T U R N ;
|
|
||||||
REVOKE: R E V O K E ;
|
|
||||||
RIGHT: R I G H T ;
|
|
||||||
RLIKE: R L I K E ;
|
|
||||||
SCHEMA: S C H E M A ;
|
|
||||||
SCHEMAS: S C H E M A S ;
|
|
||||||
SELECT: S E L E C T ;
|
|
||||||
SET: S E T ;
|
|
||||||
SEPARATOR: S E P A R A T O R ;
|
|
||||||
SHOW: S H O W ;
|
|
||||||
SPATIAL: S P A T I A L ;
|
|
||||||
SQL: S Q L ;
|
|
||||||
SQLEXCEPTION: S Q L E X C E P T I O N ;
|
|
||||||
SQLSTATE: S Q L S T A T E ;
|
|
||||||
SQLWARNING: S Q L W A R N I N G ;
|
|
||||||
SQL_BIG_RESULT: S Q L '_' B I G '_' R E S U L T ;
|
|
||||||
SQL_CALC_FOUND_ROWS: S Q L '_' C A L C '_' F O U N D '_' R O W S ;
|
|
||||||
SQL_SMALL_RESULT: S Q L '_' S M A L L '_' R E S U L T ;
|
|
||||||
SSL: S S L ;
|
|
||||||
STARTING: S T A R T I N G ;
|
|
||||||
STRAIGHT_JOIN: S T R A I G H T '_' J O I N ;
|
|
||||||
TABLE: T A B L E ;
|
|
||||||
TERMINATED: T E R M I N A T E D ;
|
|
||||||
THEN: T H E N ;
|
|
||||||
TO: T O ;
|
|
||||||
TRAILING: T R A I L I N G ;
|
|
||||||
TRIGGER: T R I G G E R ;
|
|
||||||
TRUE: T R U E ;
|
|
||||||
UNDO: U N D O ;
|
|
||||||
UNION: U N I O N ;
|
|
||||||
UNIQUE: U N I Q U E ;
|
|
||||||
UNLOCK: U N L O C K ;
|
|
||||||
UNSIGNED: U N S I G N E D ;
|
|
||||||
UPDATE: U P D A T E ;
|
|
||||||
USAGE: U S A G E ;
|
|
||||||
USE: U S E ;
|
|
||||||
USING: U S I N G ;
|
|
||||||
VALUES: V A L U E S ;
|
|
||||||
WHEN: W H E N ;
|
|
||||||
WHERE: W H E R E ;
|
|
||||||
WHILE: W H I L E ;
|
|
||||||
WITH: W I T H ;
|
|
||||||
WRITE: W R I T E ;
|
|
||||||
XOR: X O R ;
|
|
||||||
ZEROFILL: Z E R O F I L L ;
|
|
||||||
|
|
||||||
|
|
||||||
// DATA TYPE Keywords
|
|
||||||
|
|
||||||
TINYINT: T I N Y I N T ;
|
|
||||||
SMALLINT: S M A L L I N T ;
|
|
||||||
MEDIUMINT: M E D I U M I N T ;
|
|
||||||
INT: I N T ;
|
|
||||||
INTEGER: I N T E G E R ;
|
|
||||||
BIGINT: B I G I N T ;
|
|
||||||
REAL: R E A L ;
|
|
||||||
DOUBLE: D O U B L E ;
|
|
||||||
FLOAT: F L O A T ;
|
|
||||||
DECIMAL: D E C I M A L ;
|
|
||||||
NUMERIC: N U M E R I C ;
|
|
||||||
DATE: D A T E ;
|
|
||||||
TIME: T I M E ;
|
|
||||||
TIMESTAMP: T I M E S T A M P ;
|
|
||||||
DATETIME: D A T E T I M E ;
|
|
||||||
YEAR: Y E A R ;
|
|
||||||
CHAR: C H A R ;
|
|
||||||
VARCHAR: V A R C H A R ;
|
|
||||||
BINARY: B I N A R Y ;
|
|
||||||
VARBINARY: V A R B I N A R Y ;
|
|
||||||
TINYBLOB: T I N Y B L O B ;
|
|
||||||
BLOB: B L O B ;
|
|
||||||
MEDIUMBLOB: M E D I U M B L O B ;
|
|
||||||
LONGBLOB: L O N G B L O B ;
|
|
||||||
TINYTEXT: T I N Y T E X T ;
|
|
||||||
TEXT: T E X T ;
|
|
||||||
MEDIUMTEXT: M E D I U M T E X T ;
|
|
||||||
LONGTEXT: L O N G T E X T ;
|
|
||||||
ENUM: E N U M ;
|
|
||||||
|
|
||||||
|
|
||||||
// Interval type Keywords
|
|
||||||
|
|
||||||
YEAR_MONTH: Y E A R '_' M O N T H ;
|
|
||||||
DAY_HOUR: D A Y '_' H O U R ;
|
|
||||||
DAY_MINUTE: D A Y '_' M I N U T E ;
|
|
||||||
DAY_SECOND: D A Y '_' S E C O N D ;
|
|
||||||
HOUR_MINUTE: H O U R '_' M I N U T E ;
|
|
||||||
HOUR_SECOND: H O U R '_' S E C O N D ;
|
|
||||||
MINUTE_SECOND: M I N U T E '_' S E C O N D ;
|
|
||||||
SECOND_MICROSECOND: S E C O N D '_' M I C R O S E C O N D ;
|
|
||||||
MINUTE_MICROSECOND: M I N U T E '_' M I C R O S E C O N D ;
|
|
||||||
HOUR_MICROSECOND: H O U R '_' M I C R O S E C O N D ;
|
|
||||||
DAY_MICROSECOND: D A Y '_' M I C R O S E C O N D ;
|
|
||||||
|
|
||||||
|
|
||||||
// Group function Keywords
|
|
||||||
|
|
||||||
AVG: A V G ;
|
|
||||||
BIT_AND: B I T '_' A N D ;
|
|
||||||
BIT_OR: B I T '_' O R ;
|
|
||||||
BIT_XOR: B I T '_' X O R ;
|
|
||||||
COUNT: C O U N T ;
|
|
||||||
GROUP_CONCAT: G R O U P '_' C O N C A T ;
|
|
||||||
MAX: M A X ;
|
|
||||||
MIN: M I N ;
|
|
||||||
STD: S T D ;
|
|
||||||
STDDEV: S T D D E V ;
|
|
||||||
STDDEV_POP: S T D D E V '_' P O P ;
|
|
||||||
STDDEV_SAMP: S T D D E V '_' S A M P ;
|
|
||||||
SUM: S U M ;
|
|
||||||
VAR_POP: V A R '_' P O P ;
|
|
||||||
VAR_SAMP: V A R '_' S A M P ;
|
|
||||||
VARIANCE: V A R I A N C E ;
|
|
||||||
|
|
||||||
|
|
||||||
// Common function Keywords
|
|
||||||
|
|
||||||
CURRENT_DATE: C U R R E N T '_' D A T E ;
|
|
||||||
CURRENT_TIME: C U R R E N T '_' T I M E ;
|
|
||||||
CURRENT_TIMESTAMP: C U R R E N T '_' T I M E S T A M P ;
|
|
||||||
LOCALTIME: L O C A L T I M E ;
|
|
||||||
CURDATE: C U R D A T E ;
|
|
||||||
CURTIME: C U R T I M E ;
|
|
||||||
DATE_ADD: D A T E '_' A D D ;
|
|
||||||
DATE_SUB: D A T E '_' S U B ;
|
|
||||||
EXTRACT: E X T R A C T ;
|
|
||||||
LOCALTIMESTAMP: L O C A L T I M E S T A M P ;
|
|
||||||
NOW: N O W ;
|
|
||||||
POSITION: P O S I T I O N ;
|
|
||||||
SUBSTR: S U B S T R ;
|
|
||||||
SUBSTRING: S U B S T R I N G ;
|
|
||||||
SYSDATE: S Y S D A T E ;
|
|
||||||
TRIM: T R I M ;
|
|
||||||
UTC_DATE: U T C '_' D A T E ;
|
|
||||||
UTC_TIME: U T C '_' T I M E ;
|
|
||||||
UTC_TIMESTAMP: U T C '_' T I M E S T A M P ;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Keywords, but can be ID
|
|
||||||
// Common Keywords, but can be ID
|
|
||||||
|
|
||||||
ACCOUNT: A C C O U N T ;
|
|
||||||
ACTION: A C T I O N ;
|
|
||||||
AFTER: A F T E R ;
|
|
||||||
AGGREGATE: A G G R E G A T E ;
|
|
||||||
ALGORITHM: A L G O R I T H M ;
|
|
||||||
ANY: A N Y ;
|
|
||||||
AT: A T ;
|
|
||||||
AUTHORS: A U T H O R S ;
|
|
||||||
AUTOCOMMIT: A U T O C O M M I T ;
|
|
||||||
AUTOEXTEND_SIZE: A U T O E X T E N D '_' S I Z E ;
|
|
||||||
AUTO_INCREMENT: A U T O '_' I N C R E M E N T ;
|
|
||||||
AVG_ROW_LENGTH: A V G '_' R O W '_' L E N G T H ;
|
|
||||||
BEGIN: B E G I N ;
|
|
||||||
BINLOG: B I N L O G ;
|
|
||||||
BIT: B I T ;
|
|
||||||
BLOCK: B L O C K ;
|
|
||||||
BOOL: B O O L ;
|
|
||||||
BOOLEAN: B O O L E A N ;
|
|
||||||
BTREE: B T R E E ;
|
|
||||||
CACHE: C A C H E ;
|
|
||||||
CASCADED: C A S C A D E D ;
|
|
||||||
CHAIN: C H A I N ;
|
|
||||||
CHANGED: C H A N G E D ;
|
|
||||||
CHANNEL: C H A N N E L ;
|
|
||||||
CHECKSUM: C H E C K S U M ;
|
|
||||||
CIPHER: C I P H E R ;
|
|
||||||
CLIENT: C L I E N T ;
|
|
||||||
CLOSE: C L O S E ;
|
|
||||||
COALESCE: C O A L E S C E ;
|
|
||||||
CODE: C O D E ;
|
|
||||||
COLUMNS: C O L U M N S ;
|
|
||||||
COLUMN_FORMAT: C O L U M N '_' F O R M A T ;
|
|
||||||
COMMENT: C O M M E N T ;
|
|
||||||
COMMIT: C O M M I T ;
|
|
||||||
COMPACT: C O M P A C T ;
|
|
||||||
COMPLETION: C O M P L E T I O N ;
|
|
||||||
COMPRESSED: C O M P R E S S E D ;
|
|
||||||
COMPRESSION: C O M P R E S S I O N ;
|
|
||||||
CONCURRENT: C O N C U R R E N T ;
|
|
||||||
CONNECTION: C O N N E C T I O N ;
|
|
||||||
CONSISTENT: C O N S I S T E N T ;
|
|
||||||
CONTAINS: C O N T A I N S ;
|
|
||||||
CONTEXT: C O N T E X T ;
|
|
||||||
CONTRIBUTORS: C O N T R I B U T O R S ;
|
|
||||||
COPY: C O P Y ;
|
|
||||||
CPU: C P U ;
|
|
||||||
DATA: D A T A ;
|
|
||||||
DATAFILE: D A T A F I L E ;
|
|
||||||
DEALLOCATE: D E A L L O C A T E ;
|
|
||||||
DEFAULT_AUTH: D E F A U L T '_' A U T H ;
|
|
||||||
DEFINER: D E F I N E R ;
|
|
||||||
DELAY_KEY_WRITE: D E L A Y '_' K E Y '_' W R I T E ;
|
|
||||||
DES_KEY_FILE: D E S '_' K E Y '_' F I L E ;
|
|
||||||
DIRECTORY: D I R E C T O R Y ;
|
|
||||||
DISABLE: D I S A B L E ;
|
|
||||||
DISCARD: D I S C A R D ;
|
|
||||||
DISK: D I S K ;
|
|
||||||
DO: D O ;
|
|
||||||
DUMPFILE: D U M P F I L E ;
|
|
||||||
DUPLICATE: D U P L I C A T E ;
|
|
||||||
DYNAMIC: D Y N A M I C ;
|
|
||||||
ENABLE: E N A B L E ;
|
|
||||||
ENCRYPTION: E N C R Y P T I O N ;
|
|
||||||
END: E N D ;
|
|
||||||
ENDS: E N D S ;
|
|
||||||
ENGINE: E N G I N E ;
|
|
||||||
ENGINES: E N G I N E S ;
|
|
||||||
ERROR: E R R O R ;
|
|
||||||
ERRORS: E R R O R S ;
|
|
||||||
ESCAPE: E S C A P E ;
|
|
||||||
EVEN: E V E N ;
|
|
||||||
EVENT: E V E N T ;
|
|
||||||
EVENTS: E V E N T S ;
|
|
||||||
EVERY: E V E R Y ;
|
|
||||||
EXCHANGE: E X C H A N G E ;
|
|
||||||
EXCLUSIVE: E X C L U S I V E ;
|
|
||||||
EXPIRE: E X P I R E ;
|
|
||||||
EXPORT: E X P O R T ;
|
|
||||||
EXTENDED: E X T E N D E D ;
|
|
||||||
EXTENT_SIZE: E X T E N T '_' S I Z E ;
|
|
||||||
FAST: F A S T ;
|
|
||||||
FAULTS: F A U L T S ;
|
|
||||||
FIELDS: F I E L D S ;
|
|
||||||
FILE_BLOCK_SIZE: F I L E '_' B L O C K '_' S I Z E ;
|
|
||||||
FILTER: F I L T E R ;
|
|
||||||
FIRST: F I R S T ;
|
|
||||||
FIXED: F I X E D ;
|
|
||||||
FLUSH: F L U S H ;
|
|
||||||
FOLLOWS: F O L L O W S ;
|
|
||||||
FOUND: F O U N D ;
|
|
||||||
FULL: F U L L ;
|
|
||||||
FUNCTION: F U N C T I O N ;
|
|
||||||
GENERAL: G E N E R A L ;
|
|
||||||
GLOBAL: G L O B A L ;
|
|
||||||
GRANTS: G R A N T S ;
|
|
||||||
GROUP_REPLICATION: G R O U P '_' R E P L I C A T I O N ;
|
|
||||||
HANDLER: H A N D L E R ;
|
|
||||||
HASH: H A S H ;
|
|
||||||
HELP: H E L P ;
|
|
||||||
HOST: H O S T ;
|
|
||||||
HOSTS: H O S T S ;
|
|
||||||
IDENTIFIED: I D E N T I F I E D ;
|
|
||||||
IGNORE_SERVER_IDS: I G N O R E '_' S E R V E R '_' I D S ;
|
|
||||||
IMPORT: I M P O R T ;
|
|
||||||
INDEXES: I N D E X E S ;
|
|
||||||
INITIAL_SIZE: I N I T I A L '_' S I Z E ;
|
|
||||||
INPLACE: I N P L A C E ;
|
|
||||||
INSERT_METHOD: I N S E R T '_' M E T H O D ;
|
|
||||||
INSTALL: I N S T A L L ;
|
|
||||||
INSTANCE: I N S T A N C E ;
|
|
||||||
INVOKER: I N V O K E R ;
|
|
||||||
IO: I O ;
|
|
||||||
IO_THREAD: I O '_' T H R E A D ;
|
|
||||||
IPC: I P C ;
|
|
||||||
ISOLATION: I S O L A T I O N ;
|
|
||||||
ISSUER: I S S U E R ;
|
|
||||||
JSON: J S O N ;
|
|
||||||
KEY_BLOCK_SIZE: K E Y '_' B L O C K '_' S I Z E ;
|
|
||||||
LANGUAGE: L A N G U A G E ;
|
|
||||||
LAST: L A S T ;
|
|
||||||
LEAVES: L E A V E S ;
|
|
||||||
LESS: L E S S ;
|
|
||||||
LEVEL: L E V E L ;
|
|
||||||
LIST: L I S T ;
|
|
||||||
LOCAL: L O C A L ;
|
|
||||||
LOGFILE: L O G F I L E ;
|
|
||||||
LOGS: L O G S ;
|
|
||||||
MASTER: M A S T E R ;
|
|
||||||
MASTER_AUTO_POSITION: M A S T E R '_' A U T O '_' P O S I T I O N ;
|
|
||||||
MASTER_CONNECT_RETRY: M A S T E R '_' C O N N E C T '_' R E T R Y ;
|
|
||||||
MASTER_DELAY: M A S T E R '_' D E L A Y ;
|
|
||||||
MASTER_HEARTBEAT_PERIOD: M A S T E R '_' H E A R T B E A T '_' P E R I O D ;
|
|
||||||
MASTER_HOST: M A S T E R '_' H O S T ;
|
|
||||||
MASTER_LOG_FILE: M A S T E R '_' L O G '_' F I L E ;
|
|
||||||
MASTER_LOG_POS: M A S T E R '_' L O G '_' P O S ;
|
|
||||||
MASTER_PASSWORD: M A S T E R '_' P A S S W O R D ;
|
|
||||||
MASTER_PORT: M A S T E R '_' P O R T ;
|
|
||||||
MASTER_RETRY_COUNT: M A S T E R '_' R E T R Y '_' C O U N T ;
|
|
||||||
MASTER_SSL: M A S T E R '_' S S L ;
|
|
||||||
MASTER_SSL_CA: M A S T E R '_' S S L '_' C A ;
|
|
||||||
MASTER_SSL_CAPATH: M A S T E R '_' S S L '_' C A P A T H ;
|
|
||||||
MASTER_SSL_CERT: M A S T E R '_' S S L '_' C E R T ;
|
|
||||||
MASTER_SSL_CIPHER: M A S T E R '_' S S L '_' C I P H E R ;
|
|
||||||
MASTER_SSL_CRL: M A S T E R '_' S S L '_' C R L ;
|
|
||||||
MASTER_SSL_CRLPATH: M A S T E R '_' S S L '_' C R L P A T H ;
|
|
||||||
MASTER_SSL_KEY: M A S T E R '_' S S L '_' K E Y ;
|
|
||||||
MASTER_TLS_VERSION: M A S T E R '_' T L S '_' V E R S I O N ;
|
|
||||||
MASTER_USER: M A S T E R '_' U S E R ;
|
|
||||||
MAX_CONNECTIONS_PER_HOUR: M A X '_' C O N N E C T I O N S '_' P E R '_' H O U R ;
|
|
||||||
MAX_QUERIES_PER_HOUR: M A X '_' Q U E R I E S '_' P E R '_' H O U R ;
|
|
||||||
MAX_ROWS: M A X '_' R O W S ;
|
|
||||||
MAX_SIZE: M A X '_' S I Z E ;
|
|
||||||
MAX_UPDATES_PER_HOUR: M A X '_' U P D A T E S '_' P E R '_' H O U R ;
|
|
||||||
MAX_USER_CONNECTIONS: M A X '_' U S E R '_' C O N N E C T I O N S ;
|
|
||||||
MEDIUM: M E D I U M ;
|
|
||||||
MERGE: M E R G E ;
|
|
||||||
MID: M I D ;
|
|
||||||
MIGRATE: M I G R A T E ;
|
|
||||||
MIN_ROWS: M I N '_' R O W S ;
|
|
||||||
MODE: M O D E ;
|
|
||||||
MODIFY: M O D I F Y ;
|
|
||||||
MUTEX: M U T E X ;
|
|
||||||
MYSQL: M Y S Q L ;
|
|
||||||
NAME: N A M E ;
|
|
||||||
NAMES: N A M E S ;
|
|
||||||
NCHAR: N C H A R ;
|
|
||||||
NEVER: N E V E R ;
|
|
||||||
NEXT: N E X T ;
|
|
||||||
NO: N O ;
|
|
||||||
NODEGROUP: N O D E G R O U P ;
|
|
||||||
NONE: N O N E ;
|
|
||||||
OFFLINE: O F F L I N E ;
|
|
||||||
OFFSET: O F F S E T ;
|
|
||||||
OJ: O J ;
|
|
||||||
OLD_PASSWORD: O L D '_' P A S S W O R D ;
|
|
||||||
ONE: O N E ;
|
|
||||||
ONLINE: O N L I N E ;
|
|
||||||
ONLY: O N L Y ;
|
|
||||||
OPEN: O P E N ;
|
|
||||||
OPTIMIZER_COSTS: O P T I M I Z E R '_' C O S T S ;
|
|
||||||
OPTIONS: O P T I O N S ;
|
|
||||||
OWNER: O W N E R ;
|
|
||||||
PACK_KEYS: P A C K '_' K E Y S ;
|
|
||||||
PAGE: P A G E ;
|
|
||||||
PARSER: P A R S E R ;
|
|
||||||
PARTIAL: P A R T I A L ;
|
|
||||||
PARTITIONING: P A R T I T I O N I N G ;
|
|
||||||
PARTITIONS: P A R T I T I O N S ;
|
|
||||||
PASSWORD: P A S S W O R D ;
|
|
||||||
PHASE: P H A S E ;
|
|
||||||
PLUGIN: P L U G I N ;
|
|
||||||
PLUGIN_DIR: P L U G I N '_' D I R ;
|
|
||||||
PLUGINS: P L U G I N S ;
|
|
||||||
PORT: P O R T ;
|
|
||||||
PRECEDES: P R E C E D E S ;
|
|
||||||
PREPARE: P R E P A R E ;
|
|
||||||
PRESERVE: P R E S E R V E ;
|
|
||||||
PREV: P R E V ;
|
|
||||||
PROCESSLIST: P R O C E S S L I S T ;
|
|
||||||
PROFILE: P R O F I L E ;
|
|
||||||
PROFILES: P R O F I L E S ;
|
|
||||||
PROXY: P R O X Y ;
|
|
||||||
QUERY: Q U E R Y ;
|
|
||||||
QUICK: Q U I C K ;
|
|
||||||
REBUILD: R E B U I L D ;
|
|
||||||
RECOVER: R E C O V E R ;
|
|
||||||
REDO_BUFFER_SIZE: R E D O '_' B U F F E R '_' S I Z E ;
|
|
||||||
REDUNDANT: R E D U N D A N T ;
|
|
||||||
RELAY: R E L A Y ;
|
|
||||||
RELAY_LOG_FILE: R E L A Y '_' L O G '_' F I L E ;
|
|
||||||
RELAY_LOG_POS: R E L A Y '_' L O G '_' P O S ;
|
|
||||||
RELAYLOG: R E L A Y L O G ;
|
|
||||||
REMOVE: R E M O V E ;
|
|
||||||
REORGANIZE: R E O R G A N I Z E ;
|
|
||||||
REPAIR: R E P A I R ;
|
|
||||||
REPLICATE_DO_DB: R E P L I C A T E '_' D O '_' D B ;
|
|
||||||
REPLICATE_DO_TABLE: R E P L I C A T E '_' D O '_' T A B L E ;
|
|
||||||
REPLICATE_IGNORE_DB: R E P L I C A T E '_' I G N O R E '_' D B ;
|
|
||||||
REPLICATE_IGNORE_TABLE: R E P L I C A T E '_' I G N O R E '_' T A B L E ;
|
|
||||||
REPLICATE_REWRITE_DB: R E P L I C A T E '_' R E W R I T E '_' D B ;
|
|
||||||
REPLICATE_WILD_DO_TABLE: R E P L I C A T E '_' W I L D '_' D O '_' T A B L E ;
|
|
||||||
REPLICATE_WILD_IGNORE_TABLE: R E P L I C A T E '_' W I L D '_' I G N O R E '_' T A B L E ;
|
|
||||||
REPLICATION: R E P L I C A T I O N ;
|
|
||||||
RESET: R E S E T ;
|
|
||||||
RESUME: R E S U M E ;
|
|
||||||
RETURNS: R E T U R N S ;
|
|
||||||
ROLLBACK: R O L L B A C K ;
|
|
||||||
ROLLUP: R O L L U P ;
|
|
||||||
ROTATE: R O T A T E ;
|
|
||||||
ROW: R O W ;
|
|
||||||
ROWS: R O W S ;
|
|
||||||
ROW_FORMAT: R O W '_' F O R M A T ;
|
|
||||||
SAVEPOINT: S A V E P O I N T ;
|
|
||||||
SCHEDULE: S C H E D U L E ;
|
|
||||||
SECURITY: S E C U R I T Y ;
|
|
||||||
SERVER: S E R V E R ;
|
|
||||||
SESSION: S E S S I O N ;
|
|
||||||
SHARE: S H A R E ;
|
|
||||||
SHARED: S H A R E D ;
|
|
||||||
SIGNED: S I G N E D ;
|
|
||||||
SIMPLE: S I M P L E ;
|
|
||||||
SLAVE: S L A V E ;
|
|
||||||
SLOW: S L O W ;
|
|
||||||
SNAPSHOT: S N A P S H O T ;
|
|
||||||
SOCKET: S O C K E T ;
|
|
||||||
SOME: S O M E ;
|
|
||||||
SONAME: S O N A M E ;
|
|
||||||
SOUNDS: S O U N D S ;
|
|
||||||
SOURCE: S O U R C E ;
|
|
||||||
SQL_AFTER_GTIDS: S Q L '_' A F T E R '_' G T I D S ;
|
|
||||||
SQL_AFTER_MTS_GAPS: S Q L '_' A F T E R '_' M T S '_' G A P S ;
|
|
||||||
SQL_BEFORE_GTIDS: S Q L '_' B E F O R E '_' G T I D S ;
|
|
||||||
SQL_BUFFER_RESULT: S Q L '_' B U F F E R '_' R E S U L T ;
|
|
||||||
SQL_CACHE: S Q L '_' C A C H E ;
|
|
||||||
SQL_NO_CACHE: S Q L '_' N O '_' C A C H E ;
|
|
||||||
SQL_THREAD: S Q L '_' T H R E A D ;
|
|
||||||
START: S T A R T ;
|
|
||||||
STARTS: S T A R T S ;
|
|
||||||
STATS_AUTO_RECALC: S T A T S '_' A U T O '_' R E C A L C ;
|
|
||||||
STATS_PERSISTENT: S T A T S '_' P E R S I S T E N T ;
|
|
||||||
STATS_SAMPLE_PAGES: S T A T S '_' S A M P L E '_' P A G E S ;
|
|
||||||
STATUS: S T A T U S ;
|
|
||||||
STOP: S T O P ;
|
|
||||||
STORAGE: S T O R A G E ;
|
|
||||||
STRING: S T R I N G ;
|
|
||||||
SUBJECT: S U B J E C T ;
|
|
||||||
SUBPARTITION: S U B P A R T I T I O N ;
|
|
||||||
SUBPARTITIONS: S U B P A R T I T I O N S ;
|
|
||||||
SUSPEND: S U S P E N D ;
|
|
||||||
SWAPS: S W A P S ;
|
|
||||||
SWITCHES: S W I T C H E S ;
|
|
||||||
TABLESPACE: T A B L E S P A C E ;
|
|
||||||
TEMPORARY: T E M P O R A R Y ;
|
|
||||||
TEMPTABLE: T E M P T A B L E ;
|
|
||||||
THAN: T H A N ;
|
|
||||||
TRADITIONAL: T R A D I T I O N A L ;
|
|
||||||
TRANSACTION: T R A N S A C T I O N ;
|
|
||||||
TRIGGERS: T R I G G E R S ;
|
|
||||||
TRUNCATE: T R U N C A T E ;
|
|
||||||
UNDEFINED: U N D E F I N E D ;
|
|
||||||
UNDOFILE: U N D O F I L E ;
|
|
||||||
UNDO_BUFFER_SIZE: U N D O '_' B U F F E R '_' S I Z E ;
|
|
||||||
UNINSTALL: U N I N S T A L L ;
|
|
||||||
UNKNOWN: U N K N O W N ;
|
|
||||||
UNTIL: U N T I L ;
|
|
||||||
UPGRADE: U P G R A D E ;
|
|
||||||
USER: U S E R ;
|
|
||||||
USE_FRM: U S E '_' F R M ;
|
|
||||||
USER_RESOURCES: U S E R '_' R E S O U R C E S ;
|
|
||||||
VALIDATION: V A L I D A T I O N ;
|
|
||||||
VALUE: V A L U E ;
|
|
||||||
VARIABLES: V A R I A B L E S ;
|
|
||||||
VIEW: V I E W ;
|
|
||||||
WAIT: W A I T ;
|
|
||||||
WARNINGS: W A R N I N G S ;
|
|
||||||
WITHOUT: W I T H O U T ;
|
|
||||||
WORK: W O R K ;
|
|
||||||
WRAPPER: W R A P P E R ;
|
|
||||||
X509: X '5' '0' '9' ;
|
|
||||||
XA: X A ;
|
|
||||||
XML: X M L ;
|
|
||||||
|
|
||||||
|
|
||||||
// Date format Keywords
|
|
||||||
|
|
||||||
EUR: E U R ;
|
|
||||||
USA: U S A ;
|
|
||||||
JIS: J I S ;
|
|
||||||
ISO: I S O ;
|
|
||||||
INTERNAL: I N T E R N A L ;
|
|
||||||
|
|
||||||
|
|
||||||
// Interval type Keywords
|
|
||||||
|
|
||||||
QUARTER: Q U A R T E R ;
|
|
||||||
MONTH: M O N T H ;
|
|
||||||
DAY: D A Y ;
|
|
||||||
HOUR: H O U R ;
|
|
||||||
MINUTE: M I N U T E ;
|
|
||||||
WEEK: W E E K ;
|
|
||||||
SECOND: S E C O N D ;
|
|
||||||
MICROSECOND: M I C R O S E C O N D ;
|
|
||||||
|
|
||||||
|
|
||||||
// PRIVILEGES
|
|
||||||
|
|
||||||
TABLES: T A B L E S ;
|
|
||||||
ROUTINE: R O U T I N E ;
|
|
||||||
EXECUTE: E X E C U T E ;
|
|
||||||
FILE: F I L E ;
|
|
||||||
PROCESS: P R O C E S S ;
|
|
||||||
RELOAD: R E L O A D ;
|
|
||||||
SHUTDOWN: S H U T D O W N ;
|
|
||||||
SUPER: S U P E R ;
|
|
||||||
PRIVILEGES: P R I V I L E G E S ;
|
|
||||||
|
|
||||||
|
|
||||||
// Charsets
|
|
||||||
|
|
||||||
ARMSCII8: A R M S C I I '8' ;
|
|
||||||
ASCII: A S C I I ;
|
|
||||||
BIG5: B I G '5' ;
|
|
||||||
CP1250: C P '1' '2' '5' '0' ;
|
|
||||||
CP1251: C P '1' '2' '5' '1' ;
|
|
||||||
CP1256: C P '1' '2' '5' '6' ;
|
|
||||||
CP1257: C P '1' '2' '5' '7' ;
|
|
||||||
CP850: C P '8' '5' '0' ;
|
|
||||||
CP852: C P '8' '5' '2' ;
|
|
||||||
CP866: C P '8' '6' '6' ;
|
|
||||||
CP932: C P '9' '3' '2' ;
|
|
||||||
DEC8: D E C '8' ;
|
|
||||||
EUCJPMS: E U C J P M S ;
|
|
||||||
EUCKR: E U C K R ;
|
|
||||||
GB2312: G B '2' '3' '1' '2' ;
|
|
||||||
GBK: G B K ;
|
|
||||||
GEOSTD8: G E O S T D '8' ;
|
|
||||||
GREEK: G R E E K ;
|
|
||||||
HEBREW: H E B R E W ;
|
|
||||||
HP8: H P '8' ;
|
|
||||||
KEYBCS2: K E Y B C S '2' ;
|
|
||||||
KOI8R: K O I '8' R ;
|
|
||||||
KOI8U: K O I '8' U ;
|
|
||||||
LATIN1: L A T I N '1' ;
|
|
||||||
LATIN2: L A T I N '2' ;
|
|
||||||
LATIN5: L A T I N '5' ;
|
|
||||||
LATIN7: L A T I N '7' ;
|
|
||||||
MACCE: M A C C E ;
|
|
||||||
MACROMAN: M A C R O M A N ;
|
|
||||||
SJIS: S J I S ;
|
|
||||||
SWE7: S W E '7' ;
|
|
||||||
TIS620: T I S '6' '2' '0' ;
|
|
||||||
UCS2: U C S '2' ;
|
|
||||||
UJIS: U J I S ;
|
|
||||||
UTF16: U T F '1' '6' ;
|
|
||||||
UTF16LE: U T F '1' '6' L E ;
|
|
||||||
UTF32: U T F '3' '2' ;
|
|
||||||
UTF8: U T F '8' ;
|
|
||||||
UTF8MB3: U T F '8' M B '3' ;
|
|
||||||
UTF8MB4: U T F '8' M B '4' ;
|
|
||||||
|
|
||||||
|
|
||||||
// DB Engines
|
|
||||||
|
|
||||||
ARCHIVE: A R C H I V E ;
|
|
||||||
BLACKHOLE: B L A C K H O L E ;
|
|
||||||
CSV: C S V ;
|
|
||||||
FEDERATED: F E D E R A T E D ;
|
|
||||||
INNODB: I N N O D B ;
|
|
||||||
MEMORY: M E M O R Y ;
|
|
||||||
MRG_MYISAM: M R G '_' M Y I S A M ;
|
|
||||||
MYISAM: M Y I S A M ;
|
|
||||||
NDB: N D B ;
|
|
||||||
NDBCLUSTER: N D B C L U S T E R ;
|
|
||||||
PERFOMANCE_SCHEMA: P E R F O M A N C E '_' S C H E M A ;
|
|
||||||
|
|
||||||
|
|
||||||
// Transaction Levels
|
|
||||||
|
|
||||||
REPEATABLE: R E P E A T A B L E ;
|
|
||||||
COMMITTED: C O M M I T T E D ;
|
|
||||||
UNCOMMITTED: U N C O M M I T T E D ;
|
|
||||||
SERIALIZABLE: S E R I A L I Z A B L E ;
|
|
||||||
|
|
||||||
|
|
||||||
// Spatial data types
|
|
||||||
|
|
||||||
GEOMETRYCOLLECTION: G E O M E T R Y C O L L E C T I O N ;
|
|
||||||
LINESTRING: L I N E S T R I N G ;
|
|
||||||
MULTILINESTRING: M U L T I L I N E S T R I N G ;
|
|
||||||
MULTIPOINT: M U L T I P O I N T ;
|
|
||||||
MULTIPOLYGON: M U L T I P O L Y G O N ;
|
|
||||||
POINT: P O I N T ;
|
|
||||||
POLYGON: P O L Y G O N ;
|
|
||||||
|
|
||||||
|
|
||||||
// Common function names
|
|
||||||
|
|
||||||
ABS: A B S ;
|
|
||||||
ACOS: A C O S ;
|
|
||||||
ADDDATE: A D D D A T E ;
|
|
||||||
ADDTIME: A D D T I M E ;
|
|
||||||
AES_DECRYPT: A E S '_' D E C R Y P T ;
|
|
||||||
AES_ENCRYPT: A E S '_' E N C R Y P T ;
|
|
||||||
AREA: A R E A ;
|
|
||||||
ASBINARY: A S B I N A R Y ;
|
|
||||||
ASIN: A S I N ;
|
|
||||||
ASTEXT: A S T E X T ;
|
|
||||||
ASWKB: A S W K B ;
|
|
||||||
ASWKT: A S W K T ;
|
|
||||||
ASYMMETRIC_DECRYPT: A S Y M M E T R I C '_' D E C R Y P T ;
|
|
||||||
ASYMMETRIC_DERIVE: A S Y M M E T R I C '_' D E R I V E ;
|
|
||||||
ASYMMETRIC_ENCRYPT: A S Y M M E T R I C '_' E N C R Y P T ;
|
|
||||||
ASYMMETRIC_SIGN: A S Y M M E T R I C '_' S I G N ;
|
|
||||||
ASYMMETRIC_VERIFY: A S Y M M E T R I C '_' V E R I F Y ;
|
|
||||||
ATAN: A T A N ;
|
|
||||||
ATAN2: A T A N '2' ;
|
|
||||||
BENCHMARK: B E N C H M A R K ;
|
|
||||||
BIN: B I N ;
|
|
||||||
BIT_COUNT: B I T '_' C O U N T ;
|
|
||||||
BIT_LENGTH: B I T '_' L E N G T H ;
|
|
||||||
BUFFER: B U F F E R ;
|
|
||||||
CEIL: C E I L ;
|
|
||||||
CEILING: C E I L I N G ;
|
|
||||||
CENTROID: C E N T R O I D ;
|
|
||||||
CHARACTER_LENGTH: C H A R A C T E R '_' L E N G T H ;
|
|
||||||
CHARSET: C H A R S E T ;
|
|
||||||
CHAR_LENGTH: C H A R '_' L E N G T H ;
|
|
||||||
COERCIBILITY: C O E R C I B I L I T Y ;
|
|
||||||
COLLATION: C O L L A T I O N ;
|
|
||||||
COMPRESS: C O M P R E S S ;
|
|
||||||
CONCAT: C O N C A T ;
|
|
||||||
CONCAT_WS: C O N C A T '_' W S ;
|
|
||||||
CONNECTION_ID: C O N N E C T I O N '_' I D ;
|
|
||||||
CONV: C O N V ;
|
|
||||||
CONVERT_TZ: C O N V E R T '_' T Z ;
|
|
||||||
COS: C O S ;
|
|
||||||
COT: C O T ;
|
|
||||||
CRC32: C R C '3' '2' ;
|
|
||||||
CREATE_ASYMMETRIC_PRIV_KEY: C R E A T E '_' A S Y M M E T R I C '_' P R I V '_' K E Y ;
|
|
||||||
CREATE_ASYMMETRIC_PUB_KEY: C R E A T E '_' A S Y M M E T R I C '_' P U B '_' K E Y ;
|
|
||||||
CREATE_DH_PARAMETERS: C R E A T E '_' D H '_' P A R A M E T E R S ;
|
|
||||||
CREATE_DIGEST: C R E A T E '_' D I G E S T ;
|
|
||||||
CROSSES: C R O S S E S ;
|
|
||||||
DATEDIFF: D A T E D I F F ;
|
|
||||||
DATE_FORMAT: D A T E '_' F O R M A T ;
|
|
||||||
DAYNAME: D A Y N A M E ;
|
|
||||||
DAYOFMONTH: D A Y O F M O N T H ;
|
|
||||||
DAYOFWEEK: D A Y O F W E E K ;
|
|
||||||
DAYOFYEAR: D A Y O F Y E A R ;
|
|
||||||
DECODE: D E C O D E ;
|
|
||||||
DEGREES: D E G R E E S ;
|
|
||||||
DES_DECRYPT: D E S '_' D E C R Y P T ;
|
|
||||||
DES_ENCRYPT: D E S '_' E N C R Y P T ;
|
|
||||||
DIMENSION: D I M E N S I O N ;
|
|
||||||
DISJOINT: D I S J O I N T ;
|
|
||||||
ELT: E L T ;
|
|
||||||
ENCODE: E N C O D E ;
|
|
||||||
ENCRYPT: E N C R Y P T ;
|
|
||||||
ENDPOINT: E N D P O I N T ;
|
|
||||||
ENVELOPE: E N V E L O P E ;
|
|
||||||
EQUALS: E Q U A L S ;
|
|
||||||
EXP: E X P ;
|
|
||||||
EXPORT_SET: E X P O R T '_' S E T ;
|
|
||||||
EXTERIORRING: E X T E R I O R R I N G ;
|
|
||||||
EXTRACTVALUE: E X T R A C T V A L U E ;
|
|
||||||
FIELD: F I E L D ;
|
|
||||||
FIND_IN_SET: F I N D '_' I N '_' S E T ;
|
|
||||||
FLOOR: F L O O R ;
|
|
||||||
FORMAT: F O R M A T ;
|
|
||||||
FOUND_ROWS: F O U N D '_' R O W S ;
|
|
||||||
FROM_BASE64: F R O M '_' B A S E '6' '4' ;
|
|
||||||
FROM_DAYS: F R O M '_' D A Y S ;
|
|
||||||
FROM_UNIXTIME: F R O M '_' U N I X T I M E ;
|
|
||||||
GEOMCOLLFROMTEXT: G E O M C O L L F R O M T E X T ;
|
|
||||||
GEOMCOLLFROMWKB: G E O M C O L L F R O M W K B ;
|
|
||||||
GEOMETRYCOLLECTIONFROMTEXT: G E O M E T R Y C O L L E C T I O N F R O M T E X T ;
|
|
||||||
GEOMETRYCOLLECTIONFROMWKB: G E O M E T R Y C O L L E C T I O N F R O M W K B ;
|
|
||||||
GEOMETRYFROMTEXT: G E O M E T R Y F R O M T E X T ;
|
|
||||||
GEOMETRYFROMWKB: G E O M E T R Y F R O M W K B ;
|
|
||||||
GEOMETRYN: G E O M E T R Y N ;
|
|
||||||
GEOMETRYTYPE: G E O M E T R Y T Y P E ;
|
|
||||||
GEOMFROMTEXT: G E O M F R O M T E X T ;
|
|
||||||
GEOMFROMWKB: G E O M F R O M W K B ;
|
|
||||||
GET_FORMAT: G E T '_' F O R M A T ;
|
|
||||||
GET_LOCK: G E T '_' L O C K ;
|
|
||||||
GLENGTH: G L E N G T H ;
|
|
||||||
GREATEST: G R E A T E S T ;
|
|
||||||
GTID_SUBSET: G T I D '_' S U B S E T ;
|
|
||||||
GTID_SUBTRACT: G T I D '_' S U B T R A C T ;
|
|
||||||
HEX: H E X ;
|
|
||||||
IFNULL: I F N U L L ;
|
|
||||||
INET6_ATON: I N E T '6' '_' A T O N ;
|
|
||||||
INET6_NTOA: I N E T '6' '_' N T O A ;
|
|
||||||
INET_ATON: I N E T '_' A T O N ;
|
|
||||||
INET_NTOA: I N E T '_' N T O A ;
|
|
||||||
INSTR: I N S T R ;
|
|
||||||
INTERIORRINGN: I N T E R I O R R I N G N ;
|
|
||||||
INTERSECTS: I N T E R S E C T S ;
|
|
||||||
ISCLOSED: I S C L O S E D ;
|
|
||||||
ISEMPTY: I S E M P T Y ;
|
|
||||||
ISNULL: I S N U L L ;
|
|
||||||
ISSIMPLE: I S S I M P L E ;
|
|
||||||
IS_FREE_LOCK: I S '_' F R E E '_' L O C K ;
|
|
||||||
IS_IPV4: I S '_' I P V '4' ;
|
|
||||||
IS_IPV4_COMPAT: I S '_' I P V '4' '_' C O M P A T ;
|
|
||||||
IS_IPV4_MAPPED: I S '_' I P V '4' '_' M A P P E D ;
|
|
||||||
IS_IPV6: I S '_' I P V '6' ;
|
|
||||||
IS_USED_LOCK: I S '_' U S E D '_' L O C K ;
|
|
||||||
LAST_INSERT_ID: L A S T '_' I N S E R T '_' I D ;
|
|
||||||
LCASE: L C A S E ;
|
|
||||||
LEAST: L E A S T ;
|
|
||||||
LENGTH: L E N G T H ;
|
|
||||||
LINEFROMTEXT: L I N E F R O M T E X T ;
|
|
||||||
LINEFROMWKB: L I N E F R O M W K B ;
|
|
||||||
LINESTRINGFROMTEXT: L I N E S T R I N G F R O M T E X T ;
|
|
||||||
LINESTRINGFROMWKB: L I N E S T R I N G F R O M W K B ;
|
|
||||||
LN: L N ;
|
|
||||||
LOAD_FILE: L O A D '_' F I L E ;
|
|
||||||
LOCATE: L O C A T E ;
|
|
||||||
LOG: L O G ;
|
|
||||||
LOG10: L O G '1' '0' ;
|
|
||||||
LOG2: L O G '2' ;
|
|
||||||
LOWER: L O W E R ;
|
|
||||||
LPAD: L P A D ;
|
|
||||||
LTRIM: L T R I M ;
|
|
||||||
MAKEDATE: M A K E D A T E ;
|
|
||||||
MAKETIME: M A K E T I M E ;
|
|
||||||
MAKE_SET: M A K E '_' S E T ;
|
|
||||||
MASTER_POS_WAIT: M A S T E R '_' P O S '_' W A I T ;
|
|
||||||
MBRCONTAINS: M B R C O N T A I N S ;
|
|
||||||
MBRDISJOINT: M B R D I S J O I N T ;
|
|
||||||
MBREQUAL: M B R E Q U A L ;
|
|
||||||
MBRINTERSECTS: M B R I N T E R S E C T S ;
|
|
||||||
MBROVERLAPS: M B R O V E R L A P S ;
|
|
||||||
MBRTOUCHES: M B R T O U C H E S ;
|
|
||||||
MBRWITHIN: M B R W I T H I N ;
|
|
||||||
MD5: M D '5' ;
|
|
||||||
MLINEFROMTEXT: M L I N E F R O M T E X T ;
|
|
||||||
MLINEFROMWKB: M L I N E F R O M W K B ;
|
|
||||||
MONTHNAME: M O N T H N A M E ;
|
|
||||||
MPOINTFROMTEXT: M P O I N T F R O M T E X T ;
|
|
||||||
MPOINTFROMWKB: M P O I N T F R O M W K B ;
|
|
||||||
MPOLYFROMTEXT: M P O L Y F R O M T E X T ;
|
|
||||||
MPOLYFROMWKB: M P O L Y F R O M W K B ;
|
|
||||||
MULTILINESTRINGFROMTEXT: M U L T I L I N E S T R I N G F R O M T E X T ;
|
|
||||||
MULTILINESTRINGFROMWKB: M U L T I L I N E S T R I N G F R O M W K B ;
|
|
||||||
MULTIPOINTFROMTEXT: M U L T I P O I N T F R O M T E X T ;
|
|
||||||
MULTIPOINTFROMWKB: M U L T I P O I N T F R O M W K B ;
|
|
||||||
MULTIPOLYGONFROMTEXT: M U L T I P O L Y G O N F R O M T E X T ;
|
|
||||||
MULTIPOLYGONFROMWKB: M U L T I P O L Y G O N F R O M W K B ;
|
|
||||||
NAME_CONST: N A M E '_' C O N S T ;
|
|
||||||
NULLIF: N U L L I F ;
|
|
||||||
NUMGEOMETRIES: N U M G E O M E T R I E S ;
|
|
||||||
NUMINTERIORRINGS: N U M I N T E R I O R R I N G S ;
|
|
||||||
NUMPOINTS: N U M P O I N T S ;
|
|
||||||
OCT: O C T ;
|
|
||||||
OCTET_LENGTH: O C T E T '_' L E N G T H ;
|
|
||||||
ORD: O R D ;
|
|
||||||
OVERLAPS: O V E R L A P S ;
|
|
||||||
PERIOD_ADD: P E R I O D '_' A D D ;
|
|
||||||
PERIOD_DIFF: P E R I O D '_' D I F F ;
|
|
||||||
PI: P I ;
|
|
||||||
POINTFROMTEXT: P O I N T F R O M T E X T ;
|
|
||||||
POINTFROMWKB: P O I N T F R O M W K B ;
|
|
||||||
POINTN: P O I N T N ;
|
|
||||||
POLYFROMTEXT: P O L Y F R O M T E X T ;
|
|
||||||
POLYFROMWKB: P O L Y F R O M W K B ;
|
|
||||||
POLYGONFROMTEXT: P O L Y G O N F R O M T E X T ;
|
|
||||||
POLYGONFROMWKB: P O L Y G O N F R O M W K B ;
|
|
||||||
POW: P O W ;
|
|
||||||
POWER: P O W E R ;
|
|
||||||
QUOTE: Q U O T E ;
|
|
||||||
RADIANS: R A D I A N S ;
|
|
||||||
RAND: R A N D ;
|
|
||||||
RANDOM_BYTES: R A N D O M '_' B Y T E S ;
|
|
||||||
RELEASE_LOCK: R E L E A S E '_' L O C K ;
|
|
||||||
REVERSE: R E V E R S E ;
|
|
||||||
ROUND: R O U N D ;
|
|
||||||
ROW_COUNT: R O W '_' C O U N T ;
|
|
||||||
RPAD: R P A D ;
|
|
||||||
RTRIM: R T R I M ;
|
|
||||||
SEC_TO_TIME: S E C '_' T O '_' T I M E ;
|
|
||||||
SESSION_USER: S E S S I O N '_' U S E R ;
|
|
||||||
SHA: S H A ;
|
|
||||||
SHA1: S H A '1' ;
|
|
||||||
SHA2: S H A '2' ;
|
|
||||||
SIGN: S I G N ;
|
|
||||||
SIN: S I N ;
|
|
||||||
SLEEP: S L E E P ;
|
|
||||||
SOUNDEX: S O U N D E X ;
|
|
||||||
SQL_THREAD_WAIT_AFTER_GTIDS: S Q L '_' T H R E A D '_' W A I T '_' A F T E R '_' G T I D S ;
|
|
||||||
SQRT: S Q R T ;
|
|
||||||
SRID: S R I D ;
|
|
||||||
STARTPOINT: S T A R T P O I N T ;
|
|
||||||
STRCMP: S T R C M P ;
|
|
||||||
STR_TO_DATE: S T R '_' T O '_' D A T E ;
|
|
||||||
ST_AREA: S T '_' A R E A ;
|
|
||||||
ST_ASBINARY: S T '_' A S B I N A R Y ;
|
|
||||||
ST_ASTEXT: S T '_' A S T E X T ;
|
|
||||||
ST_ASWKB: S T '_' A S W K B ;
|
|
||||||
ST_ASWKT: S T '_' A S W K T ;
|
|
||||||
ST_BUFFER: S T '_' B U F F E R ;
|
|
||||||
ST_CENTROID: S T '_' C E N T R O I D ;
|
|
||||||
ST_CONTAINS: S T '_' C O N T A I N S ;
|
|
||||||
ST_CROSSES: S T '_' C R O S S E S ;
|
|
||||||
ST_DIFFERENCE: S T '_' D I F F E R E N C E ;
|
|
||||||
ST_DIMENSION: S T '_' D I M E N S I O N ;
|
|
||||||
ST_DISJOINT: S T '_' D I S J O I N T ;
|
|
||||||
ST_DISTANCE: S T '_' D I S T A N C E ;
|
|
||||||
ST_ENDPOINT: S T '_' E N D P O I N T ;
|
|
||||||
ST_ENVELOPE: S T '_' E N V E L O P E ;
|
|
||||||
ST_EQUALS: S T '_' E Q U A L S ;
|
|
||||||
ST_EXTERIORRING: S T '_' E X T E R I O R R I N G ;
|
|
||||||
ST_GEOMCOLLFROMTEXT: S T '_' G E O M C O L L F R O M T E X T ;
|
|
||||||
ST_GEOMCOLLFROMTXT: S T '_' G E O M C O L L F R O M T X T ;
|
|
||||||
ST_GEOMCOLLFROMWKB: S T '_' G E O M C O L L F R O M W K B ;
|
|
||||||
ST_GEOMETRYCOLLECTIONFROMTEXT: S T '_' G E O M E T R Y C O L L E C T I O N F R O M T E X T ;
|
|
||||||
ST_GEOMETRYCOLLECTIONFROMWKB: S T '_' G E O M E T R Y C O L L E C T I O N F R O M W K B ;
|
|
||||||
ST_GEOMETRYFROMTEXT: S T '_' G E O M E T R Y F R O M T E X T ;
|
|
||||||
ST_GEOMETRYFROMWKB: S T '_' G E O M E T R Y F R O M W K B ;
|
|
||||||
ST_GEOMETRYN: S T '_' G E O M E T R Y N ;
|
|
||||||
ST_GEOMETRYTYPE: S T '_' G E O M E T R Y T Y P E ;
|
|
||||||
ST_GEOMFROMTEXT: S T '_' G E O M F R O M T E X T ;
|
|
||||||
ST_GEOMFROMWKB: S T '_' G E O M F R O M W K B ;
|
|
||||||
ST_INTERIORRINGN: S T '_' I N T E R I O R R I N G N ;
|
|
||||||
ST_INTERSECTION: S T '_' I N T E R S E C T I O N ;
|
|
||||||
ST_INTERSECTS: S T '_' I N T E R S E C T S ;
|
|
||||||
ST_ISCLOSED: S T '_' I S C L O S E D ;
|
|
||||||
ST_ISEMPTY: S T '_' I S E M P T Y ;
|
|
||||||
ST_ISSIMPLE: S T '_' I S S I M P L E ;
|
|
||||||
ST_LINEFROMTEXT: S T '_' L I N E F R O M T E X T ;
|
|
||||||
ST_LINEFROMWKB: S T '_' L I N E F R O M W K B ;
|
|
||||||
ST_LINESTRINGFROMTEXT: S T '_' L I N E S T R I N G F R O M T E X T ;
|
|
||||||
ST_LINESTRINGFROMWKB: S T '_' L I N E S T R I N G F R O M W K B ;
|
|
||||||
ST_NUMGEOMETRIES: S T '_' N U M G E O M E T R I E S ;
|
|
||||||
ST_NUMINTERIORRING: S T '_' N U M I N T E R I O R R I N G ;
|
|
||||||
ST_NUMINTERIORRINGS: S T '_' N U M I N T E R I O R R I N G S ;
|
|
||||||
ST_NUMPOINTS: S T '_' N U M P O I N T S ;
|
|
||||||
ST_OVERLAPS: S T '_' O V E R L A P S ;
|
|
||||||
ST_POINTFROMTEXT: S T '_' P O I N T F R O M T E X T ;
|
|
||||||
ST_POINTFROMWKB: S T '_' P O I N T F R O M W K B ;
|
|
||||||
ST_POINTN: S T '_' P O I N T N ;
|
|
||||||
ST_POLYFROMTEXT: S T '_' P O L Y F R O M T E X T ;
|
|
||||||
ST_POLYFROMWKB: S T '_' P O L Y F R O M W K B ;
|
|
||||||
ST_POLYGONFROMTEXT: S T '_' P O L Y G O N F R O M T E X T ;
|
|
||||||
ST_POLYGONFROMWKB: S T '_' P O L Y G O N F R O M W K B ;
|
|
||||||
ST_SRID: S T '_' S R I D ;
|
|
||||||
ST_STARTPOINT: S T '_' S T A R T P O I N T ;
|
|
||||||
ST_SYMDIFFERENCE: S T '_' S Y M D I F F E R E N C E ;
|
|
||||||
ST_TOUCHES: S T '_' T O U C H E S ;
|
|
||||||
ST_UNION: S T '_' U N I O N ;
|
|
||||||
ST_WITHIN: S T '_' W I T H I N ;
|
|
||||||
ST_X: S T '_' X ;
|
|
||||||
ST_Y: S T '_' Y ;
|
|
||||||
SUBDATE: S U B D A T E ;
|
|
||||||
SUBSTRING_INDEX: S U B S T R I N G '_' I N D E X ;
|
|
||||||
SUBTIME: S U B T I M E ;
|
|
||||||
SYSTEM_USER: S Y S T E M '_' U S E R ;
|
|
||||||
TAN: T A N ;
|
|
||||||
TIMEDIFF: T I M E D I F F ;
|
|
||||||
TIMESTAMPADD: T I M E S T A M P A D D ;
|
|
||||||
TIMESTAMPDIFF: T I M E S T A M P D I F F ;
|
|
||||||
TIME_FORMAT: T I M E '_' F O R M A T ;
|
|
||||||
TIME_TO_SEC: T I M E '_' T O '_' S E C ;
|
|
||||||
TOUCHES: T O U C H E S ;
|
|
||||||
TO_BASE64: T O '_' B A S E '6' '4' ;
|
|
||||||
TO_DAYS: T O '_' D A Y S ;
|
|
||||||
TO_SECONDS: T O '_' S E C O N D S ;
|
|
||||||
UCASE: U C A S E ;
|
|
||||||
UNCOMPRESS: U N C O M P R E S S ;
|
|
||||||
UNCOMPRESSED_LENGTH: U N C O M P R E S S E D '_' L E N G T H ;
|
|
||||||
UNHEX: U N H E X ;
|
|
||||||
UNIX_TIMESTAMP: U N I X '_' T I M E S T A M P ;
|
|
||||||
UPDATEXML: U P D A T E X M L ;
|
|
||||||
UPPER: U P P E R ;
|
|
||||||
UUID: U U I D ;
|
|
||||||
UUID_SHORT: U U I D '_' S H O R T ;
|
|
||||||
VALIDATE_PASSWORD_STRENGTH: V A L I D A T E '_' P A S S W O R D '_' S T R E N G T H ;
|
|
||||||
VERSION: V E R S I O N ;
|
|
||||||
WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS: W A I T '_' U N T I L '_' S Q L '_' T H R E A D '_' A F T E R '_' G T I D S ;
|
|
||||||
WEEKDAY: W E E K D A Y ;
|
|
||||||
WEEKOFYEAR: W E E K O F Y E A R ;
|
|
||||||
WEIGHT_STRING: W E I G H T '_' S T R I N G ;
|
|
||||||
WITHIN: W I T H I N ;
|
|
||||||
YEARWEEK: Y E A R W E E K ;
|
|
||||||
Y_FUNCTION: Y ;
|
|
||||||
X_FUNCTION: X ;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Operators
|
|
||||||
// Operators. Assigns
|
|
||||||
|
|
||||||
VAR_ASSIGN: ':=';
|
|
||||||
PLUS_ASSIGN: '+=';
|
|
||||||
MINUS_ASSIGN: '-=';
|
|
||||||
MULT_ASSIGN: '*=';
|
|
||||||
DIV_ASSIGN: '/=';
|
|
||||||
MOD_ASSIGN: '%=';
|
|
||||||
AND_ASSIGN: '&=';
|
|
||||||
XOR_ASSIGN: '^=';
|
|
||||||
OR_ASSIGN: '|=';
|
|
||||||
|
|
||||||
|
|
||||||
// Operators. Arithmetics
|
|
||||||
|
|
||||||
STAR: '*';
|
|
||||||
DIVIDE: '/';
|
|
||||||
MODULE: '%';
|
|
||||||
PLUS: '+';
|
|
||||||
MINUSMINUS: '--';
|
|
||||||
MINUS: '-';
|
|
||||||
DIV: D I V ;
|
|
||||||
MOD: M O D;
|
|
||||||
|
|
||||||
|
|
||||||
// Operators. Comparation
|
|
||||||
|
|
||||||
EQUAL_SYMBOL: '=';
|
|
||||||
GREATER_SYMBOL: '>';
|
|
||||||
LESS_SYMBOL: '<';
|
|
||||||
EXCLAMATION_SYMBOL: '!';
|
|
||||||
|
|
||||||
|
|
||||||
// Operators. Bit
|
|
||||||
|
|
||||||
BIT_NOT_OP: '~';
|
|
||||||
BIT_OR_OP: '|';
|
|
||||||
BIT_AND_OP: '&';
|
|
||||||
BIT_XOR_OP: '^';
|
|
||||||
|
|
||||||
|
|
||||||
// Constructors symbols
|
|
||||||
|
|
||||||
DOT: '.';
|
|
||||||
LR_BRACKET: '(';
|
|
||||||
RR_BRACKET: ')';
|
|
||||||
COMMA: ',';
|
|
||||||
SEMI: ';';
|
|
||||||
AT_SIGN: '@';
|
|
||||||
ZERO_DECIMAL: '0';
|
|
||||||
ONE_DECIMAL: '1';
|
|
||||||
TWO_DECIMAL: '2';
|
|
||||||
SINGLE_QUOTE_SYMB: '\'';
|
|
||||||
DOUBLE_QUOTE_SYMB: '"';
|
|
||||||
REVERSE_QUOTE_SYMB: '`';
|
|
||||||
COLON_SYMB: ':';
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Charsets
|
|
||||||
|
|
||||||
CHARSET_REVERSE_QOUTE_STRING: '`' CHARSET_NAME '`';
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// File's sizes
|
|
||||||
|
|
||||||
|
|
||||||
FILESIZE_LITERAL: DEC_DIGIT+ ('K'|'M'|'G'|'T');
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Literal Primitives
|
|
||||||
|
|
||||||
|
|
||||||
START_NATIONAL_STRING_LITERAL: 'N' SQUOTA_STRING;
|
|
||||||
STRING_LITERAL: DQUOTA_STRING | SQUOTA_STRING;
|
|
||||||
DECIMAL_LITERAL: DEC_DIGIT+;
|
|
||||||
HEXADECIMAL_LITERAL: 'X' '\'' (HEX_DIGIT HEX_DIGIT)+ '\''
|
|
||||||
| '0X' HEX_DIGIT+;
|
|
||||||
|
|
||||||
REAL_LITERAL: (DEC_DIGIT+)? '.' DEC_DIGIT+
|
|
||||||
| DEC_DIGIT+ '.' EXPONENT_NUM_PART
|
|
||||||
| (DEC_DIGIT+)? '.' (DEC_DIGIT+ EXPONENT_NUM_PART)
|
|
||||||
| DEC_DIGIT+ EXPONENT_NUM_PART;
|
|
||||||
NULL_SPEC_LITERAL: '\\' 'N';
|
|
||||||
BIT_STRING: BIT_STRING_L;
|
|
||||||
STRING_CHARSET_NAME: '_' CHARSET_NAME;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Hack for dotID
|
|
||||||
// Prevent recognize string: .123somelatin AS ((.123), FLOAT_LITERAL), ((somelatin), ID)
|
|
||||||
// it must recoginze: .123somelatin AS ((.), DOT), (123somelatin, ID)
|
|
||||||
|
|
||||||
DOT_ID: '.' ID_LITERAL;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Identifiers
|
|
||||||
|
|
||||||
ID: ID_LITERAL;
|
|
||||||
// DOUBLE_QUOTE_ID: '"' ~'"'+ '"';
|
|
||||||
REVERSE_QUOTE_ID: '`' ~'`'+ '`';
|
|
||||||
STRING_USER_NAME: (
|
|
||||||
SQUOTA_STRING | DQUOTA_STRING
|
|
||||||
| BQUOTA_STRING | ID_LITERAL
|
|
||||||
) '@'
|
|
||||||
(
|
|
||||||
SQUOTA_STRING | DQUOTA_STRING
|
|
||||||
| BQUOTA_STRING | ID_LITERAL
|
|
||||||
);
|
|
||||||
LOCAL_ID: '@'
|
|
||||||
(
|
|
||||||
[A-Z0-9._$]+
|
|
||||||
| SQUOTA_STRING
|
|
||||||
| DQUOTA_STRING
|
|
||||||
| BQUOTA_STRING
|
|
||||||
);
|
|
||||||
GLOBAL_ID: '@' '@'
|
|
||||||
(
|
|
||||||
[A-Z0-9._$]+
|
|
||||||
| BQUOTA_STRING
|
|
||||||
);
|
|
||||||
|
|
||||||
|
|
||||||
// Fragments for Literal primitives
|
|
||||||
|
|
||||||
fragment CHARSET_NAME: ARMSCII8 | ASCII | BIG5 | BINARY | CP1250
|
|
||||||
| CP1251 | CP1256 | CP1257 | CP850
|
|
||||||
| CP852 | CP866 | CP932 | DEC8 | EUCJPMS
|
|
||||||
| EUCKR | GB2312 | GBK | GEOSTD8 | GREEK
|
|
||||||
| HEBREW | HP8 | KEYBCS2 | KOI8R | KOI8U
|
|
||||||
| LATIN1 | LATIN2 | LATIN5 | LATIN7
|
|
||||||
| MACCE | MACROMAN | SJIS | SWE7 | TIS620
|
|
||||||
| UCS2 | UJIS | UTF16 | UTF16LE | UTF32
|
|
||||||
| UTF8 | UTF8MB4;
|
|
||||||
|
|
||||||
fragment EXPONENT_NUM_PART: 'E' '-'? DEC_DIGIT+;
|
|
||||||
fragment ID_LITERAL: [A-Z_$0-9]*?[A-Z_$]+?[A-Z_$0-9]*;
|
|
||||||
fragment DQUOTA_STRING: '"' ( '\\'. | '""' | ~('"'| '\\') )* '"';
|
|
||||||
fragment SQUOTA_STRING: '\'' ('\\'. | '\'\'' | ~('\'' | '\\'))* '\'';
|
|
||||||
fragment BQUOTA_STRING: '`' ( '\\'. | '``' | ~('`'|'\\'))* '`';
|
|
||||||
fragment HEX_DIGIT: [0-9A-F];
|
|
||||||
fragment DEC_DIGIT: [0-9];
|
|
||||||
fragment BIT_STRING_L: 'B' '\'' [01]+ '\'';
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Last tokens must generate Errors
|
|
||||||
|
|
||||||
ERROR_RECONGNIGION: . -> channel(ERRORCHANNEL);
|
|
||||||
|
|
||||||
// case insensitive lexxer
|
|
||||||
fragment A : [aA]; // match either an 'a' or 'A'
|
|
||||||
fragment B : [bB];
|
|
||||||
fragment C : [cC];
|
|
||||||
fragment D : [dD];
|
|
||||||
fragment E : [eE];
|
|
||||||
fragment F : [fF];
|
|
||||||
fragment G : [gG];
|
|
||||||
fragment H : [hH];
|
|
||||||
fragment I : [iI];
|
|
||||||
fragment J : [jJ];
|
|
||||||
fragment K : [kK];
|
|
||||||
fragment L : [lL];
|
|
||||||
fragment M : [mM];
|
|
||||||
fragment N : [nN];
|
|
||||||
fragment O : [oO];
|
|
||||||
fragment P : [pP];
|
|
||||||
fragment Q : [qQ];
|
|
||||||
fragment R : [rR];
|
|
||||||
fragment S : [sS];
|
|
||||||
fragment T : [tT];
|
|
||||||
fragment U : [uU];
|
|
||||||
fragment V : [vV];
|
|
||||||
fragment W : [wW];
|
|
||||||
fragment X : [xX];
|
|
||||||
fragment Y : [yY];
|
|
||||||
fragment Z : [zZ];
|
|
56
debezium-ddl-parser/pom.xml
Normal file
56
debezium-ddl-parser/pom.xml
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<parent>
|
||||||
|
<groupId>io.debezium</groupId>
|
||||||
|
<artifactId>debezium-parent</artifactId>
|
||||||
|
<version>0.8.0-SNAPSHOT</version>
|
||||||
|
<relativePath>../pom.xml</relativePath>
|
||||||
|
</parent>
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<artifactId>debezium-ddl-parser</artifactId>
|
||||||
|
<name>Debezium ANTLR DDL parsers</name>
|
||||||
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>io.debezium</groupId>
|
||||||
|
<artifactId>debezium-core</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.antlr</groupId>
|
||||||
|
<artifactId>antlr4-runtime</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.slf4j</groupId>
|
||||||
|
<artifactId>slf4j-api</artifactId>
|
||||||
|
<scope>provided</scope>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
<properties>
|
||||||
|
<antlr.source.directory>${project.basedir}/src/main/resources/antlr4</antlr.source.directory>
|
||||||
|
|
||||||
|
<docker.skip>false</docker.skip>
|
||||||
|
|
||||||
|
</properties>
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.antlr</groupId>
|
||||||
|
<artifactId>antlr4-maven-plugin</artifactId>
|
||||||
|
<version>${antlr.version}</version>
|
||||||
|
<configuration>
|
||||||
|
<sourceDirectory>${antlr.source.directory}</sourceDirectory>
|
||||||
|
</configuration>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<goals>
|
||||||
|
<goal>antlr4</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
</project>
|
@ -0,0 +1,52 @@
|
|||||||
|
/*
|
||||||
|
* Copyright Debezium Authors.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache Software License version 2.0, available at http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
package io.debezium.antlr;
|
||||||
|
|
||||||
|
import io.debezium.relational.Tables;
|
||||||
|
import io.debezium.relational.ddl.AbstractDdlParser;
|
||||||
|
import io.debezium.text.MultipleParsingExceptions;
|
||||||
|
import org.antlr.v4.runtime.CharStreams;
|
||||||
|
import org.antlr.v4.runtime.CodePointCharStream;
|
||||||
|
import org.antlr.v4.runtime.CommonTokenStream;
|
||||||
|
import org.antlr.v4.runtime.ConsoleErrorListener;
|
||||||
|
import org.antlr.v4.runtime.Lexer;
|
||||||
|
import org.antlr.v4.runtime.Parser;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Roman Kuchár <kucharrom@gmail.com>.
|
||||||
|
*/
|
||||||
|
public abstract class AntlrDdlParser<L extends Lexer, P extends Parser> extends AbstractDdlParser {
|
||||||
|
|
||||||
|
public AntlrDdlParser() {
|
||||||
|
super(";");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void parse(String ddlContent, Tables databaseTables) {
|
||||||
|
|
||||||
|
L lexer = getLexerNewInstance(CharStreams.fromString(removeLineFeeds(ddlContent)));
|
||||||
|
P parser = getParserNewInstance(new CommonTokenStream(lexer));
|
||||||
|
|
||||||
|
// remove base output printing error listener
|
||||||
|
parser.removeErrorListener(ConsoleErrorListener.INSTANCE);
|
||||||
|
|
||||||
|
ParsingErrorListener parsingErrorListener = new ParsingErrorListener(this::accumulateParsingFailure);
|
||||||
|
parser.addErrorListener(parsingErrorListener);
|
||||||
|
|
||||||
|
startParsing(parser, databaseTables);
|
||||||
|
|
||||||
|
if (parsingErrorListener.getErrors().size() > 0) {
|
||||||
|
throw new MultipleParsingExceptions(parsingErrorListener.getErrors());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected abstract void startParsing(P parser, Tables databaseTables);
|
||||||
|
|
||||||
|
protected abstract L getLexerNewInstance(CodePointCharStream charStreams);
|
||||||
|
|
||||||
|
protected abstract P getParserNewInstance(CommonTokenStream commonTokenStream);
|
||||||
|
}
|
@ -0,0 +1,44 @@
|
|||||||
|
/*
|
||||||
|
* Copyright Debezium Authors.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache Software License version 2.0, available at http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*/
|
||||||
|
package io.debezium.antlr;
|
||||||
|
|
||||||
|
import io.debezium.text.ParsingException;
|
||||||
|
import io.debezium.text.Position;
|
||||||
|
import org.antlr.v4.runtime.BaseErrorListener;
|
||||||
|
import org.antlr.v4.runtime.RecognitionException;
|
||||||
|
import org.antlr.v4.runtime.Recognizer;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.function.BiFunction;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ANTLR parsing error listener.
|
||||||
|
*
|
||||||
|
* @author Roman Kuchár <kucharrom@gmail.com>.
|
||||||
|
*/
|
||||||
|
public class ParsingErrorListener extends BaseErrorListener {
|
||||||
|
|
||||||
|
|
||||||
|
private Collection<ParsingException> errors = new ArrayList<>();
|
||||||
|
private final BiFunction<ParsingException, Collection<ParsingException>, Collection<ParsingException>> accumulateError;
|
||||||
|
|
||||||
|
public ParsingErrorListener(BiFunction<ParsingException, Collection<ParsingException>, Collection<ParsingException>> accumulateError) {
|
||||||
|
this.accumulateError = accumulateError;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Parsing error listener, which will throw up an exception.
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void syntaxError(Recognizer<?, ?> recognizer, Object offendingSymbol, int line, int charPositionInLine, String msg, RecognitionException e) {
|
||||||
|
accumulateError.apply(new ParsingException(new Position(0, line, charPositionInLine), msg, e), errors);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Collection<ParsingException> getErrors() {
|
||||||
|
return errors;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,1168 @@
|
|||||||
|
/*
|
||||||
|
MySQL (Positive Technologies) grammar
|
||||||
|
The MIT License (MIT).
|
||||||
|
Copyright (c) 2015-2017, Ivan Kochurkin (kvanttt@gmail.com), Positive Technologies.
|
||||||
|
Copyright (c) 2017, Ivan Khudyashev (IHudyashov@ptsecurity.com)
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in
|
||||||
|
all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
lexer grammar MySqlLexer;
|
||||||
|
|
||||||
|
channels { MYSQLCOMMENT, ERRORCHANNEL }
|
||||||
|
|
||||||
|
// SKIP
|
||||||
|
|
||||||
|
SPACE: [ \t\r\n]+ -> channel(HIDDEN);
|
||||||
|
SPEC_MYSQL_COMMENT: '/*!' .+? '*/' -> channel(MYSQLCOMMENT);
|
||||||
|
COMMENT_INPUT: '/*' .*? '*/' -> channel(HIDDEN);
|
||||||
|
LINE_COMMENT: (
|
||||||
|
('-- ' | '#') ~[\r\n]* ('\r'? '\n' | EOF)
|
||||||
|
| '--' ('\r'? '\n' | EOF)
|
||||||
|
) -> channel(HIDDEN);
|
||||||
|
|
||||||
|
|
||||||
|
// Keywords
|
||||||
|
// Common Keywords
|
||||||
|
|
||||||
|
ADD: 'ADD';
|
||||||
|
ALL: 'ALL';
|
||||||
|
ALTER: 'ALTER';
|
||||||
|
ANALYZE: 'ANALYZE';
|
||||||
|
AND: 'AND';
|
||||||
|
AS: 'AS';
|
||||||
|
ASC: 'ASC';
|
||||||
|
BEFORE: 'BEFORE';
|
||||||
|
BETWEEN: 'BETWEEN';
|
||||||
|
BOTH: 'BOTH';
|
||||||
|
BY: 'BY';
|
||||||
|
CALL: 'CALL';
|
||||||
|
CASCADE: 'CASCADE';
|
||||||
|
CASE: 'CASE';
|
||||||
|
CAST: 'CAST';
|
||||||
|
CHANGE: 'CHANGE';
|
||||||
|
CHARACTER: 'CHARACTER';
|
||||||
|
CHECK: 'CHECK';
|
||||||
|
COLLATE: 'COLLATE';
|
||||||
|
COLUMN: 'COLUMN';
|
||||||
|
CONDITION: 'CONDITION';
|
||||||
|
CONSTRAINT: 'CONSTRAINT';
|
||||||
|
CONTINUE: 'CONTINUE';
|
||||||
|
CONVERT: 'CONVERT';
|
||||||
|
CREATE: 'CREATE';
|
||||||
|
CROSS: 'CROSS';
|
||||||
|
CURRENT_USER: 'CURRENT_USER';
|
||||||
|
CURSOR: 'CURSOR';
|
||||||
|
DATABASE: 'DATABASE';
|
||||||
|
DATABASES: 'DATABASES';
|
||||||
|
DECLARE: 'DECLARE';
|
||||||
|
DEFAULT: 'DEFAULT';
|
||||||
|
DELAYED: 'DELAYED';
|
||||||
|
DELETE: 'DELETE';
|
||||||
|
DESC: 'DESC';
|
||||||
|
DESCRIBE: 'DESCRIBE';
|
||||||
|
DETERMINISTIC: 'DETERMINISTIC';
|
||||||
|
DISTINCT: 'DISTINCT';
|
||||||
|
DISTINCTROW: 'DISTINCTROW';
|
||||||
|
DROP: 'DROP';
|
||||||
|
EACH: 'EACH';
|
||||||
|
ELSE: 'ELSE';
|
||||||
|
ELSEIF: 'ELSEIF';
|
||||||
|
ENCLOSED: 'ENCLOSED';
|
||||||
|
ESCAPED: 'ESCAPED';
|
||||||
|
EXISTS: 'EXISTS';
|
||||||
|
EXIT: 'EXIT';
|
||||||
|
EXPLAIN: 'EXPLAIN';
|
||||||
|
FALSE: 'FALSE';
|
||||||
|
FETCH: 'FETCH';
|
||||||
|
FOR: 'FOR';
|
||||||
|
FORCE: 'FORCE';
|
||||||
|
FOREIGN: 'FOREIGN';
|
||||||
|
FROM: 'FROM';
|
||||||
|
FULLTEXT: 'FULLTEXT';
|
||||||
|
GRANT: 'GRANT';
|
||||||
|
GROUP: 'GROUP';
|
||||||
|
HAVING: 'HAVING';
|
||||||
|
HIGH_PRIORITY: 'HIGH_PRIORITY';
|
||||||
|
IF: 'IF';
|
||||||
|
IGNORE: 'IGNORE';
|
||||||
|
IN: 'IN';
|
||||||
|
INDEX: 'INDEX';
|
||||||
|
INFILE: 'INFILE';
|
||||||
|
INNER: 'INNER';
|
||||||
|
INOUT: 'INOUT';
|
||||||
|
INSERT: 'INSERT';
|
||||||
|
INTERVAL: 'INTERVAL';
|
||||||
|
INTO: 'INTO';
|
||||||
|
IS: 'IS';
|
||||||
|
ITERATE: 'ITERATE';
|
||||||
|
JOIN: 'JOIN';
|
||||||
|
KEY: 'KEY';
|
||||||
|
KEYS: 'KEYS';
|
||||||
|
KILL: 'KILL';
|
||||||
|
LEADING: 'LEADING';
|
||||||
|
LEAVE: 'LEAVE';
|
||||||
|
LEFT: 'LEFT';
|
||||||
|
LIKE: 'LIKE';
|
||||||
|
LIMIT: 'LIMIT';
|
||||||
|
LINEAR: 'LINEAR';
|
||||||
|
LINES: 'LINES';
|
||||||
|
LOAD: 'LOAD';
|
||||||
|
LOCK: 'LOCK';
|
||||||
|
LOOP: 'LOOP';
|
||||||
|
LOW_PRIORITY: 'LOW_PRIORITY';
|
||||||
|
MASTER_BIND: 'MASTER_BIND';
|
||||||
|
MASTER_SSL_VERIFY_SERVER_CERT: 'MASTER_SSL_VERIFY_SERVER_CERT';
|
||||||
|
MATCH: 'MATCH';
|
||||||
|
MAXVALUE: 'MAXVALUE';
|
||||||
|
MODIFIES: 'MODIFIES';
|
||||||
|
NATURAL: 'NATURAL';
|
||||||
|
NOT: 'NOT';
|
||||||
|
NO_WRITE_TO_BINLOG: 'NO_WRITE_TO_BINLOG';
|
||||||
|
NULL_LITERAL: 'NULL';
|
||||||
|
ON: 'ON';
|
||||||
|
OPTIMIZE: 'OPTIMIZE';
|
||||||
|
OPTION: 'OPTION';
|
||||||
|
OPTIONALLY: 'OPTIONALLY';
|
||||||
|
OR: 'OR';
|
||||||
|
ORDER: 'ORDER';
|
||||||
|
OUT: 'OUT';
|
||||||
|
OUTER: 'OUTER';
|
||||||
|
OUTFILE: 'OUTFILE';
|
||||||
|
PARTITION: 'PARTITION';
|
||||||
|
PRIMARY: 'PRIMARY';
|
||||||
|
PROCEDURE: 'PROCEDURE';
|
||||||
|
PURGE: 'PURGE';
|
||||||
|
RANGE: 'RANGE';
|
||||||
|
READ: 'READ';
|
||||||
|
READS: 'READS';
|
||||||
|
REFERENCES: 'REFERENCES';
|
||||||
|
REGEXP: 'REGEXP';
|
||||||
|
RELEASE: 'RELEASE';
|
||||||
|
RENAME: 'RENAME';
|
||||||
|
REPEAT: 'REPEAT';
|
||||||
|
REPLACE: 'REPLACE';
|
||||||
|
REQUIRE: 'REQUIRE';
|
||||||
|
RESTRICT: 'RESTRICT';
|
||||||
|
RETURN: 'RETURN';
|
||||||
|
REVOKE: 'REVOKE';
|
||||||
|
RIGHT: 'RIGHT';
|
||||||
|
RLIKE: 'RLIKE';
|
||||||
|
SCHEMA: 'SCHEMA';
|
||||||
|
SCHEMAS: 'SCHEMAS';
|
||||||
|
SELECT: 'SELECT';
|
||||||
|
SET: 'SET';
|
||||||
|
SEPARATOR: 'SEPARATOR';
|
||||||
|
SHOW: 'SHOW';
|
||||||
|
SPATIAL: 'SPATIAL';
|
||||||
|
SQL: 'SQL';
|
||||||
|
SQLEXCEPTION: 'SQLEXCEPTION';
|
||||||
|
SQLSTATE: 'SQLSTATE';
|
||||||
|
SQLWARNING: 'SQLWARNING';
|
||||||
|
SQL_BIG_RESULT: 'SQL_BIG_RESULT';
|
||||||
|
SQL_CALC_FOUND_ROWS: 'SQL_CALC_FOUND_ROWS';
|
||||||
|
SQL_SMALL_RESULT: 'SQL_SMALL_RESULT';
|
||||||
|
SSL: 'SSL';
|
||||||
|
STARTING: 'STARTING';
|
||||||
|
STRAIGHT_JOIN: 'STRAIGHT_JOIN';
|
||||||
|
TABLE: 'TABLE';
|
||||||
|
TERMINATED: 'TERMINATED';
|
||||||
|
THEN: 'THEN';
|
||||||
|
TO: 'TO';
|
||||||
|
TRAILING: 'TRAILING';
|
||||||
|
TRIGGER: 'TRIGGER';
|
||||||
|
TRUE: 'TRUE';
|
||||||
|
UNDO: 'UNDO';
|
||||||
|
UNION: 'UNION';
|
||||||
|
UNIQUE: 'UNIQUE';
|
||||||
|
UNLOCK: 'UNLOCK';
|
||||||
|
UNSIGNED: 'UNSIGNED';
|
||||||
|
UPDATE: 'UPDATE';
|
||||||
|
USAGE: 'USAGE';
|
||||||
|
USE: 'USE';
|
||||||
|
USING: 'USING';
|
||||||
|
VALUES: 'VALUES';
|
||||||
|
WHEN: 'WHEN';
|
||||||
|
WHERE: 'WHERE';
|
||||||
|
WHILE: 'WHILE';
|
||||||
|
WITH: 'WITH';
|
||||||
|
WRITE: 'WRITE';
|
||||||
|
XOR: 'XOR';
|
||||||
|
ZEROFILL: 'ZEROFILL';
|
||||||
|
|
||||||
|
|
||||||
|
// DATA TYPE Keywords
|
||||||
|
|
||||||
|
TINYINT: 'TINYINT';
|
||||||
|
SMALLINT: 'SMALLINT';
|
||||||
|
MEDIUMINT: 'MEDIUMINT';
|
||||||
|
INT: 'INT';
|
||||||
|
INTEGER: 'INTEGER';
|
||||||
|
BIGINT: 'BIGINT';
|
||||||
|
REAL: 'REAL';
|
||||||
|
DOUBLE: 'DOUBLE';
|
||||||
|
FLOAT: 'FLOAT';
|
||||||
|
DECIMAL: 'DECIMAL';
|
||||||
|
NUMERIC: 'NUMERIC';
|
||||||
|
DATE: 'DATE';
|
||||||
|
TIME: 'TIME';
|
||||||
|
TIMESTAMP: 'TIMESTAMP';
|
||||||
|
DATETIME: 'DATETIME';
|
||||||
|
YEAR: 'YEAR';
|
||||||
|
CHAR: 'CHAR';
|
||||||
|
VARCHAR: 'VARCHAR';
|
||||||
|
BINARY: 'BINARY';
|
||||||
|
VARBINARY: 'VARBINARY';
|
||||||
|
TINYBLOB: 'TINYBLOB';
|
||||||
|
BLOB: 'BLOB';
|
||||||
|
MEDIUMBLOB: 'MEDIUMBLOB';
|
||||||
|
LONGBLOB: 'LONGBLOB';
|
||||||
|
TINYTEXT: 'TINYTEXT';
|
||||||
|
TEXT: 'TEXT';
|
||||||
|
MEDIUMTEXT: 'MEDIUMTEXT';
|
||||||
|
LONGTEXT: 'LONGTEXT';
|
||||||
|
ENUM: 'ENUM';
|
||||||
|
|
||||||
|
|
||||||
|
// Interval type Keywords
|
||||||
|
|
||||||
|
YEAR_MONTH: 'YEAR_MONTH';
|
||||||
|
DAY_HOUR: 'DAY_HOUR';
|
||||||
|
DAY_MINUTE: 'DAY_MINUTE';
|
||||||
|
DAY_SECOND: 'DAY_SECOND';
|
||||||
|
HOUR_MINUTE: 'HOUR_MINUTE';
|
||||||
|
HOUR_SECOND: 'HOUR_SECOND';
|
||||||
|
MINUTE_SECOND: 'MINUTE_SECOND';
|
||||||
|
SECOND_MICROSECOND: 'SECOND_MICROSECOND';
|
||||||
|
MINUTE_MICROSECOND: 'MINUTE_MICROSECOND';
|
||||||
|
HOUR_MICROSECOND: 'HOUR_MICROSECOND';
|
||||||
|
DAY_MICROSECOND: 'DAY_MICROSECOND';
|
||||||
|
|
||||||
|
|
||||||
|
// Group function Keywords
|
||||||
|
|
||||||
|
AVG: 'AVG';
|
||||||
|
BIT_AND: 'BIT_AND';
|
||||||
|
BIT_OR: 'BIT_OR';
|
||||||
|
BIT_XOR: 'BIT_XOR';
|
||||||
|
COUNT: 'COUNT';
|
||||||
|
GROUP_CONCAT: 'GROUP_CONCAT';
|
||||||
|
MAX: 'MAX';
|
||||||
|
MIN: 'MIN';
|
||||||
|
STD: 'STD';
|
||||||
|
STDDEV: 'STDDEV';
|
||||||
|
STDDEV_POP: 'STDDEV_POP';
|
||||||
|
STDDEV_SAMP: 'STDDEV_SAMP';
|
||||||
|
SUM: 'SUM';
|
||||||
|
VAR_POP: 'VAR_POP';
|
||||||
|
VAR_SAMP: 'VAR_SAMP';
|
||||||
|
VARIANCE: 'VARIANCE';
|
||||||
|
|
||||||
|
|
||||||
|
// Common function Keywords
|
||||||
|
|
||||||
|
CURRENT_DATE: 'CURRENT_DATE';
|
||||||
|
CURRENT_TIME: 'CURRENT_TIME';
|
||||||
|
CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP';
|
||||||
|
LOCALTIME: 'LOCALTIME';
|
||||||
|
CURDATE: 'CURDATE';
|
||||||
|
CURTIME: 'CURTIME';
|
||||||
|
DATE_ADD: 'DATE_ADD';
|
||||||
|
DATE_SUB: 'DATE_SUB';
|
||||||
|
EXTRACT: 'EXTRACT';
|
||||||
|
LOCALTIMESTAMP: 'LOCALTIMESTAMP';
|
||||||
|
NOW: 'NOW';
|
||||||
|
POSITION: 'POSITION';
|
||||||
|
SUBSTR: 'SUBSTR';
|
||||||
|
SUBSTRING: 'SUBSTRING';
|
||||||
|
SYSDATE: 'SYSDATE';
|
||||||
|
TRIM: 'TRIM';
|
||||||
|
UTC_DATE: 'UTC_DATE';
|
||||||
|
UTC_TIME: 'UTC_TIME';
|
||||||
|
UTC_TIMESTAMP: 'UTC_TIMESTAMP';
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// Keywords, but can be ID
|
||||||
|
// Common Keywords, but can be ID
|
||||||
|
|
||||||
|
ACCOUNT: 'ACCOUNT';
|
||||||
|
ACTION: 'ACTION';
|
||||||
|
AFTER: 'AFTER';
|
||||||
|
AGGREGATE: 'AGGREGATE';
|
||||||
|
ALGORITHM: 'ALGORITHM';
|
||||||
|
ANY: 'ANY';
|
||||||
|
AT: 'AT';
|
||||||
|
AUTHORS: 'AUTHORS';
|
||||||
|
AUTOCOMMIT: 'AUTOCOMMIT';
|
||||||
|
AUTOEXTEND_SIZE: 'AUTOEXTEND_SIZE';
|
||||||
|
AUTO_INCREMENT: 'AUTO_INCREMENT';
|
||||||
|
AVG_ROW_LENGTH: 'AVG_ROW_LENGTH';
|
||||||
|
BEGIN: 'BEGIN';
|
||||||
|
BINLOG: 'BINLOG';
|
||||||
|
BIT: 'BIT';
|
||||||
|
BLOCK: 'BLOCK';
|
||||||
|
BOOL: 'BOOL';
|
||||||
|
BOOLEAN: 'BOOLEAN';
|
||||||
|
BTREE: 'BTREE';
|
||||||
|
CACHE: 'CACHE';
|
||||||
|
CASCADED: 'CASCADED';
|
||||||
|
CHAIN: 'CHAIN';
|
||||||
|
CHANGED: 'CHANGED';
|
||||||
|
CHANNEL: 'CHANNEL';
|
||||||
|
CHECKSUM: 'CHECKSUM';
|
||||||
|
CIPHER: 'CIPHER';
|
||||||
|
CLIENT: 'CLIENT';
|
||||||
|
CLOSE: 'CLOSE';
|
||||||
|
COALESCE: 'COALESCE';
|
||||||
|
CODE: 'CODE';
|
||||||
|
COLUMNS: 'COLUMNS';
|
||||||
|
COLUMN_FORMAT: 'COLUMN_FORMAT';
|
||||||
|
COMMENT: 'COMMENT';
|
||||||
|
COMMIT: 'COMMIT';
|
||||||
|
COMPACT: 'COMPACT';
|
||||||
|
COMPLETION: 'COMPLETION';
|
||||||
|
COMPRESSED: 'COMPRESSED';
|
||||||
|
COMPRESSION: 'COMPRESSION';
|
||||||
|
CONCURRENT: 'CONCURRENT';
|
||||||
|
CONNECTION: 'CONNECTION';
|
||||||
|
CONSISTENT: 'CONSISTENT';
|
||||||
|
CONTAINS: 'CONTAINS';
|
||||||
|
CONTEXT: 'CONTEXT';
|
||||||
|
CONTRIBUTORS: 'CONTRIBUTORS';
|
||||||
|
COPY: 'COPY';
|
||||||
|
CPU: 'CPU';
|
||||||
|
DATA: 'DATA';
|
||||||
|
DATAFILE: 'DATAFILE';
|
||||||
|
DEALLOCATE: 'DEALLOCATE';
|
||||||
|
DEFAULT_AUTH: 'DEFAULT_AUTH';
|
||||||
|
DEFINER: 'DEFINER';
|
||||||
|
DELAY_KEY_WRITE: 'DELAY_KEY_WRITE';
|
||||||
|
DES_KEY_FILE: 'DES_KEY_FILE';
|
||||||
|
DIRECTORY: 'DIRECTORY';
|
||||||
|
DISABLE: 'DISABLE';
|
||||||
|
DISCARD: 'DISCARD';
|
||||||
|
DISK: 'DISK';
|
||||||
|
DO: 'DO';
|
||||||
|
DUMPFILE: 'DUMPFILE';
|
||||||
|
DUPLICATE: 'DUPLICATE';
|
||||||
|
DYNAMIC: 'DYNAMIC';
|
||||||
|
ENABLE: 'ENABLE';
|
||||||
|
ENCRYPTION: 'ENCRYPTION';
|
||||||
|
END: 'END';
|
||||||
|
ENDS: 'ENDS';
|
||||||
|
ENGINE: 'ENGINE';
|
||||||
|
ENGINES: 'ENGINES';
|
||||||
|
ERROR: 'ERROR';
|
||||||
|
ERRORS: 'ERRORS';
|
||||||
|
ESCAPE: 'ESCAPE';
|
||||||
|
EVEN: 'EVEN';
|
||||||
|
EVENT: 'EVENT';
|
||||||
|
EVENTS: 'EVENTS';
|
||||||
|
EVERY: 'EVERY';
|
||||||
|
EXCHANGE: 'EXCHANGE';
|
||||||
|
EXCLUSIVE: 'EXCLUSIVE';
|
||||||
|
EXPIRE: 'EXPIRE';
|
||||||
|
EXPORT: 'EXPORT';
|
||||||
|
EXTENDED: 'EXTENDED';
|
||||||
|
EXTENT_SIZE: 'EXTENT_SIZE';
|
||||||
|
FAST: 'FAST';
|
||||||
|
FAULTS: 'FAULTS';
|
||||||
|
FIELDS: 'FIELDS';
|
||||||
|
FILE_BLOCK_SIZE: 'FILE_BLOCK_SIZE';
|
||||||
|
FILTER: 'FILTER';
|
||||||
|
FIRST: 'FIRST';
|
||||||
|
FIXED: 'FIXED';
|
||||||
|
FLUSH: 'FLUSH';
|
||||||
|
FOLLOWS: 'FOLLOWS';
|
||||||
|
FOUND: 'FOUND';
|
||||||
|
FULL: 'FULL';
|
||||||
|
FUNCTION: 'FUNCTION';
|
||||||
|
GENERAL: 'GENERAL';
|
||||||
|
GLOBAL: 'GLOBAL';
|
||||||
|
GRANTS: 'GRANTS';
|
||||||
|
GROUP_REPLICATION: 'GROUP_REPLICATION';
|
||||||
|
HANDLER: 'HANDLER';
|
||||||
|
HASH: 'HASH';
|
||||||
|
HELP: 'HELP';
|
||||||
|
HOST: 'HOST';
|
||||||
|
HOSTS: 'HOSTS';
|
||||||
|
IDENTIFIED: 'IDENTIFIED';
|
||||||
|
IGNORE_SERVER_IDS: 'IGNORE_SERVER_IDS';
|
||||||
|
IMPORT: 'IMPORT';
|
||||||
|
INDEXES: 'INDEXES';
|
||||||
|
INITIAL_SIZE: 'INITIAL_SIZE';
|
||||||
|
INPLACE: 'INPLACE';
|
||||||
|
INSERT_METHOD: 'INSERT_METHOD';
|
||||||
|
INSTALL: 'INSTALL';
|
||||||
|
INSTANCE: 'INSTANCE';
|
||||||
|
INVOKER: 'INVOKER';
|
||||||
|
IO: 'IO';
|
||||||
|
IO_THREAD: 'IO_THREAD';
|
||||||
|
IPC: 'IPC';
|
||||||
|
ISOLATION: 'ISOLATION';
|
||||||
|
ISSUER: 'ISSUER';
|
||||||
|
JSON: 'JSON';
|
||||||
|
KEY_BLOCK_SIZE: 'KEY_BLOCK_SIZE';
|
||||||
|
LANGUAGE: 'LANGUAGE';
|
||||||
|
LAST: 'LAST';
|
||||||
|
LEAVES: 'LEAVES';
|
||||||
|
LESS: 'LESS';
|
||||||
|
LEVEL: 'LEVEL';
|
||||||
|
LIST: 'LIST';
|
||||||
|
LOCAL: 'LOCAL';
|
||||||
|
LOGFILE: 'LOGFILE';
|
||||||
|
LOGS: 'LOGS';
|
||||||
|
MASTER: 'MASTER';
|
||||||
|
MASTER_AUTO_POSITION: 'MASTER_AUTO_POSITION';
|
||||||
|
MASTER_CONNECT_RETRY: 'MASTER_CONNECT_RETRY';
|
||||||
|
MASTER_DELAY: 'MASTER_DELAY';
|
||||||
|
MASTER_HEARTBEAT_PERIOD: 'MASTER_HEARTBEAT_PERIOD';
|
||||||
|
MASTER_HOST: 'MASTER_HOST';
|
||||||
|
MASTER_LOG_FILE: 'MASTER_LOG_FILE';
|
||||||
|
MASTER_LOG_POS: 'MASTER_LOG_POS';
|
||||||
|
MASTER_PASSWORD: 'MASTER_PASSWORD';
|
||||||
|
MASTER_PORT: 'MASTER_PORT';
|
||||||
|
MASTER_RETRY_COUNT: 'MASTER_RETRY_COUNT';
|
||||||
|
MASTER_SSL: 'MASTER_SSL';
|
||||||
|
MASTER_SSL_CA: 'MASTER_SSL_CA';
|
||||||
|
MASTER_SSL_CAPATH: 'MASTER_SSL_CAPATH';
|
||||||
|
MASTER_SSL_CERT: 'MASTER_SSL_CERT';
|
||||||
|
MASTER_SSL_CIPHER: 'MASTER_SSL_CIPHER';
|
||||||
|
MASTER_SSL_CRL: 'MASTER_SSL_CRL';
|
||||||
|
MASTER_SSL_CRLPATH: 'MASTER_SSL_CRLPATH';
|
||||||
|
MASTER_SSL_KEY: 'MASTER_SSL_KEY';
|
||||||
|
MASTER_TLS_VERSION: 'MASTER_TLS_VERSION';
|
||||||
|
MASTER_USER: 'MASTER_USER';
|
||||||
|
MAX_CONNECTIONS_PER_HOUR: 'MAX_CONNECTIONS_PER_HOUR';
|
||||||
|
MAX_QUERIES_PER_HOUR: 'MAX_QUERIES_PER_HOUR';
|
||||||
|
MAX_ROWS: 'MAX_ROWS';
|
||||||
|
MAX_SIZE: 'MAX_SIZE';
|
||||||
|
MAX_UPDATES_PER_HOUR: 'MAX_UPDATES_PER_HOUR';
|
||||||
|
MAX_USER_CONNECTIONS: 'MAX_USER_CONNECTIONS';
|
||||||
|
MEDIUM: 'MEDIUM';
|
||||||
|
MERGE: 'MERGE';
|
||||||
|
MID: 'MID';
|
||||||
|
MIGRATE: 'MIGRATE';
|
||||||
|
MIN_ROWS: 'MIN_ROWS';
|
||||||
|
MODE: 'MODE';
|
||||||
|
MODIFY: 'MODIFY';
|
||||||
|
MUTEX: 'MUTEX';
|
||||||
|
MYSQL: 'MYSQL';
|
||||||
|
NAME: 'NAME';
|
||||||
|
NAMES: 'NAMES';
|
||||||
|
NCHAR: 'NCHAR';
|
||||||
|
NEVER: 'NEVER';
|
||||||
|
NEXT: 'NEXT';
|
||||||
|
NO: 'NO';
|
||||||
|
NODEGROUP: 'NODEGROUP';
|
||||||
|
NONE: 'NONE';
|
||||||
|
OFFLINE: 'OFFLINE';
|
||||||
|
OFFSET: 'OFFSET';
|
||||||
|
OJ: 'OJ';
|
||||||
|
OLD_PASSWORD: 'OLD_PASSWORD';
|
||||||
|
ONE: 'ONE';
|
||||||
|
ONLINE: 'ONLINE';
|
||||||
|
ONLY: 'ONLY';
|
||||||
|
OPEN: 'OPEN';
|
||||||
|
OPTIMIZER_COSTS: 'OPTIMIZER_COSTS';
|
||||||
|
OPTIONS: 'OPTIONS';
|
||||||
|
OWNER: 'OWNER';
|
||||||
|
PACK_KEYS: 'PACK_KEYS';
|
||||||
|
PAGE: 'PAGE';
|
||||||
|
PARSER: 'PARSER';
|
||||||
|
PARTIAL: 'PARTIAL';
|
||||||
|
PARTITIONING: 'PARTITIONING';
|
||||||
|
PARTITIONS: 'PARTITIONS';
|
||||||
|
PASSWORD: 'PASSWORD';
|
||||||
|
PHASE: 'PHASE';
|
||||||
|
PLUGIN: 'PLUGIN';
|
||||||
|
PLUGIN_DIR: 'PLUGIN_DIR';
|
||||||
|
PLUGINS: 'PLUGINS';
|
||||||
|
PORT: 'PORT';
|
||||||
|
PRECEDES: 'PRECEDES';
|
||||||
|
PREPARE: 'PREPARE';
|
||||||
|
PRESERVE: 'PRESERVE';
|
||||||
|
PREV: 'PREV';
|
||||||
|
PROCESSLIST: 'PROCESSLIST';
|
||||||
|
PROFILE: 'PROFILE';
|
||||||
|
PROFILES: 'PROFILES';
|
||||||
|
PROXY: 'PROXY';
|
||||||
|
QUERY: 'QUERY';
|
||||||
|
QUICK: 'QUICK';
|
||||||
|
REBUILD: 'REBUILD';
|
||||||
|
RECOVER: 'RECOVER';
|
||||||
|
REDO_BUFFER_SIZE: 'REDO_BUFFER_SIZE';
|
||||||
|
REDUNDANT: 'REDUNDANT';
|
||||||
|
RELAY: 'RELAY';
|
||||||
|
RELAY_LOG_FILE: 'RELAY_LOG_FILE';
|
||||||
|
RELAY_LOG_POS: 'RELAY_LOG_POS';
|
||||||
|
RELAYLOG: 'RELAYLOG';
|
||||||
|
REMOVE: 'REMOVE';
|
||||||
|
REORGANIZE: 'REORGANIZE';
|
||||||
|
REPAIR: 'REPAIR';
|
||||||
|
REPLICATE_DO_DB: 'REPLICATE_DO_DB';
|
||||||
|
REPLICATE_DO_TABLE: 'REPLICATE_DO_TABLE';
|
||||||
|
REPLICATE_IGNORE_DB: 'REPLICATE_IGNORE_DB';
|
||||||
|
REPLICATE_IGNORE_TABLE: 'REPLICATE_IGNORE_TABLE';
|
||||||
|
REPLICATE_REWRITE_DB: 'REPLICATE_REWRITE_DB';
|
||||||
|
REPLICATE_WILD_DO_TABLE: 'REPLICATE_WILD_DO_TABLE';
|
||||||
|
REPLICATE_WILD_IGNORE_TABLE: 'REPLICATE_WILD_IGNORE_TABLE';
|
||||||
|
REPLICATION: 'REPLICATION';
|
||||||
|
RESET: 'RESET';
|
||||||
|
RESUME: 'RESUME';
|
||||||
|
RETURNS: 'RETURNS';
|
||||||
|
ROLLBACK: 'ROLLBACK';
|
||||||
|
ROLLUP: 'ROLLUP';
|
||||||
|
ROTATE: 'ROTATE';
|
||||||
|
ROW: 'ROW';
|
||||||
|
ROWS: 'ROWS';
|
||||||
|
ROW_FORMAT: 'ROW_FORMAT';
|
||||||
|
SAVEPOINT: 'SAVEPOINT';
|
||||||
|
SCHEDULE: 'SCHEDULE';
|
||||||
|
SECURITY: 'SECURITY';
|
||||||
|
SERVER: 'SERVER';
|
||||||
|
SESSION: 'SESSION';
|
||||||
|
SHARE: 'SHARE';
|
||||||
|
SHARED: 'SHARED';
|
||||||
|
SIGNED: 'SIGNED';
|
||||||
|
SIMPLE: 'SIMPLE';
|
||||||
|
SLAVE: 'SLAVE';
|
||||||
|
SLOW: 'SLOW';
|
||||||
|
SNAPSHOT: 'SNAPSHOT';
|
||||||
|
SOCKET: 'SOCKET';
|
||||||
|
SOME: 'SOME';
|
||||||
|
SONAME: 'SONAME';
|
||||||
|
SOUNDS: 'SOUNDS';
|
||||||
|
SOURCE: 'SOURCE';
|
||||||
|
SQL_AFTER_GTIDS: 'SQL_AFTER_GTIDS';
|
||||||
|
SQL_AFTER_MTS_GAPS: 'SQL_AFTER_MTS_GAPS';
|
||||||
|
SQL_BEFORE_GTIDS: 'SQL_BEFORE_GTIDS';
|
||||||
|
SQL_BUFFER_RESULT: 'SQL_BUFFER_RESULT';
|
||||||
|
SQL_CACHE: 'SQL_CACHE';
|
||||||
|
SQL_NO_CACHE: 'SQL_NO_CACHE';
|
||||||
|
SQL_THREAD: 'SQL_THREAD';
|
||||||
|
START: 'START';
|
||||||
|
STARTS: 'STARTS';
|
||||||
|
STATS_AUTO_RECALC: 'STATS_AUTO_RECALC';
|
||||||
|
STATS_PERSISTENT: 'STATS_PERSISTENT';
|
||||||
|
STATS_SAMPLE_PAGES: 'STATS_SAMPLE_PAGES';
|
||||||
|
STATUS: 'STATUS';
|
||||||
|
STOP: 'STOP';
|
||||||
|
STORAGE: 'STORAGE';
|
||||||
|
STRING: 'STRING';
|
||||||
|
SUBJECT: 'SUBJECT';
|
||||||
|
SUBPARTITION: 'SUBPARTITION';
|
||||||
|
SUBPARTITIONS: 'SUBPARTITIONS';
|
||||||
|
SUSPEND: 'SUSPEND';
|
||||||
|
SWAPS: 'SWAPS';
|
||||||
|
SWITCHES: 'SWITCHES';
|
||||||
|
TABLESPACE: 'TABLESPACE';
|
||||||
|
TEMPORARY: 'TEMPORARY';
|
||||||
|
TEMPTABLE: 'TEMPTABLE';
|
||||||
|
THAN: 'THAN';
|
||||||
|
TRADITIONAL: 'TRADITIONAL';
|
||||||
|
TRANSACTION: 'TRANSACTION';
|
||||||
|
TRIGGERS: 'TRIGGERS';
|
||||||
|
TRUNCATE: 'TRUNCATE';
|
||||||
|
UNDEFINED: 'UNDEFINED';
|
||||||
|
UNDOFILE: 'UNDOFILE';
|
||||||
|
UNDO_BUFFER_SIZE: 'UNDO_BUFFER_SIZE';
|
||||||
|
UNINSTALL: 'UNINSTALL';
|
||||||
|
UNKNOWN: 'UNKNOWN';
|
||||||
|
UNTIL: 'UNTIL';
|
||||||
|
UPGRADE: 'UPGRADE';
|
||||||
|
USER: 'USER';
|
||||||
|
USE_FRM: 'USE_FRM';
|
||||||
|
USER_RESOURCES: 'USER_RESOURCES';
|
||||||
|
VALIDATION: 'VALIDATION';
|
||||||
|
VALUE: 'VALUE';
|
||||||
|
VARIABLES: 'VARIABLES';
|
||||||
|
VIEW: 'VIEW';
|
||||||
|
WAIT: 'WAIT';
|
||||||
|
WARNINGS: 'WARNINGS';
|
||||||
|
WITHOUT: 'WITHOUT';
|
||||||
|
WORK: 'WORK';
|
||||||
|
WRAPPER: 'WRAPPER';
|
||||||
|
X509: 'X509';
|
||||||
|
XA: 'XA';
|
||||||
|
XML: 'XML';
|
||||||
|
|
||||||
|
|
||||||
|
// Date format Keywords
|
||||||
|
|
||||||
|
EUR: 'EUR';
|
||||||
|
USA: 'USA';
|
||||||
|
JIS: 'JIS';
|
||||||
|
ISO: 'ISO';
|
||||||
|
INTERNAL: 'INTERNAL';
|
||||||
|
|
||||||
|
|
||||||
|
// Interval type Keywords
|
||||||
|
|
||||||
|
QUARTER: 'QUARTER';
|
||||||
|
MONTH: 'MONTH';
|
||||||
|
DAY: 'DAY';
|
||||||
|
HOUR: 'HOUR';
|
||||||
|
MINUTE: 'MINUTE';
|
||||||
|
WEEK: 'WEEK';
|
||||||
|
SECOND: 'SECOND';
|
||||||
|
MICROSECOND: 'MICROSECOND';
|
||||||
|
|
||||||
|
|
||||||
|
// PRIVILEGES
|
||||||
|
|
||||||
|
TABLES: 'TABLES';
|
||||||
|
ROUTINE: 'ROUTINE';
|
||||||
|
EXECUTE: 'EXECUTE';
|
||||||
|
FILE: 'FILE';
|
||||||
|
PROCESS: 'PROCESS';
|
||||||
|
RELOAD: 'RELOAD';
|
||||||
|
SHUTDOWN: 'SHUTDOWN';
|
||||||
|
SUPER: 'SUPER';
|
||||||
|
PRIVILEGES: 'PRIVILEGES';
|
||||||
|
|
||||||
|
|
||||||
|
// Charsets
|
||||||
|
|
||||||
|
ARMSCII8: 'ARMSCII8';
|
||||||
|
ASCII: 'ASCII';
|
||||||
|
BIG5: 'BIG5';
|
||||||
|
CP1250: 'CP1250';
|
||||||
|
CP1251: 'CP1251';
|
||||||
|
CP1256: 'CP1256';
|
||||||
|
CP1257: 'CP1257';
|
||||||
|
CP850: 'CP850';
|
||||||
|
CP852: 'CP852';
|
||||||
|
CP866: 'CP866';
|
||||||
|
CP932: 'CP932';
|
||||||
|
DEC8: 'DEC8';
|
||||||
|
EUCJPMS: 'EUCJPMS';
|
||||||
|
EUCKR: 'EUCKR';
|
||||||
|
GB2312: 'GB2312';
|
||||||
|
GBK: 'GBK';
|
||||||
|
GEOSTD8: 'GEOSTD8';
|
||||||
|
GREEK: 'GREEK';
|
||||||
|
HEBREW: 'HEBREW';
|
||||||
|
HP8: 'HP8';
|
||||||
|
KEYBCS2: 'KEYBCS2';
|
||||||
|
KOI8R: 'KOI8R';
|
||||||
|
KOI8U: 'KOI8U';
|
||||||
|
LATIN1: 'LATIN1';
|
||||||
|
LATIN2: 'LATIN2';
|
||||||
|
LATIN5: 'LATIN5';
|
||||||
|
LATIN7: 'LATIN7';
|
||||||
|
MACCE: 'MACCE';
|
||||||
|
MACROMAN: 'MACROMAN';
|
||||||
|
SJIS: 'SJIS';
|
||||||
|
SWE7: 'SWE7';
|
||||||
|
TIS620: 'TIS620';
|
||||||
|
UCS2: 'UCS2';
|
||||||
|
UJIS: 'UJIS';
|
||||||
|
UTF16: 'UTF16';
|
||||||
|
UTF16LE: 'UTF16LE';
|
||||||
|
UTF32: 'UTF32';
|
||||||
|
UTF8: 'UTF8';
|
||||||
|
UTF8MB3: 'UTF8MB3';
|
||||||
|
UTF8MB4: 'UTF8MB4';
|
||||||
|
|
||||||
|
|
||||||
|
// DB Engines
|
||||||
|
|
||||||
|
ARCHIVE: 'ARCHIVE';
|
||||||
|
BLACKHOLE: 'BLACKHOLE';
|
||||||
|
CSV: 'CSV';
|
||||||
|
FEDERATED: 'FEDERATED';
|
||||||
|
INNODB: 'INNODB';
|
||||||
|
MEMORY: 'MEMORY';
|
||||||
|
MRG_MYISAM: 'MRG_MYISAM';
|
||||||
|
MYISAM: 'MYISAM';
|
||||||
|
NDB: 'NDB';
|
||||||
|
NDBCLUSTER: 'NDBCLUSTER';
|
||||||
|
PERFOMANCE_SCHEMA: 'PERFOMANCE_SCHEMA';
|
||||||
|
|
||||||
|
|
||||||
|
// Transaction Levels
|
||||||
|
|
||||||
|
REPEATABLE: 'REPEATABLE';
|
||||||
|
COMMITTED: 'COMMITTED';
|
||||||
|
UNCOMMITTED: 'UNCOMMITTED';
|
||||||
|
SERIALIZABLE: 'SERIALIZABLE';
|
||||||
|
|
||||||
|
|
||||||
|
// Spatial data types
|
||||||
|
|
||||||
|
GEOMETRYCOLLECTION: 'GEOMETRYCOLLECTION';
|
||||||
|
LINESTRING: 'LINESTRING';
|
||||||
|
MULTILINESTRING: 'MULTILINESTRING';
|
||||||
|
MULTIPOINT: 'MULTIPOINT';
|
||||||
|
MULTIPOLYGON: 'MULTIPOLYGON';
|
||||||
|
POINT: 'POINT';
|
||||||
|
POLYGON: 'POLYGON';
|
||||||
|
|
||||||
|
|
||||||
|
// Common function names
|
||||||
|
|
||||||
|
ABS: 'ABS';
|
||||||
|
ACOS: 'ACOS';
|
||||||
|
ADDDATE: 'ADDDATE';
|
||||||
|
ADDTIME: 'ADDTIME';
|
||||||
|
AES_DECRYPT: 'AES_DECRYPT';
|
||||||
|
AES_ENCRYPT: 'AES_ENCRYPT';
|
||||||
|
AREA: 'AREA';
|
||||||
|
ASBINARY: 'ASBINARY';
|
||||||
|
ASIN: 'ASIN';
|
||||||
|
ASTEXT: 'ASTEXT';
|
||||||
|
ASWKB: 'ASWKB';
|
||||||
|
ASWKT: 'ASWKT';
|
||||||
|
ASYMMETRIC_DECRYPT: 'ASYMMETRIC_DECRYPT';
|
||||||
|
ASYMMETRIC_DERIVE: 'ASYMMETRIC_DERIVE';
|
||||||
|
ASYMMETRIC_ENCRYPT: 'ASYMMETRIC_ENCRYPT';
|
||||||
|
ASYMMETRIC_SIGN: 'ASYMMETRIC_SIGN';
|
||||||
|
ASYMMETRIC_VERIFY: 'ASYMMETRIC_VERIFY';
|
||||||
|
ATAN: 'ATAN';
|
||||||
|
ATAN2: 'ATAN2';
|
||||||
|
BENCHMARK: 'BENCHMARK';
|
||||||
|
BIN: 'BIN';
|
||||||
|
BIT_COUNT: 'BIT_COUNT';
|
||||||
|
BIT_LENGTH: 'BIT_LENGTH';
|
||||||
|
BUFFER: 'BUFFER';
|
||||||
|
CEIL: 'CEIL';
|
||||||
|
CEILING: 'CEILING';
|
||||||
|
CENTROID: 'CENTROID';
|
||||||
|
CHARACTER_LENGTH: 'CHARACTER_LENGTH';
|
||||||
|
CHARSET: 'CHARSET';
|
||||||
|
CHAR_LENGTH: 'CHAR_LENGTH';
|
||||||
|
COERCIBILITY: 'COERCIBILITY';
|
||||||
|
COLLATION: 'COLLATION';
|
||||||
|
COMPRESS: 'COMPRESS';
|
||||||
|
CONCAT: 'CONCAT';
|
||||||
|
CONCAT_WS: 'CONCAT_WS';
|
||||||
|
CONNECTION_ID: 'CONNECTION_ID';
|
||||||
|
CONV: 'CONV';
|
||||||
|
CONVERT_TZ: 'CONVERT_TZ';
|
||||||
|
COS: 'COS';
|
||||||
|
COT: 'COT';
|
||||||
|
CRC32: 'CRC32';
|
||||||
|
CREATE_ASYMMETRIC_PRIV_KEY: 'CREATE_ASYMMETRIC_PRIV_KEY';
|
||||||
|
CREATE_ASYMMETRIC_PUB_KEY: 'CREATE_ASYMMETRIC_PUB_KEY';
|
||||||
|
CREATE_DH_PARAMETERS: 'CREATE_DH_PARAMETERS';
|
||||||
|
CREATE_DIGEST: 'CREATE_DIGEST';
|
||||||
|
CROSSES: 'CROSSES';
|
||||||
|
DATEDIFF: 'DATEDIFF';
|
||||||
|
DATE_FORMAT: 'DATE_FORMAT';
|
||||||
|
DAYNAME: 'DAYNAME';
|
||||||
|
DAYOFMONTH: 'DAYOFMONTH';
|
||||||
|
DAYOFWEEK: 'DAYOFWEEK';
|
||||||
|
DAYOFYEAR: 'DAYOFYEAR';
|
||||||
|
DECODE: 'DECODE';
|
||||||
|
DEGREES: 'DEGREES';
|
||||||
|
DES_DECRYPT: 'DES_DECRYPT';
|
||||||
|
DES_ENCRYPT: 'DES_ENCRYPT';
|
||||||
|
DIMENSION: 'DIMENSION';
|
||||||
|
DISJOINT: 'DISJOINT';
|
||||||
|
ELT: 'ELT';
|
||||||
|
ENCODE: 'ENCODE';
|
||||||
|
ENCRYPT: 'ENCRYPT';
|
||||||
|
ENDPOINT: 'ENDPOINT';
|
||||||
|
ENVELOPE: 'ENVELOPE';
|
||||||
|
EQUALS: 'EQUALS';
|
||||||
|
EXP: 'EXP';
|
||||||
|
EXPORT_SET: 'EXPORT_SET';
|
||||||
|
EXTERIORRING: 'EXTERIORRING';
|
||||||
|
EXTRACTVALUE: 'EXTRACTVALUE';
|
||||||
|
FIELD: 'FIELD';
|
||||||
|
FIND_IN_SET: 'FIND_IN_SET';
|
||||||
|
FLOOR: 'FLOOR';
|
||||||
|
FORMAT: 'FORMAT';
|
||||||
|
FOUND_ROWS: 'FOUND_ROWS';
|
||||||
|
FROM_BASE64: 'FROM_BASE64';
|
||||||
|
FROM_DAYS: 'FROM_DAYS';
|
||||||
|
FROM_UNIXTIME: 'FROM_UNIXTIME';
|
||||||
|
GEOMCOLLFROMTEXT: 'GEOMCOLLFROMTEXT';
|
||||||
|
GEOMCOLLFROMWKB: 'GEOMCOLLFROMWKB';
|
||||||
|
GEOMETRYCOLLECTIONFROMTEXT: 'GEOMETRYCOLLECTIONFROMTEXT';
|
||||||
|
GEOMETRYCOLLECTIONFROMWKB: 'GEOMETRYCOLLECTIONFROMWKB';
|
||||||
|
GEOMETRYFROMTEXT: 'GEOMETRYFROMTEXT';
|
||||||
|
GEOMETRYFROMWKB: 'GEOMETRYFROMWKB';
|
||||||
|
GEOMETRYN: 'GEOMETRYN';
|
||||||
|
GEOMETRYTYPE: 'GEOMETRYTYPE';
|
||||||
|
GEOMFROMTEXT: 'GEOMFROMTEXT';
|
||||||
|
GEOMFROMWKB: 'GEOMFROMWKB';
|
||||||
|
GET_FORMAT: 'GET_FORMAT';
|
||||||
|
GET_LOCK: 'GET_LOCK';
|
||||||
|
GLENGTH: 'GLENGTH';
|
||||||
|
GREATEST: 'GREATEST';
|
||||||
|
GTID_SUBSET: 'GTID_SUBSET';
|
||||||
|
GTID_SUBTRACT: 'GTID_SUBTRACT';
|
||||||
|
HEX: 'HEX';
|
||||||
|
IFNULL: 'IFNULL';
|
||||||
|
INET6_ATON: 'INET6_ATON';
|
||||||
|
INET6_NTOA: 'INET6_NTOA';
|
||||||
|
INET_ATON: 'INET_ATON';
|
||||||
|
INET_NTOA: 'INET_NTOA';
|
||||||
|
INSTR: 'INSTR';
|
||||||
|
INTERIORRINGN: 'INTERIORRINGN';
|
||||||
|
INTERSECTS: 'INTERSECTS';
|
||||||
|
ISCLOSED: 'ISCLOSED';
|
||||||
|
ISEMPTY: 'ISEMPTY';
|
||||||
|
ISNULL: 'ISNULL';
|
||||||
|
ISSIMPLE: 'ISSIMPLE';
|
||||||
|
IS_FREE_LOCK: 'IS_FREE_LOCK';
|
||||||
|
IS_IPV4: 'IS_IPV4';
|
||||||
|
IS_IPV4_COMPAT: 'IS_IPV4_COMPAT';
|
||||||
|
IS_IPV4_MAPPED: 'IS_IPV4_MAPPED';
|
||||||
|
IS_IPV6: 'IS_IPV6';
|
||||||
|
IS_USED_LOCK: 'IS_USED_LOCK';
|
||||||
|
LAST_INSERT_ID: 'LAST_INSERT_ID';
|
||||||
|
LCASE: 'LCASE';
|
||||||
|
LEAST: 'LEAST';
|
||||||
|
LENGTH: 'LENGTH';
|
||||||
|
LINEFROMTEXT: 'LINEFROMTEXT';
|
||||||
|
LINEFROMWKB: 'LINEFROMWKB';
|
||||||
|
LINESTRINGFROMTEXT: 'LINESTRINGFROMTEXT';
|
||||||
|
LINESTRINGFROMWKB: 'LINESTRINGFROMWKB';
|
||||||
|
LN: 'LN';
|
||||||
|
LOAD_FILE: 'LOAD_FILE';
|
||||||
|
LOCATE: 'LOCATE';
|
||||||
|
LOG: 'LOG';
|
||||||
|
LOG10: 'LOG10';
|
||||||
|
LOG2: 'LOG2';
|
||||||
|
LOWER: 'LOWER';
|
||||||
|
LPAD: 'LPAD';
|
||||||
|
LTRIM: 'LTRIM';
|
||||||
|
MAKEDATE: 'MAKEDATE';
|
||||||
|
MAKETIME: 'MAKETIME';
|
||||||
|
MAKE_SET: 'MAKE_SET';
|
||||||
|
MASTER_POS_WAIT: 'MASTER_POS_WAIT';
|
||||||
|
MBRCONTAINS: 'MBRCONTAINS';
|
||||||
|
MBRDISJOINT: 'MBRDISJOINT';
|
||||||
|
MBREQUAL: 'MBREQUAL';
|
||||||
|
MBRINTERSECTS: 'MBRINTERSECTS';
|
||||||
|
MBROVERLAPS: 'MBROVERLAPS';
|
||||||
|
MBRTOUCHES: 'MBRTOUCHES';
|
||||||
|
MBRWITHIN: 'MBRWITHIN';
|
||||||
|
MD5: 'MD5';
|
||||||
|
MLINEFROMTEXT: 'MLINEFROMTEXT';
|
||||||
|
MLINEFROMWKB: 'MLINEFROMWKB';
|
||||||
|
MONTHNAME: 'MONTHNAME';
|
||||||
|
MPOINTFROMTEXT: 'MPOINTFROMTEXT';
|
||||||
|
MPOINTFROMWKB: 'MPOINTFROMWKB';
|
||||||
|
MPOLYFROMTEXT: 'MPOLYFROMTEXT';
|
||||||
|
MPOLYFROMWKB: 'MPOLYFROMWKB';
|
||||||
|
MULTILINESTRINGFROMTEXT: 'MULTILINESTRINGFROMTEXT';
|
||||||
|
MULTILINESTRINGFROMWKB: 'MULTILINESTRINGFROMWKB';
|
||||||
|
MULTIPOINTFROMTEXT: 'MULTIPOINTFROMTEXT';
|
||||||
|
MULTIPOINTFROMWKB: 'MULTIPOINTFROMWKB';
|
||||||
|
MULTIPOLYGONFROMTEXT: 'MULTIPOLYGONFROMTEXT';
|
||||||
|
MULTIPOLYGONFROMWKB: 'MULTIPOLYGONFROMWKB';
|
||||||
|
NAME_CONST: 'NAME_CONST';
|
||||||
|
NULLIF: 'NULLIF';
|
||||||
|
NUMGEOMETRIES: 'NUMGEOMETRIES';
|
||||||
|
NUMINTERIORRINGS: 'NUMINTERIORRINGS';
|
||||||
|
NUMPOINTS: 'NUMPOINTS';
|
||||||
|
OCT: 'OCT';
|
||||||
|
OCTET_LENGTH: 'OCTET_LENGTH';
|
||||||
|
ORD: 'ORD';
|
||||||
|
OVERLAPS: 'OVERLAPS';
|
||||||
|
PERIOD_ADD: 'PERIOD_ADD';
|
||||||
|
PERIOD_DIFF: 'PERIOD_DIFF';
|
||||||
|
PI: 'PI';
|
||||||
|
POINTFROMTEXT: 'POINTFROMTEXT';
|
||||||
|
POINTFROMWKB: 'POINTFROMWKB';
|
||||||
|
POINTN: 'POINTN';
|
||||||
|
POLYFROMTEXT: 'POLYFROMTEXT';
|
||||||
|
POLYFROMWKB: 'POLYFROMWKB';
|
||||||
|
POLYGONFROMTEXT: 'POLYGONFROMTEXT';
|
||||||
|
POLYGONFROMWKB: 'POLYGONFROMWKB';
|
||||||
|
POW: 'POW';
|
||||||
|
POWER: 'POWER';
|
||||||
|
QUOTE: 'QUOTE';
|
||||||
|
RADIANS: 'RADIANS';
|
||||||
|
RAND: 'RAND';
|
||||||
|
RANDOM_BYTES: 'RANDOM_BYTES';
|
||||||
|
RELEASE_LOCK: 'RELEASE_LOCK';
|
||||||
|
REVERSE: 'REVERSE';
|
||||||
|
ROUND: 'ROUND';
|
||||||
|
ROW_COUNT: 'ROW_COUNT';
|
||||||
|
RPAD: 'RPAD';
|
||||||
|
RTRIM: 'RTRIM';
|
||||||
|
SEC_TO_TIME: 'SEC_TO_TIME';
|
||||||
|
SESSION_USER: 'SESSION_USER';
|
||||||
|
SHA: 'SHA';
|
||||||
|
SHA1: 'SHA1';
|
||||||
|
SHA2: 'SHA2';
|
||||||
|
SIGN: 'SIGN';
|
||||||
|
SIN: 'SIN';
|
||||||
|
SLEEP: 'SLEEP';
|
||||||
|
SOUNDEX: 'SOUNDEX';
|
||||||
|
SQL_THREAD_WAIT_AFTER_GTIDS: 'SQL_THREAD_WAIT_AFTER_GTIDS';
|
||||||
|
SQRT: 'SQRT';
|
||||||
|
SRID: 'SRID';
|
||||||
|
STARTPOINT: 'STARTPOINT';
|
||||||
|
STRCMP: 'STRCMP';
|
||||||
|
STR_TO_DATE: 'STR_TO_DATE';
|
||||||
|
ST_AREA: 'ST_AREA';
|
||||||
|
ST_ASBINARY: 'ST_ASBINARY';
|
||||||
|
ST_ASTEXT: 'ST_ASTEXT';
|
||||||
|
ST_ASWKB: 'ST_ASWKB';
|
||||||
|
ST_ASWKT: 'ST_ASWKT';
|
||||||
|
ST_BUFFER: 'ST_BUFFER';
|
||||||
|
ST_CENTROID: 'ST_CENTROID';
|
||||||
|
ST_CONTAINS: 'ST_CONTAINS';
|
||||||
|
ST_CROSSES: 'ST_CROSSES';
|
||||||
|
ST_DIFFERENCE: 'ST_DIFFERENCE';
|
||||||
|
ST_DIMENSION: 'ST_DIMENSION';
|
||||||
|
ST_DISJOINT: 'ST_DISJOINT';
|
||||||
|
ST_DISTANCE: 'ST_DISTANCE';
|
||||||
|
ST_ENDPOINT: 'ST_ENDPOINT';
|
||||||
|
ST_ENVELOPE: 'ST_ENVELOPE';
|
||||||
|
ST_EQUALS: 'ST_EQUALS';
|
||||||
|
ST_EXTERIORRING: 'ST_EXTERIORRING';
|
||||||
|
ST_GEOMCOLLFROMTEXT: 'ST_GEOMCOLLFROMTEXT';
|
||||||
|
ST_GEOMCOLLFROMTXT: 'ST_GEOMCOLLFROMTXT';
|
||||||
|
ST_GEOMCOLLFROMWKB: 'ST_GEOMCOLLFROMWKB';
|
||||||
|
ST_GEOMETRYCOLLECTIONFROMTEXT: 'ST_GEOMETRYCOLLECTIONFROMTEXT';
|
||||||
|
ST_GEOMETRYCOLLECTIONFROMWKB: 'ST_GEOMETRYCOLLECTIONFROMWKB';
|
||||||
|
ST_GEOMETRYFROMTEXT: 'ST_GEOMETRYFROMTEXT';
|
||||||
|
ST_GEOMETRYFROMWKB: 'ST_GEOMETRYFROMWKB';
|
||||||
|
ST_GEOMETRYN: 'ST_GEOMETRYN';
|
||||||
|
ST_GEOMETRYTYPE: 'ST_GEOMETRYTYPE';
|
||||||
|
ST_GEOMFROMTEXT: 'ST_GEOMFROMTEXT';
|
||||||
|
ST_GEOMFROMWKB: 'ST_GEOMFROMWKB';
|
||||||
|
ST_INTERIORRINGN: 'ST_INTERIORRINGN';
|
||||||
|
ST_INTERSECTION: 'ST_INTERSECTION';
|
||||||
|
ST_INTERSECTS: 'ST_INTERSECTS';
|
||||||
|
ST_ISCLOSED: 'ST_ISCLOSED';
|
||||||
|
ST_ISEMPTY: 'ST_ISEMPTY';
|
||||||
|
ST_ISSIMPLE: 'ST_ISSIMPLE';
|
||||||
|
ST_LINEFROMTEXT: 'ST_LINEFROMTEXT';
|
||||||
|
ST_LINEFROMWKB: 'ST_LINEFROMWKB';
|
||||||
|
ST_LINESTRINGFROMTEXT: 'ST_LINESTRINGFROMTEXT';
|
||||||
|
ST_LINESTRINGFROMWKB: 'ST_LINESTRINGFROMWKB';
|
||||||
|
ST_NUMGEOMETRIES: 'ST_NUMGEOMETRIES';
|
||||||
|
ST_NUMINTERIORRING: 'ST_NUMINTERIORRING';
|
||||||
|
ST_NUMINTERIORRINGS: 'ST_NUMINTERIORRINGS';
|
||||||
|
ST_NUMPOINTS: 'ST_NUMPOINTS';
|
||||||
|
ST_OVERLAPS: 'ST_OVERLAPS';
|
||||||
|
ST_POINTFROMTEXT: 'ST_POINTFROMTEXT';
|
||||||
|
ST_POINTFROMWKB: 'ST_POINTFROMWKB';
|
||||||
|
ST_POINTN: 'ST_POINTN';
|
||||||
|
ST_POLYFROMTEXT: 'ST_POLYFROMTEXT';
|
||||||
|
ST_POLYFROMWKB: 'ST_POLYFROMWKB';
|
||||||
|
ST_POLYGONFROMTEXT: 'ST_POLYGONFROMTEXT';
|
||||||
|
ST_POLYGONFROMWKB: 'ST_POLYGONFROMWKB';
|
||||||
|
ST_SRID: 'ST_SRID';
|
||||||
|
ST_STARTPOINT: 'ST_STARTPOINT';
|
||||||
|
ST_SYMDIFFERENCE: 'ST_SYMDIFFERENCE';
|
||||||
|
ST_TOUCHES: 'ST_TOUCHES';
|
||||||
|
ST_UNION: 'ST_UNION';
|
||||||
|
ST_WITHIN: 'ST_WITHIN';
|
||||||
|
ST_X: 'ST_X';
|
||||||
|
ST_Y: 'ST_Y';
|
||||||
|
SUBDATE: 'SUBDATE';
|
||||||
|
SUBSTRING_INDEX: 'SUBSTRING_INDEX';
|
||||||
|
SUBTIME: 'SUBTIME';
|
||||||
|
SYSTEM_USER: 'SYSTEM_USER';
|
||||||
|
TAN: 'TAN';
|
||||||
|
TIMEDIFF: 'TIMEDIFF';
|
||||||
|
TIMESTAMPADD: 'TIMESTAMPADD';
|
||||||
|
TIMESTAMPDIFF: 'TIMESTAMPDIFF';
|
||||||
|
TIME_FORMAT: 'TIME_FORMAT';
|
||||||
|
TIME_TO_SEC: 'TIME_TO_SEC';
|
||||||
|
TOUCHES: 'TOUCHES';
|
||||||
|
TO_BASE64: 'TO_BASE64';
|
||||||
|
TO_DAYS: 'TO_DAYS';
|
||||||
|
TO_SECONDS: 'TO_SECONDS';
|
||||||
|
UCASE: 'UCASE';
|
||||||
|
UNCOMPRESS: 'UNCOMPRESS';
|
||||||
|
UNCOMPRESSED_LENGTH: 'UNCOMPRESSED_LENGTH';
|
||||||
|
UNHEX: 'UNHEX';
|
||||||
|
UNIX_TIMESTAMP: 'UNIX_TIMESTAMP';
|
||||||
|
UPDATEXML: 'UPDATEXML';
|
||||||
|
UPPER: 'UPPER';
|
||||||
|
UUID: 'UUID';
|
||||||
|
UUID_SHORT: 'UUID_SHORT';
|
||||||
|
VALIDATE_PASSWORD_STRENGTH: 'VALIDATE_PASSWORD_STRENGTH';
|
||||||
|
VERSION: 'VERSION';
|
||||||
|
WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS: 'WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS';
|
||||||
|
WEEKDAY: 'WEEKDAY';
|
||||||
|
WEEKOFYEAR: 'WEEKOFYEAR';
|
||||||
|
WEIGHT_STRING: 'WEIGHT_STRING';
|
||||||
|
WITHIN: 'WITHIN';
|
||||||
|
YEARWEEK: 'YEARWEEK';
|
||||||
|
Y_FUNCTION: 'Y';
|
||||||
|
X_FUNCTION: 'X';
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// Operators
|
||||||
|
// Operators. Assigns
|
||||||
|
|
||||||
|
VAR_ASSIGN: ':=';
|
||||||
|
PLUS_ASSIGN: '+=';
|
||||||
|
MINUS_ASSIGN: '-=';
|
||||||
|
MULT_ASSIGN: '*=';
|
||||||
|
DIV_ASSIGN: '/=';
|
||||||
|
MOD_ASSIGN: '%=';
|
||||||
|
AND_ASSIGN: '&=';
|
||||||
|
XOR_ASSIGN: '^=';
|
||||||
|
OR_ASSIGN: '|=';
|
||||||
|
|
||||||
|
|
||||||
|
// Operators. Arithmetics
|
||||||
|
|
||||||
|
STAR: '*';
|
||||||
|
DIVIDE: '/';
|
||||||
|
MODULE: '%';
|
||||||
|
PLUS: '+';
|
||||||
|
MINUSMINUS: '--';
|
||||||
|
MINUS: '-';
|
||||||
|
DIV: 'DIV';
|
||||||
|
MOD: 'MOD';
|
||||||
|
|
||||||
|
|
||||||
|
// Operators. Comparation
|
||||||
|
|
||||||
|
EQUAL_SYMBOL: '=';
|
||||||
|
GREATER_SYMBOL: '>';
|
||||||
|
LESS_SYMBOL: '<';
|
||||||
|
EXCLAMATION_SYMBOL: '!';
|
||||||
|
|
||||||
|
|
||||||
|
// Operators. Bit
|
||||||
|
|
||||||
|
BIT_NOT_OP: '~';
|
||||||
|
BIT_OR_OP: '|';
|
||||||
|
BIT_AND_OP: '&';
|
||||||
|
BIT_XOR_OP: '^';
|
||||||
|
|
||||||
|
|
||||||
|
// Constructors symbols
|
||||||
|
|
||||||
|
DOT: '.';
|
||||||
|
LR_BRACKET: '(';
|
||||||
|
RR_BRACKET: ')';
|
||||||
|
COMMA: ',';
|
||||||
|
SEMI: ';';
|
||||||
|
AT_SIGN: '@';
|
||||||
|
ZERO_DECIMAL: '0';
|
||||||
|
ONE_DECIMAL: '1';
|
||||||
|
TWO_DECIMAL: '2';
|
||||||
|
SINGLE_QUOTE_SYMB: '\'';
|
||||||
|
DOUBLE_QUOTE_SYMB: '"';
|
||||||
|
REVERSE_QUOTE_SYMB: '`';
|
||||||
|
COLON_SYMB: ':';
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// Charsets
|
||||||
|
|
||||||
|
CHARSET_REVERSE_QOUTE_STRING: '`' CHARSET_NAME '`';
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// File's sizes
|
||||||
|
|
||||||
|
|
||||||
|
FILESIZE_LITERAL: DEC_DIGIT+ ('K'|'M'|'G'|'T');
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// Literal Primitives
|
||||||
|
|
||||||
|
|
||||||
|
START_NATIONAL_STRING_LITERAL: 'N' SQUOTA_STRING;
|
||||||
|
STRING_LITERAL: DQUOTA_STRING | SQUOTA_STRING;
|
||||||
|
DECIMAL_LITERAL: DEC_DIGIT+;
|
||||||
|
HEXADECIMAL_LITERAL: 'X' '\'' (HEX_DIGIT HEX_DIGIT)+ '\''
|
||||||
|
| '0X' HEX_DIGIT+;
|
||||||
|
|
||||||
|
REAL_LITERAL: (DEC_DIGIT+)? '.' DEC_DIGIT+
|
||||||
|
| DEC_DIGIT+ '.' EXPONENT_NUM_PART
|
||||||
|
| (DEC_DIGIT+)? '.' (DEC_DIGIT+ EXPONENT_NUM_PART)
|
||||||
|
| DEC_DIGIT+ EXPONENT_NUM_PART;
|
||||||
|
NULL_SPEC_LITERAL: '\\' 'N';
|
||||||
|
BIT_STRING: BIT_STRING_L;
|
||||||
|
STRING_CHARSET_NAME: '_' CHARSET_NAME;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// Hack for dotID
|
||||||
|
// Prevent recognize string: .123somelatin AS ((.123), FLOAT_LITERAL), ((somelatin), ID)
|
||||||
|
// it must recoginze: .123somelatin AS ((.), DOT), (123somelatin, ID)
|
||||||
|
|
||||||
|
DOT_ID: '.' ID_LITERAL;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// Identifiers
|
||||||
|
|
||||||
|
ID: ID_LITERAL;
|
||||||
|
// DOUBLE_QUOTE_ID: '"' ~'"'+ '"';
|
||||||
|
REVERSE_QUOTE_ID: '`' ~'`'+ '`';
|
||||||
|
STRING_USER_NAME: (
|
||||||
|
SQUOTA_STRING | DQUOTA_STRING
|
||||||
|
| BQUOTA_STRING | ID_LITERAL
|
||||||
|
) '@'
|
||||||
|
(
|
||||||
|
SQUOTA_STRING | DQUOTA_STRING
|
||||||
|
| BQUOTA_STRING | ID_LITERAL
|
||||||
|
);
|
||||||
|
LOCAL_ID: '@'
|
||||||
|
(
|
||||||
|
[A-Z0-9._$]+
|
||||||
|
| SQUOTA_STRING
|
||||||
|
| DQUOTA_STRING
|
||||||
|
| BQUOTA_STRING
|
||||||
|
);
|
||||||
|
GLOBAL_ID: '@' '@'
|
||||||
|
(
|
||||||
|
[A-Z0-9._$]+
|
||||||
|
| BQUOTA_STRING
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
// Fragments for Literal primitives
|
||||||
|
|
||||||
|
fragment CHARSET_NAME: ARMSCII8 | ASCII | BIG5 | BINARY | CP1250
|
||||||
|
| CP1251 | CP1256 | CP1257 | CP850
|
||||||
|
| CP852 | CP866 | CP932 | DEC8 | EUCJPMS
|
||||||
|
| EUCKR | GB2312 | GBK | GEOSTD8 | GREEK
|
||||||
|
| HEBREW | HP8 | KEYBCS2 | KOI8R | KOI8U
|
||||||
|
| LATIN1 | LATIN2 | LATIN5 | LATIN7
|
||||||
|
| MACCE | MACROMAN | SJIS | SWE7 | TIS620
|
||||||
|
| UCS2 | UJIS | UTF16 | UTF16LE | UTF32
|
||||||
|
| UTF8 | UTF8MB4;
|
||||||
|
|
||||||
|
fragment EXPONENT_NUM_PART: 'E' '-'? DEC_DIGIT+;
|
||||||
|
fragment ID_LITERAL: [A-Z_$0-9]*?[A-Z_$]+?[A-Z_$0-9]*;
|
||||||
|
fragment DQUOTA_STRING: '"' ( '\\'. | '""' | ~('"'| '\\') )* '"';
|
||||||
|
fragment SQUOTA_STRING: '\'' ('\\'. | '\'\'' | ~('\'' | '\\'))* '\'';
|
||||||
|
fragment BQUOTA_STRING: '`' ( '\\'. | '``' | ~('`'|'\\'))* '`';
|
||||||
|
fragment HEX_DIGIT: [0-9A-F];
|
||||||
|
fragment DEC_DIGIT: [0-9];
|
||||||
|
fragment BIT_STRING_L: 'B' '\'' [01]+ '\'';
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// Last tokens must generate Errors
|
||||||
|
|
||||||
|
ERROR_RECONGNIGION: . -> channel(ERRORCHANNEL);
|
@ -0,0 +1,2468 @@
|
|||||||
|
/*
|
||||||
|
MySQL (Positive Technologies) grammar
|
||||||
|
The MIT License (MIT).
|
||||||
|
Copyright (c) 2015-2017, Ivan Kochurkin (kvanttt@gmail.com), Positive Technologies.
|
||||||
|
Copyright (c) 2017, Ivan Khudyashev (IHudyashov@ptsecurity.com)
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in
|
||||||
|
all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
parser grammar MySqlParser;
|
||||||
|
|
||||||
|
options { tokenVocab=MySqlLexer; }
|
||||||
|
|
||||||
|
|
||||||
|
// Top Level Description
|
||||||
|
|
||||||
|
root
|
||||||
|
: sqlStatements? MINUSMINUS? EOF
|
||||||
|
;
|
||||||
|
|
||||||
|
sqlStatements
|
||||||
|
: (sqlStatement MINUSMINUS? SEMI | emptyStatement)*
|
||||||
|
(sqlStatement (MINUSMINUS? SEMI)? | emptyStatement)
|
||||||
|
;
|
||||||
|
|
||||||
|
sqlStatement
|
||||||
|
: ddlStatement
|
||||||
|
;
|
||||||
|
|
||||||
|
//sqlStatement
|
||||||
|
// : ddlStatement | dmlStatement | transactionStatement
|
||||||
|
// | replicationStatement | preparedStatement
|
||||||
|
// | administrationStatement | utilityStatement
|
||||||
|
// ;
|
||||||
|
|
||||||
|
emptyStatement
|
||||||
|
: SEMI
|
||||||
|
;
|
||||||
|
|
||||||
|
ddlStatement
|
||||||
|
: createDatabase | createEvent | createIndex
|
||||||
|
| createLogfileGroup | createProcedure | createFunction
|
||||||
|
| createServer | createTable | createTablespaceInnodb
|
||||||
|
| createTablespaceNdb | createTrigger | createView
|
||||||
|
| alterDatabase | alterEvent | alterFunction
|
||||||
|
| alterInstance | alterLogfileGroup | alterProcedure
|
||||||
|
| alterServer | alterTable | alterTablespace | alterView
|
||||||
|
| dropDatabase | dropEvent | dropIndex
|
||||||
|
| dropLogfileGroup | dropProcedure | dropFunction
|
||||||
|
| dropServer | dropTable | dropTablespace
|
||||||
|
| dropTrigger | dropView
|
||||||
|
| renameTable | truncateTable
|
||||||
|
;
|
||||||
|
|
||||||
|
dmlStatement
|
||||||
|
: selectStatement | insertStatement | updateStatement
|
||||||
|
| deleteStatement | replaceStatement | callStatement
|
||||||
|
| loadDataStatement | loadXmlStatement | doStatement
|
||||||
|
| handlerStatement
|
||||||
|
;
|
||||||
|
|
||||||
|
transactionStatement
|
||||||
|
: startTransaction
|
||||||
|
| beginWork | commitWork | rollbackWork
|
||||||
|
| savepointStatement | rollbackStatement
|
||||||
|
| releaseStatement | lockTables | unlockTables
|
||||||
|
;
|
||||||
|
|
||||||
|
replicationStatement
|
||||||
|
: changeMaster | changeReplicationFilter | purgeBinaryLogs
|
||||||
|
| resetMaster | resetSlave | startSlave | stopSlave
|
||||||
|
| startGroupReplication | stopGroupReplication
|
||||||
|
| xaStartTransaction | xaEndTransaction | xaPrepareStatement
|
||||||
|
| xaCommitWork | xaRollbackWork | xaRecoverWork
|
||||||
|
;
|
||||||
|
|
||||||
|
preparedStatement
|
||||||
|
: prepareStatement | executeStatement | deallocatePrepare
|
||||||
|
;
|
||||||
|
|
||||||
|
// remark: NOT INCLUDED IN sqlStatement, but include in body
|
||||||
|
// of routine's statements
|
||||||
|
compoundStatement
|
||||||
|
: blockStatement
|
||||||
|
| caseStatement | ifStatement | leaveStatement
|
||||||
|
| loopStatement | repeatStatement | whileStatement
|
||||||
|
| iterateStatement | returnStatement | cursorStatement
|
||||||
|
;
|
||||||
|
|
||||||
|
administrationStatement
|
||||||
|
: alterUser | createUser | dropUser | grantStatement
|
||||||
|
| grantProxy | renameUser | revokeStatement
|
||||||
|
| revokeProxy | analyzeTable | checkTable
|
||||||
|
| checksumTable | optimizeTable | repairTable
|
||||||
|
| createUdfunction | installPlugin | uninstallPlugin
|
||||||
|
| setStatement | showStatement | binlogStatement
|
||||||
|
| cacheIndexStatement | flushStatement | killStatement
|
||||||
|
| loadIndexIntoCache | resetStatement
|
||||||
|
| shutdownStatement
|
||||||
|
;
|
||||||
|
|
||||||
|
utilityStatement
|
||||||
|
: simpleDescribeStatement | fullDescribeStatement
|
||||||
|
| helpStatement | useStatement
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
|
// Data Definition Language
|
||||||
|
|
||||||
|
// Create statements
|
||||||
|
|
||||||
|
createDatabase
|
||||||
|
: CREATE dbFormat=(DATABASE | SCHEMA)
|
||||||
|
ifNotExists? uid createDatabaseOption*
|
||||||
|
;
|
||||||
|
|
||||||
|
createEvent
|
||||||
|
: CREATE ownerStatement? EVENT ifNotExists? fullId
|
||||||
|
ON SCHEDULE scheduleExpression
|
||||||
|
(ON COMPLETION NOT? PRESERVE)? enableType?
|
||||||
|
(COMMENT STRING_LITERAL)?
|
||||||
|
DO routineBody
|
||||||
|
;
|
||||||
|
|
||||||
|
createIndex
|
||||||
|
: CREATE
|
||||||
|
intimeAction=(ONLINE | OFFLINE)?
|
||||||
|
indexCategory=(UNIQUE | FULLTEXT | SPATIAL)?
|
||||||
|
INDEX uid indexType?
|
||||||
|
ON tableName indexColumnNames
|
||||||
|
indexOption*
|
||||||
|
(
|
||||||
|
ALGORITHM '='? algType=(DEFAULT | INPLACE | COPY)
|
||||||
|
| LOCK '='?
|
||||||
|
lockType=(DEFAULT | NONE | SHARED | EXCLUSIVE)
|
||||||
|
)?
|
||||||
|
;
|
||||||
|
|
||||||
|
createLogfileGroup
|
||||||
|
: CREATE LOGFILE GROUP uid
|
||||||
|
ADD UNDOFILE undoFile=STRING_LITERAL
|
||||||
|
(INITIAL_SIZE '='? initSize=fileSizeLiteral)?
|
||||||
|
(UNDO_BUFFER_SIZE '='? undoSize=fileSizeLiteral)?
|
||||||
|
(REDO_BUFFER_SIZE '='? redoSize=fileSizeLiteral)?
|
||||||
|
(NODEGROUP '='? uid)?
|
||||||
|
WAIT?
|
||||||
|
(COMMENT '='? comment=STRING_LITERAL)?
|
||||||
|
ENGINE '='? engineName
|
||||||
|
;
|
||||||
|
|
||||||
|
createProcedure
|
||||||
|
: CREATE ownerStatement?
|
||||||
|
PROCEDURE fullId
|
||||||
|
'(' procedureParameter? (',' procedureParameter)* ')'
|
||||||
|
routineOption*
|
||||||
|
routineBody
|
||||||
|
;
|
||||||
|
|
||||||
|
createFunction
|
||||||
|
: CREATE ownerStatement?
|
||||||
|
FUNCTION fullId
|
||||||
|
'(' functionParameter? (',' functionParameter)* ')'
|
||||||
|
RETURNS dataType
|
||||||
|
routineOption*
|
||||||
|
routineBody
|
||||||
|
;
|
||||||
|
|
||||||
|
createServer
|
||||||
|
: CREATE SERVER uid
|
||||||
|
FOREIGN DATA WRAPPER wrapperName=(MYSQL | STRING_LITERAL)
|
||||||
|
OPTIONS '(' serverOption (',' serverOption)* ')'
|
||||||
|
;
|
||||||
|
|
||||||
|
createTable
|
||||||
|
: CREATE TEMPORARY? TABLE ifNotExists?
|
||||||
|
tableName
|
||||||
|
(
|
||||||
|
LIKE tableName
|
||||||
|
| '(' LIKE parenthesisTable=tableName ')'
|
||||||
|
) #copyCreateTable
|
||||||
|
| CREATE TEMPORARY? TABLE ifNotExists?
|
||||||
|
tableName createDefinitions?
|
||||||
|
( tableOption (','? tableOption)* )?
|
||||||
|
partitionDefinitions? keyViolate=(IGNORE | REPLACE)?
|
||||||
|
AS? selectStatement #queryCreateTable
|
||||||
|
| CREATE TEMPORARY? TABLE ifNotExists?
|
||||||
|
tableName createDefinitions
|
||||||
|
( tableOption (','? tableOption)* )?
|
||||||
|
partitionDefinitions? #columnCreateTable
|
||||||
|
;
|
||||||
|
|
||||||
|
createTablespaceInnodb
|
||||||
|
: CREATE TABLESPACE uid
|
||||||
|
ADD DATAFILE datafile=STRING_LITERAL
|
||||||
|
(FILE_BLOCK_SIZE '=' fileBlockSize=fileSizeLiteral)?
|
||||||
|
(ENGINE '='? engineName)?
|
||||||
|
;
|
||||||
|
|
||||||
|
createTablespaceNdb
|
||||||
|
: CREATE TABLESPACE uid
|
||||||
|
ADD DATAFILE datafile=STRING_LITERAL
|
||||||
|
USE LOGFILE GROUP uid
|
||||||
|
(EXTENT_SIZE '='? extentSize=fileSizeLiteral)?
|
||||||
|
(INITIAL_SIZE '='? initialSize=fileSizeLiteral)?
|
||||||
|
(AUTOEXTEND_SIZE '='? autoextendSize=fileSizeLiteral)?
|
||||||
|
(MAX_SIZE '='? maxSize=fileSizeLiteral)?
|
||||||
|
(NODEGROUP '='? uid)?
|
||||||
|
WAIT?
|
||||||
|
(COMMENT '='? comment=STRING_LITERAL)?
|
||||||
|
ENGINE '='? engineName
|
||||||
|
;
|
||||||
|
|
||||||
|
createTrigger
|
||||||
|
: CREATE ownerStatement?
|
||||||
|
TRIGGER thisTrigger=fullId
|
||||||
|
triggerTime=(BEFORE | AFTER)
|
||||||
|
triggerEvent=(INSERT | UPDATE | DELETE)
|
||||||
|
ON tableName FOR EACH ROW
|
||||||
|
(triggerPlace=(FOLLOWS | PRECEDES) otherTrigger=fullId)?
|
||||||
|
routineBody
|
||||||
|
;
|
||||||
|
|
||||||
|
createView
|
||||||
|
: CREATE (OR REPLACE)?
|
||||||
|
(
|
||||||
|
ALGORITHM '=' algType=(UNDEFINED | MERGE | TEMPTABLE)
|
||||||
|
)?
|
||||||
|
ownerStatement?
|
||||||
|
(SQL SECURITY secContext=(DEFINER | INVOKER))?
|
||||||
|
VIEW fullId ('(' uidList ')')? AS selectStatement
|
||||||
|
(WITH checkOption=(CASCADED | LOCAL)? CHECK OPTION)?
|
||||||
|
;
|
||||||
|
|
||||||
|
// details
|
||||||
|
|
||||||
|
createDatabaseOption
|
||||||
|
: DEFAULT? CHARACTER SET '='? charsetName
|
||||||
|
| DEFAULT? COLLATE '='? collationName
|
||||||
|
;
|
||||||
|
|
||||||
|
ownerStatement
|
||||||
|
: DEFINER '=' (userName | CURRENT_USER ( '(' ')')?)
|
||||||
|
;
|
||||||
|
|
||||||
|
scheduleExpression
|
||||||
|
: AT timestampValue intervalExpr* #preciseSchedule
|
||||||
|
| EVERY (decimalLiteral | expression) intervalType
|
||||||
|
(
|
||||||
|
STARTS start=timestampValue
|
||||||
|
(startIntervals+=intervalExpr)*
|
||||||
|
)?
|
||||||
|
(
|
||||||
|
ENDS end=timestampValue
|
||||||
|
(endIntervals+=intervalExpr)*
|
||||||
|
)? #intervalSchedule
|
||||||
|
;
|
||||||
|
|
||||||
|
timestampValue
|
||||||
|
: CURRENT_TIMESTAMP
|
||||||
|
| stringLiteral
|
||||||
|
| decimalLiteral
|
||||||
|
| expression
|
||||||
|
;
|
||||||
|
|
||||||
|
intervalExpr
|
||||||
|
: '+' INTERVAL (decimalLiteral | expression) intervalType
|
||||||
|
;
|
||||||
|
|
||||||
|
intervalType
|
||||||
|
: intervalTypeBase
|
||||||
|
| YEAR | YEAR_MONTH | DAY_HOUR | DAY_MINUTE
|
||||||
|
| DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND
|
||||||
|
| SECOND_MICROSECOND | MINUTE_MICROSECOND
|
||||||
|
| HOUR_MICROSECOND | DAY_MICROSECOND
|
||||||
|
;
|
||||||
|
|
||||||
|
enableType
|
||||||
|
: ENABLE | DISABLE | DISABLE ON SLAVE
|
||||||
|
;
|
||||||
|
|
||||||
|
indexType
|
||||||
|
: USING (BTREE | HASH)
|
||||||
|
;
|
||||||
|
|
||||||
|
indexOption
|
||||||
|
: KEY_BLOCK_SIZE '='? fileSizeLiteral
|
||||||
|
| indexType
|
||||||
|
| WITH PARSER uid
|
||||||
|
| COMMENT STRING_LITERAL
|
||||||
|
;
|
||||||
|
|
||||||
|
procedureParameter
|
||||||
|
: direction=(IN | OUT | INOUT) uid dataType
|
||||||
|
;
|
||||||
|
|
||||||
|
functionParameter
|
||||||
|
: uid dataType
|
||||||
|
;
|
||||||
|
|
||||||
|
routineOption
|
||||||
|
: COMMENT STRING_LITERAL #routineComment
|
||||||
|
| LANGUAGE SQL #routineLanguage
|
||||||
|
| NOT? DETERMINISTIC #routineBehavior
|
||||||
|
| (
|
||||||
|
CONTAINS SQL | NO SQL | READS SQL DATA
|
||||||
|
| MODIFIES SQL DATA
|
||||||
|
) #routineData
|
||||||
|
| SQL SECURITY context=(DEFINER | INVOKER) #routineSecurity
|
||||||
|
;
|
||||||
|
|
||||||
|
serverOption
|
||||||
|
: HOST STRING_LITERAL
|
||||||
|
| DATABASE STRING_LITERAL
|
||||||
|
| USER STRING_LITERAL
|
||||||
|
| PASSWORD STRING_LITERAL
|
||||||
|
| SOCKET STRING_LITERAL
|
||||||
|
| OWNER STRING_LITERAL
|
||||||
|
| PORT decimalLiteral
|
||||||
|
;
|
||||||
|
|
||||||
|
createDefinitions
|
||||||
|
: '(' createDefinition (',' createDefinition)* ')'
|
||||||
|
;
|
||||||
|
|
||||||
|
createDefinition
|
||||||
|
: uid columnDefinition #columnDeclaration
|
||||||
|
| tableConstraint #constraintDeclaration
|
||||||
|
| indexColumnDefinition #indexDeclaration
|
||||||
|
;
|
||||||
|
|
||||||
|
columnDefinition
|
||||||
|
: dataType columnConstraint*
|
||||||
|
;
|
||||||
|
|
||||||
|
columnConstraint
|
||||||
|
: nullNotnull #nullColumnConstraint
|
||||||
|
| DEFAULT defaultValue #defaultColumnConstraint
|
||||||
|
| AUTO_INCREMENT #autoIncrementColumnConstraint
|
||||||
|
| PRIMARY? KEY #primaryKeyColumnConstraint
|
||||||
|
| UNIQUE KEY? #uniqueKeyColumnConstraint
|
||||||
|
| COMMENT STRING_LITERAL #commentColumnConstraint
|
||||||
|
| COLUMN_FORMAT colformat=(FIXED | DYNAMIC | DEFAULT) #formatColumnConstraint
|
||||||
|
| STORAGE storageval=(DISK | MEMORY | DEFAULT) #storageColumnConstraint
|
||||||
|
| referenceDefinition #referenceColumnConstraint
|
||||||
|
;
|
||||||
|
|
||||||
|
tableConstraint
|
||||||
|
: (CONSTRAINT name=uid?)?
|
||||||
|
PRIMARY KEY indexType? indexColumnNames indexOption* #primaryKeyTableConstraint
|
||||||
|
| (CONSTRAINT name=uid?)?
|
||||||
|
UNIQUE indexFormat=(INDEX | KEY)? index=uid?
|
||||||
|
indexType? indexColumnNames indexOption* #uniqueKeyTableConstraint
|
||||||
|
| (CONSTRAINT name=uid?)?
|
||||||
|
FOREIGN KEY index=uid? indexColumnNames
|
||||||
|
referenceDefinition #foreignKeyTableConstraint
|
||||||
|
| CHECK '(' expression ')' #checkTableConstraint
|
||||||
|
;
|
||||||
|
|
||||||
|
referenceDefinition
|
||||||
|
: REFERENCES tableName indexColumnNames
|
||||||
|
(MATCH matchType=(FULL | PARTIAL | SIMPLE))?
|
||||||
|
referenceAction?
|
||||||
|
;
|
||||||
|
|
||||||
|
referenceAction
|
||||||
|
: ON DELETE onDelete=referenceControlType
|
||||||
|
(
|
||||||
|
ON UPDATE onUpdate=referenceControlType
|
||||||
|
)?
|
||||||
|
| ON UPDATE onUpdate=referenceControlType
|
||||||
|
(
|
||||||
|
ON DELETE onDelete=referenceControlType
|
||||||
|
)?
|
||||||
|
;
|
||||||
|
|
||||||
|
referenceControlType
|
||||||
|
: RESTRICT | CASCADE | SET NULL_LITERAL | NO ACTION
|
||||||
|
;
|
||||||
|
|
||||||
|
indexColumnDefinition
|
||||||
|
: indexFormat=(INDEX | KEY) uid? indexType?
|
||||||
|
indexColumnNames indexOption* #simpleIndexDeclaration
|
||||||
|
| (FULLTEXT | SPATIAL)
|
||||||
|
indexFormat=(INDEX | KEY)? uid?
|
||||||
|
indexColumnNames indexOption* #specialIndexDeclaration
|
||||||
|
;
|
||||||
|
|
||||||
|
tableOption
|
||||||
|
: ENGINE '='? engineName #tableOptionEngine
|
||||||
|
| AUTO_INCREMENT '='? decimalLiteral #tableOptionAutoIncrement
|
||||||
|
| AVG_ROW_LENGTH '='? decimalLiteral #tableOptionAverage
|
||||||
|
| DEFAULT? (CHARACTER SET | CHARSET) '='? charsetName #tableOptionCharset
|
||||||
|
| CHECKSUM '='? boolValue=('0' | '1') #tableOptionChecksum
|
||||||
|
| DEFAULT? COLLATE '='? collationName #tableOptionCollate
|
||||||
|
| COMMENT '='? STRING_LITERAL #tableOptionComment
|
||||||
|
| COMPRESSION '='? STRING_LITERAL #tableOptionCompression
|
||||||
|
| CONNECTION '='? STRING_LITERAL #tableOptionConnection
|
||||||
|
| DATA DIRECTORY '='? STRING_LITERAL #tableOptionDataDirectory
|
||||||
|
| DELAY_KEY_WRITE '='? boolValue=('0' | '1') #tableOptionDelay
|
||||||
|
| ENCRYPTION '='? STRING_LITERAL #tableOptionEncryption
|
||||||
|
| INDEX DIRECTORY '='? STRING_LITERAL #tableOptionIndexDirectory
|
||||||
|
| INSERT_METHOD '='? insertMethod=(NO | FIRST | LAST) #tableOptionInsertMethod
|
||||||
|
| KEY_BLOCK_SIZE '='? fileSizeLiteral #tableOptionKeyBlockSize
|
||||||
|
| MAX_ROWS '='? decimalLiteral #tableOptionMaxRows
|
||||||
|
| MIN_ROWS '='? decimalLiteral #tableOptionMinRows
|
||||||
|
| PACK_KEYS '='? extBoolValue=('0' | '1' | DEFAULT) #tableOptionPackKeys
|
||||||
|
| PASSWORD '='? STRING_LITERAL #tableOptionPassword
|
||||||
|
| ROW_FORMAT '='?
|
||||||
|
rowFormat=(
|
||||||
|
DEFAULT | DYNAMIC | FIXED | COMPRESSED
|
||||||
|
| REDUNDANT | COMPACT
|
||||||
|
) #tableOptionRowFormat
|
||||||
|
| STATS_AUTO_RECALC '='? extBoolValue=(DEFAULT | '0' | '1') #tableOptionRecalculation
|
||||||
|
| STATS_PERSISTENT '='? extBoolValue=(DEFAULT | '0' | '1') #tableOptionPersistent
|
||||||
|
| STATS_SAMPLE_PAGES '='? decimalLiteral #tableOptionSamplePage
|
||||||
|
| TABLESPACE uid tablespaceStorage? #tableOptionTablespace
|
||||||
|
| UNION '='? '(' tables ')' #tableOptionUnion
|
||||||
|
;
|
||||||
|
|
||||||
|
tablespaceStorage
|
||||||
|
: STORAGE (DISK | MEMORY | DEFAULT)
|
||||||
|
;
|
||||||
|
|
||||||
|
partitionDefinitions
|
||||||
|
: PARTITION BY partitionFunctionDefinition
|
||||||
|
(PARTITIONS count=decimalLiteral)?
|
||||||
|
(
|
||||||
|
SUBPARTITION BY subpartitionFunctionDefinition
|
||||||
|
(SUBPARTITIONS subCount=decimalLiteral)?
|
||||||
|
)?
|
||||||
|
('(' partitionDefinition (',' partitionDefinition)* ')')?
|
||||||
|
;
|
||||||
|
|
||||||
|
partitionFunctionDefinition
|
||||||
|
: LINEAR? HASH '(' expression ')' #partitionFunctionHash
|
||||||
|
| LINEAR? KEY (ALGORITHM '=' algType=('1' | '2'))?
|
||||||
|
'(' uidList ')' #partitionFunctionKey
|
||||||
|
| RANGE ( '(' expression ')' | COLUMNS '(' uidList ')' ) #partitionFunctionRange
|
||||||
|
| LIST ( '(' expression ')' | COLUMNS '(' uidList ')' ) #partitionFunctionList
|
||||||
|
;
|
||||||
|
|
||||||
|
subpartitionFunctionDefinition
|
||||||
|
: LINEAR? HASH '(' expression ')' #subPartitionFunctionHash
|
||||||
|
| LINEAR? KEY (ALGORITHM '=' algType=('1' | '2'))?
|
||||||
|
'(' uidList ')' #subPartitionFunctionKey
|
||||||
|
;
|
||||||
|
|
||||||
|
partitionDefinition
|
||||||
|
: PARTITION uid VALUES LESS THAN
|
||||||
|
'('
|
||||||
|
partitionDefinerAtom (',' partitionDefinerAtom)*
|
||||||
|
')'
|
||||||
|
partitionOption*
|
||||||
|
(subpartitionDefinition (',' subpartitionDefinition)*)? #partitionComparision
|
||||||
|
| PARTITION uid VALUES IN
|
||||||
|
'('
|
||||||
|
partitionDefinerAtom (',' partitionDefinerAtom)*
|
||||||
|
')'
|
||||||
|
partitionOption*
|
||||||
|
(subpartitionDefinition (',' subpartitionDefinition)*)? #partitionListAtom
|
||||||
|
| PARTITION uid VALUES IN
|
||||||
|
'('
|
||||||
|
partitionDefinerVector (',' partitionDefinerVector)*
|
||||||
|
')'
|
||||||
|
partitionOption*
|
||||||
|
(subpartitionDefinition (',' subpartitionDefinition)*)? #partitionListVector
|
||||||
|
| PARTITION uid partitionOption*
|
||||||
|
(subpartitionDefinition (',' subpartitionDefinition)*)? #partitionSimple
|
||||||
|
;
|
||||||
|
|
||||||
|
partitionDefinerAtom
|
||||||
|
: constant | MAXVALUE | expression
|
||||||
|
;
|
||||||
|
|
||||||
|
partitionDefinerVector
|
||||||
|
: '(' partitionDefinerAtom (',' partitionDefinerAtom)+ ')'
|
||||||
|
;
|
||||||
|
|
||||||
|
subpartitionDefinition
|
||||||
|
: SUBPARTITION uid partitionOption*
|
||||||
|
;
|
||||||
|
|
||||||
|
partitionOption
|
||||||
|
: STORAGE? ENGINE '='? engineName #partitionOptionEngine
|
||||||
|
| COMMENT '='? comment=STRING_LITERAL #partitionOptionComment
|
||||||
|
| DATA DIRECTORY '='? dataDirectory=STRING_LITERAL #partitionOptionDataDirectory
|
||||||
|
| INDEX DIRECTORY '='? indexDirectory=STRING_LITERAL #partitionOptionIndexDirectory
|
||||||
|
| MAX_ROWS '='? maxRows=decimalLiteral #partitionOptionMaxRows
|
||||||
|
| MIN_ROWS '='? minRows=decimalLiteral #partitionOptionMinRows
|
||||||
|
| TABLESPACE '='? tablespace=uid #partitionOptionTablespace
|
||||||
|
| NODEGROUP '='? nodegroup=uid #partitionOptionNodeGroup
|
||||||
|
;
|
||||||
|
|
||||||
|
// Alter statements
|
||||||
|
|
||||||
|
alterDatabase
|
||||||
|
: ALTER dbFormat=(DATABASE | SCHEMA) uid?
|
||||||
|
createDatabaseOption+ #alterSimpleDatabase
|
||||||
|
| ALTER dbFormat=(DATABASE | SCHEMA) uid
|
||||||
|
UPGRADE DATA DIRECTORY NAME #alterUpgradeName
|
||||||
|
;
|
||||||
|
|
||||||
|
alterEvent
|
||||||
|
: ALTER ownerStatement?
|
||||||
|
EVENT fullId
|
||||||
|
(ON SCHEDULE scheduleExpression)?
|
||||||
|
(ON COMPLETION NOT? PRESERVE)?
|
||||||
|
(RENAME TO fullId)? enableType?
|
||||||
|
(COMMENT STRING_LITERAL)?
|
||||||
|
(DO routineBody)?
|
||||||
|
;
|
||||||
|
|
||||||
|
alterFunction
|
||||||
|
: ALTER FUNCTION fullId routineOption*
|
||||||
|
;
|
||||||
|
|
||||||
|
alterInstance
|
||||||
|
: ALTER INSTANCE ROTATE INNODB MASTER KEY
|
||||||
|
;
|
||||||
|
|
||||||
|
alterLogfileGroup
|
||||||
|
: ALTER LOGFILE GROUP uid
|
||||||
|
ADD UNDOFILE STRING_LITERAL
|
||||||
|
(INITIAL_SIZE '='? fileSizeLiteral)?
|
||||||
|
WAIT? ENGINE '='? engineName
|
||||||
|
;
|
||||||
|
|
||||||
|
alterProcedure
|
||||||
|
: ALTER PROCEDURE fullId routineOption*
|
||||||
|
;
|
||||||
|
|
||||||
|
alterServer
|
||||||
|
: ALTER SERVER uid OPTIONS
|
||||||
|
'(' serverOption (',' serverOption)* ')'
|
||||||
|
;
|
||||||
|
|
||||||
|
alterTable
|
||||||
|
: ALTER intimeAction=(ONLINE | OFFLINE)?
|
||||||
|
IGNORE? TABLE tableName
|
||||||
|
alterSpecification (',' alterSpecification)*
|
||||||
|
partitionDefinitions?
|
||||||
|
;
|
||||||
|
|
||||||
|
alterTablespace
|
||||||
|
: ALTER TABLESPACE uid
|
||||||
|
objectAction=(ADD | DROP) DATAFILE STRING_LITERAL
|
||||||
|
(INITIAL_SIZE '=' fileSizeLiteral)?
|
||||||
|
WAIT?
|
||||||
|
ENGINE '='? engineName
|
||||||
|
;
|
||||||
|
|
||||||
|
alterView
|
||||||
|
: ALTER
|
||||||
|
(
|
||||||
|
ALGORITHM '=' algType=(UNDEFINED | MERGE | TEMPTABLE)
|
||||||
|
)?
|
||||||
|
ownerStatement?
|
||||||
|
(SQL SECURITY secContext=(DEFINER | INVOKER))?
|
||||||
|
VIEW fullId ('(' uidList ')')? AS selectStatement
|
||||||
|
(WITH checkOpt=(CASCADED | LOCAL)? CHECK OPTION)?
|
||||||
|
;
|
||||||
|
|
||||||
|
// details
|
||||||
|
|
||||||
|
alterSpecification
|
||||||
|
: tableOption #alterByTableOption
|
||||||
|
| ADD COLUMN? uid columnDefinition (FIRST | AFTER uid)? #alterByAddColumn
|
||||||
|
| ADD COLUMN?
|
||||||
|
'('
|
||||||
|
uid columnDefinition ( ',' uid columnDefinition)*
|
||||||
|
')' #alterByAddColumns
|
||||||
|
| ADD indexFormat=(INDEX | KEY) uid? indexType?
|
||||||
|
indexColumnNames indexOption* #alterByAddIndex
|
||||||
|
| ADD (CONSTRAINT name=uid?)? PRIMARY KEY
|
||||||
|
indexType? indexColumnNames indexOption* #alterByAddPrimaryKey
|
||||||
|
| ADD (CONSTRAINT name=uid?)? UNIQUE
|
||||||
|
indexFormat=(INDEX | KEY)? indexName=uid?
|
||||||
|
indexType? indexColumnNames indexOption* #alterByAddUniqueKey
|
||||||
|
| ADD keyType=(FULLTEXT | SPATIAL)
|
||||||
|
indexFormat=(INDEX | KEY)? uid?
|
||||||
|
indexColumnNames indexOption* #alterByAddSpecialIndex
|
||||||
|
| ADD (CONSTRAINT name=uid?)? FOREIGN KEY
|
||||||
|
indexName=uid? indexColumnNames referenceDefinition #alterByAddForeignKey
|
||||||
|
| ALGORITHM '='? algType=(DEFAULT | INPLACE | COPY) #alterBySetAlgorithm
|
||||||
|
| ALTER COLUMN? uid
|
||||||
|
(SET DEFAULT defaultValue | DROP DEFAULT) #alterByChangeDefault
|
||||||
|
| CHANGE COLUMN? oldColumn=uid
|
||||||
|
newColumn=uid columnDefinition
|
||||||
|
(FIRST | AFTER afterColumn=uid)? #alterByChangeColumn
|
||||||
|
| LOCK '='? lockType=(DEFAULT | NONE | SHARED | EXCLUSIVE) #alterByLock
|
||||||
|
| MODIFY COLUMN?
|
||||||
|
uid columnDefinition (FIRST | AFTER uid)? #alterByModifyColumn
|
||||||
|
| DROP COLUMN? uid #alterByDropColumn
|
||||||
|
| DROP PRIMARY KEY #alterByDropPrimaryKey
|
||||||
|
| DROP indexFormat=(INDEX | KEY) uid #alterByDropIndex
|
||||||
|
| DROP FOREIGN KEY uid #alterByDropForeignKey
|
||||||
|
| DISABLE KEYS #alterByDisableKeys
|
||||||
|
| ENABLE KEYS #alterByEnableKeys
|
||||||
|
| RENAME renameFormat=(TO | AS)? uid #alterByRename
|
||||||
|
| ORDER BY uidList #alterByOrder
|
||||||
|
| CONVERT TO CHARACTER SET charsetName
|
||||||
|
(COLLATE collationName)? #alterByConvertCharset
|
||||||
|
| DEFAULT? CHARACTER SET '=' charsetName
|
||||||
|
(COLLATE '=' collationName)? #alterByDefaultCharset
|
||||||
|
| DISCARD TABLESPACE #alterByDiscardTablespace
|
||||||
|
| IMPORT TABLESPACE #alterByImportTablespace
|
||||||
|
| FORCE #alterByForce
|
||||||
|
| validationFormat=(WITHOUT | WITH) VALIDATION #alterByValidate
|
||||||
|
| ADD PARTITION partitionDefinition #alterByAddPartition
|
||||||
|
| DROP PARTITION uidList #alterByDropPartition
|
||||||
|
| DISCARD PARTITION (uidList | ALL) TABLESPACE #alterByDiscardPartition
|
||||||
|
| IMPORT PARTITION (uidList | ALL) TABLESPACE #alterByImportPartition
|
||||||
|
| TRUNCATE PARTITION (uidList | ALL) #alterByTruncatePartition
|
||||||
|
| COALESCE PARTITION decimalLiteral #alterByCoalescePartition
|
||||||
|
| REORGANIZE PARTITION uidList
|
||||||
|
INTO '('
|
||||||
|
partitionDefinition (',' partitionDefinition)*
|
||||||
|
')' #alterByReorganizePartition
|
||||||
|
| EXCHANGE PARTITION uid WITH TABLE tableName
|
||||||
|
(validationFormat=(WITH | WITHOUT) VALIDATION)? #alterByExchangePartition
|
||||||
|
| ANALYZE PARTITION (uidList | ALL) #alterByAnalyzePartitiion
|
||||||
|
| CHECK PARTITION (uidList | ALL) #alterByCheckPartition
|
||||||
|
| OPTIMIZE PARTITION (uidList | ALL) #alterByOptimizePartition
|
||||||
|
| REBUILD PARTITION (uidList | ALL) #alterByRebuildPartition
|
||||||
|
| REPAIR PARTITION (uidList | ALL) #alterByRepairPartition
|
||||||
|
| REMOVE PARTITIONING #alterByRemovePartitioning
|
||||||
|
| UPGRADE PARTITIONING #alterByUpgradePartitioning
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
|
// Drop statements
|
||||||
|
|
||||||
|
dropDatabase
|
||||||
|
: DROP dbFormat=(DATABASE | SCHEMA) ifExists? uid
|
||||||
|
;
|
||||||
|
|
||||||
|
dropEvent
|
||||||
|
: DROP EVENT ifExists? fullId
|
||||||
|
;
|
||||||
|
|
||||||
|
dropIndex
|
||||||
|
: DROP INDEX intimeAction=(ONLINE | OFFLINE)?
|
||||||
|
uid ON tableName
|
||||||
|
(
|
||||||
|
ALGORITHM '='? algType=(DEFAULT | INPLACE | COPY)
|
||||||
|
)?
|
||||||
|
(
|
||||||
|
LOCK '='? lockType=(DEFAULT | NONE | SHARED | EXCLUSIVE)
|
||||||
|
)?
|
||||||
|
;
|
||||||
|
|
||||||
|
dropLogfileGroup
|
||||||
|
: DROP LOGFILE GROUP uid ENGINE '=' engineName
|
||||||
|
;
|
||||||
|
|
||||||
|
dropProcedure
|
||||||
|
: DROP PROCEDURE ifExists? fullId
|
||||||
|
;
|
||||||
|
|
||||||
|
dropFunction
|
||||||
|
: DROP FUNCTION ifExists? fullId
|
||||||
|
;
|
||||||
|
|
||||||
|
dropServer
|
||||||
|
: DROP SERVER ifExists? uid
|
||||||
|
;
|
||||||
|
|
||||||
|
dropTable
|
||||||
|
: DROP TEMPORARY? TABLE ifExists?
|
||||||
|
tables dropType=(RESTRICT | CASCADE)?
|
||||||
|
;
|
||||||
|
|
||||||
|
dropTablespace
|
||||||
|
: DROP TABLESPACE uid (ENGINE '='? engineName)?
|
||||||
|
;
|
||||||
|
|
||||||
|
dropTrigger
|
||||||
|
: DROP TRIGGER ifExists? fullId
|
||||||
|
;
|
||||||
|
|
||||||
|
dropView
|
||||||
|
: DROP VIEW ifExists?
|
||||||
|
fullId (',' fullId)* dropType=(RESTRICT | CASCADE)?
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
|
// Other DDL statements
|
||||||
|
|
||||||
|
renameTable
|
||||||
|
: RENAME TABLE
|
||||||
|
renameTableClause (',' renameTableClause)*
|
||||||
|
;
|
||||||
|
|
||||||
|
renameTableClause
|
||||||
|
: tableName TO tableName
|
||||||
|
;
|
||||||
|
|
||||||
|
truncateTable
|
||||||
|
: TRUNCATE TABLE? tableName
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
|
// Data Manipulation Language
|
||||||
|
|
||||||
|
// Primary DML Statements
|
||||||
|
|
||||||
|
|
||||||
|
callStatement
|
||||||
|
: CALL fullId
|
||||||
|
(
|
||||||
|
'(' (constants | expressions)? ')'
|
||||||
|
)?
|
||||||
|
;
|
||||||
|
|
||||||
|
deleteStatement
|
||||||
|
: singleDeleteStatement | multipleDeleteStatement
|
||||||
|
;
|
||||||
|
|
||||||
|
doStatement
|
||||||
|
: DO expressions
|
||||||
|
;
|
||||||
|
|
||||||
|
handlerStatement
|
||||||
|
: handlerOpenStatement
|
||||||
|
| handlerReadIndexStatement
|
||||||
|
| handlerReadStatement
|
||||||
|
| handlerCloseStatement
|
||||||
|
;
|
||||||
|
|
||||||
|
insertStatement
|
||||||
|
: INSERT
|
||||||
|
priority=(LOW_PRIORITY | DELAYED | HIGH_PRIORITY)?
|
||||||
|
IGNORE? INTO? tableName
|
||||||
|
(PARTITION '(' partitions=uidList ')' )?
|
||||||
|
(
|
||||||
|
('(' columns=uidList ')')? insertStatementValue
|
||||||
|
| SET
|
||||||
|
setFirst=updatedElement
|
||||||
|
(',' setElements+=updatedElement)*
|
||||||
|
)
|
||||||
|
(
|
||||||
|
ON DUPLICATE KEY UPDATE
|
||||||
|
duplicatedFirst=updatedElement
|
||||||
|
(',' duplicatedElements+=updatedElement)*
|
||||||
|
)?
|
||||||
|
;
|
||||||
|
|
||||||
|
loadDataStatement
|
||||||
|
: LOAD DATA
|
||||||
|
priority=(LOW_PRIORITY | CONCURRENT)?
|
||||||
|
LOCAL? INFILE filename=STRING_LITERAL
|
||||||
|
violation=(REPLACE | IGNORE)?
|
||||||
|
INTO TABLE tableName
|
||||||
|
(PARTITION '(' uidList ')' )?
|
||||||
|
(CHARACTER SET charset=charsetName)?
|
||||||
|
(
|
||||||
|
fieldsFormat=(FIELDS | COLUMNS)
|
||||||
|
selectFieldsInto+
|
||||||
|
)?
|
||||||
|
(
|
||||||
|
LINES
|
||||||
|
selectLinesInto+
|
||||||
|
)?
|
||||||
|
(
|
||||||
|
IGNORE decimalLiteral linesFormat=(LINES | ROWS)
|
||||||
|
)?
|
||||||
|
( '(' assignmentField (',' assignmentField)* ')' )?
|
||||||
|
(SET updatedElement (',' updatedElement)*)?
|
||||||
|
;
|
||||||
|
|
||||||
|
loadXmlStatement
|
||||||
|
: LOAD XML
|
||||||
|
priority=(LOW_PRIORITY | CONCURRENT)?
|
||||||
|
LOCAL? INFILE filename=STRING_LITERAL
|
||||||
|
violation=(REPLACE | IGNORE)?
|
||||||
|
INTO TABLE tableName
|
||||||
|
(CHARACTER SET charset=charsetName)?
|
||||||
|
(ROWS IDENTIFIED BY '<' tag=STRING_LITERAL '>')?
|
||||||
|
( IGNORE decimalLiteral linesFormat=(LINES | ROWS) )?
|
||||||
|
( '(' assignmentField (',' assignmentField)* ')' )?
|
||||||
|
(SET updatedElement (',' updatedElement)*)?
|
||||||
|
;
|
||||||
|
|
||||||
|
replaceStatement
|
||||||
|
: REPLACE priority=(LOW_PRIORITY | DELAYED)?
|
||||||
|
INTO? tableName
|
||||||
|
(PARTITION '(' partitions=uidList ')' )?
|
||||||
|
(
|
||||||
|
('(' columns=uidList ')')? insertStatementValue
|
||||||
|
| SET
|
||||||
|
setFirst=updatedElement
|
||||||
|
(',' setElements+=updatedElement)*
|
||||||
|
)
|
||||||
|
;
|
||||||
|
|
||||||
|
selectStatement
|
||||||
|
: querySpecification lockClause? #simpleSelect
|
||||||
|
| queryExpression lockClause? #parenthesisSelect
|
||||||
|
| querySpecificationNointo unionStatement+
|
||||||
|
(
|
||||||
|
UNION unionType=(ALL | DISTINCT)?
|
||||||
|
(querySpecification | queryExpression)
|
||||||
|
)?
|
||||||
|
orderByClause? limitClause? lockClause? #unionSelect
|
||||||
|
| queryExpressionNointo unionParenthesis+
|
||||||
|
(
|
||||||
|
UNION unionType=(ALL | DISTINCT)?
|
||||||
|
queryExpression
|
||||||
|
)?
|
||||||
|
orderByClause? limitClause? lockClause? #unionParenthesisSelect
|
||||||
|
;
|
||||||
|
|
||||||
|
updateStatement
|
||||||
|
: singleUpdateStatement | multipleUpdateStatement
|
||||||
|
;
|
||||||
|
|
||||||
|
// details
|
||||||
|
|
||||||
|
insertStatementValue
|
||||||
|
: selectStatement
|
||||||
|
| insertFormat=(VALUES | VALUE)
|
||||||
|
'(' expressionsWithDefaults ')'
|
||||||
|
(',' '(' expressionsWithDefaults ')')*
|
||||||
|
;
|
||||||
|
|
||||||
|
updatedElement
|
||||||
|
: fullColumnName '=' (expression | DEFAULT)
|
||||||
|
;
|
||||||
|
|
||||||
|
assignmentField
|
||||||
|
: uid | LOCAL_ID
|
||||||
|
;
|
||||||
|
|
||||||
|
lockClause
|
||||||
|
: FOR UPDATE | LOCK IN SHARE MODE
|
||||||
|
;
|
||||||
|
|
||||||
|
// Detailed DML Statements
|
||||||
|
|
||||||
|
singleDeleteStatement
|
||||||
|
: DELETE priority=LOW_PRIORITY? QUICK? IGNORE?
|
||||||
|
FROM tableName
|
||||||
|
(PARTITION '(' uidList ')' )?
|
||||||
|
(WHERE expression)?
|
||||||
|
orderByClause? (LIMIT decimalLiteral)?
|
||||||
|
;
|
||||||
|
|
||||||
|
multipleDeleteStatement
|
||||||
|
: DELETE priority=LOW_PRIORITY? QUICK? IGNORE?
|
||||||
|
(
|
||||||
|
tableName ('.' '*')? ( ',' tableName ('.' '*')? )*
|
||||||
|
FROM tableSources
|
||||||
|
| FROM
|
||||||
|
tableName ('.' '*')? ( ',' tableName ('.' '*')? )*
|
||||||
|
USING tableSources
|
||||||
|
)
|
||||||
|
(WHERE expression)?
|
||||||
|
;
|
||||||
|
|
||||||
|
handlerOpenStatement
|
||||||
|
: HANDLER tableName OPEN (AS? uid)?
|
||||||
|
;
|
||||||
|
|
||||||
|
handlerReadIndexStatement
|
||||||
|
: HANDLER tableName READ index=uid
|
||||||
|
(
|
||||||
|
comparisonOperator '(' constants ')'
|
||||||
|
| moveOrder=(FIRST | NEXT | PREV | LAST)
|
||||||
|
)
|
||||||
|
(WHERE expression)? (LIMIT decimalLiteral)?
|
||||||
|
;
|
||||||
|
|
||||||
|
handlerReadStatement
|
||||||
|
: HANDLER tableName READ moveOrder=(FIRST | NEXT)
|
||||||
|
(WHERE expression)? (LIMIT decimalLiteral)?
|
||||||
|
;
|
||||||
|
|
||||||
|
handlerCloseStatement
|
||||||
|
: HANDLER tableName CLOSE
|
||||||
|
;
|
||||||
|
|
||||||
|
singleUpdateStatement
|
||||||
|
: UPDATE priority=LOW_PRIORITY? IGNORE? tableName (AS? uid)?
|
||||||
|
SET updatedElement (',' updatedElement)*
|
||||||
|
(WHERE expression)? orderByClause? limitClause?
|
||||||
|
;
|
||||||
|
|
||||||
|
multipleUpdateStatement
|
||||||
|
: UPDATE priority=LOW_PRIORITY? IGNORE? tableSources
|
||||||
|
SET updatedElement (',' updatedElement)*
|
||||||
|
(WHERE expression)?
|
||||||
|
;
|
||||||
|
|
||||||
|
// details
|
||||||
|
|
||||||
|
orderByClause
|
||||||
|
: ORDER BY orderByExpression (',' orderByExpression)*
|
||||||
|
;
|
||||||
|
|
||||||
|
orderByExpression
|
||||||
|
: expression order=(ASC | DESC)?
|
||||||
|
;
|
||||||
|
|
||||||
|
tableSources
|
||||||
|
: tableSource (',' tableSource)*
|
||||||
|
;
|
||||||
|
|
||||||
|
tableSource
|
||||||
|
: tableSourceItem joinPart* #tableSourceBase
|
||||||
|
| '(' tableSourceItem joinPart* ')' #tableSourceNested
|
||||||
|
;
|
||||||
|
|
||||||
|
tableSourceItem
|
||||||
|
: tableName
|
||||||
|
(PARTITION '(' uidList ')' )? (AS? alias=uid)?
|
||||||
|
(indexHint (',' indexHint)* )? #atomTableItem
|
||||||
|
| (
|
||||||
|
selectStatement
|
||||||
|
| '(' parenthesisSubquery=selectStatement ')'
|
||||||
|
)
|
||||||
|
AS? alias=uid #subqueryTableItem
|
||||||
|
| '(' tableSources ')' #tableSourcesItem
|
||||||
|
;
|
||||||
|
|
||||||
|
indexHint
|
||||||
|
: indexHintAction=(USE | IGNORE | FORCE)
|
||||||
|
keyFormat=(INDEX|KEY) ( FOR indexHintType)?
|
||||||
|
'(' uidList ')'
|
||||||
|
;
|
||||||
|
|
||||||
|
indexHintType
|
||||||
|
: JOIN | ORDER BY | GROUP BY
|
||||||
|
;
|
||||||
|
|
||||||
|
joinPart
|
||||||
|
: (INNER | CROSS)? JOIN tableSourceItem
|
||||||
|
(
|
||||||
|
ON expression
|
||||||
|
| USING '(' uidList ')'
|
||||||
|
)? #innerJoin
|
||||||
|
| STRAIGHT_JOIN tableSourceItem (ON expression)? #straightJoin
|
||||||
|
| (LEFT | RIGHT) OUTER? JOIN tableSourceItem
|
||||||
|
(
|
||||||
|
ON expression
|
||||||
|
| USING '(' uidList ')'
|
||||||
|
) #outerJoin
|
||||||
|
| NATURAL ((LEFT | RIGHT) OUTER?)? JOIN tableSourceItem #naturalJoin
|
||||||
|
;
|
||||||
|
|
||||||
|
// Select Statement's Details
|
||||||
|
|
||||||
|
queryExpression
|
||||||
|
: '(' querySpecification ')'
|
||||||
|
| '(' queryExpression ')'
|
||||||
|
;
|
||||||
|
|
||||||
|
queryExpressionNointo
|
||||||
|
: '(' querySpecificationNointo ')'
|
||||||
|
| '(' queryExpressionNointo ')'
|
||||||
|
;
|
||||||
|
|
||||||
|
querySpecification
|
||||||
|
: SELECT selectSpec* selectElements selectIntoExpression?
|
||||||
|
fromClause? orderByClause? limitClause?
|
||||||
|
| SELECT selectSpec* selectElements
|
||||||
|
fromClause? orderByClause? limitClause? selectIntoExpression?
|
||||||
|
;
|
||||||
|
|
||||||
|
querySpecificationNointo
|
||||||
|
: SELECT selectSpec* selectElements
|
||||||
|
fromClause? orderByClause? limitClause?
|
||||||
|
;
|
||||||
|
|
||||||
|
unionParenthesis
|
||||||
|
: UNION unionType=(ALL | DISTINCT)? queryExpressionNointo
|
||||||
|
;
|
||||||
|
|
||||||
|
unionStatement
|
||||||
|
: UNION unionType=(ALL | DISTINCT)?
|
||||||
|
(querySpecificationNointo | queryExpressionNointo)
|
||||||
|
;
|
||||||
|
|
||||||
|
// details
|
||||||
|
|
||||||
|
selectSpec
|
||||||
|
: (ALL | DISTINCT | DISTINCTROW)
|
||||||
|
| HIGH_PRIORITY | STRAIGHT_JOIN | SQL_SMALL_RESULT
|
||||||
|
| SQL_BIG_RESULT | SQL_BUFFER_RESULT
|
||||||
|
| (SQL_CACHE | SQL_NO_CACHE)
|
||||||
|
| SQL_CALC_FOUND_ROWS
|
||||||
|
;
|
||||||
|
|
||||||
|
selectElements
|
||||||
|
: (star='*' | selectElement ) (',' selectElement)*
|
||||||
|
;
|
||||||
|
|
||||||
|
selectElement
|
||||||
|
: fullId '.' '*' #selectStarElement
|
||||||
|
| fullColumnName (AS? uid)? #selectColumnElement
|
||||||
|
| functionCall (AS? uid)? #selectFunctionElement
|
||||||
|
| (LOCAL_ID VAR_ASSIGN)? expression (AS? uid)? #selectExpressionElement
|
||||||
|
;
|
||||||
|
|
||||||
|
selectIntoExpression
|
||||||
|
: INTO assignmentField (',' assignmentField )* #selectIntoVariables
|
||||||
|
| INTO DUMPFILE STRING_LITERAL #selectIntoDumpFile
|
||||||
|
| (
|
||||||
|
INTO OUTFILE filename=STRING_LITERAL
|
||||||
|
(CHARACTER SET charset=charsetName)?
|
||||||
|
(
|
||||||
|
fieldsFormat=(FIELDS | COLUMNS)
|
||||||
|
selectFieldsInto+
|
||||||
|
)?
|
||||||
|
(
|
||||||
|
LINES selectLinesInto+
|
||||||
|
)?
|
||||||
|
) #selectIntoTextFile
|
||||||
|
;
|
||||||
|
|
||||||
|
selectFieldsInto
|
||||||
|
: TERMINATED BY terminationField=STRING_LITERAL
|
||||||
|
| OPTIONALLY? ENCLOSED BY enclosion=STRING_LITERAL
|
||||||
|
| ESCAPED BY escaping=STRING_LITERAL
|
||||||
|
;
|
||||||
|
|
||||||
|
selectLinesInto
|
||||||
|
: STARTING BY starting=STRING_LITERAL
|
||||||
|
| TERMINATED BY terminationLine=STRING_LITERAL
|
||||||
|
;
|
||||||
|
|
||||||
|
fromClause
|
||||||
|
: FROM tableSources
|
||||||
|
(WHERE whereExpr=expression)?
|
||||||
|
(
|
||||||
|
GROUP BY
|
||||||
|
groupByItem (',' groupByItem)*
|
||||||
|
(WITH ROLLUP)?
|
||||||
|
)?
|
||||||
|
(HAVING havingExpr=expression)?
|
||||||
|
;
|
||||||
|
|
||||||
|
groupByItem
|
||||||
|
: expression order=(ASC | DESC)?
|
||||||
|
;
|
||||||
|
|
||||||
|
limitClause
|
||||||
|
: LIMIT
|
||||||
|
(
|
||||||
|
(offset=decimalLiteral ',')? limit=decimalLiteral
|
||||||
|
| limit=decimalLiteral OFFSET offset=decimalLiteral
|
||||||
|
)
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
|
// Transaction's Statements
|
||||||
|
|
||||||
|
startTransaction
|
||||||
|
: START TRANSACTION (transactionMode (',' transactionMode)* )?
|
||||||
|
;
|
||||||
|
|
||||||
|
beginWork
|
||||||
|
: BEGIN WORK?
|
||||||
|
;
|
||||||
|
|
||||||
|
commitWork
|
||||||
|
: COMMIT WORK?
|
||||||
|
(AND nochain=NO? CHAIN)?
|
||||||
|
(norelease=NO? RELEASE)?
|
||||||
|
;
|
||||||
|
|
||||||
|
rollbackWork
|
||||||
|
: ROLLBACK WORK?
|
||||||
|
(AND nochain=NO? CHAIN)?
|
||||||
|
(norelease=NO? RELEASE)?
|
||||||
|
;
|
||||||
|
|
||||||
|
savepointStatement
|
||||||
|
: SAVEPOINT uid
|
||||||
|
;
|
||||||
|
|
||||||
|
rollbackStatement
|
||||||
|
: ROLLBACK WORK? TO SAVEPOINT? uid
|
||||||
|
;
|
||||||
|
|
||||||
|
releaseStatement
|
||||||
|
: RELEASE SAVEPOINT uid
|
||||||
|
;
|
||||||
|
|
||||||
|
lockTables
|
||||||
|
: LOCK TABLES lockTableElement (',' lockTableElement)*
|
||||||
|
;
|
||||||
|
|
||||||
|
unlockTables
|
||||||
|
: UNLOCK TABLES
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
|
// details
|
||||||
|
|
||||||
|
setAutocommitStatement
|
||||||
|
: SET AUTOCOMMIT '=' autocommitValue=('0' | '1')
|
||||||
|
;
|
||||||
|
|
||||||
|
setTransactionStatement
|
||||||
|
: SET transactionContext=(GLOBAL | SESSION)? TRANSACTION
|
||||||
|
transactionOption (',' transactionOption)*
|
||||||
|
;
|
||||||
|
|
||||||
|
transactionMode
|
||||||
|
: WITH CONSISTENT SNAPSHOT
|
||||||
|
| READ WRITE
|
||||||
|
| READ ONLY
|
||||||
|
;
|
||||||
|
|
||||||
|
lockTableElement
|
||||||
|
: tableName (AS? uid)? lockAction
|
||||||
|
;
|
||||||
|
|
||||||
|
lockAction
|
||||||
|
: READ LOCAL? | LOW_PRIORITY? WRITE
|
||||||
|
;
|
||||||
|
|
||||||
|
transactionOption
|
||||||
|
: ISOLATION LEVEL transactionLevel
|
||||||
|
| READ WRITE
|
||||||
|
| READ ONLY
|
||||||
|
;
|
||||||
|
|
||||||
|
transactionLevel
|
||||||
|
: REPEATABLE READ
|
||||||
|
| READ COMMITTED
|
||||||
|
| READ UNCOMMITTED
|
||||||
|
| SERIALIZABLE
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
|
// Replication's Statements
|
||||||
|
|
||||||
|
// Base Replication
|
||||||
|
|
||||||
|
changeMaster
|
||||||
|
: CHANGE MASTER TO
|
||||||
|
masterOption (',' masterOption)* channelOption?
|
||||||
|
;
|
||||||
|
|
||||||
|
changeReplicationFilter
|
||||||
|
: CHANGE REPLICATION FILTER
|
||||||
|
replicationFilter (',' replicationFilter)*
|
||||||
|
;
|
||||||
|
|
||||||
|
purgeBinaryLogs
|
||||||
|
: PURGE purgeFormat=(BINARY | MASTER) LOGS
|
||||||
|
(
|
||||||
|
TO fileName=STRING_LITERAL
|
||||||
|
| BEFORE timeValue=STRING_LITERAL
|
||||||
|
)
|
||||||
|
;
|
||||||
|
|
||||||
|
resetMaster
|
||||||
|
: RESET MASTER
|
||||||
|
;
|
||||||
|
|
||||||
|
resetSlave
|
||||||
|
: RESET SLAVE ALL? channelOption?
|
||||||
|
;
|
||||||
|
|
||||||
|
startSlave
|
||||||
|
: START SLAVE (threadType (',' threadType)*)?
|
||||||
|
(UNTIL untilOption)?
|
||||||
|
connectionOption* channelOption?
|
||||||
|
;
|
||||||
|
|
||||||
|
stopSlave
|
||||||
|
: STOP SLAVE (threadType (',' threadType)*)?
|
||||||
|
;
|
||||||
|
|
||||||
|
startGroupReplication
|
||||||
|
: START GROUP_REPLICATION
|
||||||
|
;
|
||||||
|
|
||||||
|
stopGroupReplication
|
||||||
|
: STOP GROUP_REPLICATION
|
||||||
|
;
|
||||||
|
|
||||||
|
// details
|
||||||
|
|
||||||
|
masterOption
|
||||||
|
: stringMasterOption '=' STRING_LITERAL #masterStringOption
|
||||||
|
| decimalMasterOption '=' decimalLiteral #masterDecimalOption
|
||||||
|
| boolMasterOption '=' boolVal=('0' | '1') #masterBoolOption
|
||||||
|
| MASTER_HEARTBEAT_PERIOD '=' REAL_LITERAL #masterRealOption
|
||||||
|
| IGNORE_SERVER_IDS '=' '(' (uid (',' uid)*)? ')' #masterUidListOption
|
||||||
|
;
|
||||||
|
|
||||||
|
stringMasterOption
|
||||||
|
: MASTER_BIND | MASTER_HOST | MASTER_USER | MASTER_PASSWORD
|
||||||
|
| MASTER_LOG_FILE | RELAY_LOG_FILE | MASTER_SSL_CA
|
||||||
|
| MASTER_SSL_CAPATH | MASTER_SSL_CERT | MASTER_SSL_CRL
|
||||||
|
| MASTER_SSL_CRLPATH | MASTER_SSL_KEY | MASTER_SSL_CIPHER
|
||||||
|
| MASTER_TLS_VERSION
|
||||||
|
;
|
||||||
|
decimalMasterOption
|
||||||
|
: MASTER_PORT | MASTER_CONNECT_RETRY | MASTER_RETRY_COUNT
|
||||||
|
| MASTER_DELAY | MASTER_LOG_POS | RELAY_LOG_POS
|
||||||
|
;
|
||||||
|
|
||||||
|
boolMasterOption
|
||||||
|
: MASTER_AUTO_POSITION | MASTER_SSL
|
||||||
|
| MASTER_SSL_VERIFY_SERVER_CERT
|
||||||
|
;
|
||||||
|
|
||||||
|
channelOption
|
||||||
|
: FOR CHANNEL STRING_LITERAL
|
||||||
|
;
|
||||||
|
|
||||||
|
replicationFilter
|
||||||
|
: REPLICATE_DO_DB '=' '(' uidList ')' #doDbReplication
|
||||||
|
| REPLICATE_IGNORE_DB '=' '(' uidList ')' #ignoreDbReplication
|
||||||
|
| REPLICATE_DO_TABLE '=' '(' tables ')' #doTableReplication
|
||||||
|
| REPLICATE_IGNORE_TABLE '=' '(' tables ')' #ignoreTableReplication
|
||||||
|
| REPLICATE_WILD_DO_TABLE '=' '(' simpleStrings ')' #wildDoTableReplication
|
||||||
|
| REPLICATE_WILD_IGNORE_TABLE
|
||||||
|
'=' '(' simpleStrings ')' #wildIgnoreTableReplication
|
||||||
|
| REPLICATE_REWRITE_DB '='
|
||||||
|
'(' tablePair (',' tablePair)* ')' #rewriteDbReplication
|
||||||
|
;
|
||||||
|
|
||||||
|
tablePair
|
||||||
|
: '(' firstTable=tableName ',' secondTable=tableName ')'
|
||||||
|
;
|
||||||
|
|
||||||
|
threadType
|
||||||
|
: IO_THREAD | SQL_THREAD
|
||||||
|
;
|
||||||
|
|
||||||
|
untilOption
|
||||||
|
: gtids=(SQL_BEFORE_GTIDS | SQL_AFTER_GTIDS)
|
||||||
|
'=' gtuidSet #gtidsUntilOption
|
||||||
|
| MASTER_LOG_FILE '=' STRING_LITERAL
|
||||||
|
',' MASTER_LOG_POS '=' decimalLiteral #masterLogUntilOption
|
||||||
|
| RELAY_LOG_FILE '=' STRING_LITERAL
|
||||||
|
',' RELAY_LOG_POS '=' decimalLiteral #relayLogUntilOption
|
||||||
|
| SQL_AFTER_MTS_GAPS #sqlGapsUntilOption
|
||||||
|
;
|
||||||
|
|
||||||
|
connectionOption
|
||||||
|
: USER '=' conOptUser=STRING_LITERAL #userConnectionOption
|
||||||
|
| PASSWORD '=' conOptPassword=STRING_LITERAL #passwordConnectionOption
|
||||||
|
| DEFAULT_AUTH '=' conOptDefAuth=STRING_LITERAL #defaultAuthConnectionOption
|
||||||
|
| PLUGIN_DIR '=' conOptPluginDir=STRING_LITERAL #pluginDirConnectionOption
|
||||||
|
;
|
||||||
|
|
||||||
|
gtuidSet
|
||||||
|
: uuidSet (',' uuidSet)*
|
||||||
|
| STRING_LITERAL
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
|
// XA Transactions
|
||||||
|
|
||||||
|
xaStartTransaction
|
||||||
|
: XA xaStart=(START | BEGIN) xid xaAction=(JOIN | RESUME)?
|
||||||
|
;
|
||||||
|
|
||||||
|
xaEndTransaction
|
||||||
|
: XA END xid (SUSPEND (FOR MIGRATE)?)?
|
||||||
|
;
|
||||||
|
|
||||||
|
xaPrepareStatement
|
||||||
|
: XA PREPARE xid
|
||||||
|
;
|
||||||
|
|
||||||
|
xaCommitWork
|
||||||
|
: XA COMMIT xid (ONE PHASE)?
|
||||||
|
;
|
||||||
|
|
||||||
|
xaRollbackWork
|
||||||
|
: XA ROLLBACK xid
|
||||||
|
;
|
||||||
|
|
||||||
|
xaRecoverWork
|
||||||
|
: XA RECOVER (CONVERT xid)?
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
|
// Prepared Statements
|
||||||
|
|
||||||
|
prepareStatement
|
||||||
|
: PREPARE uid FROM
|
||||||
|
(query=STRING_LITERAL | variable=LOCAL_ID)
|
||||||
|
;
|
||||||
|
|
||||||
|
executeStatement
|
||||||
|
: EXECUTE uid (USING userVariables)?
|
||||||
|
;
|
||||||
|
|
||||||
|
deallocatePrepare
|
||||||
|
: dropFormat=(DEALLOCATE | DROP) PREPARE uid
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
|
// Compound Statements
|
||||||
|
|
||||||
|
routineBody
|
||||||
|
: blockStatement | sqlStatement
|
||||||
|
;
|
||||||
|
|
||||||
|
// details
|
||||||
|
|
||||||
|
blockStatement
|
||||||
|
: (uid ':')? BEGIN
|
||||||
|
(
|
||||||
|
(declareVariable SEMI)*
|
||||||
|
(declareCondition SEMI)*
|
||||||
|
(declareCursor SEMI)*
|
||||||
|
(declareHandler SEMI)*
|
||||||
|
procedureSqlStatement+
|
||||||
|
)?
|
||||||
|
END uid?
|
||||||
|
;
|
||||||
|
|
||||||
|
caseStatement
|
||||||
|
: CASE (uid | expression)? caseAlternative+
|
||||||
|
(ELSE procedureSqlStatement+)?
|
||||||
|
END CASE
|
||||||
|
;
|
||||||
|
|
||||||
|
ifStatement
|
||||||
|
: IF expression
|
||||||
|
THEN thenStatements+=procedureSqlStatement+
|
||||||
|
elifAlternative*
|
||||||
|
(ELSE elseStatements+=procedureSqlStatement+ )?
|
||||||
|
END IF
|
||||||
|
;
|
||||||
|
|
||||||
|
iterateStatement
|
||||||
|
: ITERATE uid
|
||||||
|
;
|
||||||
|
|
||||||
|
leaveStatement
|
||||||
|
: LEAVE uid
|
||||||
|
;
|
||||||
|
|
||||||
|
loopStatement
|
||||||
|
: (uid ':')?
|
||||||
|
LOOP procedureSqlStatement+
|
||||||
|
END LOOP uid?
|
||||||
|
;
|
||||||
|
|
||||||
|
repeatStatement
|
||||||
|
: (uid ':')?
|
||||||
|
REPEAT procedureSqlStatement+
|
||||||
|
UNTIL expression
|
||||||
|
END REPEAT uid?
|
||||||
|
;
|
||||||
|
|
||||||
|
returnStatement
|
||||||
|
: RETURN expression
|
||||||
|
;
|
||||||
|
|
||||||
|
whileStatement
|
||||||
|
: (uid ':')?
|
||||||
|
WHILE expression
|
||||||
|
DO procedureSqlStatement+
|
||||||
|
END WHILE uid?
|
||||||
|
;
|
||||||
|
|
||||||
|
cursorStatement
|
||||||
|
: CLOSE uid #CloseCursor
|
||||||
|
| FETCH (NEXT? FROM)? uid INTO uidList #FetchCursor
|
||||||
|
| OPEN uid #OpenCursor
|
||||||
|
;
|
||||||
|
|
||||||
|
// details
|
||||||
|
|
||||||
|
declareVariable
|
||||||
|
: DECLARE uidList dataType (DEFAULT defaultValue)?
|
||||||
|
;
|
||||||
|
|
||||||
|
declareCondition
|
||||||
|
: DECLARE uid CONDITION FOR
|
||||||
|
( decimalLiteral | SQLSTATE VALUE? STRING_LITERAL)
|
||||||
|
;
|
||||||
|
|
||||||
|
declareCursor
|
||||||
|
: DECLARE uid CURSOR FOR selectStatement
|
||||||
|
;
|
||||||
|
|
||||||
|
declareHandler
|
||||||
|
: DECLARE handlerAction=(CONTINUE | EXIT | UNDO)
|
||||||
|
HANDLER FOR
|
||||||
|
handlerConditionValue (',' handlerConditionValue)*
|
||||||
|
routineBody
|
||||||
|
;
|
||||||
|
|
||||||
|
handlerConditionValue
|
||||||
|
: decimalLiteral #handlerConditionCode
|
||||||
|
| SQLSTATE VALUE? STRING_LITERAL #handlerConditionState
|
||||||
|
| uid #handlerConditionName
|
||||||
|
| SQLWARNING #handlerConditionWarning
|
||||||
|
| NOT FOUND #handlerConditionNotfound
|
||||||
|
| SQLEXCEPTION #handlerConditionException
|
||||||
|
;
|
||||||
|
|
||||||
|
procedureSqlStatement
|
||||||
|
: (compoundStatement | sqlStatement) SEMI
|
||||||
|
;
|
||||||
|
|
||||||
|
caseAlternative
|
||||||
|
: WHEN (constant | expression)
|
||||||
|
THEN procedureSqlStatement+
|
||||||
|
;
|
||||||
|
|
||||||
|
elifAlternative
|
||||||
|
: ELSEIF expression
|
||||||
|
THEN procedureSqlStatement+
|
||||||
|
;
|
||||||
|
|
||||||
|
// Administration Statements
|
||||||
|
|
||||||
|
// Account management statements
|
||||||
|
|
||||||
|
alterUser
|
||||||
|
: ALTER USER
|
||||||
|
userSpecification (',' userSpecification)* #alterUserMysqlV56
|
||||||
|
| ALTER USER ifExists?
|
||||||
|
userAuthOption (',' userAuthOption)*
|
||||||
|
(
|
||||||
|
REQUIRE
|
||||||
|
(tlsNone=NONE | tlsOption (AND? tlsOption)* )
|
||||||
|
)?
|
||||||
|
(WITH userResourceOption+)?
|
||||||
|
(userPasswordOption | userLockOption)* #alterUserMysqlV57
|
||||||
|
;
|
||||||
|
|
||||||
|
createUser
|
||||||
|
: CREATE USER userAuthOption (',' userAuthOption)* #createUserMysqlV56
|
||||||
|
| CREATE USER ifNotExists?
|
||||||
|
userAuthOption (',' userAuthOption)*
|
||||||
|
(
|
||||||
|
REQUIRE
|
||||||
|
(tlsNone=NONE | tlsOption (AND? tlsOption)* )
|
||||||
|
)?
|
||||||
|
(WITH userResourceOption+)?
|
||||||
|
(userPasswordOption | userLockOption)* #createUserMysqlV57
|
||||||
|
;
|
||||||
|
|
||||||
|
dropUser
|
||||||
|
: DROP USER ifExists? userName (',' userName)*
|
||||||
|
;
|
||||||
|
|
||||||
|
grantStatement
|
||||||
|
: GRANT privelegeClause (',' privelegeClause)*
|
||||||
|
ON
|
||||||
|
privilegeObject=(TABLE | FUNCTION | PROCEDURE)?
|
||||||
|
privilegeLevel
|
||||||
|
TO userAuthOption (',' userAuthOption)*
|
||||||
|
(
|
||||||
|
REQUIRE
|
||||||
|
(tlsNone=NONE | tlsOption (AND? tlsOption)* )
|
||||||
|
)?
|
||||||
|
(WITH (GRANT OPTION | userResourceOption)* )?
|
||||||
|
;
|
||||||
|
|
||||||
|
grantProxy
|
||||||
|
: GRANT PROXY ON fromFirst=userName
|
||||||
|
TO toFirst=userName (',' toOther+=userName)*
|
||||||
|
(WITH GRANT OPTION)?
|
||||||
|
;
|
||||||
|
|
||||||
|
renameUser
|
||||||
|
: RENAME USER
|
||||||
|
renameUserClause (',' renameUserClause)*
|
||||||
|
;
|
||||||
|
|
||||||
|
revokeStatement
|
||||||
|
: REVOKE privelegeClause (',' privelegeClause)*
|
||||||
|
ON
|
||||||
|
privilegeObject=(TABLE | FUNCTION | PROCEDURE)?
|
||||||
|
privilegeLevel
|
||||||
|
FROM userName (',' userName)* #detailRevoke
|
||||||
|
| REVOKE ALL PRIVILEGES? ',' GRANT OPTION
|
||||||
|
FROM userName (',' userName)* #shortRevoke
|
||||||
|
;
|
||||||
|
|
||||||
|
revokeProxy
|
||||||
|
: REVOKE PROXY ON onUser=userName
|
||||||
|
FROM fromFirst=userName (',' fromOther+=userName)*
|
||||||
|
;
|
||||||
|
|
||||||
|
setPasswordStatement
|
||||||
|
: SET PASSWORD (FOR userName)?
|
||||||
|
'=' ( passwordFunctionClause | STRING_LITERAL)
|
||||||
|
;
|
||||||
|
|
||||||
|
// details
|
||||||
|
|
||||||
|
userSpecification
|
||||||
|
: userName userPasswordOption
|
||||||
|
;
|
||||||
|
|
||||||
|
userAuthOption
|
||||||
|
: userName IDENTIFIED BY PASSWORD hashed=STRING_LITERAL #passwordAuthOption
|
||||||
|
| userName
|
||||||
|
IDENTIFIED (WITH authPlugin)? BY STRING_LITERAL #stringAuthOption
|
||||||
|
| userName
|
||||||
|
IDENTIFIED WITH authPlugin
|
||||||
|
(AS STRING_LITERAL)? #hashAuthOption
|
||||||
|
| userName #simpleAuthOption
|
||||||
|
;
|
||||||
|
|
||||||
|
tlsOption
|
||||||
|
: SSL
|
||||||
|
| X509
|
||||||
|
| CIPHER STRING_LITERAL
|
||||||
|
| ISSUER STRING_LITERAL
|
||||||
|
| SUBJECT STRING_LITERAL
|
||||||
|
;
|
||||||
|
|
||||||
|
userResourceOption
|
||||||
|
: MAX_QUERIES_PER_HOUR decimalLiteral
|
||||||
|
| MAX_UPDATES_PER_HOUR decimalLiteral
|
||||||
|
| MAX_CONNECTIONS_PER_HOUR decimalLiteral
|
||||||
|
| MAX_USER_CONNECTIONS decimalLiteral
|
||||||
|
;
|
||||||
|
|
||||||
|
userPasswordOption
|
||||||
|
: PASSWORD EXPIRE
|
||||||
|
(expireType=DEFAULT
|
||||||
|
| expireType=NEVER
|
||||||
|
| expireType=INTERVAL decimalLiteral DAY
|
||||||
|
)?
|
||||||
|
;
|
||||||
|
|
||||||
|
userLockOption
|
||||||
|
: ACCOUNT lockType=(LOCK | UNLOCK)
|
||||||
|
;
|
||||||
|
|
||||||
|
privelegeClause
|
||||||
|
: privilege ( '(' uidList ')' )?
|
||||||
|
;
|
||||||
|
|
||||||
|
privilege
|
||||||
|
: ALL PRIVILEGES?
|
||||||
|
| ALTER ROUTINE?
|
||||||
|
| CREATE
|
||||||
|
(TEMPORARY TABLES | ROUTINE | VIEW | USER | TABLESPACE)?
|
||||||
|
| DELETE | DROP | EVENT | EXECUTE | FILE | GRANT OPTION
|
||||||
|
| INDEX | INSERT | LOCK TABLES | PROCESS | PROXY
|
||||||
|
| REFERENCES | RELOAD
|
||||||
|
| REPLICATION (CLIENT | SLAVE)
|
||||||
|
| SELECT
|
||||||
|
| SHOW (VIEW | DATABASES)
|
||||||
|
| SHUTDOWN | SUPER | TRIGGER | UPDATE | USAGE
|
||||||
|
;
|
||||||
|
|
||||||
|
privilegeLevel
|
||||||
|
: '*' #currentSchemaPriviLevel
|
||||||
|
| '*' '.' '*' #globalPrivLevel
|
||||||
|
| uid '.' '*' #definiteSchemaPrivLevel
|
||||||
|
| uid '.' uid #definiteFullTablePrivLevel
|
||||||
|
| uid #definiteTablePrivLevel
|
||||||
|
;
|
||||||
|
|
||||||
|
renameUserClause
|
||||||
|
: fromFirst=userName TO toFirst=userName
|
||||||
|
;
|
||||||
|
|
||||||
|
// Table maintenance statements
|
||||||
|
|
||||||
|
analyzeTable
|
||||||
|
: ANALYZE actionOption=(NO_WRITE_TO_BINLOG | LOCAL)?
|
||||||
|
TABLE tables
|
||||||
|
;
|
||||||
|
|
||||||
|
checkTable
|
||||||
|
: CHECK TABLE tables checkTableOption*
|
||||||
|
;
|
||||||
|
|
||||||
|
checksumTable
|
||||||
|
: CHECKSUM TABLE tables actionOption=(QUICK | EXTENDED)?
|
||||||
|
;
|
||||||
|
|
||||||
|
optimizeTable
|
||||||
|
: OPTIMIZE actionOption=(NO_WRITE_TO_BINLOG | LOCAL)?
|
||||||
|
TABLE tables
|
||||||
|
;
|
||||||
|
|
||||||
|
repairTable
|
||||||
|
: REPAIR actionOption=(NO_WRITE_TO_BINLOG | LOCAL)?
|
||||||
|
TABLE tables
|
||||||
|
QUICK? EXTENDED? USE_FRM?
|
||||||
|
;
|
||||||
|
|
||||||
|
// details
|
||||||
|
|
||||||
|
checkTableOption
|
||||||
|
: FOR UPGRADE | QUICK | FAST | MEDIUM | EXTENDED | CHANGED
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
|
// Plugin and udf statements
|
||||||
|
|
||||||
|
createUdfunction
|
||||||
|
: CREATE AGGREGATE? FUNCTION uid
|
||||||
|
RETURNS returnType=(STRING | INTEGER | REAL | DECIMAL)
|
||||||
|
SONAME STRING_LITERAL
|
||||||
|
;
|
||||||
|
|
||||||
|
installPlugin
|
||||||
|
: INSTALL PLUGIN uid SONAME STRING_LITERAL
|
||||||
|
;
|
||||||
|
|
||||||
|
uninstallPlugin
|
||||||
|
: UNINSTALL PLUGIN uid
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
|
// Set and show statements
|
||||||
|
|
||||||
|
setStatement
|
||||||
|
: SET variableClause '=' expression
|
||||||
|
(',' variableClause '=' expression)* #setVariable
|
||||||
|
| SET (CHARACTER SET | CHARSET) (charsetName | DEFAULT) #setCharset
|
||||||
|
| SET NAMES
|
||||||
|
(charsetName (COLLATE collationName)? | DEFAULT) #setNames
|
||||||
|
| setPasswordStatement #setPassword
|
||||||
|
| setTransactionStatement #setTransaction
|
||||||
|
| setAutocommitStatement #setAutocommit
|
||||||
|
;
|
||||||
|
|
||||||
|
showStatement
|
||||||
|
: SHOW logFormat=(BINARY | MASTER) LOGS #showMasterLogs
|
||||||
|
| SHOW logFormat=(BINLOG | RELAYLOG)
|
||||||
|
EVENTS (IN filename=STRING_LITERAL)?
|
||||||
|
(FROM fromPosition=decimalLiteral)?
|
||||||
|
(LIMIT
|
||||||
|
(offset=decimalLiteral ',')?
|
||||||
|
rowCount=decimalLiteral
|
||||||
|
)? #showLogEvents
|
||||||
|
| SHOW showCommonEntity showFilter? #showObjectFilter
|
||||||
|
| SHOW FULL? columnsFormat=(COLUMNS | FIELDS)
|
||||||
|
tableFormat=(FROM | IN) tableName
|
||||||
|
(schemaFormat=(FROM | IN) uid)? showFilter? #showColumns
|
||||||
|
| SHOW CREATE schemaFormat=(DATABASE | SCHEMA)
|
||||||
|
ifNotExists? uid #showCreateDb
|
||||||
|
| SHOW CREATE
|
||||||
|
namedEntity=(
|
||||||
|
EVENT | FUNCTION | PROCEDURE
|
||||||
|
| TABLE | TRIGGER | VIEW
|
||||||
|
)
|
||||||
|
fullId #showCreateFullIdObject
|
||||||
|
| SHOW CREATE USER userName #showCreateUser
|
||||||
|
| SHOW ENGINE engineName engineOption=(STATUS | MUTEX) #showEngine
|
||||||
|
| SHOW showGlobalInfoClause #showGlobalInfo
|
||||||
|
| SHOW errorFormat=(ERRORS | WARNINGS)
|
||||||
|
(LIMIT
|
||||||
|
(offset=decimalLiteral ',')?
|
||||||
|
rowCount=decimalLiteral
|
||||||
|
) #showErrors
|
||||||
|
| SHOW COUNT '(' '*' ')' errorFormat=(ERRORS | WARNINGS) #showCountErrors
|
||||||
|
| SHOW showSchemaEntity
|
||||||
|
(schemaFormat=(FROM | IN) uid)? showFilter? #showSchemaFilter
|
||||||
|
| SHOW routine=(FUNCTION | PROCEDURE) CODE fullId #showRoutine
|
||||||
|
| SHOW GRANTS (FOR userName)? #showGrants
|
||||||
|
| SHOW indexFormat=(INDEX | INDEXES | KEYS)
|
||||||
|
tableFormat=(FROM | IN) tableName
|
||||||
|
(schemaFormat=(FROM | IN) uid)? (WHERE expression)? #showIndexes
|
||||||
|
| SHOW OPEN TABLES ( schemaFormat=(FROM | IN) uid)?
|
||||||
|
showFilter? #showOpenTables
|
||||||
|
| SHOW PROFILE showProfileType (',' showProfileType)*
|
||||||
|
(FOR QUERY queryCount=decimalLiteral)?
|
||||||
|
(LIMIT
|
||||||
|
(offset=decimalLiteral ',')?
|
||||||
|
rowCount=decimalLiteral
|
||||||
|
) #showProfile
|
||||||
|
| SHOW SLAVE STATUS (FOR CHANNEL STRING_LITERAL)? #showSlaveStatus
|
||||||
|
;
|
||||||
|
|
||||||
|
// details
|
||||||
|
|
||||||
|
variableClause
|
||||||
|
: LOCAL_ID | GLOBAL_ID | ( ('@' '@')? (GLOBAL | SESSION) )? uid
|
||||||
|
;
|
||||||
|
|
||||||
|
showCommonEntity
|
||||||
|
: CHARACTER SET | COLLATION | DATABASES | SCHEMAS
|
||||||
|
| FUNCTION STATUS | PROCEDURE STATUS
|
||||||
|
| (GLOBAL | SESSION)? (STATUS | VARIABLES)
|
||||||
|
;
|
||||||
|
|
||||||
|
showFilter
|
||||||
|
: LIKE STRING_LITERAL
|
||||||
|
| WHERE expression
|
||||||
|
;
|
||||||
|
|
||||||
|
showGlobalInfoClause
|
||||||
|
: STORAGE? ENGINES | MASTER STATUS | PLUGINS
|
||||||
|
| PRIVILEGES | FULL? PROCESSLIST | PROFILES
|
||||||
|
| SLAVE HOSTS | AUTHORS | CONTRIBUTORS
|
||||||
|
;
|
||||||
|
|
||||||
|
showSchemaEntity
|
||||||
|
: EVENTS | TABLE STATUS | FULL? TABLES | TRIGGERS
|
||||||
|
;
|
||||||
|
|
||||||
|
showProfileType
|
||||||
|
: ALL | BLOCK IO | CONTEXT SWITCHES | CPU | IPC | MEMORY
|
||||||
|
| PAGE FAULTS | SOURCE | SWAPS
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
|
// Other administrative statements
|
||||||
|
|
||||||
|
binlogStatement
|
||||||
|
: BINLOG STRING_LITERAL
|
||||||
|
;
|
||||||
|
|
||||||
|
cacheIndexStatement
|
||||||
|
: CACHE INDEX tableIndexes (',' tableIndexes)*
|
||||||
|
( PARTITION '(' (uidList | ALL) ')' )?
|
||||||
|
IN schema=uid
|
||||||
|
;
|
||||||
|
|
||||||
|
flushStatement
|
||||||
|
: FLUSH flushFormat=(NO_WRITE_TO_BINLOG | LOCAL)?
|
||||||
|
flushOption (',' flushOption)*
|
||||||
|
;
|
||||||
|
|
||||||
|
killStatement
|
||||||
|
: KILL connectionFormat=(CONNECTION | QUERY)?
|
||||||
|
decimalLiteral+
|
||||||
|
;
|
||||||
|
|
||||||
|
loadIndexIntoCache
|
||||||
|
: LOAD INDEX INTO CACHE
|
||||||
|
loadedTableIndexes (',' loadedTableIndexes)*
|
||||||
|
;
|
||||||
|
|
||||||
|
// remark reset (maser | slave) describe in replication's
|
||||||
|
// statements section
|
||||||
|
resetStatement
|
||||||
|
: RESET QUERY CACHE
|
||||||
|
;
|
||||||
|
|
||||||
|
shutdownStatement
|
||||||
|
: SHUTDOWN
|
||||||
|
;
|
||||||
|
|
||||||
|
// details
|
||||||
|
|
||||||
|
tableIndexes
|
||||||
|
: tableName ( indexFormat=(INDEX | KEY)? '(' uidList ')' )?
|
||||||
|
;
|
||||||
|
|
||||||
|
flushOption
|
||||||
|
: (
|
||||||
|
DES_KEY_FILE | HOSTS
|
||||||
|
| (
|
||||||
|
BINARY | ENGINE | ERROR | GENERAL | RELAY | SLOW
|
||||||
|
)? LOGS
|
||||||
|
| OPTIMIZER_COSTS | PRIVILEGES | QUERY CACHE | STATUS
|
||||||
|
| USER_RESOURCES | TABLES (WITH READ LOCK)?
|
||||||
|
) #simpleFlushOption
|
||||||
|
| RELAY LOGS channelOption? #channelFlushOption
|
||||||
|
| TABLES tables flushTableOption? #tableFlushOption
|
||||||
|
;
|
||||||
|
|
||||||
|
flushTableOption
|
||||||
|
: WITH READ LOCK
|
||||||
|
| FOR EXPORT
|
||||||
|
;
|
||||||
|
|
||||||
|
loadedTableIndexes
|
||||||
|
: tableName
|
||||||
|
( PARTITION '(' (partitionList=uidList | ALL) ')' )?
|
||||||
|
( indexFormat=(INDEX | KEY)? '(' indexList=uidList ')' )?
|
||||||
|
(IGNORE LEAVES)?
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
|
// Utility Statements
|
||||||
|
|
||||||
|
|
||||||
|
simpleDescribeStatement
|
||||||
|
: command=(EXPLAIN | DESCRIBE | DESC) tableName
|
||||||
|
(column=uid | pattern=STRING_LITERAL)?
|
||||||
|
;
|
||||||
|
|
||||||
|
fullDescribeStatement
|
||||||
|
: command=(EXPLAIN | DESCRIBE | DESC)
|
||||||
|
(
|
||||||
|
formatType=(EXTENDED | PARTITIONS | FORMAT )
|
||||||
|
'='
|
||||||
|
formatValue=(TRADITIONAL | JSON)
|
||||||
|
)?
|
||||||
|
describeObjectClause
|
||||||
|
;
|
||||||
|
|
||||||
|
helpStatement
|
||||||
|
: HELP STRING_LITERAL
|
||||||
|
;
|
||||||
|
|
||||||
|
useStatement
|
||||||
|
: USE uid
|
||||||
|
;
|
||||||
|
|
||||||
|
// details
|
||||||
|
|
||||||
|
describeObjectClause
|
||||||
|
: (
|
||||||
|
selectStatement | deleteStatement | insertStatement
|
||||||
|
| replaceStatement | updateStatement
|
||||||
|
) #describeStatements
|
||||||
|
| FOR CONNECTION uid #describeConnection
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
|
// Common Clauses
|
||||||
|
|
||||||
|
// DB Objects
|
||||||
|
|
||||||
|
fullId
|
||||||
|
: uid (DOT_ID | '.' uid)?
|
||||||
|
;
|
||||||
|
|
||||||
|
tableName
|
||||||
|
: fullId
|
||||||
|
;
|
||||||
|
|
||||||
|
fullColumnName
|
||||||
|
: uid (dottedId dottedId? )?
|
||||||
|
;
|
||||||
|
|
||||||
|
indexColumnName
|
||||||
|
: uid ('(' decimalLiteral ')')? sortType=(ASC | DESC)?
|
||||||
|
;
|
||||||
|
|
||||||
|
userName
|
||||||
|
: STRING_USER_NAME | ID;
|
||||||
|
|
||||||
|
mysqlVariable
|
||||||
|
: LOCAL_ID
|
||||||
|
| GLOBAL_ID
|
||||||
|
;
|
||||||
|
|
||||||
|
charsetName
|
||||||
|
: BINARY
|
||||||
|
| charsetNameBase
|
||||||
|
| STRING_LITERAL
|
||||||
|
| CHARSET_REVERSE_QOUTE_STRING
|
||||||
|
;
|
||||||
|
|
||||||
|
collationName
|
||||||
|
: uid | STRING_LITERAL;
|
||||||
|
|
||||||
|
engineName
|
||||||
|
: ARCHIVE | BLACKHOLE | CSV | FEDERATED | INNODB | MEMORY
|
||||||
|
| MRG_MYISAM | MYISAM | NDB | NDBCLUSTER | PERFOMANCE_SCHEMA
|
||||||
|
;
|
||||||
|
|
||||||
|
uuidSet
|
||||||
|
: decimalLiteral '-' decimalLiteral '-' decimalLiteral
|
||||||
|
'-' decimalLiteral '-' decimalLiteral
|
||||||
|
(':' decimalLiteral '-' decimalLiteral)+
|
||||||
|
;
|
||||||
|
|
||||||
|
xid
|
||||||
|
: globalTableUid=xuidStringId
|
||||||
|
(
|
||||||
|
',' qualifier=xuidStringId
|
||||||
|
(',' idFormat=decimalLiteral)?
|
||||||
|
)?
|
||||||
|
;
|
||||||
|
|
||||||
|
xuidStringId
|
||||||
|
: STRING_LITERAL
|
||||||
|
| BIT_STRING
|
||||||
|
| HEXADECIMAL_LITERAL+
|
||||||
|
;
|
||||||
|
|
||||||
|
authPlugin
|
||||||
|
: uid | STRING_LITERAL
|
||||||
|
;
|
||||||
|
|
||||||
|
uid
|
||||||
|
: simpleId
|
||||||
|
//| DOUBLE_QUOTE_ID
|
||||||
|
| REVERSE_QUOTE_ID
|
||||||
|
| CHARSET_REVERSE_QOUTE_STRING
|
||||||
|
;
|
||||||
|
|
||||||
|
simpleId
|
||||||
|
: ID
|
||||||
|
| charsetNameBase
|
||||||
|
| transactionLevelBase
|
||||||
|
| engineName
|
||||||
|
| privilegesBase
|
||||||
|
| intervalTypeBase
|
||||||
|
| dataTypeBase
|
||||||
|
| keywordsCanBeId
|
||||||
|
| functionNameBase
|
||||||
|
;
|
||||||
|
|
||||||
|
dottedId
|
||||||
|
: DOT_ID
|
||||||
|
| '.' uid
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
|
// Literals
|
||||||
|
|
||||||
|
decimalLiteral
|
||||||
|
: DECIMAL_LITERAL | ZERO_DECIMAL | ONE_DECIMAL | TWO_DECIMAL
|
||||||
|
;
|
||||||
|
|
||||||
|
fileSizeLiteral
|
||||||
|
: FILESIZE_LITERAL | decimalLiteral;
|
||||||
|
|
||||||
|
stringLiteral
|
||||||
|
: (
|
||||||
|
STRING_CHARSET_NAME? STRING_LITERAL
|
||||||
|
| START_NATIONAL_STRING_LITERAL
|
||||||
|
) STRING_LITERAL+
|
||||||
|
| (
|
||||||
|
STRING_CHARSET_NAME? STRING_LITERAL
|
||||||
|
| START_NATIONAL_STRING_LITERAL
|
||||||
|
) (COLLATE collationName)?
|
||||||
|
;
|
||||||
|
|
||||||
|
booleanLiteral
|
||||||
|
: TRUE | FALSE;
|
||||||
|
|
||||||
|
hexadecimalLiteral
|
||||||
|
: STRING_CHARSET_NAME? HEXADECIMAL_LITERAL;
|
||||||
|
|
||||||
|
nullNotnull
|
||||||
|
: NOT? (NULL_LITERAL | NULL_SPEC_LITERAL)
|
||||||
|
;
|
||||||
|
|
||||||
|
constant
|
||||||
|
: stringLiteral | decimalLiteral
|
||||||
|
| hexadecimalLiteral | booleanLiteral
|
||||||
|
| REAL_LITERAL | BIT_STRING
|
||||||
|
| NOT? nullLiteral=(NULL_LITERAL | NULL_SPEC_LITERAL)
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
|
// Data Types
|
||||||
|
|
||||||
|
dataType
|
||||||
|
: typeName=(
|
||||||
|
CHAR | VARCHAR | TINYTEXT | TEXT | MEDIUMTEXT | LONGTEXT
|
||||||
|
)
|
||||||
|
lengthOneDimension? BINARY?
|
||||||
|
(CHARACTER SET charsetName)? (COLLATE collationName)? #stringDataType
|
||||||
|
| typeName=(
|
||||||
|
TINYINT | SMALLINT | MEDIUMINT | INT | INTEGER | BIGINT
|
||||||
|
)
|
||||||
|
lengthOneDimension? UNSIGNED? ZEROFILL? #dimensionDataType
|
||||||
|
| typeName=(REAL | DOUBLE | FLOAT)
|
||||||
|
lengthTwoDimension? UNSIGNED? ZEROFILL? #dimensionDataType
|
||||||
|
| typeName=(DECIMAL | NUMERIC)
|
||||||
|
lengthTwoOptionalDimension? UNSIGNED? ZEROFILL? #dimensionDataType
|
||||||
|
| typeName=(
|
||||||
|
DATE | TINYBLOB | BLOB | MEDIUMBLOB | LONGBLOB
|
||||||
|
| BOOL | BOOLEAN
|
||||||
|
) #simpleDataType
|
||||||
|
| typeName=(
|
||||||
|
BIT | TIME | TIMESTAMP | DATETIME | BINARY
|
||||||
|
| VARBINARY | YEAR
|
||||||
|
)
|
||||||
|
lengthOneDimension? #dimensionDataType
|
||||||
|
| typeName=(ENUM | SET)
|
||||||
|
'(' STRING_LITERAL (',' STRING_LITERAL)* ')' BINARY?
|
||||||
|
(CHARACTER SET charsetName)? (COLLATE collationName)? #collectionDataType
|
||||||
|
| typeName=(
|
||||||
|
GEOMETRYCOLLECTION | LINESTRING | MULTILINESTRING
|
||||||
|
| MULTIPOINT | MULTIPOLYGON | POINT | POLYGON
|
||||||
|
) #spatialDataType
|
||||||
|
;
|
||||||
|
|
||||||
|
convertedDataType
|
||||||
|
: typeName=(BINARY| NCHAR) lengthOneDimension?
|
||||||
|
| typeName=CHAR lengthOneDimension? (CHARACTER SET charsetName)?
|
||||||
|
| typeName=(DATE | DATETIME | TIME)
|
||||||
|
| typeName=DECIMAL lengthTwoDimension?
|
||||||
|
| (SIGNED | UNSIGNED) INTEGER?
|
||||||
|
;
|
||||||
|
|
||||||
|
lengthOneDimension
|
||||||
|
: '(' decimalLiteral ')'
|
||||||
|
;
|
||||||
|
|
||||||
|
lengthTwoDimension
|
||||||
|
: '(' decimalLiteral ',' decimalLiteral ')'
|
||||||
|
;
|
||||||
|
|
||||||
|
lengthTwoOptionalDimension
|
||||||
|
: '(' decimalLiteral (',' decimalLiteral)? ')'
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
|
// Common Lists
|
||||||
|
|
||||||
|
uidList
|
||||||
|
: uid (',' uid)*
|
||||||
|
;
|
||||||
|
|
||||||
|
tables
|
||||||
|
: tableName (',' tableName)*
|
||||||
|
;
|
||||||
|
|
||||||
|
indexColumnNames
|
||||||
|
: '(' indexColumnName (',' indexColumnName)* ')'
|
||||||
|
;
|
||||||
|
|
||||||
|
expressions
|
||||||
|
: expression (',' expression)*
|
||||||
|
;
|
||||||
|
|
||||||
|
expressionsWithDefaults
|
||||||
|
: expressionOrDefault (',' expressionOrDefault)*
|
||||||
|
;
|
||||||
|
|
||||||
|
constants
|
||||||
|
: constant (',' constant)*
|
||||||
|
;
|
||||||
|
|
||||||
|
simpleStrings
|
||||||
|
: STRING_LITERAL (',' STRING_LITERAL)*
|
||||||
|
;
|
||||||
|
|
||||||
|
userVariables
|
||||||
|
: LOCAL_ID (',' LOCAL_ID)*
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
|
// Common Expressons
|
||||||
|
|
||||||
|
defaultValue
|
||||||
|
: NULL_LITERAL
|
||||||
|
| constant
|
||||||
|
| CURRENT_TIMESTAMP (ON UPDATE LOCALTIMESTAMP)?
|
||||||
|
;
|
||||||
|
|
||||||
|
expressionOrDefault
|
||||||
|
: expression | DEFAULT
|
||||||
|
;
|
||||||
|
|
||||||
|
ifExists
|
||||||
|
: IF EXISTS;
|
||||||
|
|
||||||
|
ifNotExists
|
||||||
|
: IF NOT EXISTS;
|
||||||
|
|
||||||
|
|
||||||
|
// Functions
|
||||||
|
|
||||||
|
functionCall
|
||||||
|
: specificFunction #specificFunctionCall
|
||||||
|
| aggregateWindowedFunction #aggregateFunctionCall
|
||||||
|
| scalarFunctionName '(' functionArgs? ')' #scalarFunctionCall
|
||||||
|
| fullId '(' functionArgs? ')' #udfFunctionCall
|
||||||
|
| passwordFunctionClause #passwordFunctionCall
|
||||||
|
;
|
||||||
|
|
||||||
|
specificFunction
|
||||||
|
: (
|
||||||
|
CURRENT_DATE | CURRENT_TIME | CURRENT_TIMESTAMP
|
||||||
|
| CURRENT_USER | LOCALTIME
|
||||||
|
) #simpleFunctionCall
|
||||||
|
| CONVERT '(' expression separator=',' convertedDataType ')' #dataTypeFunctionCall
|
||||||
|
| CONVERT '(' expression USING charsetName ')' #dataTypeFunctionCall
|
||||||
|
| CAST '(' expression AS convertedDataType ')' #dataTypeFunctionCall
|
||||||
|
| VALUES '(' fullColumnName ')' #valuesFunctionCall
|
||||||
|
| CASE expression caseFuncAlternative+
|
||||||
|
(ELSE elseArg=functionArg)? END #caseFunctionCall
|
||||||
|
| CASE caseFuncAlternative+
|
||||||
|
(ELSE elseArg=functionArg)? END #caseFunctionCall
|
||||||
|
| CHAR '(' functionArgs (USING charsetName)? ')' #charFunctionCall
|
||||||
|
| POSITION
|
||||||
|
'('
|
||||||
|
(
|
||||||
|
positionString=stringLiteral
|
||||||
|
| positionExpression=expression
|
||||||
|
)
|
||||||
|
IN
|
||||||
|
(
|
||||||
|
inString=stringLiteral
|
||||||
|
| inExpression=expression
|
||||||
|
)
|
||||||
|
')' #positionFunctionCall
|
||||||
|
| (SUBSTR | SUBSTRING)
|
||||||
|
'('
|
||||||
|
(
|
||||||
|
sourceString=stringLiteral
|
||||||
|
| sourceExpression=expression
|
||||||
|
) FROM
|
||||||
|
(
|
||||||
|
fromDecimal=decimalLiteral
|
||||||
|
| fromExpression=expression
|
||||||
|
)
|
||||||
|
(
|
||||||
|
FOR
|
||||||
|
(
|
||||||
|
forDecimal=decimalLiteral
|
||||||
|
| forExpression=expression
|
||||||
|
)
|
||||||
|
)?
|
||||||
|
')' #substrFunctionCall
|
||||||
|
| TRIM
|
||||||
|
'('
|
||||||
|
positioinForm=(BOTH | LEADING | TRAILING)
|
||||||
|
(
|
||||||
|
sourceString=stringLiteral
|
||||||
|
| sourceExpression=expression
|
||||||
|
)?
|
||||||
|
FROM
|
||||||
|
(
|
||||||
|
fromString=stringLiteral
|
||||||
|
| fromExpression=expression
|
||||||
|
)
|
||||||
|
')' #trimFunctionCall
|
||||||
|
| TRIM
|
||||||
|
'('
|
||||||
|
(
|
||||||
|
sourceString=stringLiteral
|
||||||
|
| sourceExpression=expression
|
||||||
|
)
|
||||||
|
FROM
|
||||||
|
(
|
||||||
|
fromString=stringLiteral
|
||||||
|
| fromExpression=expression
|
||||||
|
)
|
||||||
|
')' #trimFunctionCall
|
||||||
|
| WEIGHT_STRING
|
||||||
|
'('
|
||||||
|
(stringLiteral | expression)
|
||||||
|
(AS stringFormat=(CHAR | BINARY)
|
||||||
|
'(' decimalLiteral ')' )? levelsInWeightString?
|
||||||
|
')' #weightFunctionCall
|
||||||
|
| EXTRACT
|
||||||
|
'('
|
||||||
|
intervalType
|
||||||
|
FROM
|
||||||
|
(
|
||||||
|
sourceString=stringLiteral
|
||||||
|
| sourceExpression=expression
|
||||||
|
)
|
||||||
|
')' #extractFunctionCall
|
||||||
|
| GET_FORMAT
|
||||||
|
'('
|
||||||
|
datetimeFormat=(DATE | TIME | DATETIME)
|
||||||
|
',' stringLiteral
|
||||||
|
')' #getFormatFunctionCall
|
||||||
|
;
|
||||||
|
|
||||||
|
caseFuncAlternative
|
||||||
|
: WHEN condition=functionArg
|
||||||
|
THEN consequent=functionArg
|
||||||
|
;
|
||||||
|
|
||||||
|
levelsInWeightString
|
||||||
|
: LEVEL levelInWeightListElement
|
||||||
|
(',' levelInWeightListElement)* #levelWeightList
|
||||||
|
| LEVEL
|
||||||
|
firstLevel=decimalLiteral '-' lastLevel=decimalLiteral #levelWeightRange
|
||||||
|
;
|
||||||
|
|
||||||
|
levelInWeightListElement
|
||||||
|
: decimalLiteral orderType=(ASC | DESC | REVERSE)?
|
||||||
|
;
|
||||||
|
|
||||||
|
aggregateWindowedFunction
|
||||||
|
: (AVG | MAX | MIN | SUM)
|
||||||
|
'(' aggregator=(ALL | DISTINCT)? functionArg ')'
|
||||||
|
| COUNT '(' (starArg='*' | aggregator=ALL? functionArg) ')'
|
||||||
|
| COUNT '(' aggregator=DISTINCT functionArgs ')'
|
||||||
|
| (
|
||||||
|
BIT_AND | BIT_OR | BIT_XOR | STD | STDDEV | STDDEV_POP
|
||||||
|
| STDDEV_SAMP | VAR_POP | VAR_SAMP | VARIANCE
|
||||||
|
) '(' aggregator=ALL? functionArg ')'
|
||||||
|
| GROUP_CONCAT '('
|
||||||
|
aggregator=DISTINCT? functionArgs
|
||||||
|
(ORDER BY
|
||||||
|
orderByExpression (',' orderByExpression)*
|
||||||
|
)? (SEPARATOR separator=STRING_LITERAL)?
|
||||||
|
')'
|
||||||
|
;
|
||||||
|
|
||||||
|
scalarFunctionName
|
||||||
|
: functionNameBase
|
||||||
|
| ASCII | CURDATE | CURRENT_DATE | CURRENT_TIME
|
||||||
|
| CURRENT_TIMESTAMP | CURTIME | DATE_ADD | DATE_SUB
|
||||||
|
| IF | INSERT | LOCALTIME | LOCALTIMESTAMP | MID | NOW
|
||||||
|
| REPLACE | SUBSTR | SUBSTRING | SYSDATE | TRIM
|
||||||
|
| UTC_DATE | UTC_TIME | UTC_TIMESTAMP
|
||||||
|
;
|
||||||
|
|
||||||
|
passwordFunctionClause
|
||||||
|
: functionName=(PASSWORD | OLD_PASSWORD) '(' functionArg ')'
|
||||||
|
;
|
||||||
|
|
||||||
|
functionArgs
|
||||||
|
: (constant | fullColumnName | functionCall | expression)
|
||||||
|
(
|
||||||
|
','
|
||||||
|
(constant | fullColumnName | functionCall | expression)
|
||||||
|
)*
|
||||||
|
;
|
||||||
|
|
||||||
|
functionArg
|
||||||
|
: constant | fullColumnName | functionCall | expression
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
|
// Expressions, predicates
|
||||||
|
|
||||||
|
// Simplified approach for expression
|
||||||
|
expression
|
||||||
|
: notOperator=(NOT | '!') expression #notExpression
|
||||||
|
| expression logicalOperator expression #logicalExpression
|
||||||
|
| predicate IS NOT? testValue=(TRUE | FALSE | UNKNOWN) #isExpression
|
||||||
|
| predicate #predicateExpression
|
||||||
|
;
|
||||||
|
|
||||||
|
predicate
|
||||||
|
: predicate NOT? IN '(' (selectStatement | expressions) ')' #inPredicate
|
||||||
|
| predicate IS nullNotnull #isNullPredicate
|
||||||
|
| left=predicate comparisonOperator right=predicate #binaryComparasionPredicate
|
||||||
|
| predicate comparisonOperator
|
||||||
|
quantifier=(ALL | ANY | SOME) '(' selectStatement ')' #subqueryComparasionPredicate
|
||||||
|
| predicate NOT? BETWEEN predicate AND predicate #betweenPredicate
|
||||||
|
| predicate SOUNDS LIKE predicate #soundsLikePredicate
|
||||||
|
| predicate NOT? LIKE predicate (ESCAPE STRING_LITERAL)? #likePredicate
|
||||||
|
| predicate NOT? regex=(REGEXP | RLIKE) predicate #regexpPredicate
|
||||||
|
| (LOCAL_ID VAR_ASSIGN)? expressionAtom #expressionAtomPredicate
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
|
// Add in ASTVisitor nullNotnull in constant
|
||||||
|
expressionAtom
|
||||||
|
: constant #constantExpressionAtom
|
||||||
|
| fullColumnName #fullColumnNameExpressionAtom
|
||||||
|
| functionCall #functionCallExpressionAtom
|
||||||
|
| expressionAtom COLLATE collationName #collateExpressionAtom
|
||||||
|
| mysqlVariable #mysqlVariableExpressionAtom
|
||||||
|
| unaryOperator expressionAtom #unaryExpressionAtom
|
||||||
|
| BINARY expressionAtom #binaryExpressionAtom
|
||||||
|
| '(' expression (',' expression)* ')' #nestedExpressionAtom
|
||||||
|
| ROW '(' expression (',' expression)+ ')' #nestedRowExpressionAtom
|
||||||
|
| EXISTS '(' selectStatement ')' #existsExpessionAtom
|
||||||
|
| '(' selectStatement ')' #subqueryExpessionAtom
|
||||||
|
| INTERVAL expression intervalType #intervalExpressionAtom
|
||||||
|
| left=expressionAtom bitOperator right=expressionAtom #bitExpressionAtom
|
||||||
|
| left=expressionAtom mathOperator right=expressionAtom #mathExpressionAtom
|
||||||
|
;
|
||||||
|
|
||||||
|
unaryOperator
|
||||||
|
: '!' | '~' | '+' | '-' | NOT
|
||||||
|
;
|
||||||
|
|
||||||
|
comparisonOperator
|
||||||
|
: '=' | '>' | '<' | '<' '=' | '>' '='
|
||||||
|
| '<' '>' | '!' '=' | '<' '=' '>'
|
||||||
|
;
|
||||||
|
|
||||||
|
logicalOperator
|
||||||
|
: AND | '&' '&' | XOR | OR | '|' '|'
|
||||||
|
;
|
||||||
|
|
||||||
|
bitOperator
|
||||||
|
: '<' '<' | '>' '>' | '&' | '^' | '|'
|
||||||
|
;
|
||||||
|
|
||||||
|
mathOperator
|
||||||
|
: '*' | '/' | '%' | DIV | MOD | '+' | '-' | '--'
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
|
// Simple id sets
|
||||||
|
// (that keyword, which can be id)
|
||||||
|
|
||||||
|
charsetNameBase
|
||||||
|
: ARMSCII8 | ASCII | BIG5 | CP1250 | CP1251 | CP1256 | CP1257
|
||||||
|
| CP850 | CP852 | CP866 | CP932 | DEC8 | EUCJPMS | EUCKR
|
||||||
|
| GB2312 | GBK | GEOSTD8 | GREEK | HEBREW | HP8 | KEYBCS2
|
||||||
|
| KOI8R | KOI8U | LATIN1 | LATIN2 | LATIN5 | LATIN7 | MACCE
|
||||||
|
| MACROMAN | SJIS | SWE7 | TIS620 | UCS2 | UJIS | UTF16
|
||||||
|
| UTF16LE | UTF32 | UTF8 | UTF8MB3 | UTF8MB4
|
||||||
|
;
|
||||||
|
|
||||||
|
transactionLevelBase
|
||||||
|
: REPEATABLE | COMMITTED | UNCOMMITTED | SERIALIZABLE
|
||||||
|
;
|
||||||
|
|
||||||
|
privilegesBase
|
||||||
|
: TABLES | ROUTINE | EXECUTE | FILE | PROCESS
|
||||||
|
| RELOAD | SHUTDOWN | SUPER | PRIVILEGES
|
||||||
|
;
|
||||||
|
|
||||||
|
intervalTypeBase
|
||||||
|
: QUARTER | MONTH | DAY | HOUR
|
||||||
|
| MINUTE | WEEK | SECOND | MICROSECOND
|
||||||
|
;
|
||||||
|
|
||||||
|
dataTypeBase
|
||||||
|
: DATE | TIME | TIMESTAMP | DATETIME | YEAR | ENUM | TEXT
|
||||||
|
;
|
||||||
|
|
||||||
|
keywordsCanBeId
|
||||||
|
: ACCOUNT | ACTION | AFTER | AGGREGATE | ALGORITHM | ANY
|
||||||
|
| AT | AUTHORS | AUTOCOMMIT | AUTOEXTEND_SIZE
|
||||||
|
| AUTO_INCREMENT | AVG_ROW_LENGTH | BEGIN | BINLOG | BIT
|
||||||
|
| BLOCK | BOOL | BOOLEAN | BTREE | CASCADED | CHAIN
|
||||||
|
| CHANNEL | CHECKSUM | CIPHER | CLIENT | COALESCE | CODE
|
||||||
|
| COLUMNS | COLUMN_FORMAT | COMMENT | COMMIT | COMPACT
|
||||||
|
| COMPLETION | COMPRESSED | COMPRESSION | CONCURRENT
|
||||||
|
| CONNECTION | CONSISTENT | CONTAINS | CONTEXT
|
||||||
|
| CONTRIBUTORS | COPY | CPU | DATA | DATAFILE | DEALLOCATE
|
||||||
|
| DEFAULT_AUTH | DEFINER | DELAY_KEY_WRITE | DIRECTORY
|
||||||
|
| DISABLE | DISCARD | DISK | DO | DUMPFILE | DUPLICATE
|
||||||
|
| DYNAMIC | ENABLE | ENCRYPTION | ENDS | ENGINE | ENGINES
|
||||||
|
| ERROR | ERRORS | ESCAPE | EVEN | EVENT | EVENTS | EVERY
|
||||||
|
| EXCHANGE | EXCLUSIVE | EXPIRE | EXTENT_SIZE | FAULTS
|
||||||
|
| FIELDS | FILE_BLOCK_SIZE | FILTER | FIRST | FIXED
|
||||||
|
| FOLLOWS | FULL | FUNCTION | GLOBAL | GRANTS
|
||||||
|
| GROUP_REPLICATION | HASH | HOST | IDENTIFIED
|
||||||
|
| IGNORE_SERVER_IDS | IMPORT | INDEXES | INITIAL_SIZE
|
||||||
|
| INPLACE | INSERT_METHOD | INSTANCE | INVOKER | IO
|
||||||
|
| IO_THREAD | IPC | ISOLATION | ISSUER | KEY_BLOCK_SIZE
|
||||||
|
| LANGUAGE | LAST | LEAVES | LESS | LEVEL | LIST | LOCAL
|
||||||
|
| LOGFILE | LOGS | MASTER | MASTER_AUTO_POSITION
|
||||||
|
| MASTER_CONNECT_RETRY | MASTER_DELAY
|
||||||
|
| MASTER_HEARTBEAT_PERIOD | MASTER_HOST | MASTER_LOG_FILE
|
||||||
|
| MASTER_LOG_POS | MASTER_PASSWORD | MASTER_PORT
|
||||||
|
| MASTER_RETRY_COUNT | MASTER_SSL | MASTER_SSL_CA
|
||||||
|
| MASTER_SSL_CAPATH | MASTER_SSL_CERT | MASTER_SSL_CIPHER
|
||||||
|
| MASTER_SSL_CRL | MASTER_SSL_CRLPATH | MASTER_SSL_KEY
|
||||||
|
| MASTER_TLS_VERSION | MASTER_USER
|
||||||
|
| MAX_CONNECTIONS_PER_HOUR | MAX_QUERIES_PER_HOUR
|
||||||
|
| MAX_ROWS | MAX_SIZE | MAX_UPDATES_PER_HOUR
|
||||||
|
| MAX_USER_CONNECTIONS | MEMORY | MERGE | MID | MIGRATE
|
||||||
|
| MIN_ROWS | MODIFY | MUTEX | MYSQL | NAME | NAMES
|
||||||
|
| NCHAR | NEVER | NO | NODEGROUP | NONE | OFFLINE | OFFSET
|
||||||
|
| OJ | OLD_PASSWORD | ONE | ONLINE | ONLY | OPTIMIZER_COSTS
|
||||||
|
| OPTIONS | OWNER | PACK_KEYS | PAGE | PARSER | PARTIAL
|
||||||
|
| PARTITIONING | PARTITIONS | PASSWORD | PHASE | PLUGINS
|
||||||
|
| PLUGIN_DIR | PORT | PRECEDES | PREPARE | PRESERVE | PREV
|
||||||
|
| PROCESSLIST | PROFILE | PROFILES | PROXY | QUERY | QUICK
|
||||||
|
| REBUILD | RECOVER | REDO_BUFFER_SIZE | REDUNDANT
|
||||||
|
| RELAYLOG | RELAY_LOG_FILE | RELAY_LOG_POS | REMOVE
|
||||||
|
| REORGANIZE | REPAIR | REPLICATE_DO_DB | REPLICATE_DO_TABLE
|
||||||
|
| REPLICATE_IGNORE_DB | REPLICATE_IGNORE_TABLE
|
||||||
|
| REPLICATE_REWRITE_DB | REPLICATE_WILD_DO_TABLE
|
||||||
|
| REPLICATE_WILD_IGNORE_TABLE | REPLICATION | RESUME
|
||||||
|
| RETURNS | ROLLBACK | ROLLUP | ROTATE | ROW | ROWS
|
||||||
|
| ROW_FORMAT | SAVEPOINT | SCHEDULE | SECURITY | SERVER
|
||||||
|
| SESSION | SHARE | SHARED | SIGNED | SIMPLE | SLAVE
|
||||||
|
| SNAPSHOT | SOCKET | SOME | SOUNDS | SOURCE
|
||||||
|
| SQL_AFTER_GTIDS | SQL_AFTER_MTS_GAPS | SQL_BEFORE_GTIDS
|
||||||
|
| SQL_BUFFER_RESULT | SQL_CACHE | SQL_NO_CACHE | SQL_THREAD
|
||||||
|
| START | STARTS | STATS_AUTO_RECALC | STATS_PERSISTENT
|
||||||
|
| STATS_SAMPLE_PAGES | STATUS | STOP | STORAGE | STRING
|
||||||
|
| SUBJECT | SUBPARTITION | SUBPARTITIONS | SUSPEND | SWAPS
|
||||||
|
| SWITCHES | TABLESPACE | TEMPORARY | TEMPTABLE | THAN
|
||||||
|
| TRANSACTION | TRUNCATE | UNDEFINED | UNDOFILE
|
||||||
|
| UNDO_BUFFER_SIZE | UNKNOWN | UPGRADE | USER | VALIDATION
|
||||||
|
| VALUE | VARIABLES | VIEW | WAIT | WARNINGS | WITHOUT
|
||||||
|
| WORK | WRAPPER | X509 | XA | XML
|
||||||
|
;
|
||||||
|
|
||||||
|
functionNameBase
|
||||||
|
: ABS | ACOS | ADDDATE | ADDTIME | AES_DECRYPT | AES_ENCRYPT
|
||||||
|
| AREA | ASBINARY | ASIN | ASTEXT | ASWKB | ASWKT
|
||||||
|
| ASYMMETRIC_DECRYPT | ASYMMETRIC_DERIVE
|
||||||
|
| ASYMMETRIC_ENCRYPT | ASYMMETRIC_SIGN | ASYMMETRIC_VERIFY
|
||||||
|
| ATAN | ATAN2 | BENCHMARK | BIN | BIT_COUNT | BIT_LENGTH
|
||||||
|
| BUFFER | CEIL | CEILING | CENTROID | CHARACTER_LENGTH
|
||||||
|
| CHARSET | CHAR_LENGTH | COERCIBILITY | COLLATION
|
||||||
|
| COMPRESS | CONCAT | CONCAT_WS | CONNECTION_ID | CONV
|
||||||
|
| CONVERT_TZ | COS | COT | COUNT | CRC32
|
||||||
|
| CREATE_ASYMMETRIC_PRIV_KEY | CREATE_ASYMMETRIC_PUB_KEY
|
||||||
|
| CREATE_DH_PARAMETERS | CREATE_DIGEST | CROSSES | DATE
|
||||||
|
| DATEDIFF | DATE_FORMAT | DAY | DAYNAME | DAYOFMONTH
|
||||||
|
| DAYOFWEEK | DAYOFYEAR | DECODE | DEGREES | DES_DECRYPT
|
||||||
|
| DES_ENCRYPT | DIMENSION | DISJOINT | ELT | ENCODE
|
||||||
|
| ENCRYPT | ENDPOINT | ENVELOPE | EQUALS | EXP | EXPORT_SET
|
||||||
|
| EXTERIORRING | EXTRACTVALUE | FIELD | FIND_IN_SET | FLOOR
|
||||||
|
| FORMAT | FOUND_ROWS | FROM_BASE64 | FROM_DAYS
|
||||||
|
| FROM_UNIXTIME | GEOMCOLLFROMTEXT | GEOMCOLLFROMWKB
|
||||||
|
| GEOMETRYCOLLECTION | GEOMETRYCOLLECTIONFROMTEXT
|
||||||
|
| GEOMETRYCOLLECTIONFROMWKB | GEOMETRYFROMTEXT
|
||||||
|
| GEOMETRYFROMWKB | GEOMETRYN | GEOMETRYTYPE | GEOMFROMTEXT
|
||||||
|
| GEOMFROMWKB | GET_FORMAT | GET_LOCK | GLENGTH | GREATEST
|
||||||
|
| GTID_SUBSET | GTID_SUBTRACT | HEX | HOUR | IFNULL
|
||||||
|
| INET6_ATON | INET6_NTOA | INET_ATON | INET_NTOA | INSTR
|
||||||
|
| INTERIORRINGN | INTERSECTS | ISCLOSED | ISEMPTY | ISNULL
|
||||||
|
| ISSIMPLE | IS_FREE_LOCK | IS_IPV4 | IS_IPV4_COMPAT
|
||||||
|
| IS_IPV4_MAPPED | IS_IPV6 | IS_USED_LOCK | LAST_INSERT_ID
|
||||||
|
| LCASE | LEAST | LEFT | LENGTH | LINEFROMTEXT | LINEFROMWKB
|
||||||
|
| LINESTRING | LINESTRINGFROMTEXT | LINESTRINGFROMWKB | LN
|
||||||
|
| LOAD_FILE | LOCATE | LOG | LOG10 | LOG2 | LOWER | LPAD
|
||||||
|
| LTRIM | MAKEDATE | MAKETIME | MAKE_SET | MASTER_POS_WAIT
|
||||||
|
| MBRCONTAINS | MBRDISJOINT | MBREQUAL | MBRINTERSECTS
|
||||||
|
| MBROVERLAPS | MBRTOUCHES | MBRWITHIN | MD5 | MICROSECOND
|
||||||
|
| MINUTE | MLINEFROMTEXT | MLINEFROMWKB | MONTH | MONTHNAME
|
||||||
|
| MPOINTFROMTEXT | MPOINTFROMWKB | MPOLYFROMTEXT
|
||||||
|
| MPOLYFROMWKB | MULTILINESTRING | MULTILINESTRINGFROMTEXT
|
||||||
|
| MULTILINESTRINGFROMWKB | MULTIPOINT | MULTIPOINTFROMTEXT
|
||||||
|
| MULTIPOINTFROMWKB | MULTIPOLYGON | MULTIPOLYGONFROMTEXT
|
||||||
|
| MULTIPOLYGONFROMWKB | NAME_CONST | NULLIF | NUMGEOMETRIES
|
||||||
|
| NUMINTERIORRINGS | NUMPOINTS | OCT | OCTET_LENGTH | ORD
|
||||||
|
| OVERLAPS | PERIOD_ADD | PERIOD_DIFF | PI | POINT
|
||||||
|
| POINTFROMTEXT | POINTFROMWKB | POINTN | POLYFROMTEXT
|
||||||
|
| POLYFROMWKB | POLYGON | POLYGONFROMTEXT | POLYGONFROMWKB
|
||||||
|
| POSITION| POW | POWER | QUARTER | QUOTE | RADIANS | RAND
|
||||||
|
| RANDOM_BYTES | RELEASE_LOCK | REVERSE | RIGHT | ROUND
|
||||||
|
| ROW_COUNT | RPAD | RTRIM | SECOND | SEC_TO_TIME
|
||||||
|
| SESSION_USER | SHA | SHA1 | SHA2 | SIGN | SIN | SLEEP
|
||||||
|
| SOUNDEX | SQL_THREAD_WAIT_AFTER_GTIDS | SQRT | SRID
|
||||||
|
| STARTPOINT | STRCMP | STR_TO_DATE | ST_AREA | ST_ASBINARY
|
||||||
|
| ST_ASTEXT | ST_ASWKB | ST_ASWKT | ST_BUFFER | ST_CENTROID
|
||||||
|
| ST_CONTAINS | ST_CROSSES | ST_DIFFERENCE | ST_DIMENSION
|
||||||
|
| ST_DISJOINT | ST_DISTANCE | ST_ENDPOINT | ST_ENVELOPE
|
||||||
|
| ST_EQUALS | ST_EXTERIORRING | ST_GEOMCOLLFROMTEXT
|
||||||
|
| ST_GEOMCOLLFROMTXT | ST_GEOMCOLLFROMWKB
|
||||||
|
| ST_GEOMETRYCOLLECTIONFROMTEXT
|
||||||
|
| ST_GEOMETRYCOLLECTIONFROMWKB | ST_GEOMETRYFROMTEXT
|
||||||
|
| ST_GEOMETRYFROMWKB | ST_GEOMETRYN | ST_GEOMETRYTYPE
|
||||||
|
| ST_GEOMFROMTEXT | ST_GEOMFROMWKB | ST_INTERIORRINGN
|
||||||
|
| ST_INTERSECTION | ST_INTERSECTS | ST_ISCLOSED | ST_ISEMPTY
|
||||||
|
| ST_ISSIMPLE | ST_LINEFROMTEXT | ST_LINEFROMWKB
|
||||||
|
| ST_LINESTRINGFROMTEXT | ST_LINESTRINGFROMWKB
|
||||||
|
| ST_NUMGEOMETRIES | ST_NUMINTERIORRING
|
||||||
|
| ST_NUMINTERIORRINGS | ST_NUMPOINTS | ST_OVERLAPS
|
||||||
|
| ST_POINTFROMTEXT | ST_POINTFROMWKB | ST_POINTN
|
||||||
|
| ST_POLYFROMTEXT | ST_POLYFROMWKB | ST_POLYGONFROMTEXT
|
||||||
|
| ST_POLYGONFROMWKB | ST_SRID | ST_STARTPOINT
|
||||||
|
| ST_SYMDIFFERENCE | ST_TOUCHES | ST_UNION | ST_WITHIN
|
||||||
|
| ST_X | ST_Y | SUBDATE | SUBSTRING_INDEX | SUBTIME
|
||||||
|
| SYSTEM_USER | TAN | TIME | TIMEDIFF | TIMESTAMP
|
||||||
|
| TIMESTAMPADD | TIMESTAMPDIFF | TIME_FORMAT | TIME_TO_SEC
|
||||||
|
| TOUCHES | TO_BASE64 | TO_DAYS | TO_SECONDS | UCASE
|
||||||
|
| UNCOMPRESS | UNCOMPRESSED_LENGTH | UNHEX | UNIX_TIMESTAMP
|
||||||
|
| UPDATEXML | UPPER | UUID | UUID_SHORT
|
||||||
|
| VALIDATE_PASSWORD_STRENGTH | VERSION
|
||||||
|
| WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS | WEEK | WEEKDAY
|
||||||
|
| WEEKOFYEAR | WEIGHT_STRING | WITHIN | YEAR | YEARWEEK
|
||||||
|
| Y_FUNCTION | X_FUNCTION
|
||||||
|
;
|
@ -0,0 +1 @@
|
|||||||
|
version=${project.version}
|
15
pom.xml
15
pom.xml
@ -76,6 +76,9 @@
|
|||||||
<!-- Connectors -->
|
<!-- Connectors -->
|
||||||
<version.com.google.protobuf>2.6.1</version.com.google.protobuf>
|
<version.com.google.protobuf>2.6.1</version.com.google.protobuf>
|
||||||
|
|
||||||
|
<!-- ANTLR -->
|
||||||
|
<antlr.version>4.7</antlr.version>
|
||||||
|
|
||||||
<!-- Testing -->
|
<!-- Testing -->
|
||||||
<version.junit>4.12</version.junit>
|
<version.junit>4.12</version.junit>
|
||||||
<version.fest>1.4</version.fest>
|
<version.fest>1.4</version.fest>
|
||||||
@ -111,6 +114,7 @@
|
|||||||
|
|
||||||
<modules>
|
<modules>
|
||||||
<module>support/checkstyle</module>
|
<module>support/checkstyle</module>
|
||||||
|
<module>debezium-ddl-parser</module>
|
||||||
<module>debezium-assembly-descriptors</module>
|
<module>debezium-assembly-descriptors</module>
|
||||||
<module>debezium-core</module>
|
<module>debezium-core</module>
|
||||||
<module>debezium-embedded</module>
|
<module>debezium-embedded</module>
|
||||||
@ -221,6 +225,12 @@
|
|||||||
<version>${version.confluent.platform}</version>
|
<version>${version.confluent.platform}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.antlr</groupId>
|
||||||
|
<artifactId>antlr4-runtime</artifactId>
|
||||||
|
<version>${antlr.version}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<!-- PostgreSQL connector -->
|
<!-- PostgreSQL connector -->
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
@ -320,6 +330,11 @@
|
|||||||
<artifactId>debezium-connector-mysql</artifactId>
|
<artifactId>debezium-connector-mysql</artifactId>
|
||||||
<version>${project.version}</version>
|
<version>${project.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>io.debezium</groupId>
|
||||||
|
<artifactId>debezium-ddl-parser</artifactId>
|
||||||
|
<version>${project.version}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<!-- Debezium test artifacts -->
|
<!-- Debezium test artifacts -->
|
||||||
<dependency>
|
<dependency>
|
||||||
|
@ -11,5 +11,5 @@
|
|||||||
<!--exclude any protobuf generated files-->
|
<!--exclude any protobuf generated files-->
|
||||||
<suppress checks="." files=".[\\/]io[\\/]debezium[\\/]connector[\\/]postgresql[\\/]proto[\\/].*\.java$"/>
|
<suppress checks="." files=".[\\/]io[\\/]debezium[\\/]connector[\\/]postgresql[\\/]proto[\\/].*\.java$"/>
|
||||||
<!--exclude any antlr generated files-->
|
<!--exclude any antlr generated files-->
|
||||||
<suppress checks="." files=".[\\/]io[\\/]debezium[\\/]connector[\\/]mysql[\\/]antlr[\\/]generated[\\/].*\.java$"/>
|
<suppress checks="." files=".[\\/]io[\\/]debezium[\\/]ddl[\\/]parser[\\/]mysql[\\/]generated[\\/].*\.java$"/>
|
||||||
</suppressions>
|
</suppressions>
|
Loading…
Reference in New Issue
Block a user