feat: update the builtin funcs of flinksql (#102)

* style: put evrry branch on a single line

* feat: support ASYMMETRIC and SYMMETRIC for between and

* feat: support SIMILAR TO predicate

* feat: support nested boolean expression

* feat: support escape to like and similar in flink sql

* test: add where clause test cases

* feat: add reservedKeywordsUsedAsFunctionName rule

* feat: add timepointLiteral rule and improve function call grammar
This commit is contained in:
Hayden 2023-05-24 15:03:08 +08:00 committed by GitHub
parent c409b80ee1
commit 0924acf730
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 5984 additions and 5237 deletions

View File

@ -46,6 +46,7 @@ KW_DIV: 'DIV';
KW_ENCODING: 'ENCODING';
KW_ENFORCED: 'ENFORCED';
KW_ENGINE: 'ENGINE';
KW_EPOCH: 'EPOCH';
KW_ERROR: 'ERROR';
KW_ESTIMATED_COST: 'ESTIMATED_COST';
KW_EXCEPTION: 'EXCEPTION';
@ -181,6 +182,7 @@ KW_VIRTUAL: 'VIRTUAL';
KW_WATERMARK: 'WATERMARK';
KW_WATERMARKS: 'WATERMARKS';
KW_WEEK: 'WEEK';
KW_WEEKS: 'WEEKS';
KW_WORK: 'WORK';
KW_WRAPPER: 'WRAPPER';
KW_YEARS: 'YEARS';
@ -194,13 +196,14 @@ KW_ZONE: 'ZONE';
KW_ABS: 'ABS';
KW_ALL: 'ALL';
ALLOW: 'ALLOW';
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';
@ -256,6 +259,7 @@ KW_EACH: 'EACH';
KW_ELSE: 'ELSE';
KW_END: 'END';
KW_EQUALS: 'EQUALS';
KW_ESCAPE: 'ESCAPE';
KW_EXCEPT: 'EXCEPT';
KW_EXECUTE: 'EXECUTE';
KW_EXISTS: 'EXISTS';
@ -330,6 +334,7 @@ KW_PER: 'PER';
KW_PERCENT: 'PERCENT';
KW_PERIOD: 'PERIOD';
KW_POSITION: 'POSITION';
KW_POWER: 'POWER';
KW_PRIMARY: 'PRIMARY';
KW_RANGE: 'RANGE';
KW_RANK: 'RANK';
@ -345,12 +350,14 @@ 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';
@ -361,6 +368,7 @@ KW_TIME: 'TIME';
KW_TIMESTAMP: 'TIMESTAMP';
KW_TINYINT: 'TINYINT';
KW_TO: 'TO';
KW_TRAILING: 'TRAILING';
KW_TRUE: 'TRUE';
KW_TRUNCATE: 'TRUNCATE';
KW_UNION: 'UNION';

View File

@ -445,7 +445,7 @@ tableReference
tablePrimary
: KW_TABLE? tablePath systemTimePeriod? (KW_AS? correlationName)?
| KW_LATERAL KW_TABLE LR_BRACKET functionName LR_BRACKET expression (COMMA expression)* RR_BRACKET RR_BRACKET
| KW_LATERAL KW_TABLE LR_BRACKET functionName LR_BRACKET functionParam (COMMA functionParam)* RR_BRACKET RR_BRACKET
| KW_LATERAL? LR_BRACKET queryStatement RR_BRACKET
| KW_UNNEST LR_BRACKET expression RR_BRACKET
;
@ -664,24 +664,27 @@ booleanExpression
| valueExpression predicate? #predicated
| left=booleanExpression operator=KW_AND right=booleanExpression #logicalBinary
| left=booleanExpression operator=KW_OR right=booleanExpression #logicalBinary
| booleanExpression KW_IS KW_NOT? kind=(KW_TRUE | KW_FALSE | KW_UNKNOWN | KW_NULL) #logicalNested
;
predicate
: KW_NOT? kind=KW_BETWEEN lower=valueExpression KW_AND upper=valueExpression
: KW_NOT?
kind=KW_BETWEEN (KW_ASYMMETRIC | KW_SYMMETRIC)?
lower=valueExpression KW_AND
upper=valueExpression
| KW_NOT? kind=KW_IN '(' expression (',' expression)* ')'
| KW_NOT? kind=KW_IN '(' queryStatement ')'
| kind=KW_EXISTS '(' queryStatement ')'
| KW_NOT? kind=KW_RLIKE pattern=valueExpression
| KW_NOT? kind=KW_LIKE quantifier=(KW_ANY | KW_ALL) ('('')' | '(' expression (',' expression)* ')')
| KW_NOT? kind=KW_LIKE pattern=valueExpression
| KW_IS KW_NOT? kind=KW_NULL
| KW_IS KW_NOT? kind=(KW_TRUE | KW_FALSE)
| likePredicate
| KW_IS KW_NOT? kind=(KW_TRUE | KW_FALSE | KW_UNKNOWN | KW_NULL)
| KW_IS KW_NOT? kind=KW_DISTINCT KW_FROM right=valueExpression
| KW_NOT? kind=KW_SIMILAR KW_TO right=valueExpression (KW_ESCAPE stringLiteral)?
;
likePredicate
: KW_NOT? kind=KW_LIKE quantifier=(KW_ANY | KW_ALL) ('('')' | '(' expression (',' expression)* ')')
| KW_NOT? kind=KW_LIKE pattern=valueExpression
| KW_NOT? kind=KW_LIKE pattern=valueExpression (KW_ESCAPE stringLiteral)?
;
valueExpression
@ -708,7 +711,7 @@ primaryExpression
| uid '.' '*' #star
// | '(' namedExpression (',' namedExpression)+ ')' #rowConstructor
| '(' queryStatement ')' #subqueryExpression
| functionName '(' (setQuantifier? expression (',' expression)*)? ')' #functionCall
| functionName '(' (setQuantifier? functionParam (',' functionParam)*)? ')' #functionCall
// | identifier '->' expression #lambda
// | '(' identifier (',' identifier)+ ')' '->' expression #lambda
| value=primaryExpression LS_BRACKET index=valueExpression RS_BRACKET #subscript
@ -725,16 +728,22 @@ primaryExpression
;
functionName
: reservedKeywords
: reservedKeywordsUsedAsFuncName
| nonReservedKeywords
| uid
;
functionParam
: reservedKeywordsUsedAsFuncParam
| timeIntervalUnit
| timePointUnit
| expression
;
dereferenceDefinition
: uid
;
// base common
correlationName
@ -754,7 +763,7 @@ errorCapturingMultiUnitsInterval
;
multiUnitsInterval
: (intervalValue intervalTimeUnit)+
: (intervalValue timeIntervalUnit)+
;
errorCapturingUnitToUnitInterval
@ -762,7 +771,7 @@ errorCapturingUnitToUnitInterval
;
unitToUnitInterval
: value=intervalValue from=intervalTimeUnit KW_TO to=intervalTimeUnit
: value=intervalValue from=timeIntervalUnit KW_TO to=timeIntervalUnit
;
intervalValue
@ -770,11 +779,6 @@ intervalValue
| STRING_LITERAL
;
intervalTimeUnit // TODO: 需要整理 interval 时间粒度比如 SECOND、DAY
: identifier
| reservedKeywords
;
columnAlias
: KW_AS? identifier identifierList?
;
@ -853,36 +857,64 @@ tablePropertyValue
;
logicalOperator
: KW_AND | '&' '&' | KW_OR | '|' '|'
: KW_AND
| '&' '&'
| KW_OR
| '|' '|'
;
comparisonOperator
: '=' | '>' | '<' | '<' '=' | '>' '='
| '<' '>' | '!' '=' | '<' '=' '>'
: '='
| '>'
| '<'
| '<' '='
| '>' '='
| '<' '>'
| '!' '='
| '<' '=' '>'
;
bitOperator
: '<' '<' | '>' '>' | '&' | '^' | '|'
: '<' '<'
| '>' '>'
| '&'
| '^'
| '|'
;
mathOperator
: '*' | SLASH_SIGN | PENCENT_SIGN | KW_DIV | '+' | '-' | DOUBLE_HYPNEN_SIGN
: '*'
| SLASH_SIGN
| PENCENT_SIGN
| KW_DIV
| '+'
| '-'
| DOUBLE_HYPNEN_SIGN
;
unaryOperator
: '!' | '~' | ADD_SIGN | '-' | KW_NOT
: '!'
| '~'
| ADD_SIGN
| '-'
| KW_NOT
;
constant
: stringLiteral // 引号包含的字符串
| decimalLiteral // 整数
| timeIntervalExpression // KW_INTERVAL keywords
| HYPNEN_SIGN decimalLiteral // 负整数
: timeIntervalExpression
| timePointLiteral
| stringLiteral // 引号包含的字符串
| HYPNEN_SIGN? decimalLiteral // 正/负整数
| booleanLiteral // 布尔值
| REAL_LITERAL // 小数
| BIT_STRING
| KW_NOT? KW_NULL // 空 | 非空
;
timePointLiteral
: timePointUnit stringLiteral
;
stringLiteral
: STRING_LITERAL
;
@ -899,16 +931,99 @@ setQuantifier
| KW_ALL
;
timePointUnit
: KW_YEAR
| KW_QUARTER
| KW_MONTH
| KW_WEEK
| KW_DAY
| KW_HOUR
| KW_MINUTE
| KW_SECOND
| KW_MILLISECOND
| KW_MICROSECOND
;
timeIntervalUnit
: KW_MILLENNIUM
| KW_CENTURY
| KW_DECADE
| KW_YEAR
| KW_YEARS
| KW_QUARTER
| KW_MONTH
| KW_MONTHS
| KW_WEEK
| KW_WEEKS
| KW_DAY
| KW_DAYS
| KW_HOUR
| KW_HOURS
| KW_MINUTE
| KW_MINUTES
| KW_SECOND
| KW_SECONDS
| KW_MILLISECOND
| KW_MICROSECOND
| KW_NANOSECOND
| KW_EPOCH
;
reservedKeywordsUsedAsFuncParam
: KW_LEADING
| KW_TRAILING
| KW_BOTH
| KW_ALL
| KW_DISTINCT
| ASTERISK_SIGN
;
reservedKeywordsUsedAsFuncName
: KW_ABS
| KW_ARRAY
| KW_AVG
| KW_CAST
| KW_CEIL
| KW_COALESCE
| KW_COLLECT
| KW_COUNT
| KW_DATE
| KW_GROUPING
| KW_HOUR
| KW_IF
| KW_LAG
| KW_LEFT
| KW_MAP
| KW_MINUTE
| KW_MONTH
| KW_OVERLAY
| KW_POSITION
| KW_POWER
| KW_QUARTER
| KW_RANK
| KW_RIGHT
| KW_SECOND
| KW_SUBSTRING
| KW_SUM
| KW_TIME
| KW_TIMESTAMP
| KW_TRUNCATE
| KW_UPPER
| KW_WEEK
| KW_YEAR
;
reservedKeywords
: KW_ABS
| KW_ALL
| ALLOW
| KW_ALLOW
| KW_ALTER
| KW_AND
| KW_ANY
| KW_ARE
| KW_ARRAY
| KW_AS
| KW_ASYMMETRIC
| KW_AT
| KW_AVG
| KW_BEGIN
@ -1053,12 +1168,14 @@ reservedKeywords
| 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

File diff suppressed because one or more lines are too long

View File

@ -174,232 +174,237 @@ KW_YEARS=173
KW_ZONE=174
KW_ABS=175
KW_ALL=176
ALLOW=177
KW_ALLOW=177
KW_ALTER=178
KW_AND=179
KW_ANY=180
KW_ARE=181
KW_ARRAY=182
KW_AS=183
KW_AT=184
KW_AVG=185
KW_BEGIN=186
KW_BETWEEN=187
KW_BIGINT=188
KW_BINARY=189
KW_BIT=190
KW_BLOB=191
KW_BOOLEAN=192
KW_BOTH=193
KW_BY=194
KW_CALL=195
KW_CALLED=196
KW_CASCADED=197
KW_CASE=198
KW_CAST=199
KW_CEIL=200
KW_CHAR=201
KW_CHARACTER=202
KW_CHECK=203
KW_CLOB=204
KW_CLOSE=205
KW_COALESCE=206
KW_COLLATE=207
KW_COLLECT=208
KW_COLUMN=209
KW_COMMIT=210
KW_CONNECT=211
KW_CONSTRAINT=212
KW_CONTAINS=213
KW_CONVERT=214
KW_COUNT=215
KW_CREATE=216
KW_CROSS=217
KW_CUBE=218
KW_CURRENT=219
KW_CURSOR=220
KW_CYCLE=221
KW_DATE=222
KW_DATETIME=223
KW_DAY=224
KW_DEC=225
KW_DECIMAL=226
KW_DECLARE=227
KW_DEFAULT=228
KW_DEFINE=229
KW_DELETE=230
KW_DESCRIBE=231
KW_DISTINCT=232
KW_DOUBLE=233
KW_DROP=234
KW_EACH=235
KW_ELSE=236
KW_END=237
KW_EQUALS=238
KW_EXCEPT=239
KW_EXECUTE=240
KW_EXISTS=241
KW_EXPLAIN=242
KW_EXTERNAL=243
KW_EXTRACT=244
KW_FALSE=245
KW_FLOAT=246
KW_FOR=247
KW_FROM=248
KW_FULL=249
KW_FUNCTION=250
KW_GLOBAL=251
KW_GRANT=252
KW_GROUP=253
KW_GROUPING=254
KW_GROUPS=255
KW_HAVING=256
KW_HOUR=257
KW_IMPORT=258
KW_IN=259
KW_INCLUDING=260
KW_INNER=261
KW_INOUT=262
KW_INSERT=263
KW_INT=264
KW_INTEGER=265
KW_INTERSECT=266
KW_INTERVAL=267
KW_INTO=268
KW_IS=269
KW_JOIN=270
KW_LAG=271
KW_LANGUAGE=272
KW_LATERAL=273
KW_LEADING=274
KW_LEFT=275
KW_LIKE=276
KW_LIMIT=277
KW_LOCAL=278
KW_MATCH=279
KW_MATCH_RECOGNIZE=280
KW_MEASURES=281
KW_MERGE=282
KW_METADATA=283
KW_MINUS=284
KW_MINUTE=285
KW_MODIFIES=286
KW_MODULE=287
KW_MONTH=288
KW_MULTISET=289
KW_NATURAL=290
KW_NEXT=291
KW_NO=292
KW_NONE=293
KW_NOT=294
KW_NULL=295
KW_NUMERIC=296
KW_OF=297
KW_OFFSET=298
KW_ON=299
KW_ONE=300
KW_OR=301
KW_ORDER=302
KW_OUT=303
KW_OUTER=304
KW_OVER=305
KW_OVERLAY=306
KW_PARTITION=307
KW_PATTERN=308
KW_PER=309
KW_PERCENT=310
KW_PERIOD=311
KW_POSITION=312
KW_PRIMARY=313
KW_RANGE=314
KW_RANK=315
KW_RESET=316
KW_REVOKE=317
KW_RIGHT=318
KW_RLIKE=319
KW_ROLLBACK=320
KW_ROLLUP=321
KW_ROW=322
KW_ROWS=323
KW_SECOND=324
KW_SELECT=325
KW_SET=326
KW_SHOW=327
KW_SKIP=328
KW_SMALLINT=329
KW_START=330
KW_STATIC=331
KW_SUBSTRING=332
KW_SUM=333
KW_SYSTEM=334
KW_SYSTEM_TIME=335
KW_SYSTEM_USER=336
KW_TABLE=337
KW_TABLESAMPLE=338
KW_THEN=339
KW_TIME=340
KW_TIMESTAMP=341
KW_TINYINT=342
KW_TO=343
KW_TRUE=344
KW_TRUNCATE=345
KW_UNION=346
KW_UNIQUE=347
KW_UNKNOWN=348
KW_UNNEST=349
KW_UPPER=350
KW_UPSERT=351
KW_USER=352
KW_USING=353
KW_VALUE=354
KW_VALUES=355
KW_VARBINARY=356
KW_VARCHAR=357
KW_WHEN=358
KW_WHERE=359
KW_WINDOW=360
KW_WITH=361
KW_WITHIN=362
KW_WITHOUT=363
KW_YEAR=364
EQUAL_SYMBOL=365
GREATER_SYMBOL=366
LESS_SYMBOL=367
EXCLAMATION_SYMBOL=368
BIT_NOT_OP=369
BIT_OR_OP=370
BIT_AND_OP=371
BIT_XOR_OP=372
DOT=373
LS_BRACKET=374
RS_BRACKET=375
LR_BRACKET=376
RR_BRACKET=377
LB_BRACKET=378
RB_BRACKET=379
COMMA=380
SEMICOLON=381
AT_SIGN=382
SINGLE_QUOTE_SYMB=383
DOUBLE_QUOTE_SYMB=384
REVERSE_QUOTE_SYMB=385
COLON_SYMB=386
ASTERISK_SIGN=387
UNDERLINE_SIGN=388
HYPNEN_SIGN=389
ADD_SIGN=390
PENCENT_SIGN=391
DOUBLE_VERTICAL_SIGN=392
DOUBLE_HYPNEN_SIGN=393
SLASH_SIGN=394
QUESTION_MARK_SIGN=395
DOUBLE_RIGHT_ARROW=396
STRING_LITERAL=397
DIG_LITERAL=398
REAL_LITERAL=399
BIT_STRING=400
ID_LITERAL=401
FILE_PATH=402
KW_ASYMMETRIC=184
KW_AT=185
KW_AVG=186
KW_BEGIN=187
KW_BETWEEN=188
KW_BIGINT=189
KW_BINARY=190
KW_BIT=191
KW_BLOB=192
KW_BOOLEAN=193
KW_BOTH=194
KW_BY=195
KW_CALL=196
KW_CALLED=197
KW_CASCADED=198
KW_CASE=199
KW_CAST=200
KW_CEIL=201
KW_CHAR=202
KW_CHARACTER=203
KW_CHECK=204
KW_CLOB=205
KW_CLOSE=206
KW_COALESCE=207
KW_COLLATE=208
KW_COLLECT=209
KW_COLUMN=210
KW_COMMIT=211
KW_CONNECT=212
KW_CONSTRAINT=213
KW_CONTAINS=214
KW_CONVERT=215
KW_COUNT=216
KW_CREATE=217
KW_CROSS=218
KW_CUBE=219
KW_CURRENT=220
KW_CURSOR=221
KW_CYCLE=222
KW_DATE=223
KW_DATETIME=224
KW_DAY=225
KW_DEC=226
KW_DECIMAL=227
KW_DECLARE=228
KW_DEFAULT=229
KW_DEFINE=230
KW_DELETE=231
KW_DESCRIBE=232
KW_DISTINCT=233
KW_DOUBLE=234
KW_DROP=235
KW_EACH=236
KW_ELSE=237
KW_END=238
KW_EQUALS=239
KW_ESCAPE=240
KW_EXCEPT=241
KW_EXECUTE=242
KW_EXISTS=243
KW_EXPLAIN=244
KW_EXTERNAL=245
KW_EXTRACT=246
KW_FALSE=247
KW_FLOAT=248
KW_FOR=249
KW_FROM=250
KW_FULL=251
KW_FUNCTION=252
KW_GLOBAL=253
KW_GRANT=254
KW_GROUP=255
KW_GROUPING=256
KW_GROUPS=257
KW_HAVING=258
KW_HOUR=259
KW_IMPORT=260
KW_IN=261
KW_INCLUDING=262
KW_INNER=263
KW_INOUT=264
KW_INSERT=265
KW_INT=266
KW_INTEGER=267
KW_INTERSECT=268
KW_INTERVAL=269
KW_INTO=270
KW_IS=271
KW_JOIN=272
KW_LAG=273
KW_LANGUAGE=274
KW_LATERAL=275
KW_LEADING=276
KW_LEFT=277
KW_LIKE=278
KW_LIMIT=279
KW_LOCAL=280
KW_MATCH=281
KW_MATCH_RECOGNIZE=282
KW_MEASURES=283
KW_MERGE=284
KW_METADATA=285
KW_MINUS=286
KW_MINUTE=287
KW_MODIFIES=288
KW_MODULE=289
KW_MONTH=290
KW_MULTISET=291
KW_NATURAL=292
KW_NEXT=293
KW_NO=294
KW_NONE=295
KW_NOT=296
KW_NULL=297
KW_NUMERIC=298
KW_OF=299
KW_OFFSET=300
KW_ON=301
KW_ONE=302
KW_OR=303
KW_ORDER=304
KW_OUT=305
KW_OUTER=306
KW_OVER=307
KW_OVERLAY=308
KW_PARTITION=309
KW_PATTERN=310
KW_PER=311
KW_PERCENT=312
KW_PERIOD=313
KW_POSITION=314
KW_POWER=315
KW_PRIMARY=316
KW_RANGE=317
KW_RANK=318
KW_RESET=319
KW_REVOKE=320
KW_RIGHT=321
KW_RLIKE=322
KW_ROLLBACK=323
KW_ROLLUP=324
KW_ROW=325
KW_ROWS=326
KW_SECOND=327
KW_SELECT=328
KW_SET=329
KW_SHOW=330
KW_SIMILAR=331
KW_SKIP=332
KW_SMALLINT=333
KW_START=334
KW_STATIC=335
KW_SUBSTRING=336
KW_SUM=337
KW_SYMMETRIC=338
KW_SYSTEM=339
KW_SYSTEM_TIME=340
KW_SYSTEM_USER=341
KW_TABLE=342
KW_TABLESAMPLE=343
KW_THEN=344
KW_TIME=345
KW_TIMESTAMP=346
KW_TINYINT=347
KW_TO=348
KW_TRUE=349
KW_TRUNCATE=350
KW_UNION=351
KW_UNIQUE=352
KW_UNKNOWN=353
KW_UNNEST=354
KW_UPPER=355
KW_UPSERT=356
KW_USER=357
KW_USING=358
KW_VALUE=359
KW_VALUES=360
KW_VARBINARY=361
KW_VARCHAR=362
KW_WHEN=363
KW_WHERE=364
KW_WINDOW=365
KW_WITH=366
KW_WITHIN=367
KW_WITHOUT=368
KW_YEAR=369
EQUAL_SYMBOL=370
GREATER_SYMBOL=371
LESS_SYMBOL=372
EXCLAMATION_SYMBOL=373
BIT_NOT_OP=374
BIT_OR_OP=375
BIT_AND_OP=376
BIT_XOR_OP=377
DOT=378
LS_BRACKET=379
RS_BRACKET=380
LR_BRACKET=381
RR_BRACKET=382
LB_BRACKET=383
RB_BRACKET=384
COMMA=385
SEMICOLON=386
AT_SIGN=387
SINGLE_QUOTE_SYMB=388
DOUBLE_QUOTE_SYMB=389
REVERSE_QUOTE_SYMB=390
COLON_SYMB=391
ASTERISK_SIGN=392
UNDERLINE_SIGN=393
HYPNEN_SIGN=394
ADD_SIGN=395
PENCENT_SIGN=396
DOUBLE_VERTICAL_SIGN=397
DOUBLE_HYPNEN_SIGN=398
SLASH_SIGN=399
QUESTION_MARK_SIGN=400
DOUBLE_RIGHT_ARROW=401
STRING_LITERAL=402
DIG_LITERAL=403
REAL_LITERAL=404
BIT_STRING=405
ID_LITERAL=406
FILE_PATH=407
'ADD'=4
'ADMIN'=5
'AFTER'=6
@ -580,216 +585,221 @@ FILE_PATH=402
'ARE'=181
'ARRAY'=182
'AS'=183
'AT'=184
'AVG'=185
'BEGIN'=186
'BETWEEN'=187
'BIGINT'=188
'BINARY'=189
'BIT'=190
'BLOB'=191
'BOOLEAN'=192
'BOTH'=193
'BY'=194
'CALL'=195
'CALLED'=196
'CASCADED'=197
'CASE'=198
'CAST'=199
'CEIL'=200
'CHAR'=201
'CHARACTER'=202
'CHECK'=203
'CLOB'=204
'CLOSE'=205
'COALESCE'=206
'COLLATE'=207
'COLLECT'=208
'COLUMN'=209
'COMMIT'=210
'CONNECT'=211
'CONSTRAINT'=212
'CONTAINS'=213
'CONVERT'=214
'COUNT'=215
'CREATE'=216
'CROSS'=217
'CUBE'=218
'CURRENT'=219
'CURSOR'=220
'CYCLE'=221
'DATE'=222
'DATETIME'=223
'DAY'=224
'DEC'=225
'DECIMAL'=226
'DECLARE'=227
'DEFAULT'=228
'DEFINE'=229
'DELETE'=230
'DESCRIBE'=231
'DISTINCT'=232
'DOUBLE'=233
'DROP'=234
'EACH'=235
'ELSE'=236
'END'=237
'EQUALS'=238
'EXCEPT'=239
'EXECUTE'=240
'EXISTS'=241
'EXPLAIN'=242
'EXTERNAL'=243
'EXTRACT'=244
'FALSE'=245
'FLOAT'=246
'FOR'=247
'FROM'=248
'FULL'=249
'FUNCTION'=250
'GLOBAL'=251
'GRANT'=252
'GROUP'=253
'GROUPING'=254
'GROUPS'=255
'HAVING'=256
'HOUR'=257
'IMPORT'=258
'IN'=259
'INCLUDING'=260
'INNER'=261
'INOUT'=262
'INSERT'=263
'INT'=264
'INTEGER'=265
'INTERSECT'=266
'INTERVAL'=267
'INTO'=268
'IS'=269
'JOIN'=270
'LAG'=271
'LANGUAGE'=272
'LATERAL'=273
'LEADING'=274
'LEFT'=275
'LIKE'=276
'LIMIT'=277
'LOCAL'=278
'MATCH'=279
'MATCH_RECOGNIZE'=280
'MEASURES'=281
'MERGE'=282
'METADATA'=283
'MINUS'=284
'MINUTE'=285
'MODIFIES'=286
'MODULE'=287
'MONTH'=288
'MULTISET'=289
'NATURAL'=290
'NEXT'=291
'NO'=292
'NONE'=293
'NOT'=294
'NULL'=295
'NUMERIC'=296
'OF'=297
'OFFSET'=298
'ON'=299
'ONE'=300
'OR'=301
'ORDER'=302
'OUT'=303
'OUTER'=304
'OVER'=305
'OVERLAY'=306
'PARTITION'=307
'PATTERN'=308
'PER'=309
'PERCENT'=310
'PERIOD'=311
'POSITION'=312
'PRIMARY'=313
'RANGE'=314
'RANK'=315
'RESET'=316
'REVOKE'=317
'RIGHT'=318
'RLIKE'=319
'ROLLBACK'=320
'ROLLUP'=321
'ROW'=322
'ROWS'=323
'SECOND'=324
'SELECT'=325
'SET'=326
'SHOW'=327
'SKIP'=328
'SMALLINT'=329
'START'=330
'STATIC'=331
'SUBSTRING'=332
'SUM'=333
'SYSTEM'=334
'SYSTEM_TIME'=335
'SYSTEM_USER'=336
'TABLE'=337
'TABLESAMPLE'=338
'THEN'=339
'TIME'=340
'TIMESTAMP'=341
'TINYINT'=342
'TO'=343
'TRUE'=344
'TRUNCATE'=345
'UNION'=346
'UNIQUE'=347
'UNKNOWN'=348
'UNNEST'=349
'UPPER'=350
'UPSERT'=351
'USER'=352
'USING'=353
'VALUE'=354
'VALUES'=355
'VARBINARY'=356
'VARCHAR'=357
'WHEN'=358
'WHERE'=359
'WINDOW'=360
'WITH'=361
'WITHIN'=362
'WITHOUT'=363
'YEAR'=364
'='=365
'>'=366
'<'=367
'!'=368
'~'=369
'|'=370
'&'=371
'^'=372
'.'=373
'['=374
']'=375
'('=376
')'=377
'{'=378
'}'=379
','=380
';'=381
'@'=382
'\''=383
'"'=384
'`'=385
':'=386
'*'=387
'_'=388
'-'=389
'+'=390
'%'=391
'||'=392
'--'=393
'/'=394
'?'=395
'=>'=396
'ASYMMETRIC'=184
'AT'=185
'AVG'=186
'BEGIN'=187
'BETWEEN'=188
'BIGINT'=189
'BINARY'=190
'BIT'=191
'BLOB'=192
'BOOLEAN'=193
'BOTH'=194
'BY'=195
'CALL'=196
'CALLED'=197
'CASCADED'=198
'CASE'=199
'CAST'=200
'CEIL'=201
'CHAR'=202
'CHARACTER'=203
'CHECK'=204
'CLOB'=205
'CLOSE'=206
'COALESCE'=207
'COLLATE'=208
'COLLECT'=209
'COLUMN'=210
'COMMIT'=211
'CONNECT'=212
'CONSTRAINT'=213
'CONTAINS'=214
'CONVERT'=215
'COUNT'=216
'CREATE'=217
'CROSS'=218
'CUBE'=219
'CURRENT'=220
'CURSOR'=221
'CYCLE'=222
'DATE'=223
'DATETIME'=224
'DAY'=225
'DEC'=226
'DECIMAL'=227
'DECLARE'=228
'DEFAULT'=229
'DEFINE'=230
'DELETE'=231
'DESCRIBE'=232
'DISTINCT'=233
'DOUBLE'=234
'DROP'=235
'EACH'=236
'ELSE'=237
'END'=238
'EQUALS'=239
'ESCAPE'=240
'EXCEPT'=241
'EXECUTE'=242
'EXISTS'=243
'EXPLAIN'=244
'EXTERNAL'=245
'EXTRACT'=246
'FALSE'=247
'FLOAT'=248
'FOR'=249
'FROM'=250
'FULL'=251
'FUNCTION'=252
'GLOBAL'=253
'GRANT'=254
'GROUP'=255
'GROUPING'=256
'GROUPS'=257
'HAVING'=258
'HOUR'=259
'IMPORT'=260
'IN'=261
'INCLUDING'=262
'INNER'=263
'INOUT'=264
'INSERT'=265
'INT'=266
'INTEGER'=267
'INTERSECT'=268
'INTERVAL'=269
'INTO'=270
'IS'=271
'JOIN'=272
'LAG'=273
'LANGUAGE'=274
'LATERAL'=275
'LEADING'=276
'LEFT'=277
'LIKE'=278
'LIMIT'=279
'LOCAL'=280
'MATCH'=281
'MATCH_RECOGNIZE'=282
'MEASURES'=283
'MERGE'=284
'METADATA'=285
'MINUS'=286
'MINUTE'=287
'MODIFIES'=288
'MODULE'=289
'MONTH'=290
'MULTISET'=291
'NATURAL'=292
'NEXT'=293
'NO'=294
'NONE'=295
'NOT'=296
'NULL'=297
'NUMERIC'=298
'OF'=299
'OFFSET'=300
'ON'=301
'ONE'=302
'OR'=303
'ORDER'=304
'OUT'=305
'OUTER'=306
'OVER'=307
'OVERLAY'=308
'PARTITION'=309
'PATTERN'=310
'PER'=311
'PERCENT'=312
'PERIOD'=313
'POSITION'=314
'POWER'=315
'PRIMARY'=316
'RANGE'=317
'RANK'=318
'RESET'=319
'REVOKE'=320
'RIGHT'=321
'RLIKE'=322
'ROLLBACK'=323
'ROLLUP'=324
'ROW'=325
'ROWS'=326
'SECOND'=327
'SELECT'=328
'SET'=329
'SHOW'=330
'SIMILAR'=331
'SKIP'=332
'SMALLINT'=333
'START'=334
'STATIC'=335
'SUBSTRING'=336
'SUM'=337
'SYMMETRIC'=338
'SYSTEM'=339
'SYSTEM_TIME'=340
'SYSTEM_USER'=341
'TABLE'=342
'TABLESAMPLE'=343
'THEN'=344
'TIME'=345
'TIMESTAMP'=346
'TINYINT'=347
'TO'=348
'TRUE'=349
'TRUNCATE'=350
'UNION'=351
'UNIQUE'=352
'UNKNOWN'=353
'UNNEST'=354
'UPPER'=355
'UPSERT'=356
'USER'=357
'USING'=358
'VALUE'=359
'VALUES'=360
'VARBINARY'=361
'VARCHAR'=362
'WHEN'=363
'WHERE'=364
'WINDOW'=365
'WITH'=366
'WITHIN'=367
'WITHOUT'=368
'YEAR'=369
'='=370
'>'=371
'<'=372
'!'=373
'~'=374
'|'=375
'&'=376
'^'=377
'.'=378
'['=379
']'=380
'('=381
')'=382
'{'=383
'}'=384
','=385
';'=386
'@'=387
'\''=388
'"'=389
'`'=390
':'=391
'*'=392
'_'=393
'-'=394
'+'=395
'%'=396
'||'=397
'--'=398
'/'=399
'?'=400
'=>'=401

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -174,232 +174,237 @@ KW_YEARS=173
KW_ZONE=174
KW_ABS=175
KW_ALL=176
ALLOW=177
KW_ALLOW=177
KW_ALTER=178
KW_AND=179
KW_ANY=180
KW_ARE=181
KW_ARRAY=182
KW_AS=183
KW_AT=184
KW_AVG=185
KW_BEGIN=186
KW_BETWEEN=187
KW_BIGINT=188
KW_BINARY=189
KW_BIT=190
KW_BLOB=191
KW_BOOLEAN=192
KW_BOTH=193
KW_BY=194
KW_CALL=195
KW_CALLED=196
KW_CASCADED=197
KW_CASE=198
KW_CAST=199
KW_CEIL=200
KW_CHAR=201
KW_CHARACTER=202
KW_CHECK=203
KW_CLOB=204
KW_CLOSE=205
KW_COALESCE=206
KW_COLLATE=207
KW_COLLECT=208
KW_COLUMN=209
KW_COMMIT=210
KW_CONNECT=211
KW_CONSTRAINT=212
KW_CONTAINS=213
KW_CONVERT=214
KW_COUNT=215
KW_CREATE=216
KW_CROSS=217
KW_CUBE=218
KW_CURRENT=219
KW_CURSOR=220
KW_CYCLE=221
KW_DATE=222
KW_DATETIME=223
KW_DAY=224
KW_DEC=225
KW_DECIMAL=226
KW_DECLARE=227
KW_DEFAULT=228
KW_DEFINE=229
KW_DELETE=230
KW_DESCRIBE=231
KW_DISTINCT=232
KW_DOUBLE=233
KW_DROP=234
KW_EACH=235
KW_ELSE=236
KW_END=237
KW_EQUALS=238
KW_EXCEPT=239
KW_EXECUTE=240
KW_EXISTS=241
KW_EXPLAIN=242
KW_EXTERNAL=243
KW_EXTRACT=244
KW_FALSE=245
KW_FLOAT=246
KW_FOR=247
KW_FROM=248
KW_FULL=249
KW_FUNCTION=250
KW_GLOBAL=251
KW_GRANT=252
KW_GROUP=253
KW_GROUPING=254
KW_GROUPS=255
KW_HAVING=256
KW_HOUR=257
KW_IMPORT=258
KW_IN=259
KW_INCLUDING=260
KW_INNER=261
KW_INOUT=262
KW_INSERT=263
KW_INT=264
KW_INTEGER=265
KW_INTERSECT=266
KW_INTERVAL=267
KW_INTO=268
KW_IS=269
KW_JOIN=270
KW_LAG=271
KW_LANGUAGE=272
KW_LATERAL=273
KW_LEADING=274
KW_LEFT=275
KW_LIKE=276
KW_LIMIT=277
KW_LOCAL=278
KW_MATCH=279
KW_MATCH_RECOGNIZE=280
KW_MEASURES=281
KW_MERGE=282
KW_METADATA=283
KW_MINUS=284
KW_MINUTE=285
KW_MODIFIES=286
KW_MODULE=287
KW_MONTH=288
KW_MULTISET=289
KW_NATURAL=290
KW_NEXT=291
KW_NO=292
KW_NONE=293
KW_NOT=294
KW_NULL=295
KW_NUMERIC=296
KW_OF=297
KW_OFFSET=298
KW_ON=299
KW_ONE=300
KW_OR=301
KW_ORDER=302
KW_OUT=303
KW_OUTER=304
KW_OVER=305
KW_OVERLAY=306
KW_PARTITION=307
KW_PATTERN=308
KW_PER=309
KW_PERCENT=310
KW_PERIOD=311
KW_POSITION=312
KW_PRIMARY=313
KW_RANGE=314
KW_RANK=315
KW_RESET=316
KW_REVOKE=317
KW_RIGHT=318
KW_RLIKE=319
KW_ROLLBACK=320
KW_ROLLUP=321
KW_ROW=322
KW_ROWS=323
KW_SECOND=324
KW_SELECT=325
KW_SET=326
KW_SHOW=327
KW_SKIP=328
KW_SMALLINT=329
KW_START=330
KW_STATIC=331
KW_SUBSTRING=332
KW_SUM=333
KW_SYSTEM=334
KW_SYSTEM_TIME=335
KW_SYSTEM_USER=336
KW_TABLE=337
KW_TABLESAMPLE=338
KW_THEN=339
KW_TIME=340
KW_TIMESTAMP=341
KW_TINYINT=342
KW_TO=343
KW_TRUE=344
KW_TRUNCATE=345
KW_UNION=346
KW_UNIQUE=347
KW_UNKNOWN=348
KW_UNNEST=349
KW_UPPER=350
KW_UPSERT=351
KW_USER=352
KW_USING=353
KW_VALUE=354
KW_VALUES=355
KW_VARBINARY=356
KW_VARCHAR=357
KW_WHEN=358
KW_WHERE=359
KW_WINDOW=360
KW_WITH=361
KW_WITHIN=362
KW_WITHOUT=363
KW_YEAR=364
EQUAL_SYMBOL=365
GREATER_SYMBOL=366
LESS_SYMBOL=367
EXCLAMATION_SYMBOL=368
BIT_NOT_OP=369
BIT_OR_OP=370
BIT_AND_OP=371
BIT_XOR_OP=372
DOT=373
LS_BRACKET=374
RS_BRACKET=375
LR_BRACKET=376
RR_BRACKET=377
LB_BRACKET=378
RB_BRACKET=379
COMMA=380
SEMICOLON=381
AT_SIGN=382
SINGLE_QUOTE_SYMB=383
DOUBLE_QUOTE_SYMB=384
REVERSE_QUOTE_SYMB=385
COLON_SYMB=386
ASTERISK_SIGN=387
UNDERLINE_SIGN=388
HYPNEN_SIGN=389
ADD_SIGN=390
PENCENT_SIGN=391
DOUBLE_VERTICAL_SIGN=392
DOUBLE_HYPNEN_SIGN=393
SLASH_SIGN=394
QUESTION_MARK_SIGN=395
DOUBLE_RIGHT_ARROW=396
STRING_LITERAL=397
DIG_LITERAL=398
REAL_LITERAL=399
BIT_STRING=400
ID_LITERAL=401
FILE_PATH=402
KW_ASYMMETRIC=184
KW_AT=185
KW_AVG=186
KW_BEGIN=187
KW_BETWEEN=188
KW_BIGINT=189
KW_BINARY=190
KW_BIT=191
KW_BLOB=192
KW_BOOLEAN=193
KW_BOTH=194
KW_BY=195
KW_CALL=196
KW_CALLED=197
KW_CASCADED=198
KW_CASE=199
KW_CAST=200
KW_CEIL=201
KW_CHAR=202
KW_CHARACTER=203
KW_CHECK=204
KW_CLOB=205
KW_CLOSE=206
KW_COALESCE=207
KW_COLLATE=208
KW_COLLECT=209
KW_COLUMN=210
KW_COMMIT=211
KW_CONNECT=212
KW_CONSTRAINT=213
KW_CONTAINS=214
KW_CONVERT=215
KW_COUNT=216
KW_CREATE=217
KW_CROSS=218
KW_CUBE=219
KW_CURRENT=220
KW_CURSOR=221
KW_CYCLE=222
KW_DATE=223
KW_DATETIME=224
KW_DAY=225
KW_DEC=226
KW_DECIMAL=227
KW_DECLARE=228
KW_DEFAULT=229
KW_DEFINE=230
KW_DELETE=231
KW_DESCRIBE=232
KW_DISTINCT=233
KW_DOUBLE=234
KW_DROP=235
KW_EACH=236
KW_ELSE=237
KW_END=238
KW_EQUALS=239
KW_ESCAPE=240
KW_EXCEPT=241
KW_EXECUTE=242
KW_EXISTS=243
KW_EXPLAIN=244
KW_EXTERNAL=245
KW_EXTRACT=246
KW_FALSE=247
KW_FLOAT=248
KW_FOR=249
KW_FROM=250
KW_FULL=251
KW_FUNCTION=252
KW_GLOBAL=253
KW_GRANT=254
KW_GROUP=255
KW_GROUPING=256
KW_GROUPS=257
KW_HAVING=258
KW_HOUR=259
KW_IMPORT=260
KW_IN=261
KW_INCLUDING=262
KW_INNER=263
KW_INOUT=264
KW_INSERT=265
KW_INT=266
KW_INTEGER=267
KW_INTERSECT=268
KW_INTERVAL=269
KW_INTO=270
KW_IS=271
KW_JOIN=272
KW_LAG=273
KW_LANGUAGE=274
KW_LATERAL=275
KW_LEADING=276
KW_LEFT=277
KW_LIKE=278
KW_LIMIT=279
KW_LOCAL=280
KW_MATCH=281
KW_MATCH_RECOGNIZE=282
KW_MEASURES=283
KW_MERGE=284
KW_METADATA=285
KW_MINUS=286
KW_MINUTE=287
KW_MODIFIES=288
KW_MODULE=289
KW_MONTH=290
KW_MULTISET=291
KW_NATURAL=292
KW_NEXT=293
KW_NO=294
KW_NONE=295
KW_NOT=296
KW_NULL=297
KW_NUMERIC=298
KW_OF=299
KW_OFFSET=300
KW_ON=301
KW_ONE=302
KW_OR=303
KW_ORDER=304
KW_OUT=305
KW_OUTER=306
KW_OVER=307
KW_OVERLAY=308
KW_PARTITION=309
KW_PATTERN=310
KW_PER=311
KW_PERCENT=312
KW_PERIOD=313
KW_POSITION=314
KW_POWER=315
KW_PRIMARY=316
KW_RANGE=317
KW_RANK=318
KW_RESET=319
KW_REVOKE=320
KW_RIGHT=321
KW_RLIKE=322
KW_ROLLBACK=323
KW_ROLLUP=324
KW_ROW=325
KW_ROWS=326
KW_SECOND=327
KW_SELECT=328
KW_SET=329
KW_SHOW=330
KW_SIMILAR=331
KW_SKIP=332
KW_SMALLINT=333
KW_START=334
KW_STATIC=335
KW_SUBSTRING=336
KW_SUM=337
KW_SYMMETRIC=338
KW_SYSTEM=339
KW_SYSTEM_TIME=340
KW_SYSTEM_USER=341
KW_TABLE=342
KW_TABLESAMPLE=343
KW_THEN=344
KW_TIME=345
KW_TIMESTAMP=346
KW_TINYINT=347
KW_TO=348
KW_TRUE=349
KW_TRUNCATE=350
KW_UNION=351
KW_UNIQUE=352
KW_UNKNOWN=353
KW_UNNEST=354
KW_UPPER=355
KW_UPSERT=356
KW_USER=357
KW_USING=358
KW_VALUE=359
KW_VALUES=360
KW_VARBINARY=361
KW_VARCHAR=362
KW_WHEN=363
KW_WHERE=364
KW_WINDOW=365
KW_WITH=366
KW_WITHIN=367
KW_WITHOUT=368
KW_YEAR=369
EQUAL_SYMBOL=370
GREATER_SYMBOL=371
LESS_SYMBOL=372
EXCLAMATION_SYMBOL=373
BIT_NOT_OP=374
BIT_OR_OP=375
BIT_AND_OP=376
BIT_XOR_OP=377
DOT=378
LS_BRACKET=379
RS_BRACKET=380
LR_BRACKET=381
RR_BRACKET=382
LB_BRACKET=383
RB_BRACKET=384
COMMA=385
SEMICOLON=386
AT_SIGN=387
SINGLE_QUOTE_SYMB=388
DOUBLE_QUOTE_SYMB=389
REVERSE_QUOTE_SYMB=390
COLON_SYMB=391
ASTERISK_SIGN=392
UNDERLINE_SIGN=393
HYPNEN_SIGN=394
ADD_SIGN=395
PENCENT_SIGN=396
DOUBLE_VERTICAL_SIGN=397
DOUBLE_HYPNEN_SIGN=398
SLASH_SIGN=399
QUESTION_MARK_SIGN=400
DOUBLE_RIGHT_ARROW=401
STRING_LITERAL=402
DIG_LITERAL=403
REAL_LITERAL=404
BIT_STRING=405
ID_LITERAL=406
FILE_PATH=407
'ADD'=4
'ADMIN'=5
'AFTER'=6
@ -580,216 +585,221 @@ FILE_PATH=402
'ARE'=181
'ARRAY'=182
'AS'=183
'AT'=184
'AVG'=185
'BEGIN'=186
'BETWEEN'=187
'BIGINT'=188
'BINARY'=189
'BIT'=190
'BLOB'=191
'BOOLEAN'=192
'BOTH'=193
'BY'=194
'CALL'=195
'CALLED'=196
'CASCADED'=197
'CASE'=198
'CAST'=199
'CEIL'=200
'CHAR'=201
'CHARACTER'=202
'CHECK'=203
'CLOB'=204
'CLOSE'=205
'COALESCE'=206
'COLLATE'=207
'COLLECT'=208
'COLUMN'=209
'COMMIT'=210
'CONNECT'=211
'CONSTRAINT'=212
'CONTAINS'=213
'CONVERT'=214
'COUNT'=215
'CREATE'=216
'CROSS'=217
'CUBE'=218
'CURRENT'=219
'CURSOR'=220
'CYCLE'=221
'DATE'=222
'DATETIME'=223
'DAY'=224
'DEC'=225
'DECIMAL'=226
'DECLARE'=227
'DEFAULT'=228
'DEFINE'=229
'DELETE'=230
'DESCRIBE'=231
'DISTINCT'=232
'DOUBLE'=233
'DROP'=234
'EACH'=235
'ELSE'=236
'END'=237
'EQUALS'=238
'EXCEPT'=239
'EXECUTE'=240
'EXISTS'=241
'EXPLAIN'=242
'EXTERNAL'=243
'EXTRACT'=244
'FALSE'=245
'FLOAT'=246
'FOR'=247
'FROM'=248
'FULL'=249
'FUNCTION'=250
'GLOBAL'=251
'GRANT'=252
'GROUP'=253
'GROUPING'=254
'GROUPS'=255
'HAVING'=256
'HOUR'=257
'IMPORT'=258
'IN'=259
'INCLUDING'=260
'INNER'=261
'INOUT'=262
'INSERT'=263
'INT'=264
'INTEGER'=265
'INTERSECT'=266
'INTERVAL'=267
'INTO'=268
'IS'=269
'JOIN'=270
'LAG'=271
'LANGUAGE'=272
'LATERAL'=273
'LEADING'=274
'LEFT'=275
'LIKE'=276
'LIMIT'=277
'LOCAL'=278
'MATCH'=279
'MATCH_RECOGNIZE'=280
'MEASURES'=281
'MERGE'=282
'METADATA'=283
'MINUS'=284
'MINUTE'=285
'MODIFIES'=286
'MODULE'=287
'MONTH'=288
'MULTISET'=289
'NATURAL'=290
'NEXT'=291
'NO'=292
'NONE'=293
'NOT'=294
'NULL'=295
'NUMERIC'=296
'OF'=297
'OFFSET'=298
'ON'=299
'ONE'=300
'OR'=301
'ORDER'=302
'OUT'=303
'OUTER'=304
'OVER'=305
'OVERLAY'=306
'PARTITION'=307
'PATTERN'=308
'PER'=309
'PERCENT'=310
'PERIOD'=311
'POSITION'=312
'PRIMARY'=313
'RANGE'=314
'RANK'=315
'RESET'=316
'REVOKE'=317
'RIGHT'=318
'RLIKE'=319
'ROLLBACK'=320
'ROLLUP'=321
'ROW'=322
'ROWS'=323
'SECOND'=324
'SELECT'=325
'SET'=326
'SHOW'=327
'SKIP'=328
'SMALLINT'=329
'START'=330
'STATIC'=331
'SUBSTRING'=332
'SUM'=333
'SYSTEM'=334
'SYSTEM_TIME'=335
'SYSTEM_USER'=336
'TABLE'=337
'TABLESAMPLE'=338
'THEN'=339
'TIME'=340
'TIMESTAMP'=341
'TINYINT'=342
'TO'=343
'TRUE'=344
'TRUNCATE'=345
'UNION'=346
'UNIQUE'=347
'UNKNOWN'=348
'UNNEST'=349
'UPPER'=350
'UPSERT'=351
'USER'=352
'USING'=353
'VALUE'=354
'VALUES'=355
'VARBINARY'=356
'VARCHAR'=357
'WHEN'=358
'WHERE'=359
'WINDOW'=360
'WITH'=361
'WITHIN'=362
'WITHOUT'=363
'YEAR'=364
'='=365
'>'=366
'<'=367
'!'=368
'~'=369
'|'=370
'&'=371
'^'=372
'.'=373
'['=374
']'=375
'('=376
')'=377
'{'=378
'}'=379
','=380
';'=381
'@'=382
'\''=383
'"'=384
'`'=385
':'=386
'*'=387
'_'=388
'-'=389
'+'=390
'%'=391
'||'=392
'--'=393
'/'=394
'?'=395
'=>'=396
'ASYMMETRIC'=184
'AT'=185
'AVG'=186
'BEGIN'=187
'BETWEEN'=188
'BIGINT'=189
'BINARY'=190
'BIT'=191
'BLOB'=192
'BOOLEAN'=193
'BOTH'=194
'BY'=195
'CALL'=196
'CALLED'=197
'CASCADED'=198
'CASE'=199
'CAST'=200
'CEIL'=201
'CHAR'=202
'CHARACTER'=203
'CHECK'=204
'CLOB'=205
'CLOSE'=206
'COALESCE'=207
'COLLATE'=208
'COLLECT'=209
'COLUMN'=210
'COMMIT'=211
'CONNECT'=212
'CONSTRAINT'=213
'CONTAINS'=214
'CONVERT'=215
'COUNT'=216
'CREATE'=217
'CROSS'=218
'CUBE'=219
'CURRENT'=220
'CURSOR'=221
'CYCLE'=222
'DATE'=223
'DATETIME'=224
'DAY'=225
'DEC'=226
'DECIMAL'=227
'DECLARE'=228
'DEFAULT'=229
'DEFINE'=230
'DELETE'=231
'DESCRIBE'=232
'DISTINCT'=233
'DOUBLE'=234
'DROP'=235
'EACH'=236
'ELSE'=237
'END'=238
'EQUALS'=239
'ESCAPE'=240
'EXCEPT'=241
'EXECUTE'=242
'EXISTS'=243
'EXPLAIN'=244
'EXTERNAL'=245
'EXTRACT'=246
'FALSE'=247
'FLOAT'=248
'FOR'=249
'FROM'=250
'FULL'=251
'FUNCTION'=252
'GLOBAL'=253
'GRANT'=254
'GROUP'=255
'GROUPING'=256
'GROUPS'=257
'HAVING'=258
'HOUR'=259
'IMPORT'=260
'IN'=261
'INCLUDING'=262
'INNER'=263
'INOUT'=264
'INSERT'=265
'INT'=266
'INTEGER'=267
'INTERSECT'=268
'INTERVAL'=269
'INTO'=270
'IS'=271
'JOIN'=272
'LAG'=273
'LANGUAGE'=274
'LATERAL'=275
'LEADING'=276
'LEFT'=277
'LIKE'=278
'LIMIT'=279
'LOCAL'=280
'MATCH'=281
'MATCH_RECOGNIZE'=282
'MEASURES'=283
'MERGE'=284
'METADATA'=285
'MINUS'=286
'MINUTE'=287
'MODIFIES'=288
'MODULE'=289
'MONTH'=290
'MULTISET'=291
'NATURAL'=292
'NEXT'=293
'NO'=294
'NONE'=295
'NOT'=296
'NULL'=297
'NUMERIC'=298
'OF'=299
'OFFSET'=300
'ON'=301
'ONE'=302
'OR'=303
'ORDER'=304
'OUT'=305
'OUTER'=306
'OVER'=307
'OVERLAY'=308
'PARTITION'=309
'PATTERN'=310
'PER'=311
'PERCENT'=312
'PERIOD'=313
'POSITION'=314
'POWER'=315
'PRIMARY'=316
'RANGE'=317
'RANK'=318
'RESET'=319
'REVOKE'=320
'RIGHT'=321
'RLIKE'=322
'ROLLBACK'=323
'ROLLUP'=324
'ROW'=325
'ROWS'=326
'SECOND'=327
'SELECT'=328
'SET'=329
'SHOW'=330
'SIMILAR'=331
'SKIP'=332
'SMALLINT'=333
'START'=334
'STATIC'=335
'SUBSTRING'=336
'SUM'=337
'SYMMETRIC'=338
'SYSTEM'=339
'SYSTEM_TIME'=340
'SYSTEM_USER'=341
'TABLE'=342
'TABLESAMPLE'=343
'THEN'=344
'TIME'=345
'TIMESTAMP'=346
'TINYINT'=347
'TO'=348
'TRUE'=349
'TRUNCATE'=350
'UNION'=351
'UNIQUE'=352
'UNKNOWN'=353
'UNNEST'=354
'UPPER'=355
'UPSERT'=356
'USER'=357
'USING'=358
'VALUE'=359
'VALUES'=360
'VARBINARY'=361
'VARCHAR'=362
'WHEN'=363
'WHERE'=364
'WINDOW'=365
'WITH'=366
'WITHIN'=367
'WITHOUT'=368
'YEAR'=369
'='=370
'>'=371
'<'=372
'!'=373
'~'=374
'|'=375
'&'=376
'^'=377
'.'=378
'['=379
']'=380
'('=381
')'=382
'{'=383
'}'=384
','=385
';'=386
'@'=387
'\''=388
'"'=389
'`'=390
':'=391
'*'=392
'_'=393
'-'=394
'+'=395
'%'=396
'||'=397
'--'=398
'/'=399
'?'=400
'=>'=401

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,4 @@
// Generated from /Users/zhenglin/Documents/parser/dt-sql-parser/src/grammar/flinksql/FlinkSqlParser.g4 by ANTLR 4.12.0
// Generated from /Users/hayden/Desktop/dt-works/dt-sql-parser/src/grammar/flinksql/FlinkSqlParser.g4 by ANTLR 4.12.0
import {ParseTreeListener} from "antlr4";
@ -138,6 +138,7 @@ import { ExpressionContext } from "./FlinkSqlParser";
import { LogicalNotContext } from "./FlinkSqlParser";
import { PredicatedContext } from "./FlinkSqlParser";
import { ExistsContext } from "./FlinkSqlParser";
import { LogicalNestedContext } from "./FlinkSqlParser";
import { LogicalBinaryContext } from "./FlinkSqlParser";
import { PredicateContext } from "./FlinkSqlParser";
import { LikePredicateContext } from "./FlinkSqlParser";
@ -201,6 +202,7 @@ import { StringLiteralContext } from "./FlinkSqlParser";
import { DecimalLiteralContext } from "./FlinkSqlParser";
import { BooleanLiteralContext } from "./FlinkSqlParser";
import { SetQuantifierContext } from "./FlinkSqlParser";
import { ReservedKeywordsUsedAsFunctionNameContext } from "./FlinkSqlParser";
import { ReservedKeywordsContext } from "./FlinkSqlParser";
import { NonReservedKeywordsContext } from "./FlinkSqlParser";
@ -1570,6 +1572,18 @@ export default class FlinkSqlParserListener extends ParseTreeListener {
* @param ctx the parse tree
*/
exitExists?: (ctx: ExistsContext) => void;
/**
* Enter a parse tree produced by the `logicalNested`
* labeled alternative in `FlinkSqlParser.booleanExpression`.
* @param ctx the parse tree
*/
enterLogicalNested?: (ctx: LogicalNestedContext) => void;
/**
* Exit a parse tree produced by the `logicalNested`
* labeled alternative in `FlinkSqlParser.booleanExpression`.
* @param ctx the parse tree
*/
exitLogicalNested?: (ctx: LogicalNestedContext) => void;
/**
* Enter a parse tree produced by the `logicalBinary`
* labeled alternative in `FlinkSqlParser.booleanExpression`.
@ -2248,6 +2262,16 @@ export default class FlinkSqlParserListener extends ParseTreeListener {
* @param ctx the parse tree
*/
exitSetQuantifier?: (ctx: SetQuantifierContext) => void;
/**
* Enter a parse tree produced by `FlinkSqlParser.reservedKeywordsUsedAsFunctionName`.
* @param ctx the parse tree
*/
enterReservedKeywordsUsedAsFunctionName?: (ctx: ReservedKeywordsUsedAsFunctionNameContext) => void;
/**
* Exit a parse tree produced by `FlinkSqlParser.reservedKeywordsUsedAsFunctionName`.
* @param ctx the parse tree
*/
exitReservedKeywordsUsedAsFunctionName?: (ctx: ReservedKeywordsUsedAsFunctionNameContext) => void;
/**
* Enter a parse tree produced by `FlinkSqlParser.reservedKeywords`.
* @param ctx the parse tree

View File

@ -1,4 +1,4 @@
// Generated from /Users/zhenglin/Documents/parser/dt-sql-parser/src/grammar/flinksql/FlinkSqlParser.g4 by ANTLR 4.12.0
// Generated from /Users/hayden/Desktop/dt-works/dt-sql-parser/src/grammar/flinksql/FlinkSqlParser.g4 by ANTLR 4.12.0
import {ParseTreeVisitor} from 'antlr4';
@ -138,6 +138,7 @@ import { ExpressionContext } from "./FlinkSqlParser";
import { LogicalNotContext } from "./FlinkSqlParser";
import { PredicatedContext } from "./FlinkSqlParser";
import { ExistsContext } from "./FlinkSqlParser";
import { LogicalNestedContext } from "./FlinkSqlParser";
import { LogicalBinaryContext } from "./FlinkSqlParser";
import { PredicateContext } from "./FlinkSqlParser";
import { LikePredicateContext } from "./FlinkSqlParser";
@ -201,6 +202,7 @@ import { StringLiteralContext } from "./FlinkSqlParser";
import { DecimalLiteralContext } from "./FlinkSqlParser";
import { BooleanLiteralContext } from "./FlinkSqlParser";
import { SetQuantifierContext } from "./FlinkSqlParser";
import { ReservedKeywordsUsedAsFunctionNameContext } from "./FlinkSqlParser";
import { ReservedKeywordsContext } from "./FlinkSqlParser";
import { NonReservedKeywordsContext } from "./FlinkSqlParser";
@ -1028,6 +1030,13 @@ export default class FlinkSqlParserVisitor<Result> extends ParseTreeVisitor<Resu
* @return the visitor result
*/
visitExists?: (ctx: ExistsContext) => Result;
/**
* Visit a parse tree produced by the `logicalNested`
* labeled alternative in `FlinkSqlParser.booleanExpression`.
* @param ctx the parse tree
* @return the visitor result
*/
visitLogicalNested?: (ctx: LogicalNestedContext) => Result;
/**
* Visit a parse tree produced by the `logicalBinary`
* labeled alternative in `FlinkSqlParser.booleanExpression`.
@ -1430,6 +1439,12 @@ export default class FlinkSqlParserVisitor<Result> extends ParseTreeVisitor<Resu
* @return the visitor result
*/
visitSetQuantifier?: (ctx: SetQuantifierContext) => Result;
/**
* Visit a parse tree produced by `FlinkSqlParser.reservedKeywordsUsedAsFunctionName`.
* @param ctx the parse tree
* @return the visitor result
*/
visitReservedKeywordsUsedAsFunctionName?: (ctx: ReservedKeywordsUsedAsFunctionNameContext) => Result;
/**
* Visit a parse tree produced by `FlinkSqlParser.reservedKeywords`.
* @param ctx the parse tree

View File

@ -0,0 +1,27 @@
SELECT id, age FROM table1 WHERE age IS NOT NULL;
SELECT id, age FROM table1 WHERE age IS NOT DISTINCT FROM 12;
SELECT id, age FROM table1 WHERE age BETWEEN SYMMETRIC 25 AND 18;
SELECT id, age FROM table1 WHERE age NOT LIKE "%aa_d%" ESCAPE "a";
SELECT addr FROM table1 WHERE addr NOT SIMILAR TO '%(123|yz)%' ESCAPE "y";
SELECT id, age FROM table1 WHERE age NOT IN (18,19,20);
SELECT id FROM table1 WHERE id NOT IN ( SELECT * FROM table2 );
SELECT S,SNAME
FROM S
WHERE NOT EXISTS
(SELECT *
FROM C
WHERE NOT EXISTS
(SELECT *
FROM SC
WHERE SC.S=S.S AND SC.C=C.C));
SELECT id, age FROM table1 WHERE age > 18 OR id = 1;
SELECT id, age FROM table1 WHERE age > 18 AND id > 10;

View File

@ -11,7 +11,8 @@ const features = {
aggregation: readSQL(__dirname, "selectAggregation.sql"),
join: readSQL(__dirname, "selectJoin.sql"),
setOperation: readSQL(__dirname, "selectSetOperations.sql"),
pattern: readSQL(__dirname, "selectPatternRecognition.sql")
pattern: readSQL(__dirname, "selectPatternRecognition.sql"),
where: readSQL(__dirname, "selectWhere.sql"),
};
describe("FlinkSQL Query Statement Tests", () => {
@ -79,4 +80,12 @@ describe("FlinkSQL Query Statement Tests", () => {
});
})
})
describe("Select Where", () => {
features.where.forEach((sql) => {
it(sql, () => {
expect(parser.validate(sql).length).toBe(0)
})
})
})
});