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>
|
||||
<artifactId>debezium-core</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.debezium</groupId>
|
||||
<artifactId>debezium-ddl-parser</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.github.shyiko</groupId>
|
||||
<artifactId>mysql-binlog-connector-java</artifactId>
|
||||
@ -39,11 +43,6 @@
|
||||
<groupId>mysql</groupId>
|
||||
<artifactId>mysql-connector-java</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.antlr</groupId>
|
||||
<artifactId>antlr4-runtime</artifactId>
|
||||
<version>${antlr.version}</version>
|
||||
</dependency>
|
||||
|
||||
<!-- Testing -->
|
||||
<dependency>
|
||||
@ -110,9 +109,6 @@
|
||||
<docker.skip>false</docker.skip>
|
||||
<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>
|
||||
<build>
|
||||
<plugins>
|
||||
@ -342,21 +338,6 @@
|
||||
</execution>
|
||||
</executions>
|
||||
</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>
|
||||
<resources>
|
||||
<!-- 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 -->
|
||||
<version.com.google.protobuf>2.6.1</version.com.google.protobuf>
|
||||
|
||||
<!-- ANTLR -->
|
||||
<antlr.version>4.7</antlr.version>
|
||||
|
||||
<!-- Testing -->
|
||||
<version.junit>4.12</version.junit>
|
||||
<version.fest>1.4</version.fest>
|
||||
@ -111,6 +114,7 @@
|
||||
|
||||
<modules>
|
||||
<module>support/checkstyle</module>
|
||||
<module>debezium-ddl-parser</module>
|
||||
<module>debezium-assembly-descriptors</module>
|
||||
<module>debezium-core</module>
|
||||
<module>debezium-embedded</module>
|
||||
@ -221,6 +225,12 @@
|
||||
<version>${version.confluent.platform}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.antlr</groupId>
|
||||
<artifactId>antlr4-runtime</artifactId>
|
||||
<version>${antlr.version}</version>
|
||||
</dependency>
|
||||
|
||||
<!-- PostgreSQL connector -->
|
||||
|
||||
<dependency>
|
||||
@ -320,6 +330,11 @@
|
||||
<artifactId>debezium-connector-mysql</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.debezium</groupId>
|
||||
<artifactId>debezium-ddl-parser</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
|
||||
<!-- Debezium test artifacts -->
|
||||
<dependency>
|
||||
|
@ -11,5 +11,5 @@
|
||||
<!--exclude any protobuf generated files-->
|
||||
<suppress checks="." files=".[\\/]io[\\/]debezium[\\/]connector[\\/]postgresql[\\/]proto[\\/].*\.java$"/>
|
||||
<!--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>
|
Loading…
Reference in New Issue
Block a user