Improve/flink keywords (#195)

* refactor: improve flinksql keywords rule

* test: correct flink sql unit test
This commit is contained in:
Hayden 2023-10-30 17:57:27 +08:00 committed by GitHub
parent 887de81521
commit 21dcb3fdce
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 11685 additions and 9899 deletions

View File

@ -9,388 +9,528 @@ LINE_COMMENT: (
| '--' ('\r'? '\n' | EOF) | '--' ('\r'? '\n' | EOF)
) -> channel(HIDDEN); ) -> channel(HIDDEN);
// List of keywords that are not reserved. /**
// Please keep the keyword in alphabetical order if new keyword is added. * Keywords and Reserved Keywords
// Please add it to the nonReservedKeywords rule if new keyword is added. * Flink uses Calcite as its SQL parser,
// Reference link https://github.com/apache/flink/blob/release-1.16/flink-table/flink-sql-parser/src/main/codegen/data/Parser.tdd * The following keywords are derived from the Calcite documentation and Flink's own source code.
* First, perform a union between the keyword sets declared in the Flink source code and those in the Calcite documentation,
* then calculate the difference between the resulting set and the non-keyword set declared in the Flink source code.
*
* Calcite Documentation: https://calcite.apache.org/docs/reference.html#keywords
* Flink Parser.tdd file: https://github.com/apache/flink/blob/release-1.16/flink-table/flink-sql-parser/src/main/codegen/data/Parser.tdd
*
* Please keep the keyword in alphabetical order if new keyword is added.
* When adding new keywords, please consider whether they should be added to the NonReserved Keywords section below.
*/
KW_ABS: 'ABS';
KW_ALL: 'ALL';
KW_ALLOCATE: 'ALLOCATE';
KW_ALLOW: 'ALLOW';
KW_ALTER: 'ALTER';
KW_ANALYZE: 'ANALYZE';
KW_AND: 'AND';
KW_ANY: 'ANY';
KW_ARE: 'ARE';
KW_ARRAY: 'ARRAY';
KW_ARRAY_AGG: 'ARRAY_AGG';
KW_ARRAY_CONCAT_AGG: 'ARRAY_CONCAT_AGG';
KW_ARRAY_MAX_CARDINALITY: 'ARRAY_MAX_CARDINALITY';
KW_AS: 'AS';
KW_ASENSITIVE: 'ASENSITIVE';
KW_ASYMMETRIC: 'ASYMMETRIC';
KW_AT: 'AT';
KW_ATOMIC: 'ATOMIC';
KW_AUTHORIZATION: 'AUTHORIZATION';
KW_AVG: 'AVG';
KW_BEGIN: 'BEGIN';
KW_BEGIN_FRAME: 'BEGIN_FRAME';
KW_BEGIN_PARTITION: 'BEGIN_PARTITION';
KW_BETWEEN: 'BETWEEN';
KW_BIGINT: 'BIGINT';
KW_BINARY: 'BINARY';
KW_BIT: 'BIT';
KW_BLOB: 'BLOB';
KW_BOOLEAN: 'BOOLEAN';
KW_BOTH: 'BOTH';
KW_BY: 'BY';
KW_BYTES: 'BYTES';
KW_CALL: 'CALL';
KW_CALLED: 'CALLED';
KW_CARDINALITY: 'CARDINALITY';
KW_CASCADED: 'CASCADED';
KW_CASE: 'CASE';
KW_CAST: 'CAST';
KW_CATALOGS: 'CATALOGS';
KW_CEIL: 'CEIL';
KW_CEILING: 'CEILING';
KW_CHANGELOG_MODE: 'CHANGELOG_MODE';
KW_CHAR: 'CHAR';
KW_CHARACTER: 'CHARACTER';
KW_CHARACTER_LENGTH: 'CHARACTER_LENGTH';
KW_CHAR_LENGTH: 'CHAR_LENGTH';
KW_CHECK: 'CHECK';
KW_CLASSIFIER: 'CLASSIFIER';
KW_CLOB: 'CLOB';
KW_CLOSE: 'CLOSE';
KW_COALESCE: 'COALESCE';
KW_COLLATE: 'COLLATE';
KW_COLLECT: 'COLLECT';
KW_COLUMN: 'COLUMN';
KW_COLUMNS: 'COLUMNS';
KW_COMMENT: 'COMMENT';
KW_COMMIT: 'COMMIT';
KW_COMPUTE: 'COMPUTE';
KW_CONDITION: 'CONDITION';
KW_CONNECT: 'CONNECT';
KW_CONSTRAINT: 'CONSTRAINT';
KW_CONTAINS: 'CONTAINS';
KW_CONVERT: 'CONVERT';
KW_CORR: 'CORR';
KW_CORRESPONDING: 'CORRESPONDING';
KW_COUNT: 'COUNT';
KW_COVAR_POP: 'COVAR_POP';
KW_COVAR_SAMP: 'COVAR_SAMP';
KW_CREATE: 'CREATE';
KW_CROSS: 'CROSS';
KW_CUBE: 'CUBE';
KW_CUME_DIST: 'CUME_DIST';
KW_CURRENT: 'CURRENT';
KW_CURRENT_CATALOG: 'CURRENT_CATALOG';
KW_CURRENT_DATE: 'CURRENT_DATE';
KW_CURRENT_DEFAULT_TRANSFORM_GROUP: 'CURRENT_DEFAULT_TRANSFORM_GROUP';
KW_CURRENT_PATH: 'CURRENT_PATH';
KW_CURRENT_ROLE: 'CURRENT_ROLE';
KW_CURRENT_ROW: 'CURRENT_ROW';
KW_CURRENT_SCHEMA: 'CURRENT_SCHEMA';
KW_CURRENT_TIME: 'CURRENT_TIME';
KW_CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP';
KW_CURRENT_TRANSFORM_GROUP_FOR_TYPE: 'CURRENT_TRANSFORM_GROUP_FOR_TYPE';
KW_CURRENT_USER: 'CURRENT_USER';
KW_CURSOR: 'CURSOR';
KW_CYCLE: 'CYCLE';
KW_DATABASES: 'DATABASES';
KW_DATE: 'DATE';
KW_DATETIME: 'DATETIME';
KW_DATETIME_DIFF: 'DATETIME_DIFF';
KW_DATETIME_TRUNC: 'DATETIME_TRUNC';
KW_DATE_DIFF: 'DATE_DIFF';
KW_DATE_TRUNC: 'DATE_TRUNC';
KW_DAY: 'DAY';
KW_DAYOFWEEK: 'DAYOFWEEK';
KW_DAYOFYEAR: 'DAYOFYEAR';
KW_DEALLOCATE: 'DEALLOCATE';
KW_DEC: 'DEC';
KW_DECIMAL: 'DECIMAL';
KW_DECLARE: 'DECLARE';
KW_DEFAULT: 'DEFAULT';
KW_DEFINE: 'DEFINE';
KW_DELETE: 'DELETE';
KW_DENSE_RANK: 'DENSE_RANK';
KW_DEREF: 'DEREF';
KW_DESCRIBE: 'DESCRIBE';
KW_DETERMINISTIC: 'DETERMINISTIC';
KW_DISALLOW: 'DISALLOW';
KW_DISCONNECT: 'DISCONNECT';
KW_DISTINCT: 'DISTINCT';
KW_DOT: 'DOT';
KW_DOUBLE: 'DOUBLE';
KW_DROP: 'DROP';
KW_DYNAMIC: 'DYNAMIC';
KW_EACH: 'EACH';
KW_ELEMENT: 'ELEMENT';
KW_ELSE: 'ELSE';
KW_EMPTY: 'EMPTY';
KW_END: 'END';
// KW_END_EXEC: 'END-EXEC';
KW_END_FRAME: 'END_FRAME';
KW_END_PARTITION: 'END_PARTITION';
KW_ENFORCED: 'ENFORCED';
KW_EQUALS: 'EQUALS';
KW_ESCAPE: 'ESCAPE';
KW_ESTIMATED_COST: 'ESTIMATED_COST';
KW_EVERY: 'EVERY';
KW_EXCEPT: 'EXCEPT';
KW_EXEC: 'EXEC';
KW_EXECUTE: 'EXECUTE';
KW_EXISTS: 'EXISTS';
KW_EXP: 'EXP';
KW_EXPLAIN: 'EXPLAIN';
KW_EXTEND: 'EXTEND';
KW_EXTENDED: 'EXTENDED';
KW_EXTERNAL: 'EXTERNAL';
KW_EXTRACT: 'EXTRACT';
KW_FALSE: 'FALSE';
KW_FETCH: 'FETCH';
KW_FILTER: 'FILTER';
KW_FIRST_VALUE: 'FIRST_VALUE';
KW_FLOAT: 'FLOAT';
KW_FLOOR: 'FLOOR';
KW_FOR: 'FOR';
KW_FOREIGN: 'FOREIGN';
KW_FRAME_ROW: 'FRAME_ROW';
KW_FREE: 'FREE';
KW_FRIDAY: 'FRIDAY';
KW_FROM: 'FROM';
KW_FULL: 'FULL';
KW_FUNCTION: 'FUNCTION';
KW_FUNCTIONS: 'FUNCTIONS';
KW_FUSION: 'FUSION';
KW_GET: 'GET';
KW_GLOBAL: 'GLOBAL';
KW_GRANT: 'GRANT';
KW_GROUP: 'GROUP';
KW_GROUPING: 'GROUPING';
KW_GROUPS: 'GROUPS';
KW_GROUP_CONCAT: 'GROUP_CONCAT';
KW_HAVING: 'HAVING';
KW_HOLD: 'HOLD';
KW_HOUR: 'HOUR';
KW_IDENTITY: 'IDENTITY';
KW_IF: 'IF';
KW_ILIKE: 'ILIKE';
KW_IMPORT: 'IMPORT';
KW_IN: 'IN';
KW_INCLUDE: 'INCLUDE';
KW_INDICATOR: 'INDICATOR';
KW_INITIAL: 'INITIAL';
KW_INNER: 'INNER';
KW_INOUT: 'INOUT';
KW_INSENSITIVE: 'INSENSITIVE';
KW_INSERT: 'INSERT';
KW_INT: 'INT';
KW_INTEGER: 'INTEGER';
KW_INTERSECT: 'INTERSECT';
KW_INTERSECTION: 'INTERSECTION';
KW_INTERVAL: 'INTERVAL';
KW_INTO: 'INTO';
KW_IS: 'IS';
KW_JOIN: 'JOIN';
KW_JSON_ARRAY: 'JSON_ARRAY';
KW_JSON_ARRAYAGG: 'JSON_ARRAYAGG';
KW_JSON_EXECUTION_PLAN: 'JSON_EXECUTION_PLAN';
KW_JSON_EXISTS: 'JSON_EXISTS';
KW_JSON_OBJECT: 'JSON_OBJECT';
KW_JSON_OBJECTAGG: 'JSON_OBJECTAGG';
KW_JSON_QUERY: 'JSON_QUERY';
KW_JSON_VALUE: 'JSON_VALUE';
KW_LAG: 'LAG';
KW_LANGUAGE: 'LANGUAGE';
KW_LARGE: 'LARGE';
KW_LAST_VALUE: 'LAST_VALUE';
KW_LATERAL: 'LATERAL';
KW_LEAD: 'LEAD';
KW_LEADING: 'LEADING';
KW_LEFT: 'LEFT';
KW_LIKE: 'LIKE';
KW_LIKE_REGEX: 'LIKE_REGEX';
KW_LIMIT: 'LIMIT';
KW_LN: 'LN';
KW_LOCAL: 'LOCAL';
KW_LOCALTIME: 'LOCALTIME';
KW_LOCALTIMESTAMP: 'LOCALTIMESTAMP';
KW_LOWER: 'LOWER';
KW_MATCH: 'MATCH';
KW_MATCHES: 'MATCHES';
KW_MATCH_NUMBER: 'MATCH_NUMBER';
KW_MATCH_RECOGNIZE: 'MATCH_RECOGNIZE';
KW_MAX: 'MAX';
KW_MEASURES: 'MEASURES';
KW_MEMBER: 'MEMBER';
KW_MERGE: 'MERGE';
KW_METADATA: 'METADATA';
KW_METHOD: 'METHOD';
KW_MIN: 'MIN';
KW_MINUS: 'MINUS';
KW_MINUTE: 'MINUTE';
KW_MOD: 'MOD';
KW_MODIFIES: 'MODIFIES';
KW_MODIFY: 'MODIFY';
KW_MODULE: 'MODULE';
KW_MODULES: 'MODULES';
KW_MONDAY: 'MONDAY';
KW_MONTH: 'MONTH';
KW_MORE: 'MORE';
KW_MULTISET: 'MULTISET';
KW_NATIONAL: 'NATIONAL';
KW_NATURAL: 'NATURAL';
KW_NCHAR: 'NCHAR';
KW_NCLOB: 'NCLOB';
KW_NEW: 'NEW';
KW_NEXT: 'NEXT';
KW_NO: 'NO';
KW_NONE: 'NONE';
KW_NORMALIZE: 'NORMALIZE';
KW_NOT: 'NOT';
KW_NTH_VALUE: 'NTH_VALUE';
KW_NTILE: 'NTILE';
KW_NULL: 'NULL';
KW_NULLIF: 'NULLIF';
KW_NUMERIC: 'NUMERIC';
KW_OCCURRENCES_REGEX: 'OCCURRENCES_REGEX';
KW_OCTET_LENGTH: 'OCTET_LENGTH';
KW_OF: 'OF';
KW_OFFSET: 'OFFSET';
KW_OLD: 'OLD';
KW_OMIT: 'OMIT';
KW_ON: 'ON';
KW_ONE: 'ONE';
KW_ONLY: 'ONLY';
KW_OPEN: 'OPEN';
KW_OR: 'OR';
KW_ORDER: 'ORDER';
KW_ORDINAL: 'ORDINAL';
KW_OUT: 'OUT';
KW_OUTER: 'OUTER';
KW_OVER: 'OVER';
KW_OVERLAPS: 'OVERLAPS';
KW_OVERLAY: 'OVERLAY';
KW_OVERWRITE: 'OVERWRITE';
KW_OVERWRITING: 'OVERWRITING';
KW_PARAMETER: 'PARAMETER';
KW_PARTITION: 'PARTITION';
KW_PARTITIONED: 'PARTITIONED';
KW_PARTITIONS: 'PARTITIONS';
KW_PATTERN: 'PATTERN';
KW_PER: 'PER';
KW_PERCENT: 'PERCENT';
KW_PERCENTILE_CONT: 'PERCENTILE_CONT';
KW_PERCENTILE_DISC: 'PERCENTILE_DISC';
KW_PERCENT_RANK: 'PERCENT_RANK';
KW_PERIOD: 'PERIOD';
KW_PERMUTE: 'PERMUTE';
KW_PIVOT: 'PIVOT';
KW_PORTION: 'PORTION';
KW_POSITION: 'POSITION';
KW_POSITION_REGEX: 'POSITION_REGEX';
KW_POWER: 'POWER';
KW_PRECEDES: 'PRECEDES';
KW_PRECISION: 'PRECISION';
KW_PREPARE: 'PREPARE';
KW_PREV: 'PREV';
KW_PRIMARY: 'PRIMARY';
KW_PROCEDURE: 'PROCEDURE';
KW_QUALIFY: 'QUALIFY';
KW_QUARTERS: 'QUARTERS';
KW_RANGE: 'RANGE';
KW_RANK: 'RANK';
KW_RAW: 'RAW';
KW_READS: 'READS';
KW_REAL: 'REAL';
KW_RECURSIVE: 'RECURSIVE';
KW_REF: 'REF';
KW_REFERENCES: 'REFERENCES';
KW_REFERENCING: 'REFERENCING';
KW_REGR_AVGX: 'REGR_AVGX';
KW_REGR_AVGY: 'REGR_AVGY';
KW_REGR_COUNT: 'REGR_COUNT';
KW_REGR_INTERCEPT: 'REGR_INTERCEPT';
KW_REGR_R2: 'REGR_R2';
KW_REGR_SLOPE: 'REGR_SLOPE';
KW_REGR_SXX: 'REGR_SXX';
KW_REGR_SXY: 'REGR_SXY';
KW_REGR_SYY: 'REGR_SYY';
KW_RELEASE: 'RELEASE';
KW_RENAME: 'RENAME';
KW_RESET: 'RESET';
KW_RESULT: 'RESULT';
KW_RETURN: 'RETURN';
KW_RETURNS: 'RETURNS';
KW_REVOKE: 'REVOKE';
KW_RIGHT: 'RIGHT';
KW_RLIKE: 'RLIKE';
KW_ROLLBACK: 'ROLLBACK';
KW_ROLLUP: 'ROLLUP';
KW_ROW: 'ROW';
KW_ROWS: 'ROWS';
KW_ROW_NUMBER: 'ROW_NUMBER';
KW_RUNNING: 'RUNNING';
KW_SAFE_CAST: 'SAFE_CAST';
KW_SAFE_OFFSET: 'SAFE_OFFSET';
KW_SAFE_ORDINAL: 'SAFE_ORDINAL';
KW_SATURDAY: 'SATURDAY';
KW_SAVEPOINT: 'SAVEPOINT';
KW_SCALA: 'SCALA';
KW_SCOPE: 'SCOPE';
KW_SCROLL: 'SCROLL';
KW_SEARCH: 'SEARCH';
KW_SECOND: 'SECOND';
KW_SEEK: 'SEEK';
KW_SELECT: 'SELECT';
KW_SENSITIVE: 'SENSITIVE';
KW_SEPARATOR: 'SEPARATOR';
KW_SESSION_USER: 'SESSION_USER';
KW_SET: 'SET';
KW_SHOW: 'SHOW';
KW_SIMILAR: 'SIMILAR';
KW_SKIP: 'SKIP';
KW_SMALLINT: 'SMALLINT';
KW_SOME: 'SOME';
KW_SPECIFIC: 'SPECIFIC';
KW_SPECIFICTYPE: 'SPECIFICTYPE';
KW_SQL: 'SQL';
KW_SQLEXCEPTION: 'SQLEXCEPTION';
KW_SQLSTATE: 'SQLSTATE';
KW_SQLWARNING: 'SQLWARNING';
KW_SQRT: 'SQRT';
KW_START: 'START';
KW_STATEMENT: 'STATEMENT';
KW_STATIC: 'STATIC';
KW_STATISTICS: 'STATISTICS';
KW_STDDEV_POP: 'STDDEV_POP';
KW_STDDEV_SAMP: 'STDDEV_SAMP';
KW_STREAM: 'STREAM';
KW_STRING: 'STRING';
KW_STRING_AGG: 'STRING_AGG';
KW_SUBMULTISET: 'SUBMULTISET';
KW_SUBSET: 'SUBSET';
KW_SUBSTRING: 'SUBSTRING';
KW_SUBSTRING_REGEX: 'SUBSTRING_REGEX';
KW_SUCCEEDS: 'SUCCEEDS';
KW_SUM: 'SUM';
KW_SUNDAY: 'SUNDAY';
KW_SYMMETRIC: 'SYMMETRIC';
KW_SYSTEM: 'SYSTEM';
KW_SYSTEM_TIME: 'SYSTEM_TIME';
KW_SYSTEM_USER: 'SYSTEM_USER';
KW_TABLE: 'TABLE';
KW_TABLES: 'TABLES';
KW_TABLESAMPLE: 'TABLESAMPLE';
KW_THEN: 'THEN';
KW_THURSDAY: 'THURSDAY';
KW_TIME: 'TIME';
KW_TIMESTAMP: 'TIMESTAMP';
KW_TIMESTAMP_DIFF: 'TIMESTAMP_DIFF';
KW_TIMESTAMP_LTZ: 'TIMESTAMP_LTZ';
KW_TIMESTAMP_TRUNC: 'TIMESTAMP_TRUNC';
KW_TIMEZONE_HOUR: 'TIMEZONE_HOUR';
KW_TIMEZONE_MINUTE: 'TIMEZONE_MINUTE';
KW_TIME_DIFF: 'TIME_DIFF';
KW_TIME_TRUNC: 'TIME_TRUNC';
KW_TINYINT: 'TINYINT';
KW_TO: 'TO';
KW_TRAILING: 'TRAILING';
KW_TRANSLATE: 'TRANSLATE';
KW_TRANSLATE_REGEX: 'TRANSLATE_REGEX';
KW_TRANSLATION: 'TRANSLATION';
KW_TREAT: 'TREAT';
KW_TRIGGER: 'TRIGGER';
KW_TRIM: 'TRIM';
KW_TRIM_ARRAY: 'TRIM_ARRAY';
KW_TRUE: 'TRUE';
KW_TRUNCATE: 'TRUNCATE';
KW_TRY_CAST: 'TRY_CAST';
KW_TUESDAY: 'TUESDAY';
KW_UESCAPE: 'UESCAPE';
KW_UNION: 'UNION';
KW_UNIQUE: 'UNIQUE';
KW_UNKNOWN: 'UNKNOWN';
KW_UNNEST: 'UNNEST';
KW_UNPIVOT: 'UNPIVOT';
KW_UPDATE: 'UPDATE';
KW_UPPER: 'UPPER';
KW_UPSERT: 'UPSERT';
KW_USE: 'USE';
KW_USER: 'USER';
KW_USING: 'USING';
KW_VALUE: 'VALUE';
KW_VALUES: 'VALUES';
KW_VALUE_OF: 'VALUE_OF';
KW_VARBINARY: 'VARBINARY';
KW_VARCHAR: 'VARCHAR';
KW_VARYING: 'VARYING';
KW_VAR_POP: 'VAR_POP';
KW_VAR_SAMP: 'VAR_SAMP';
KW_VERSIONING: 'VERSIONING';
KW_VIEWS: 'VIEWS';
KW_VIRTUAL: 'VIRTUAL';
KW_WATERMARK: 'WATERMARK';
KW_WATERMARKS: 'WATERMARKS';
KW_WEDNESDAY: 'WEDNESDAY';
KW_WEEKS: 'WEEKS';
KW_WHEN: 'WHEN';
KW_WHENEVER: 'WHENEVER';
KW_WHERE: 'WHERE';
KW_WIDTH_BUCKET: 'WIDTH_BUCKET';
KW_WINDOW: 'WINDOW';
KW_WITH: 'WITH';
KW_WITHIN: 'WITHIN';
KW_WITHOUT: 'WITHOUT';
KW_YEAR: 'YEAR';
KW_ADD: 'ADD'; /**
KW_ADMIN: 'ADMIN'; * Non-Reserved Keywords
KW_AFTER: 'AFTER'; * Keywords that are used in the syntax rules but do not exist in the above keyword list section.
KW_ANALYZE: 'ANALYZE'; * Please keep the keyword in alphabetical order if new keyword is added.
KW_ASC: 'ASC'; * New non-reserved keywords should also be added to the nonReservedKeywords rule in FlinkSqlParser.g4 file.
KW_BEFORE: 'BEFORE'; */
KW_BYTES: 'BYTES'; KW_ADD :'ADD';
KW_CASCADE: 'CASCADE'; KW_AFTER :'AFTER';
KW_CATALOG: 'CATALOG'; KW_ASC :'ASC';
KW_CATALOGS: 'CATALOGS'; KW_CASCADE :'CASCADE';
KW_CENTURY: 'CENTURY'; KW_CATALOG :'CATALOG';
KW_CHAIN: 'CHAIN'; KW_CENTURY :'CENTURY';
KW_CHANGELOG_MODE: 'CHANGELOG_MODE'; KW_CONFIG :'CONFIG';
KW_CHARACTERS: 'CHARACTERS'; KW_CONSTRAINTS :'CONSTRAINTS';
KW_COMMENT: 'COMMENT'; KW_CUMULATE :'CUMULATE';
KW_COMPACT: 'COMPACT'; KW_DATA :'DATA';
KW_COLUMNS: 'COLUMNS'; KW_DATABASE :'DATABASE';
KW_CONSTRAINTS: 'CONSTRAINTS'; KW_DAYS :'DAYS';
KW_CONSTRUCTOR: 'CONSTRUCTOR'; KW_DECADE :'DECADE';
KW_CUMULATE: 'CUMULATE'; KW_DESC :'DESC';
KW_DATA: 'DATA'; KW_DESCRIPTOR :'DESCRIPTOR';
KW_DATABASE: 'DATABASE'; KW_DIV :'DIV';
KW_DATABASES: 'DATABASES'; KW_ENGINE :'ENGINE';
KW_DAYS: 'DAYS'; KW_EPOCH :'EPOCH';
KW_DECADE: 'DECADE'; KW_EXCLUDING :'EXCLUDING';
KW_DEFINED: 'DEFINED'; KW_FILE :'FILE';
KW_DESC: 'DESC'; KW_FIRST :'FIRST';
KW_DESCRIPTOR: 'DESCRIPTOR'; KW_GENERATED :'GENERATED';
KW_DIV: 'DIV'; KW_HOP :'HOP';
KW_ENCODING: 'ENCODING'; KW_HOURS :'HOURS';
KW_ENFORCED: 'ENFORCED'; KW_IGNORE :'IGNORE';
KW_ENGINE: 'ENGINE'; KW_INCLUDING :'INCLUDING';
KW_EPOCH: 'EPOCH'; KW_JAR :'JAR';
KW_ERROR: 'ERROR'; KW_JARS :'JARS';
KW_ESTIMATED_COST: 'ESTIMATED_COST'; KW_JAVA :'JAVA';
KW_EXCEPTION: 'EXCEPTION'; KW_KEY :'KEY';
KW_EXCLUDE: 'EXCLUDE'; KW_LAST :'LAST';
KW_EXCLUDING: 'EXCLUDING'; KW_LOAD :'LOAD';
KW_EXTENDED: 'EXTENDED'; KW_MAP :'MAP';
KW_FILE: 'FILE'; KW_MICROSECOND :'MICROSECOND';
KW_FINAL: 'FINAL'; KW_MILLENNIUM :'MILLENNIUM';
KW_FIRST: 'FIRST'; KW_MILLISECOND :'MILLISECOND';
KW_FOLLOWING: 'FOLLOWING'; KW_MINUTES :'MINUTES';
KW_FORMAT: 'FORMAT'; KW_MONTHS :'MONTHS';
KW_FORTRAN: 'FORTRAN'; KW_NANOSECOND :'NANOSECOND';
KW_FOUND: 'FOUND'; KW_NULLS :'NULLS';
KW_FRAC_SECOND: 'FRAC_SECOND'; KW_OPTIONS :'OPTIONS';
KW_FUNCTIONS: 'FUNCTIONS'; KW_PAST :'PAST';
KW_GENERAL: 'GENERAL'; KW_PLAN :'PLAN';
KW_GENERATED: 'GENERATED'; KW_PRECEDING :'PRECEDING';
KW_GO: 'GO'; KW_PYTHON :'PYTHON';
KW_GOTO: 'GOTO'; KW_PYTHON_ARCHIVES :'PYTHON_ARCHIVES';
KW_GRANTED: 'GRANTED'; KW_PYTHON_DEPENDENCIES :'PYTHON_DEPENDENCIES';
KW_HOP: 'HOP'; KW_PYTHON_FILES :'PYTHON_FILES';
KW_HOURS: 'HOURS'; KW_PYTHON_JAR :'PYTHON_JAR';
KW_IF: 'IF'; KW_PYTHON_PARAMETER :'PYTHON_PARAMETER';
KW_IGNORE: 'IGNORE'; KW_PYTHON_REQUIREMENTS :'PYTHON_REQUIREMENTS';
KW_INCREMENT: 'INCREMENT'; KW_QUARTER :'QUARTER';
KW_INPUT: 'INPUT'; KW_REMOVE :'REMOVE';
KW_INVOKER: 'INVOKER'; KW_RESTRICT :'RESTRICT';
KW_JAR: 'JAR'; KW_SECONDS :'SECONDS';
KW_JARS: 'JARS'; KW_SESSION :'SESSION';
KW_JAVA: 'JAVA'; KW_SETS :'SETS';
KW_JSON: 'JSON'; KW_SIZE :'SIZE';
KW_JSON_EXECUTION_PLAN: 'JSON_EXECUTION_PLAN'; KW_SLIDE :'SLIDE';
KW_KEY: 'KEY'; KW_STEP :'STEP';
KW_KEY_MEMBER: 'KEY_MEMBER'; KW_TEMPORARY :'TEMPORARY';
KW_KEY_TYPE: 'KEY_TYPE'; KW_TIMECOL :'TIMECOL';
KW_LABEL: 'LABEL'; KW_TUMBLE :'TUMBLE';
KW_LAST: 'LAST'; KW_UNLOAD :'UNLOAD';
KW_LENGTH: 'LENGTH'; KW_VIEW :'VIEW';
KW_LEVEL: 'LEVEL'; KW_WEEK :'WEEK';
KW_LOAD: 'LOAD'; KW_YEARS :'YEARS';
KW_MAP: 'MAP'; KW_ZONE :'ZONE';
KW_MICROSECOND: 'MICROSECOND';
KW_MILLENNIUM: 'MILLENNIUM';
KW_MILLISECOND: 'MILLISECOND';
KW_MINUTES: 'MINUTES';
KW_MINVALUE: 'MINVALUE';
KW_MODIFY: 'MODIFY';
KW_MODULES: 'MODULES';
KW_MONTHS: 'MONTHS';
KW_NANOSECOND: 'NANOSECOND';
KW_NULLS: 'NULLS';
KW_NUMBER: 'NUMBER';
KW_OPTION: 'OPTION';
KW_OPTIONS: 'OPTIONS';
KW_ORDERING: 'ORDERING';
KW_OUTPUT: 'OUTPUT';
KW_OVERWRITE: 'OVERWRITE';
KW_OVERWRITING: 'OVERWRITING';
KW_PARTITIONED: 'PARTITIONED';
KW_PARTITIONS: 'PARTITIONS';
KW_PASSING: 'PASSING';
KW_PAST: 'PAST';
KW_PATH: 'PATH';
KW_PLACING: 'PLACING';
KW_PLAN: 'PLAN';
KW_PRECEDING: 'PRECEDING';
KW_PRESERVE: 'PRESERVE';
KW_PRIOR: 'PRIOR';
KW_PRIVILEGES: 'PRIVILEGES';
KW_PUBLIC: 'PUBLIC';
KW_PYTHON: 'PYTHON';
KW_PYTHON_FILES: 'PYTHON_FILES';
KW_PYTHON_REQUIREMENTS: 'PYTHON_REQUIREMENTS';
KW_PYTHON_DEPENDENCIES: 'PYTHON_DEPENDENCIES';
KW_PYTHON_JAR: 'PYTHON_JAR';
KW_PYTHON_ARCHIVES: 'PYTHON_ARCHIVES';
KW_PYTHON_PARAMETER: 'PYTHON_PARAMETER';
KW_QUARTER: 'QUARTER';
KW_RAW: 'RAW';
KW_READ: 'READ';
KW_RELATIVE: 'RELATIVE';
KW_REMOVE: 'REMOVE';
KW_RENAME: 'RENAME';
KW_REPLACE: 'REPLACE';
KW_RESPECT: 'RESPECT';
KW_RESTART: 'RESTART';
KW_RESTRICT: 'RESTRICT';
KW_ROLE: 'ROLE';
KW_ROW_COUNT: 'ROW_COUNT';
KW_SCALA: 'SCALA';
KW_SCALAR: 'SCALAR';
KW_SCALE: 'SCALE';
KW_SCHEMA: 'SCHEMA';
KW_SECONDS: 'SECONDS';
KW_SECTION: 'SECTION';
KW_SECURITY: 'SECURITY';
KW_SELF: 'SELF';
KW_SERVER: 'SERVER';
KW_SERVER_NAME: 'SERVER_NAME';
KW_SESSION: 'SESSION';
KW_SETS: 'SETS';
KW_SIMPLE: 'SIMPLE';
KW_SIZE: 'SIZE';
KW_SLIDE: 'SLIDE';
KW_SOURCE: 'SOURCE';
KW_SPACE: 'SPACE';
KW_STATE: 'STATE';
KW_STATEMENT: 'STATEMENT';
KW_STEP: 'STEP';
KW_STRING: 'STRING';
KW_STRUCTURE: 'STRUCTURE';
KW_STYLE: 'STYLE';
KW_TABLES: 'TABLES';
KW_TEMPORARY: 'TEMPORARY';
KW_TIMECOL: 'TIMECOL';
KW_TIMESTAMP_LTZ: 'TIMESTAMP_LTZ';
KW_TIMESTAMPADD: 'TIMESTAMPADD';
KW_TIMESTAMPDIFF: 'TIMESTAMPDIFF';
KW_TRANSFORM: 'TRANSFORM';
KW_TUMBLE: 'TUMBLE';
KW_TYPE: 'TYPE';
KW_UNDER: 'UNDER';
KW_UNLOAD: 'UNLOAD';
KW_USAGE: 'USAGE';
KW_USE: 'USE';
KW_UTF16: 'UTF16';
KW_UTF32: 'UTF32';
KW_UTF8: 'UTF8';
KW_VERSION: 'VERSION';
KW_VIEW: 'VIEW';
KW_VIEWS: 'VIEWS';
KW_VIRTUAL: 'VIRTUAL';
KW_WATERMARK: 'WATERMARK';
KW_WATERMARKS: 'WATERMARKS';
KW_WEEK: 'WEEK';
KW_WEEKS: 'WEEKS';
KW_WORK: 'WORK';
KW_WRAPPER: 'WRAPPER';
KW_YEARS: 'YEARS';
KW_ZONE: 'ZONE';
// Reserved Keywords
// Please keep the keyword in alphabetical order if new keyword is added.
// Please add it to the reservedKeywords rule if new keyword is added.
// Reference link https://calcite.apache.org/docs/reference.html
KW_ABS: 'ABS';
KW_ALL: 'ALL';
KW_ALLOW: 'ALLOW';
KW_ALTER : 'ALTER';
KW_AND: 'AND';
KW_ANY: 'ANY';
KW_ARE: 'ARE';
KW_ARRAY: 'ARRAY';
KW_AS: 'AS';
KW_ASYMMETRIC: 'ASYMMETRIC';
KW_AT: 'AT';
KW_AVG: 'AVG';
KW_BEGIN: 'BEGIN';
KW_BETWEEN: 'BETWEEN';
KW_BIGINT: 'BIGINT';
KW_BINARY: 'BINARY';
KW_BIT: 'BIT';
KW_BLOB: 'BLOB';
KW_BOOLEAN: 'BOOLEAN';
KW_BOTH: 'BOTH';
KW_BY: 'BY';
KW_CALL: 'CALL';
KW_CALLED: 'CALLED';
KW_CASCADED: 'CASCADED';
KW_CASE: 'CASE';
KW_CAST: 'CAST';
KW_CEIL: 'CEIL';
KW_CHAR: 'CHAR';
KW_CHARACTER: 'CHARACTER';
KW_CHECK: 'CHECK';
KW_CLOB: 'CLOB';
KW_CLOSE: 'CLOSE';
KW_COALESCE: 'COALESCE';
KW_CONFIG: 'CONFIG';
KW_COLLATE: 'COLLATE';
KW_COLLECT: 'COLLECT';
KW_COLUMN: 'COLUMN';
KW_COMMIT: 'COMMIT';
KW_CONNECT: 'CONNECT';
KW_CONSTRAINT: 'CONSTRAINT';
KW_CONTAINS: 'CONTAINS';
KW_CONVERT: 'CONVERT';
KW_COUNT: 'COUNT';
KW_CREATE: 'CREATE';
KW_CROSS: 'CROSS';
KW_CUBE: 'CUBE';
KW_CURRENT: 'CURRENT';
KW_CURSOR: 'CURSOR';
KW_CYCLE: 'CYCLE';
KW_DATE: 'DATE';
KW_DATETIME: 'DATETIME';
KW_DAY: 'DAY';
KW_DEC: 'DEC';
KW_DECIMAL: 'DECIMAL';
KW_DECLARE: 'DECLARE';
KW_DEFAULT: 'DEFAULT';
KW_DEFINE: 'DEFINE';
KW_DELETE: 'DELETE';
KW_DESCRIBE: 'DESCRIBE';
KW_DISTINCT: 'DISTINCT';
KW_DOUBLE: 'DOUBLE';
KW_DROP: 'DROP';
KW_EACH: 'EACH';
KW_ELSE: 'ELSE';
KW_END: 'END';
KW_EQUALS: 'EQUALS';
KW_ESCAPE: 'ESCAPE';
KW_EXCEPT: 'EXCEPT';
KW_EXECUTE: 'EXECUTE';
KW_EXISTS: 'EXISTS';
KW_EXPLAIN: 'EXPLAIN';
KW_EXTERNAL: 'EXTERNAL';
KW_EXTRACT: 'EXTRACT';
KW_FALSE: 'FALSE';
KW_FLOAT: 'FLOAT';
KW_FOR: 'FOR';
KW_FROM: 'FROM';
KW_FULL: 'FULL';
KW_FUNCTION: 'FUNCTION';
KW_GLOBAL: 'GLOBAL';
KW_GRANT: 'GRANT';
KW_GROUP: 'GROUP';
KW_GROUPING: 'GROUPING';
KW_GROUPS: 'GROUPS';
KW_HAVING: 'HAVING';
KW_HOUR: 'HOUR';
KW_IMPORT: 'IMPORT';
KW_IN: 'IN';
KW_INCLUDING: 'INCLUDING';
KW_INNER: 'INNER';
KW_INOUT: 'INOUT';
KW_INSERT: 'INSERT';
KW_INT: 'INT';
KW_INTEGER: 'INTEGER';
KW_INTERSECT: 'INTERSECT';
KW_INTERVAL: 'INTERVAL';
KW_INTO: 'INTO';
KW_IS: 'IS';
KW_JOIN: 'JOIN';
KW_LAG: 'LAG';
KW_LANGUAGE: 'LANGUAGE';
KW_LATERAL: 'LATERAL';
KW_LEADING: 'LEADING';
KW_LEFT: 'LEFT';
KW_LIKE: 'LIKE';
KW_LIMIT: 'LIMIT';
KW_LOCAL: 'LOCAL';
KW_MATCH: 'MATCH';
KW_MATCH_RECOGNIZE: 'MATCH_RECOGNIZE';
KW_MEASURES: 'MEASURES';
KW_MERGE: 'MERGE';
KW_METADATA: 'METADATA';
KW_MINUS: 'MINUS';
KW_MINUTE: 'MINUTE';
KW_MODIFIES: 'MODIFIES';
KW_MODULE: 'MODULE';
KW_MONTH: 'MONTH';
KW_MULTISET: 'MULTISET';
KW_NATURAL: 'NATURAL';
KW_NEXT: 'NEXT';
KW_NO: 'NO';
KW_NONE: 'NONE';
KW_NOT: 'NOT';
KW_NULL: 'NULL';
KW_NUMERIC: 'NUMERIC';
KW_OF: 'OF';
KW_OFFSET: 'OFFSET';
KW_ON: 'ON';
KW_ONE: 'ONE';
KW_OR: 'OR';
KW_ORDER: 'ORDER';
KW_OUT: 'OUT';
KW_OUTER: 'OUTER';
KW_OVER: 'OVER';
KW_OVERLAY: 'OVERLAY';
KW_PARTITION: 'PARTITION';
KW_PATTERN: 'PATTERN';
KW_PER: 'PER';
KW_PERCENT: 'PERCENT';
KW_PERIOD: 'PERIOD';
KW_POSITION: 'POSITION';
KW_POWER: 'POWER';
KW_PRIMARY: 'PRIMARY';
KW_RANGE: 'RANGE';
KW_RANK: 'RANK';
KW_RESET: 'RESET';
KW_REVOKE: 'REVOKE';
KW_RIGHT: 'RIGHT';
KW_RLIKE: 'RLIKE';
KW_ROLLBACK: 'ROLLBACK';
KW_ROLLUP: 'ROLLUP';
KW_ROW: 'ROW';
KW_ROWS: 'ROWS';
KW_SECOND: 'SECOND';
KW_SELECT: 'SELECT';
KW_SET: 'SET';
KW_SHOW: 'SHOW';
KW_SIMILAR: 'SIMILAR';
KW_SKIP: 'SKIP';
KW_SMALLINT: 'SMALLINT';
KW_START: 'START';
KW_STATIC: 'STATIC';
KW_SUBSTRING: 'SUBSTRING';
KW_SUM: 'SUM';
KW_SYMMETRIC: 'SYMMETRIC';
KW_SYSTEM: 'SYSTEM';
KW_SYSTEM_TIME: 'SYSTEM_TIME';
KW_SYSTEM_USER: 'SYSTEM_USER';
KW_TABLE: 'TABLE';
KW_TABLESAMPLE: 'TABLESAMPLE';
KW_THEN: 'THEN';
KW_TIME: 'TIME';
KW_TIMESTAMP: 'TIMESTAMP';
KW_TINYINT: 'TINYINT';
KW_TO: 'TO';
KW_TRAILING: 'TRAILING';
KW_TRUE: 'TRUE';
KW_TRUNCATE: 'TRUNCATE';
KW_UNION: 'UNION';
KW_UNIQUE: 'UNIQUE';
KW_UNKNOWN: 'UNKNOWN';
KW_UNNEST: 'UNNEST';
KW_UPPER: 'UPPER';
KW_UPSERT: 'UPSERT';
KW_USER: 'USER';
KW_USING: 'USING';
KW_VALUE: 'VALUE';
KW_VALUES: 'VALUES';
KW_VARBINARY: 'VARBINARY';
KW_VARCHAR: 'VARCHAR';
KW_WHEN: 'WHEN';
KW_WHERE: 'WHERE';
KW_WINDOW: 'WINDOW';
KW_WITH: 'WITH';
KW_WITHIN: 'WITHIN';
KW_WITHOUT: 'WITHOUT';
KW_YEAR: 'YEAR';
// Operators. Comparation // Operators. Comparation

View File

@ -414,7 +414,7 @@ withItemName
; ;
selectStatement selectStatement
: selectClause fromClause whereClause? groupByClause? havingClause? windowClause? : selectClause fromClause? whereClause? groupByClause? havingClause? windowClause?
| selectClause fromClause matchRecognizeClause | selectClause fromClause matchRecognizeClause
; ;
@ -721,6 +721,7 @@ primaryExpression
| identifier #columnReference | identifier #columnReference
| dereferenceDefinition #dereference | dereferenceDefinition #dereference
| LR_BRACKET expression RR_BRACKET #parenthesizedExpression | LR_BRACKET expression RR_BRACKET #parenthesizedExpression
| KW_CURRENT_TIMESTAMP #dateFunctionExpression
// | EXTRACT LR_BRACKET field=identifier KW_FROM source=valueExpression RR_BRACKET #extract // | EXTRACT LR_BRACKET field=identifier KW_FROM source=valueExpression RR_BRACKET #extract
// | (SUBSTR | SUBSTRING) LR_BRACKET str=valueExpression (KW_FROM | COMMA) pos=valueExpression // | (SUBSTR | SUBSTRING) LR_BRACKET str=valueExpression (KW_FROM | COMMA) pos=valueExpression
// ((KW_FOR | COMMA) len=valueExpression)? RR_BRACKET #substring // ((KW_FOR | COMMA) len=valueExpression)? RR_BRACKET #substring
@ -736,7 +737,6 @@ functionNameCreate
functionName functionName
: reservedKeywordsUsedAsFuncName : reservedKeywordsUsedAsFuncName
| nonReservedKeywords
| uid | uid
; ;
@ -786,10 +786,6 @@ intervalValue
| STRING_LITERAL | STRING_LITERAL
; ;
columnAlias
: KW_AS? identifier identifierList?
;
tableAlias tableAlias
: KW_AS? identifier identifierList? : KW_AS? identifier identifierList?
; ;
@ -1013,11 +1009,14 @@ timeIntervalUnit
; ;
reservedKeywordsUsedAsFuncParam reservedKeywordsUsedAsFuncParam
: KW_LEADING : KW_ARRAY
| KW_TRAILING
| KW_BOTH
| KW_ALL | KW_ALL
| KW_BOTH
| KW_CURRENT_TIMESTAMP
| KW_DISTINCT | KW_DISTINCT
| KW_LEADING
| KW_TRAILING
| KW_VALUE
| ASTERISK_SIGN | ASTERISK_SIGN
; ;
@ -1025,405 +1024,140 @@ reservedKeywordsUsedAsFuncName
: KW_ABS : KW_ABS
| KW_ARRAY | KW_ARRAY
| KW_AVG | KW_AVG
| KW_CARDINALITY
| KW_CAST | KW_CAST
| KW_CEIL | KW_CEIL
| KW_CEILING
| KW_COALESCE | KW_COALESCE
| KW_COLLECT | KW_COLLECT
| KW_COUNT | KW_COUNT
| KW_CUME_DIST
| KW_CURRENT_DATE
| KW_CURRENT_TIME
| KW_CURRENT_TIMESTAMP
| KW_DATE | KW_DATE
| KW_DAYOFWEEK
| KW_DAYOFYEAR
| KW_DENSE_RANK
| KW_ELEMENT
| KW_EXP
| KW_EXTRACT
| KW_FIRST_VALUE
| KW_FLOOR
| KW_GROUPING | KW_GROUPING
| KW_HOUR | KW_HOUR
| KW_IF | KW_IF
| KW_LAG | KW_LAG
| KW_LAST_VALUE
| KW_LEAD
| KW_LEFT | KW_LEFT
| KW_LN
| KW_LOCALTIME
| KW_LOCALTIMESTAMP
| KW_LOWER
| KW_MAP | KW_MAP
| KW_MAX
| KW_MIN
| KW_MINUTE | KW_MINUTE
| KW_MOD
| KW_MONTH | KW_MONTH
| KW_NULLIF
| KW_NTILE
| KW_OVERLAY | KW_OVERLAY
| KW_PERCENT_RANK
| KW_POSITION | KW_POSITION
| KW_POWER | KW_POWER
| KW_QUARTER | KW_QUARTER
| KW_ROW | KW_ROW
| KW_ROWS | KW_ROWS
| KW_ROW_NUMBER
| KW_RANK | KW_RANK
| KW_RIGHT | KW_RIGHT
| KW_SECOND | KW_SECOND
| KW_STDDEV_POP
| KW_STDDEV_SAMP
| KW_SUBSTRING | KW_SUBSTRING
| KW_SUM | KW_SUM
| KW_TIME | KW_TIME
| KW_TIMESTAMP | KW_TIMESTAMP
| KW_TIMESTAMP_DIFF
| KW_TRIM
| KW_TRUNCATE | KW_TRUNCATE
| KW_TRY_CAST
| KW_UPPER | KW_UPPER
| KW_VAR_POP
| KW_VAR_SAMP
| KW_WEEK | KW_WEEK
| KW_YEAR | KW_YEAR
; ;
reservedKeywords
: KW_ABS
| KW_ALL
| KW_ALLOW
| KW_ALTER
| KW_AND
| KW_ANY
| KW_ARE
| KW_ARRAY
| KW_AS
| KW_ASYMMETRIC
| KW_AT
| KW_AVG
| KW_BEGIN
| KW_BETWEEN
| KW_BIGINT
| KW_BINARY
| KW_BIT
| KW_BLOB
| KW_BOOLEAN
| KW_BOTH
| KW_BY
| KW_CALL
| KW_CALLED
| KW_CASCADED
| KW_CASE
| KW_CAST
| KW_CEIL
| KW_CHAR
| KW_CHARACTER
| KW_CHECK
| KW_CLOB
| KW_CLOSE
| KW_COALESCE
| KW_COLLATE
| KW_COLLECT
| KW_COLUMN
| KW_COMMIT
| KW_CONNECT
| KW_CONSTRAINT
| KW_CONTAINS
| KW_CONVERT
| KW_COUNT
| KW_CREATE
| KW_CROSS
| KW_CUBE
| KW_CURRENT
| KW_CURSOR
| KW_CYCLE
| KW_DATE
| KW_DATETIME
| KW_DAY
| KW_DEC
| KW_DECIMAL
| KW_DECLARE
| KW_DEFAULT
| KW_DEFINE
| KW_DELETE
| KW_DESCRIBE
| KW_DISTINCT
| KW_DOUBLE
| KW_DROP
| KW_EACH
| KW_ELSE
| KW_END
| KW_EQUALS
| KW_EXCEPT
| KW_EXECUTE
| KW_EXISTS
| KW_EXPLAIN
| KW_EXTERNAL
| KW_EXTRACT
| KW_FALSE
| KW_FLOAT
| KW_FOR
| KW_FROM
| KW_FULL
| KW_FUNCTION
| KW_GLOBAL
| KW_GRANT
| KW_GROUP
| KW_GROUPING
| KW_GROUPS
| KW_HAVING
| KW_HOUR
| KW_IMPORT
| KW_IN
| KW_INCLUDING
| KW_INNER
| KW_INOUT
| KW_INSERT
| KW_INT
| KW_INTEGER
| KW_INTERSECT
| KW_INTERVAL
| KW_INTO
| KW_IS
| KW_JOIN
| KW_LAG
| KW_LANGUAGE
| KW_LATERAL
| KW_LEADING
| KW_LEFT
| KW_LIKE
| KW_LIMIT
| KW_LOCAL
| KW_MATCH
| KW_MATCH_RECOGNIZE
| KW_MEASURES
| KW_MERGE
| KW_METADATA
| KW_MINUS
| KW_MINUTE
| KW_MODIFIES
| KW_MODULE
| KW_MONTH
| KW_MULTISET
| KW_NATURAL
| KW_NEXT
| KW_NO
| KW_NONE
| KW_NOT
| KW_NULL
| KW_NUMERIC
| KW_OF
| KW_OFFSET
| KW_ON
| KW_ONE
| KW_OR
| KW_ORDER
| KW_OUT
| KW_OUTER
| KW_OVER
| KW_OVERLAY
| KW_PARTITION
| KW_PATTERN
| KW_PER
| KW_PERCENT
| KW_PERIOD
| KW_POSITION
| KW_PRIMARY
| KW_RANGE
| KW_RANK
| KW_RESET
| KW_REVOKE
| KW_RIGHT
| KW_RLIKE
| KW_ROLLBACK
| KW_ROLLUP
| KW_ROW
| KW_ROWS
| KW_SECOND
| KW_SELECT
| KW_SET
| KW_SHOW
| KW_SIMILAR
| KW_SKIP
| KW_SMALLINT
| KW_START
| KW_STATIC
| KW_SUBSTRING
| KW_SUM
| KW_SYSTEM_TIME
| KW_SYSTEM
| KW_SYSTEM_TIME
| KW_SYSTEM_USER
| KW_TABLE
| KW_TABLESAMPLE
| KW_THEN
| KW_TIME
| KW_TIMESTAMP
| KW_TINYINT
| KW_TO
| KW_TRUE
| KW_TRUNCATE
| KW_UNION
| KW_UNIQUE
| KW_UNKNOWN
| KW_UNNEST
| KW_UPPER
| KW_UPSERT
| KW_USER
| KW_USING
| KW_VALUE
| KW_VALUES
| KW_VARBINARY
| KW_VARCHAR
| KW_WHEN
| KW_WHERE
| KW_WINDOW
| KW_WITH
| KW_WITHIN
| KW_WITHOUT
| KW_YEAR
;
nonReservedKeywords nonReservedKeywords
:KW_ADD : KW_ADD
|KW_ADMIN | KW_AFTER
|KW_AFTER | KW_ASC
|KW_ANALYZE | KW_CASCADE
|KW_ASC | KW_CATALOG
|KW_BEFORE | KW_CENTURY
|KW_BYTES | KW_CONFIG
|KW_CASCADE | KW_CONSTRAINTS
|KW_CATALOG | KW_CUMULATE
|KW_CATALOGS | KW_DATA
|KW_CENTURY | KW_DATABASE
|KW_CHAIN | KW_DAYS
|KW_CHANGELOG_MODE | KW_DECADE
|KW_CHARACTERS | KW_DESC
|KW_COMMENT | KW_DESCRIPTOR
|KW_COMPACT | KW_DIV
|KW_COLUMNS | KW_ENGINE
|KW_CONSTRAINTS | KW_EPOCH
|KW_CONSTRUCTOR | KW_EXCLUDING
|KW_CUMULATE | KW_FILE
|KW_DATA | KW_FIRST
|KW_DATABASE | KW_GENERATED
|KW_DATABASES | KW_HOP
|KW_DAYS | KW_HOURS
|KW_DECADE | KW_IGNORE
|KW_DEFINED | KW_INCLUDING
|KW_DESC | KW_JAR
|KW_DESCRIPTOR | KW_JARS
|KW_DIV | KW_JAVA
|KW_ENCODING | KW_KEY
|KW_ENFORCED | KW_LAST
|KW_ENGINE | KW_LOAD
|KW_ERROR | KW_MAP
|KW_ESTIMATED_COST | KW_MICROSECOND
|KW_EXCEPTION | KW_MILLENNIUM
|KW_EXCLUDE | KW_MILLISECOND
|KW_EXCLUDING | KW_MINUTES
|KW_EXTENDED | KW_MONTHS
|KW_FILE | KW_NANOSECOND
|KW_FINAL | KW_NULLS
|KW_FIRST | KW_OPTIONS
|KW_FOLLOWING | KW_PAST
|KW_FORMAT | KW_PLAN
|KW_FORTRAN | KW_PRECEDING
|KW_FOUND | KW_PYTHON
|KW_FRAC_SECOND | KW_PYTHON_ARCHIVES
|KW_FUNCTIONS | KW_PYTHON_DEPENDENCIES
|KW_GENERAL | KW_PYTHON_FILES
|KW_GENERATED | KW_PYTHON_JAR
|KW_GO | KW_PYTHON_PARAMETER
|KW_GOTO | KW_PYTHON_REQUIREMENTS
|KW_GRANTED | KW_QUARTER
|KW_HOP | KW_REMOVE
|KW_HOURS | KW_RESTRICT
|KW_IF | KW_SECONDS
|KW_IGNORE | KW_SESSION
|KW_INCREMENT | KW_SETS
|KW_INPUT | KW_SIZE
|KW_INVOKER | KW_SLIDE
|KW_JAR | KW_STEP
|KW_JARS | KW_TEMPORARY
|KW_JAVA | KW_TIMECOL
|KW_JSON | KW_TUMBLE
|KW_JSON_EXECUTION_PLAN | KW_UNLOAD
|KW_KEY | KW_VIEW
|KW_KEY_MEMBER | KW_WEEK
|KW_KEY_TYPE | KW_YEARS
|KW_LABEL | KW_ZONE
|KW_LAST
|KW_LENGTH
|KW_LEVEL
|KW_LOAD
|KW_MAP
|KW_MICROSECOND
|KW_MILLENNIUM
|KW_MILLISECOND
|KW_MINUTES
|KW_MINVALUE
|KW_MODIFY
|KW_MODULES
|KW_MONTHS
|KW_NANOSECOND
|KW_NULLS
|KW_NUMBER
|KW_OPTION
|KW_OPTIONS
|KW_ORDERING
|KW_OUTPUT
|KW_OVERWRITE
|KW_OVERWRITING
|KW_PARTITIONED
|KW_PARTITIONS
|KW_PASSING
|KW_PAST
|KW_PATH
|KW_PLACING
|KW_PLAN
|KW_PRECEDING
|KW_PRESERVE
|KW_PRIOR
|KW_PRIVILEGES
|KW_PUBLIC
|KW_PYTHON
|KW_PYTHON_FILES
|KW_PYTHON_REQUIREMENTS
|KW_PYTHON_DEPENDENCIES
|KW_PYTHON_JAR
|KW_PYTHON_ARCHIVES
|KW_PYTHON_PARAMETER
|KW_QUARTER
|KW_RAW
|KW_READ
|KW_RELATIVE
|KW_REMOVE
|KW_RENAME
|KW_REPLACE
|KW_RESPECT
|KW_RESTART
|KW_RESTRICT
|KW_ROLE
|KW_ROW_COUNT
|KW_SCALA
|KW_SCALAR
|KW_SCALE
|KW_SCHEMA
|KW_SECONDS
|KW_SECTION
|KW_SECURITY
|KW_SELF
|KW_SERVER
|KW_SERVER_NAME
|KW_SESSION
|KW_SETS
|KW_SIMPLE
|KW_SIZE
|KW_SLIDE
|KW_SOURCE
|KW_SPACE
|KW_STATE
|KW_STATEMENT
|KW_STEP
|KW_STRING
|KW_STRUCTURE
|KW_STYLE
|KW_TABLES
|KW_TEMPORARY
|KW_TIMECOL
|KW_TIMESTAMP_LTZ
|KW_TIMESTAMPADD
|KW_TIMESTAMPDIFF
|KW_TRANSFORM
|KW_TUMBLE
|KW_TYPE
|KW_UNDER
|KW_UNLOAD
|KW_USAGE
|KW_USE
|KW_UTF16
|KW_UTF32
|KW_UTF8
|KW_VERSION
|KW_VIEW
|KW_VIEWS
|KW_VIRTUAL
|KW_WATERMARK
|KW_WATERMARKS
|KW_WEEK
|KW_WORK
|KW_WRAPPER
|KW_YEARS
|KW_ZONE
; ;

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -25,6 +25,7 @@ import { SubscriptContext } from "./FlinkSqlParser";
import { ColumnReferenceContext } from "./FlinkSqlParser"; import { ColumnReferenceContext } from "./FlinkSqlParser";
import { DereferenceContext } from "./FlinkSqlParser"; import { DereferenceContext } from "./FlinkSqlParser";
import { ParenthesizedExpressionContext } from "./FlinkSqlParser"; import { ParenthesizedExpressionContext } from "./FlinkSqlParser";
import { DateFunctionExpressionContext } from "./FlinkSqlParser";
import { ErrorIdentContext } from "./FlinkSqlParser"; import { ErrorIdentContext } from "./FlinkSqlParser";
import { RealIdentContext } from "./FlinkSqlParser"; import { RealIdentContext } from "./FlinkSqlParser";
import { IdentityTransformContext } from "./FlinkSqlParser"; import { IdentityTransformContext } from "./FlinkSqlParser";
@ -181,7 +182,6 @@ import { MultiUnitsIntervalContext } from "./FlinkSqlParser";
import { ErrorCapturingUnitToUnitIntervalContext } from "./FlinkSqlParser"; import { ErrorCapturingUnitToUnitIntervalContext } from "./FlinkSqlParser";
import { UnitToUnitIntervalContext } from "./FlinkSqlParser"; import { UnitToUnitIntervalContext } from "./FlinkSqlParser";
import { IntervalValueContext } from "./FlinkSqlParser"; import { IntervalValueContext } from "./FlinkSqlParser";
import { ColumnAliasContext } from "./FlinkSqlParser";
import { TableAliasContext } from "./FlinkSqlParser"; import { TableAliasContext } from "./FlinkSqlParser";
import { ErrorCapturingIdentifierContext } from "./FlinkSqlParser"; import { ErrorCapturingIdentifierContext } from "./FlinkSqlParser";
import { ErrorCapturingIdentifierExtraContext } from "./FlinkSqlParser"; import { ErrorCapturingIdentifierExtraContext } from "./FlinkSqlParser";
@ -222,7 +222,6 @@ import { TimePointUnitContext } from "./FlinkSqlParser";
import { TimeIntervalUnitContext } from "./FlinkSqlParser"; import { TimeIntervalUnitContext } from "./FlinkSqlParser";
import { ReservedKeywordsUsedAsFuncParamContext } from "./FlinkSqlParser"; import { ReservedKeywordsUsedAsFuncParamContext } from "./FlinkSqlParser";
import { ReservedKeywordsUsedAsFuncNameContext } from "./FlinkSqlParser"; import { ReservedKeywordsUsedAsFuncNameContext } from "./FlinkSqlParser";
import { ReservedKeywordsContext } from "./FlinkSqlParser";
import { NonReservedKeywordsContext } from "./FlinkSqlParser"; import { NonReservedKeywordsContext } from "./FlinkSqlParser";
@ -517,6 +516,19 @@ export interface FlinkSqlParserListener extends ParseTreeListener {
*/ */
exitParenthesizedExpression?: (ctx: ParenthesizedExpressionContext) => void; exitParenthesizedExpression?: (ctx: ParenthesizedExpressionContext) => void;
/**
* Enter a parse tree produced by the `dateFunctionExpression`
* labeled alternative in `FlinkSqlParser.primaryExpression`.
* @param ctx the parse tree
*/
enterDateFunctionExpression?: (ctx: DateFunctionExpressionContext) => void;
/**
* Exit a parse tree produced by the `dateFunctionExpression`
* labeled alternative in `FlinkSqlParser.primaryExpression`.
* @param ctx the parse tree
*/
exitDateFunctionExpression?: (ctx: DateFunctionExpressionContext) => void;
/** /**
* Enter a parse tree produced by the `errorIdent` * Enter a parse tree produced by the `errorIdent`
* labeled alternative in `FlinkSqlParser.errorCapturingIdentifierExtra`. * labeled alternative in `FlinkSqlParser.errorCapturingIdentifierExtra`.
@ -2251,17 +2263,6 @@ export interface FlinkSqlParserListener extends ParseTreeListener {
*/ */
exitIntervalValue?: (ctx: IntervalValueContext) => void; exitIntervalValue?: (ctx: IntervalValueContext) => void;
/**
* Enter a parse tree produced by `FlinkSqlParser.columnAlias`.
* @param ctx the parse tree
*/
enterColumnAlias?: (ctx: ColumnAliasContext) => void;
/**
* Exit a parse tree produced by `FlinkSqlParser.columnAlias`.
* @param ctx the parse tree
*/
exitColumnAlias?: (ctx: ColumnAliasContext) => void;
/** /**
* Enter a parse tree produced by `FlinkSqlParser.tableAlias`. * Enter a parse tree produced by `FlinkSqlParser.tableAlias`.
* @param ctx the parse tree * @param ctx the parse tree
@ -2702,17 +2703,6 @@ export interface FlinkSqlParserListener extends ParseTreeListener {
*/ */
exitReservedKeywordsUsedAsFuncName?: (ctx: ReservedKeywordsUsedAsFuncNameContext) => void; exitReservedKeywordsUsedAsFuncName?: (ctx: ReservedKeywordsUsedAsFuncNameContext) => void;
/**
* Enter a parse tree produced by `FlinkSqlParser.reservedKeywords`.
* @param ctx the parse tree
*/
enterReservedKeywords?: (ctx: ReservedKeywordsContext) => void;
/**
* Exit a parse tree produced by `FlinkSqlParser.reservedKeywords`.
* @param ctx the parse tree
*/
exitReservedKeywords?: (ctx: ReservedKeywordsContext) => void;
/** /**
* Enter a parse tree produced by `FlinkSqlParser.nonReservedKeywords`. * Enter a parse tree produced by `FlinkSqlParser.nonReservedKeywords`.
* @param ctx the parse tree * @param ctx the parse tree

View File

@ -25,6 +25,7 @@ import { SubscriptContext } from "./FlinkSqlParser";
import { ColumnReferenceContext } from "./FlinkSqlParser"; import { ColumnReferenceContext } from "./FlinkSqlParser";
import { DereferenceContext } from "./FlinkSqlParser"; import { DereferenceContext } from "./FlinkSqlParser";
import { ParenthesizedExpressionContext } from "./FlinkSqlParser"; import { ParenthesizedExpressionContext } from "./FlinkSqlParser";
import { DateFunctionExpressionContext } from "./FlinkSqlParser";
import { ErrorIdentContext } from "./FlinkSqlParser"; import { ErrorIdentContext } from "./FlinkSqlParser";
import { RealIdentContext } from "./FlinkSqlParser"; import { RealIdentContext } from "./FlinkSqlParser";
import { IdentityTransformContext } from "./FlinkSqlParser"; import { IdentityTransformContext } from "./FlinkSqlParser";
@ -181,7 +182,6 @@ import { MultiUnitsIntervalContext } from "./FlinkSqlParser";
import { ErrorCapturingUnitToUnitIntervalContext } from "./FlinkSqlParser"; import { ErrorCapturingUnitToUnitIntervalContext } from "./FlinkSqlParser";
import { UnitToUnitIntervalContext } from "./FlinkSqlParser"; import { UnitToUnitIntervalContext } from "./FlinkSqlParser";
import { IntervalValueContext } from "./FlinkSqlParser"; import { IntervalValueContext } from "./FlinkSqlParser";
import { ColumnAliasContext } from "./FlinkSqlParser";
import { TableAliasContext } from "./FlinkSqlParser"; import { TableAliasContext } from "./FlinkSqlParser";
import { ErrorCapturingIdentifierContext } from "./FlinkSqlParser"; import { ErrorCapturingIdentifierContext } from "./FlinkSqlParser";
import { ErrorCapturingIdentifierExtraContext } from "./FlinkSqlParser"; import { ErrorCapturingIdentifierExtraContext } from "./FlinkSqlParser";
@ -222,7 +222,6 @@ import { TimePointUnitContext } from "./FlinkSqlParser";
import { TimeIntervalUnitContext } from "./FlinkSqlParser"; import { TimeIntervalUnitContext } from "./FlinkSqlParser";
import { ReservedKeywordsUsedAsFuncParamContext } from "./FlinkSqlParser"; import { ReservedKeywordsUsedAsFuncParamContext } from "./FlinkSqlParser";
import { ReservedKeywordsUsedAsFuncNameContext } from "./FlinkSqlParser"; import { ReservedKeywordsUsedAsFuncNameContext } from "./FlinkSqlParser";
import { ReservedKeywordsContext } from "./FlinkSqlParser";
import { NonReservedKeywordsContext } from "./FlinkSqlParser"; import { NonReservedKeywordsContext } from "./FlinkSqlParser";
@ -410,6 +409,14 @@ export interface FlinkSqlParserVisitor<Result> extends ParseTreeVisitor<Result>
*/ */
visitParenthesizedExpression?: (ctx: ParenthesizedExpressionContext) => Result; visitParenthesizedExpression?: (ctx: ParenthesizedExpressionContext) => Result;
/**
* Visit a parse tree produced by the `dateFunctionExpression`
* labeled alternative in `FlinkSqlParser.primaryExpression`.
* @param ctx the parse tree
* @return the visitor result
*/
visitDateFunctionExpression?: (ctx: DateFunctionExpressionContext) => Result;
/** /**
* Visit a parse tree produced by the `errorIdent` * Visit a parse tree produced by the `errorIdent`
* labeled alternative in `FlinkSqlParser.errorCapturingIdentifierExtra`. * labeled alternative in `FlinkSqlParser.errorCapturingIdentifierExtra`.
@ -1511,13 +1518,6 @@ export interface FlinkSqlParserVisitor<Result> extends ParseTreeVisitor<Result>
*/ */
visitIntervalValue?: (ctx: IntervalValueContext) => Result; visitIntervalValue?: (ctx: IntervalValueContext) => Result;
/**
* Visit a parse tree produced by `FlinkSqlParser.columnAlias`.
* @param ctx the parse tree
* @return the visitor result
*/
visitColumnAlias?: (ctx: ColumnAliasContext) => Result;
/** /**
* Visit a parse tree produced by `FlinkSqlParser.tableAlias`. * Visit a parse tree produced by `FlinkSqlParser.tableAlias`.
* @param ctx the parse tree * @param ctx the parse tree
@ -1798,13 +1798,6 @@ export interface FlinkSqlParserVisitor<Result> extends ParseTreeVisitor<Result>
*/ */
visitReservedKeywordsUsedAsFuncName?: (ctx: ReservedKeywordsUsedAsFuncNameContext) => Result; visitReservedKeywordsUsedAsFuncName?: (ctx: ReservedKeywordsUsedAsFuncNameContext) => Result;
/**
* Visit a parse tree produced by `FlinkSqlParser.reservedKeywords`.
* @param ctx the parse tree
* @return the visitor result
*/
visitReservedKeywords?: (ctx: ReservedKeywordsContext) => Result;
/** /**
* Visit a parse tree produced by `FlinkSqlParser.nonReservedKeywords`. * Visit a parse tree produced by `FlinkSqlParser.nonReservedKeywords`.
* @param ctx the parse tree * @param ctx the parse tree

View File

@ -53,8 +53,8 @@ describe('Flink SQL Token Suggestion', () => {
'CURRENT', 'CURRENT',
'CATALOGS', 'CATALOGS',
'DATABASES', 'DATABASES',
'JARS',
'VIEWS', 'VIEWS',
'JARS',
]); ]);
}); });
}); });

View File

@ -109,7 +109,7 @@ CREATE TABLE catalog1.db1.table1 (
attr17 MAP<INT, BIGINT>, attr17 MAP<INT, BIGINT>,
name1 VARCHAR(64), name1 VARCHAR(64),
message ROW<data ROW<UPO_TIMESTAMP VARCHAR(20)>>, message ROW<data ROW<UPO_TIMESTAMP VARCHAR(20)>>,
raw RAW('class', 'snapshot') `raw` RAW('class', 'snapshot')
) WITH ('connector' = 'kafka'); ) WITH ('connector' = 'kafka');
CREATE TABLE IF NOT EXISTS tbl1 ( CREATE TABLE IF NOT EXISTS tbl1 (