fix: add missing expression predicate to impala parser(#225)
* fix(impala): add select supprt is true/false/unknown and support more SEMICOLON * fix(impala): not use emptyStatement replace SEMICOLON * test(impala): add select unit test sql and test splitSQLByStatement
This commit is contained in:
parent
f93ffb93bf
commit
484c881583
@ -127,6 +127,8 @@ KW_INTERVAL : 'INTERVAL';
|
|||||||
KW_INTERMEDIATE : 'INTERMEDIATE';
|
KW_INTERMEDIATE : 'INTERMEDIATE';
|
||||||
KW_INTO : 'INTO';
|
KW_INTO : 'INTO';
|
||||||
KW_INIT_FN : 'INIT_FN';
|
KW_INIT_FN : 'INIT_FN';
|
||||||
|
KW_IREGEXP : 'IREGEXP';
|
||||||
|
KW_ILIKE : 'ILIKE';
|
||||||
KW_INVALIDATE : 'INVALIDATE';
|
KW_INVALIDATE : 'INVALIDATE';
|
||||||
KW_IS : 'IS';
|
KW_IS : 'IS';
|
||||||
KW_JOIN : 'JOIN';
|
KW_JOIN : 'JOIN';
|
||||||
@ -230,6 +232,7 @@ KW_USER : 'USER';
|
|||||||
KW_USING : 'USING';
|
KW_USING : 'USING';
|
||||||
KW_UPDATE_FN : 'UPDATE_FN';
|
KW_UPDATE_FN : 'UPDATE_FN';
|
||||||
KW_UPSERT : 'UPSERT';
|
KW_UPSERT : 'UPSERT';
|
||||||
|
KW_UNKNOWN : 'UNKNOWN';
|
||||||
KW_URI : 'URI';
|
KW_URI : 'URI';
|
||||||
KW_VALUE : 'VALUE';
|
KW_VALUE : 'VALUE';
|
||||||
KW_VALUES : 'VALUES';
|
KW_VALUES : 'VALUES';
|
||||||
|
@ -19,31 +19,41 @@ options
|
|||||||
tokenVocab=ImpalaSqlLexer;
|
tokenVocab=ImpalaSqlLexer;
|
||||||
}
|
}
|
||||||
|
|
||||||
program : (statement SEMICOLON?)* EOF;
|
program: statement EOF;
|
||||||
|
|
||||||
statement
|
statement
|
||||||
: queryStatement
|
: sqlStatements EOF
|
||||||
| useStatement
|
;
|
||||||
| createStatement
|
|
||||||
| alterStatement
|
sqlStatements
|
||||||
| truncateTableStatement
|
: (sqlStatement | emptyStatement)*
|
||||||
| describeStatement
|
;
|
||||||
| computeStatement
|
|
||||||
| dropStatement
|
emptyStatement: SEMICOLON;
|
||||||
| grantStatement
|
|
||||||
| revokeStatement
|
sqlStatement
|
||||||
| insertStatement
|
: queryStatement SEMICOLON?
|
||||||
| deleteStatement
|
| useStatement SEMICOLON?
|
||||||
| updateStatement
|
| createStatement SEMICOLON?
|
||||||
| upsertStatement
|
| alterStatement SEMICOLON?
|
||||||
| showStatement
|
| truncateTableStatement SEMICOLON?
|
||||||
| addCommentStatement
|
| describeStatement SEMICOLON?
|
||||||
| explainStatement
|
| computeStatement SEMICOLON?
|
||||||
| setStatement
|
| dropStatement SEMICOLON?
|
||||||
| shutdownStatement
|
| grantStatement SEMICOLON?
|
||||||
| invalidateMetaStatement
|
| revokeStatement SEMICOLON?
|
||||||
| loadDataStatement
|
| insertStatement SEMICOLON?
|
||||||
| refreshStatement
|
| deleteStatement SEMICOLON?
|
||||||
|
| updateStatement SEMICOLON?
|
||||||
|
| upsertStatement SEMICOLON?
|
||||||
|
| showStatement SEMICOLON?
|
||||||
|
| addCommentStatement SEMICOLON?
|
||||||
|
| explainStatement SEMICOLON?
|
||||||
|
| setStatement SEMICOLON?
|
||||||
|
| shutdownStatement SEMICOLON?
|
||||||
|
| invalidateMetaStatement SEMICOLON?
|
||||||
|
| loadDataStatement SEMICOLON?
|
||||||
|
| refreshStatement SEMICOLON?
|
||||||
;
|
;
|
||||||
|
|
||||||
useStatement: KW_USE databaseNamePath;
|
useStatement: KW_USE databaseNamePath;
|
||||||
@ -671,9 +681,9 @@ predicate[ParserRuleContext value]
|
|||||||
| KW_NOT? KW_BETWEEN lower=valueExpression KW_AND upper=valueExpression #between
|
| KW_NOT? KW_BETWEEN lower=valueExpression KW_AND upper=valueExpression #between
|
||||||
| KW_NOT? KW_IN LPAREN expression (COMMA expression)* RPAREN #inList
|
| KW_NOT? KW_IN LPAREN expression (COMMA expression)* RPAREN #inList
|
||||||
| KW_NOT? KW_IN subQueryRelation #inSubquery
|
| KW_NOT? KW_IN subQueryRelation #inSubquery
|
||||||
| KW_NOT? KW_LIKE pattern=valueExpression (KW_ESCAPE escape=valueExpression)? #like
|
| KW_NOT? (KW_LIKE | KW_ILIKE | KW_RLIKE) pattern=valueExpression (KW_ESCAPE escape=valueExpression)? #like
|
||||||
| KW_REGEXP pattern=valueExpression #REGEXP
|
| (KW_REGEXP | KW_IREGEXP) pattern=valueExpression #REGEXP
|
||||||
| KW_IS KW_NOT? KW_NULL #nullPredicate
|
| KW_IS KW_NOT? (KW_NULL | KW_UNKNOWN | KW_TRUE | KW_FALSE) #nullOrUnKnownOrBooleanPredicate
|
||||||
| KW_IS KW_NOT? KW_DISTINCT KW_FROM right=valueExpression #distinctFrom
|
| KW_IS KW_NOT? KW_DISTINCT KW_FROM right=valueExpression #distinctFrom
|
||||||
;
|
;
|
||||||
|
|
||||||
@ -934,6 +944,7 @@ nonReserved
|
|||||||
| KW_UNBOUNDED
|
| KW_UNBOUNDED
|
||||||
| KW_USE
|
| KW_USE
|
||||||
| KW_USER
|
| KW_USER
|
||||||
|
| KW_UNKNOWN
|
||||||
| KW_VIEW
|
| KW_VIEW
|
||||||
| KW_VIEWS
|
| KW_VIEWS
|
||||||
| KW_YEAR
|
| KW_YEAR
|
||||||
@ -943,4 +954,6 @@ nonReserved
|
|||||||
| KW_AVRO
|
| KW_AVRO
|
||||||
| KW_SEQUENCEFILE
|
| KW_SEQUENCEFILE
|
||||||
| KW_RCFILE
|
| KW_RCFILE
|
||||||
|
| KW_IREGEXP
|
||||||
|
| KW_ILIKE
|
||||||
;
|
;
|
File diff suppressed because one or more lines are too long
@ -102,172 +102,175 @@ KW_INTERVAL=101
|
|||||||
KW_INTERMEDIATE=102
|
KW_INTERMEDIATE=102
|
||||||
KW_INTO=103
|
KW_INTO=103
|
||||||
KW_INIT_FN=104
|
KW_INIT_FN=104
|
||||||
KW_INVALIDATE=105
|
KW_IREGEXP=105
|
||||||
KW_IS=106
|
KW_ILIKE=106
|
||||||
KW_JOIN=107
|
KW_INVALIDATE=107
|
||||||
KW_KEY=108
|
KW_IS=108
|
||||||
KW_KUDU=109
|
KW_JOIN=109
|
||||||
KW_LAST=110
|
KW_KEY=110
|
||||||
KW_LATERAL=111
|
KW_KUDU=111
|
||||||
KW_LEFT=112
|
KW_LAST=112
|
||||||
KW_LIKE=113
|
KW_LATERAL=113
|
||||||
KW_LIMIT=114
|
KW_LEFT=114
|
||||||
KW_LINES=115
|
KW_LIKE=115
|
||||||
KW_LOAD=116
|
KW_LIMIT=116
|
||||||
KW_LOCALTIME=117
|
KW_LINES=117
|
||||||
KW_LOCALTIMESTAMP=118
|
KW_LOAD=118
|
||||||
KW_METADATA=119
|
KW_LOCALTIME=119
|
||||||
KW_MAP=120
|
KW_LOCALTIMESTAMP=120
|
||||||
KW_MINUTE=121
|
KW_METADATA=121
|
||||||
KW_MINUTES=122
|
KW_MAP=122
|
||||||
KW_MONTH=123
|
KW_MINUTE=123
|
||||||
KW_MONTHS=124
|
KW_MINUTES=124
|
||||||
KW_MERGE_FN=125
|
KW_MONTH=125
|
||||||
KW_NFC=126
|
KW_MONTHS=126
|
||||||
KW_NFD=127
|
KW_MERGE_FN=127
|
||||||
KW_NFKC=128
|
KW_NFC=128
|
||||||
KW_NFKD=129
|
KW_NFD=129
|
||||||
KW_NORMALIZE=130
|
KW_NFKC=130
|
||||||
KW_NOT=131
|
KW_NFKD=131
|
||||||
KW_NULL=132
|
KW_NORMALIZE=132
|
||||||
KW_NULLS=133
|
KW_NOT=133
|
||||||
KW_OFFSET=134
|
KW_NULL=134
|
||||||
KW_ON=135
|
KW_NULLS=135
|
||||||
KW_OPTION=136
|
KW_OFFSET=136
|
||||||
KW_OR=137
|
KW_ON=137
|
||||||
KW_ORDER=138
|
KW_OPTION=138
|
||||||
KW_ORDINALITY=139
|
KW_OR=139
|
||||||
KW_OUTER=140
|
KW_ORDER=140
|
||||||
KW_OWNER=141
|
KW_ORDINALITY=141
|
||||||
KW_OVER=142
|
KW_OUTER=142
|
||||||
KW_OVERWRITE=143
|
KW_OWNER=143
|
||||||
KW_PARTITION=144
|
KW_OVER=144
|
||||||
KW_PARTITIONS=145
|
KW_OVERWRITE=145
|
||||||
KW_PARQUET=146
|
KW_PARTITION=146
|
||||||
KW_POSITION=147
|
KW_PARTITIONS=147
|
||||||
KW_PRECEDING=148
|
KW_PARQUET=148
|
||||||
KW_PRIMARY=149
|
KW_POSITION=149
|
||||||
KW_REPLICATION=150
|
KW_PRECEDING=150
|
||||||
KW_PRIVILEGES=151
|
KW_PRIMARY=151
|
||||||
KW_PROPERTIES=152
|
KW_REPLICATION=152
|
||||||
KW_RANGE=153
|
KW_PRIVILEGES=153
|
||||||
KW_RECOVER=154
|
KW_PROPERTIES=154
|
||||||
KW_RENAME=155
|
KW_RANGE=155
|
||||||
KW_REPEATABLE=156
|
KW_RECOVER=156
|
||||||
KW_REPLACE=157
|
KW_RENAME=157
|
||||||
KW_RESTRICT=158
|
KW_REPEATABLE=158
|
||||||
KW_RETURNS=159
|
KW_REPLACE=159
|
||||||
KW_REVOKE=160
|
KW_RESTRICT=160
|
||||||
KW_REFRESH=161
|
KW_RETURNS=161
|
||||||
KW_REGEXP=162
|
KW_REVOKE=162
|
||||||
KW_RLIKE=163
|
KW_REFRESH=163
|
||||||
KW_RIGHT=164
|
KW_REGEXP=164
|
||||||
KW_ROLE=165
|
KW_RLIKE=165
|
||||||
KW_ROLES=166
|
KW_RIGHT=166
|
||||||
KW_ROW=167
|
KW_ROLE=167
|
||||||
KW_ROWS=168
|
KW_ROLES=168
|
||||||
KW_SCHEMA=169
|
KW_ROW=169
|
||||||
KW_SCHEMAS=170
|
KW_ROWS=170
|
||||||
KW_SECOND=171
|
KW_SCHEMA=171
|
||||||
KW_SECONDS=172
|
KW_SCHEMAS=172
|
||||||
KW_SELECT=173
|
KW_SECOND=173
|
||||||
KW_SERDEPROPERTIES=174
|
KW_SECONDS=174
|
||||||
KW_SET=175
|
KW_SELECT=175
|
||||||
KW_SEMI=176
|
KW_SERDEPROPERTIES=176
|
||||||
KW_SERVER=177
|
KW_SET=177
|
||||||
KW_SHOW=178
|
KW_SEMI=178
|
||||||
KW_SHUTDOWN=179
|
KW_SERVER=179
|
||||||
KW_SOME=180
|
KW_SHOW=180
|
||||||
KW_STATS=181
|
KW_SHUTDOWN=181
|
||||||
KW_STRUCT=182
|
KW_SOME=182
|
||||||
KW_STRAIGHT_JOIN=183
|
KW_STATS=183
|
||||||
KW_SUBSTRING=184
|
KW_STRUCT=184
|
||||||
KW_SYSTEM=185
|
KW_STRAIGHT_JOIN=185
|
||||||
KW_SYMBOL=186
|
KW_SUBSTRING=186
|
||||||
KW_SERIALIZE_FN=187
|
KW_SYSTEM=187
|
||||||
KW_TABLE=188
|
KW_SYMBOL=188
|
||||||
KW_TABLES=189
|
KW_SERIALIZE_FN=189
|
||||||
KW_TABLESAMPLE=190
|
KW_TABLE=190
|
||||||
KW_TERMINATED=191
|
KW_TABLES=191
|
||||||
KW_THEN=192
|
KW_TABLESAMPLE=192
|
||||||
KW_TO=193
|
KW_TERMINATED=193
|
||||||
KW_TRUE=194
|
KW_THEN=194
|
||||||
KW_TRY_CAST=195
|
KW_TO=195
|
||||||
KW_TRUNCATE=196
|
KW_TRUE=196
|
||||||
KW_UNCACHED=197
|
KW_TRY_CAST=197
|
||||||
KW_UESCAPE=198
|
KW_TRUNCATE=198
|
||||||
KW_UNBOUNDED=199
|
KW_UNCACHED=199
|
||||||
KW_UNION=200
|
KW_UESCAPE=200
|
||||||
KW_UNNEST=201
|
KW_UNBOUNDED=201
|
||||||
KW_UNSET=202
|
KW_UNION=202
|
||||||
KW_USE=203
|
KW_UNNEST=203
|
||||||
KW_USER=204
|
KW_UNSET=204
|
||||||
KW_USING=205
|
KW_USE=205
|
||||||
KW_UPDATE_FN=206
|
KW_USER=206
|
||||||
KW_UPSERT=207
|
KW_USING=207
|
||||||
KW_URI=208
|
KW_UPDATE_FN=208
|
||||||
KW_VALUE=209
|
KW_UPSERT=209
|
||||||
KW_VALUES=210
|
KW_UNKNOWN=210
|
||||||
KW_VIEW=211
|
KW_URI=211
|
||||||
KW_VIEWS=212
|
KW_VALUE=212
|
||||||
KW_WHEN=213
|
KW_VALUES=213
|
||||||
KW_WHERE=214
|
KW_VIEW=214
|
||||||
KW_WITH=215
|
KW_VIEWS=215
|
||||||
KW_YEAR=216
|
KW_WHEN=216
|
||||||
KW_YEARS=217
|
KW_WHERE=217
|
||||||
KW_TEXTFILE=218
|
KW_WITH=218
|
||||||
KW_ORC=219
|
KW_YEAR=219
|
||||||
KW_AVRO=220
|
KW_YEARS=220
|
||||||
KW_SEQUENCEFILE=221
|
KW_TEXTFILE=221
|
||||||
KW_RCFILE=222
|
KW_ORC=222
|
||||||
KW_REFERENCES=223
|
KW_AVRO=223
|
||||||
KW_NOVALIDATE=224
|
KW_SEQUENCEFILE=224
|
||||||
KW_RELY=225
|
KW_RCFILE=225
|
||||||
STATS_NUMDVS=226
|
KW_REFERENCES=226
|
||||||
STATS_NUMNULLS=227
|
KW_NOVALIDATE=227
|
||||||
STATS_AVGSIZE=228
|
KW_RELY=228
|
||||||
STATS_MAXSIZE=229
|
STATS_NUMDVS=229
|
||||||
EQ=230
|
STATS_NUMNULLS=230
|
||||||
NEQ=231
|
STATS_AVGSIZE=231
|
||||||
LT=232
|
STATS_MAXSIZE=232
|
||||||
LTE=233
|
EQ=233
|
||||||
GT=234
|
NEQ=234
|
||||||
GTE=235
|
LT=235
|
||||||
PLUS=236
|
LTE=236
|
||||||
MINUS=237
|
GT=237
|
||||||
ASTERISK=238
|
GTE=238
|
||||||
SLASH=239
|
PLUS=239
|
||||||
PERCENT=240
|
MINUS=240
|
||||||
CONCAT=241
|
ASTERISK=241
|
||||||
DOT=242
|
SLASH=242
|
||||||
SEMICOLON=243
|
PERCENT=243
|
||||||
COMMA=244
|
CONCAT=244
|
||||||
COLON=245
|
DOT=245
|
||||||
LPAREN=246
|
SEMICOLON=246
|
||||||
RPAREN=247
|
COMMA=247
|
||||||
LSQUARE=248
|
COLON=248
|
||||||
RSQUARE=249
|
LPAREN=249
|
||||||
LCURLY=250
|
RPAREN=250
|
||||||
RCURLY=251
|
LSQUARE=251
|
||||||
BITWISEOR=252
|
RSQUARE=252
|
||||||
QUESTION=253
|
LCURLY=253
|
||||||
RIGHT_ARROW=254
|
RCURLY=254
|
||||||
STRING=255
|
BITWISEOR=255
|
||||||
UNICODE_STRING=256
|
QUESTION=256
|
||||||
BINARY_LITERAL=257
|
RIGHT_ARROW=257
|
||||||
INTEGER_VALUE=258
|
STRING=258
|
||||||
DECIMAL_VALUE=259
|
UNICODE_STRING=259
|
||||||
DOUBLE_VALUE=260
|
BINARY_LITERAL=260
|
||||||
IDENTIFIER=261
|
INTEGER_VALUE=261
|
||||||
DIGIT_IDENTIFIER=262
|
DECIMAL_VALUE=262
|
||||||
QUOTED_IDENTIFIER=263
|
DOUBLE_VALUE=263
|
||||||
BACKQUOTED_IDENTIFIER=264
|
IDENTIFIER=264
|
||||||
TIME_WITH_TIME_ZONE=265
|
DIGIT_IDENTIFIER=265
|
||||||
TIMESTAMP_WITH_TIME_ZONE=266
|
QUOTED_IDENTIFIER=266
|
||||||
DOUBLE_PRECISION=267
|
BACKQUOTED_IDENTIFIER=267
|
||||||
SIMPLE_COMMENT=268
|
TIME_WITH_TIME_ZONE=268
|
||||||
BRACKETED_COMMENT=269
|
TIMESTAMP_WITH_TIME_ZONE=269
|
||||||
WS=270
|
DOUBLE_PRECISION=270
|
||||||
|
SIMPLE_COMMENT=271
|
||||||
|
BRACKETED_COMMENT=272
|
||||||
|
WS=273
|
||||||
'ADD'=1
|
'ADD'=1
|
||||||
'ALL'=2
|
'ALL'=2
|
||||||
'ANALYTIC'=3
|
'ANALYTIC'=3
|
||||||
@ -372,152 +375,155 @@ WS=270
|
|||||||
'INTERMEDIATE'=102
|
'INTERMEDIATE'=102
|
||||||
'INTO'=103
|
'INTO'=103
|
||||||
'INIT_FN'=104
|
'INIT_FN'=104
|
||||||
'INVALIDATE'=105
|
'IREGEXP'=105
|
||||||
'IS'=106
|
'ILIKE'=106
|
||||||
'JOIN'=107
|
'INVALIDATE'=107
|
||||||
'KEY'=108
|
'IS'=108
|
||||||
'KUDU'=109
|
'JOIN'=109
|
||||||
'LAST'=110
|
'KEY'=110
|
||||||
'LATERAL'=111
|
'KUDU'=111
|
||||||
'LEFT'=112
|
'LAST'=112
|
||||||
'LIKE'=113
|
'LATERAL'=113
|
||||||
'LIMIT'=114
|
'LEFT'=114
|
||||||
'LINES'=115
|
'LIKE'=115
|
||||||
'LOAD'=116
|
'LIMIT'=116
|
||||||
'LOCALTIME'=117
|
'LINES'=117
|
||||||
'LOCALTIMESTAMP'=118
|
'LOAD'=118
|
||||||
'METADATA'=119
|
'LOCALTIME'=119
|
||||||
'MAP'=120
|
'LOCALTIMESTAMP'=120
|
||||||
'MINUTE'=121
|
'METADATA'=121
|
||||||
'MINUTES'=122
|
'MAP'=122
|
||||||
'MONTH'=123
|
'MINUTE'=123
|
||||||
'MONTHS'=124
|
'MINUTES'=124
|
||||||
'MERGE_FN'=125
|
'MONTH'=125
|
||||||
'NFC'=126
|
'MONTHS'=126
|
||||||
'NFD'=127
|
'MERGE_FN'=127
|
||||||
'NFKC'=128
|
'NFC'=128
|
||||||
'NFKD'=129
|
'NFD'=129
|
||||||
'NORMALIZE'=130
|
'NFKC'=130
|
||||||
'NOT'=131
|
'NFKD'=131
|
||||||
'NULL'=132
|
'NORMALIZE'=132
|
||||||
'NULLS'=133
|
'NOT'=133
|
||||||
'OFFSET'=134
|
'NULL'=134
|
||||||
'ON'=135
|
'NULLS'=135
|
||||||
'OPTION'=136
|
'OFFSET'=136
|
||||||
'OR'=137
|
'ON'=137
|
||||||
'ORDER'=138
|
'OPTION'=138
|
||||||
'ORDINALITY'=139
|
'OR'=139
|
||||||
'OUTER'=140
|
'ORDER'=140
|
||||||
'OWNER'=141
|
'ORDINALITY'=141
|
||||||
'OVER'=142
|
'OUTER'=142
|
||||||
'OVERWRITE'=143
|
'OWNER'=143
|
||||||
'PARTITION'=144
|
'OVER'=144
|
||||||
'PARTITIONS'=145
|
'OVERWRITE'=145
|
||||||
'PARQUET'=146
|
'PARTITION'=146
|
||||||
'POSITION'=147
|
'PARTITIONS'=147
|
||||||
'PRECEDING'=148
|
'PARQUET'=148
|
||||||
'PRIMARY'=149
|
'POSITION'=149
|
||||||
'REPLICATION'=150
|
'PRECEDING'=150
|
||||||
'PRIVILEGES'=151
|
'PRIMARY'=151
|
||||||
'PROPERTIES'=152
|
'REPLICATION'=152
|
||||||
'RANGE'=153
|
'PRIVILEGES'=153
|
||||||
'RECOVER'=154
|
'PROPERTIES'=154
|
||||||
'RENAME'=155
|
'RANGE'=155
|
||||||
'REPEATABLE'=156
|
'RECOVER'=156
|
||||||
'REPLACE'=157
|
'RENAME'=157
|
||||||
'RESTRICT'=158
|
'REPEATABLE'=158
|
||||||
'RETURNS'=159
|
'REPLACE'=159
|
||||||
'REVOKE'=160
|
'RESTRICT'=160
|
||||||
'REFRESH'=161
|
'RETURNS'=161
|
||||||
'REGEXP'=162
|
'REVOKE'=162
|
||||||
'RLIKE'=163
|
'REFRESH'=163
|
||||||
'RIGHT'=164
|
'REGEXP'=164
|
||||||
'ROLE'=165
|
'RLIKE'=165
|
||||||
'ROLES'=166
|
'RIGHT'=166
|
||||||
'ROW'=167
|
'ROLE'=167
|
||||||
'ROWS'=168
|
'ROLES'=168
|
||||||
'SCHEMA'=169
|
'ROW'=169
|
||||||
'SCHEMAS'=170
|
'ROWS'=170
|
||||||
'SECOND'=171
|
'SCHEMA'=171
|
||||||
'SECONDS'=172
|
'SCHEMAS'=172
|
||||||
'SELECT'=173
|
'SECOND'=173
|
||||||
'SERDEPROPERTIES'=174
|
'SECONDS'=174
|
||||||
'SET'=175
|
'SELECT'=175
|
||||||
'SEMI'=176
|
'SERDEPROPERTIES'=176
|
||||||
'SERVER'=177
|
'SET'=177
|
||||||
'SHOW'=178
|
'SEMI'=178
|
||||||
'SHUTDOWN'=179
|
'SERVER'=179
|
||||||
'SOME'=180
|
'SHOW'=180
|
||||||
'STATS'=181
|
'SHUTDOWN'=181
|
||||||
'STRUCT'=182
|
'SOME'=182
|
||||||
'STRAIGHT_JOIN'=183
|
'STATS'=183
|
||||||
'SUBSTRING'=184
|
'STRUCT'=184
|
||||||
'SYSTEM'=185
|
'STRAIGHT_JOIN'=185
|
||||||
'SYMBOL'=186
|
'SUBSTRING'=186
|
||||||
'SERIALIZE_FN'=187
|
'SYSTEM'=187
|
||||||
'TABLE'=188
|
'SYMBOL'=188
|
||||||
'TABLES'=189
|
'SERIALIZE_FN'=189
|
||||||
'TABLESAMPLE'=190
|
'TABLE'=190
|
||||||
'TERMINATED '=191
|
'TABLES'=191
|
||||||
'THEN'=192
|
'TABLESAMPLE'=192
|
||||||
'TO'=193
|
'TERMINATED '=193
|
||||||
'TRUE'=194
|
'THEN'=194
|
||||||
'TRY_CAST'=195
|
'TO'=195
|
||||||
'TRUNCATE'=196
|
'TRUE'=196
|
||||||
'UNCACHED'=197
|
'TRY_CAST'=197
|
||||||
'UESCAPE'=198
|
'TRUNCATE'=198
|
||||||
'UNBOUNDED'=199
|
'UNCACHED'=199
|
||||||
'UNION'=200
|
'UESCAPE'=200
|
||||||
'UNNEST'=201
|
'UNBOUNDED'=201
|
||||||
'UNSET'=202
|
'UNION'=202
|
||||||
'USE'=203
|
'UNNEST'=203
|
||||||
'USER'=204
|
'UNSET'=204
|
||||||
'USING'=205
|
'USE'=205
|
||||||
'UPDATE_FN'=206
|
'USER'=206
|
||||||
'UPSERT'=207
|
'USING'=207
|
||||||
'URI'=208
|
'UPDATE_FN'=208
|
||||||
'VALUE'=209
|
'UPSERT'=209
|
||||||
'VALUES'=210
|
'UNKNOWN'=210
|
||||||
'VIEW'=211
|
'URI'=211
|
||||||
'VIEWS'=212
|
'VALUE'=212
|
||||||
'WHEN'=213
|
'VALUES'=213
|
||||||
'WHERE'=214
|
'VIEW'=214
|
||||||
'WITH'=215
|
'VIEWS'=215
|
||||||
'YEAR'=216
|
'WHEN'=216
|
||||||
'YEARS'=217
|
'WHERE'=217
|
||||||
'TEXTFILE'=218
|
'WITH'=218
|
||||||
'ORC'=219
|
'YEAR'=219
|
||||||
'AVRO'=220
|
'YEARS'=220
|
||||||
'SEQUENCEFILE'=221
|
'TEXTFILE'=221
|
||||||
'RCFILE'=222
|
'ORC'=222
|
||||||
'REFERENCES'=223
|
'AVRO'=223
|
||||||
'NOVALIDATE'=224
|
'SEQUENCEFILE'=224
|
||||||
'RELY'=225
|
'RCFILE'=225
|
||||||
'\'NUMDVS\''=226
|
'REFERENCES'=226
|
||||||
'\'NUMNULLS\''=227
|
'NOVALIDATE'=227
|
||||||
'\'AVGSIZE\''=228
|
'RELY'=228
|
||||||
'\'MAXSIZE\''=229
|
'\'NUMDVS\''=229
|
||||||
'='=230
|
'\'NUMNULLS\''=230
|
||||||
'<'=232
|
'\'AVGSIZE\''=231
|
||||||
'<='=233
|
'\'MAXSIZE\''=232
|
||||||
'>'=234
|
'='=233
|
||||||
'>='=235
|
'<'=235
|
||||||
'+'=236
|
'<='=236
|
||||||
'-'=237
|
'>'=237
|
||||||
'*'=238
|
'>='=238
|
||||||
'/'=239
|
'+'=239
|
||||||
'%'=240
|
'-'=240
|
||||||
'||'=241
|
'*'=241
|
||||||
'.'=242
|
'/'=242
|
||||||
';'=243
|
'%'=243
|
||||||
','=244
|
'||'=244
|
||||||
':'=245
|
'.'=245
|
||||||
'('=246
|
';'=246
|
||||||
')'=247
|
','=247
|
||||||
'['=248
|
':'=248
|
||||||
']'=249
|
'('=249
|
||||||
'{'=250
|
')'=250
|
||||||
'}'=251
|
'['=251
|
||||||
'|'=252
|
']'=252
|
||||||
'?'=253
|
'{'=253
|
||||||
'->'=254
|
'}'=254
|
||||||
|
'|'=255
|
||||||
|
'?'=256
|
||||||
|
'->'=257
|
||||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
@ -102,172 +102,175 @@ KW_INTERVAL=101
|
|||||||
KW_INTERMEDIATE=102
|
KW_INTERMEDIATE=102
|
||||||
KW_INTO=103
|
KW_INTO=103
|
||||||
KW_INIT_FN=104
|
KW_INIT_FN=104
|
||||||
KW_INVALIDATE=105
|
KW_IREGEXP=105
|
||||||
KW_IS=106
|
KW_ILIKE=106
|
||||||
KW_JOIN=107
|
KW_INVALIDATE=107
|
||||||
KW_KEY=108
|
KW_IS=108
|
||||||
KW_KUDU=109
|
KW_JOIN=109
|
||||||
KW_LAST=110
|
KW_KEY=110
|
||||||
KW_LATERAL=111
|
KW_KUDU=111
|
||||||
KW_LEFT=112
|
KW_LAST=112
|
||||||
KW_LIKE=113
|
KW_LATERAL=113
|
||||||
KW_LIMIT=114
|
KW_LEFT=114
|
||||||
KW_LINES=115
|
KW_LIKE=115
|
||||||
KW_LOAD=116
|
KW_LIMIT=116
|
||||||
KW_LOCALTIME=117
|
KW_LINES=117
|
||||||
KW_LOCALTIMESTAMP=118
|
KW_LOAD=118
|
||||||
KW_METADATA=119
|
KW_LOCALTIME=119
|
||||||
KW_MAP=120
|
KW_LOCALTIMESTAMP=120
|
||||||
KW_MINUTE=121
|
KW_METADATA=121
|
||||||
KW_MINUTES=122
|
KW_MAP=122
|
||||||
KW_MONTH=123
|
KW_MINUTE=123
|
||||||
KW_MONTHS=124
|
KW_MINUTES=124
|
||||||
KW_MERGE_FN=125
|
KW_MONTH=125
|
||||||
KW_NFC=126
|
KW_MONTHS=126
|
||||||
KW_NFD=127
|
KW_MERGE_FN=127
|
||||||
KW_NFKC=128
|
KW_NFC=128
|
||||||
KW_NFKD=129
|
KW_NFD=129
|
||||||
KW_NORMALIZE=130
|
KW_NFKC=130
|
||||||
KW_NOT=131
|
KW_NFKD=131
|
||||||
KW_NULL=132
|
KW_NORMALIZE=132
|
||||||
KW_NULLS=133
|
KW_NOT=133
|
||||||
KW_OFFSET=134
|
KW_NULL=134
|
||||||
KW_ON=135
|
KW_NULLS=135
|
||||||
KW_OPTION=136
|
KW_OFFSET=136
|
||||||
KW_OR=137
|
KW_ON=137
|
||||||
KW_ORDER=138
|
KW_OPTION=138
|
||||||
KW_ORDINALITY=139
|
KW_OR=139
|
||||||
KW_OUTER=140
|
KW_ORDER=140
|
||||||
KW_OWNER=141
|
KW_ORDINALITY=141
|
||||||
KW_OVER=142
|
KW_OUTER=142
|
||||||
KW_OVERWRITE=143
|
KW_OWNER=143
|
||||||
KW_PARTITION=144
|
KW_OVER=144
|
||||||
KW_PARTITIONS=145
|
KW_OVERWRITE=145
|
||||||
KW_PARQUET=146
|
KW_PARTITION=146
|
||||||
KW_POSITION=147
|
KW_PARTITIONS=147
|
||||||
KW_PRECEDING=148
|
KW_PARQUET=148
|
||||||
KW_PRIMARY=149
|
KW_POSITION=149
|
||||||
KW_REPLICATION=150
|
KW_PRECEDING=150
|
||||||
KW_PRIVILEGES=151
|
KW_PRIMARY=151
|
||||||
KW_PROPERTIES=152
|
KW_REPLICATION=152
|
||||||
KW_RANGE=153
|
KW_PRIVILEGES=153
|
||||||
KW_RECOVER=154
|
KW_PROPERTIES=154
|
||||||
KW_RENAME=155
|
KW_RANGE=155
|
||||||
KW_REPEATABLE=156
|
KW_RECOVER=156
|
||||||
KW_REPLACE=157
|
KW_RENAME=157
|
||||||
KW_RESTRICT=158
|
KW_REPEATABLE=158
|
||||||
KW_RETURNS=159
|
KW_REPLACE=159
|
||||||
KW_REVOKE=160
|
KW_RESTRICT=160
|
||||||
KW_REFRESH=161
|
KW_RETURNS=161
|
||||||
KW_REGEXP=162
|
KW_REVOKE=162
|
||||||
KW_RLIKE=163
|
KW_REFRESH=163
|
||||||
KW_RIGHT=164
|
KW_REGEXP=164
|
||||||
KW_ROLE=165
|
KW_RLIKE=165
|
||||||
KW_ROLES=166
|
KW_RIGHT=166
|
||||||
KW_ROW=167
|
KW_ROLE=167
|
||||||
KW_ROWS=168
|
KW_ROLES=168
|
||||||
KW_SCHEMA=169
|
KW_ROW=169
|
||||||
KW_SCHEMAS=170
|
KW_ROWS=170
|
||||||
KW_SECOND=171
|
KW_SCHEMA=171
|
||||||
KW_SECONDS=172
|
KW_SCHEMAS=172
|
||||||
KW_SELECT=173
|
KW_SECOND=173
|
||||||
KW_SERDEPROPERTIES=174
|
KW_SECONDS=174
|
||||||
KW_SET=175
|
KW_SELECT=175
|
||||||
KW_SEMI=176
|
KW_SERDEPROPERTIES=176
|
||||||
KW_SERVER=177
|
KW_SET=177
|
||||||
KW_SHOW=178
|
KW_SEMI=178
|
||||||
KW_SHUTDOWN=179
|
KW_SERVER=179
|
||||||
KW_SOME=180
|
KW_SHOW=180
|
||||||
KW_STATS=181
|
KW_SHUTDOWN=181
|
||||||
KW_STRUCT=182
|
KW_SOME=182
|
||||||
KW_STRAIGHT_JOIN=183
|
KW_STATS=183
|
||||||
KW_SUBSTRING=184
|
KW_STRUCT=184
|
||||||
KW_SYSTEM=185
|
KW_STRAIGHT_JOIN=185
|
||||||
KW_SYMBOL=186
|
KW_SUBSTRING=186
|
||||||
KW_SERIALIZE_FN=187
|
KW_SYSTEM=187
|
||||||
KW_TABLE=188
|
KW_SYMBOL=188
|
||||||
KW_TABLES=189
|
KW_SERIALIZE_FN=189
|
||||||
KW_TABLESAMPLE=190
|
KW_TABLE=190
|
||||||
KW_TERMINATED=191
|
KW_TABLES=191
|
||||||
KW_THEN=192
|
KW_TABLESAMPLE=192
|
||||||
KW_TO=193
|
KW_TERMINATED=193
|
||||||
KW_TRUE=194
|
KW_THEN=194
|
||||||
KW_TRY_CAST=195
|
KW_TO=195
|
||||||
KW_TRUNCATE=196
|
KW_TRUE=196
|
||||||
KW_UNCACHED=197
|
KW_TRY_CAST=197
|
||||||
KW_UESCAPE=198
|
KW_TRUNCATE=198
|
||||||
KW_UNBOUNDED=199
|
KW_UNCACHED=199
|
||||||
KW_UNION=200
|
KW_UESCAPE=200
|
||||||
KW_UNNEST=201
|
KW_UNBOUNDED=201
|
||||||
KW_UNSET=202
|
KW_UNION=202
|
||||||
KW_USE=203
|
KW_UNNEST=203
|
||||||
KW_USER=204
|
KW_UNSET=204
|
||||||
KW_USING=205
|
KW_USE=205
|
||||||
KW_UPDATE_FN=206
|
KW_USER=206
|
||||||
KW_UPSERT=207
|
KW_USING=207
|
||||||
KW_URI=208
|
KW_UPDATE_FN=208
|
||||||
KW_VALUE=209
|
KW_UPSERT=209
|
||||||
KW_VALUES=210
|
KW_UNKNOWN=210
|
||||||
KW_VIEW=211
|
KW_URI=211
|
||||||
KW_VIEWS=212
|
KW_VALUE=212
|
||||||
KW_WHEN=213
|
KW_VALUES=213
|
||||||
KW_WHERE=214
|
KW_VIEW=214
|
||||||
KW_WITH=215
|
KW_VIEWS=215
|
||||||
KW_YEAR=216
|
KW_WHEN=216
|
||||||
KW_YEARS=217
|
KW_WHERE=217
|
||||||
KW_TEXTFILE=218
|
KW_WITH=218
|
||||||
KW_ORC=219
|
KW_YEAR=219
|
||||||
KW_AVRO=220
|
KW_YEARS=220
|
||||||
KW_SEQUENCEFILE=221
|
KW_TEXTFILE=221
|
||||||
KW_RCFILE=222
|
KW_ORC=222
|
||||||
KW_REFERENCES=223
|
KW_AVRO=223
|
||||||
KW_NOVALIDATE=224
|
KW_SEQUENCEFILE=224
|
||||||
KW_RELY=225
|
KW_RCFILE=225
|
||||||
STATS_NUMDVS=226
|
KW_REFERENCES=226
|
||||||
STATS_NUMNULLS=227
|
KW_NOVALIDATE=227
|
||||||
STATS_AVGSIZE=228
|
KW_RELY=228
|
||||||
STATS_MAXSIZE=229
|
STATS_NUMDVS=229
|
||||||
EQ=230
|
STATS_NUMNULLS=230
|
||||||
NEQ=231
|
STATS_AVGSIZE=231
|
||||||
LT=232
|
STATS_MAXSIZE=232
|
||||||
LTE=233
|
EQ=233
|
||||||
GT=234
|
NEQ=234
|
||||||
GTE=235
|
LT=235
|
||||||
PLUS=236
|
LTE=236
|
||||||
MINUS=237
|
GT=237
|
||||||
ASTERISK=238
|
GTE=238
|
||||||
SLASH=239
|
PLUS=239
|
||||||
PERCENT=240
|
MINUS=240
|
||||||
CONCAT=241
|
ASTERISK=241
|
||||||
DOT=242
|
SLASH=242
|
||||||
SEMICOLON=243
|
PERCENT=243
|
||||||
COMMA=244
|
CONCAT=244
|
||||||
COLON=245
|
DOT=245
|
||||||
LPAREN=246
|
SEMICOLON=246
|
||||||
RPAREN=247
|
COMMA=247
|
||||||
LSQUARE=248
|
COLON=248
|
||||||
RSQUARE=249
|
LPAREN=249
|
||||||
LCURLY=250
|
RPAREN=250
|
||||||
RCURLY=251
|
LSQUARE=251
|
||||||
BITWISEOR=252
|
RSQUARE=252
|
||||||
QUESTION=253
|
LCURLY=253
|
||||||
RIGHT_ARROW=254
|
RCURLY=254
|
||||||
STRING=255
|
BITWISEOR=255
|
||||||
UNICODE_STRING=256
|
QUESTION=256
|
||||||
BINARY_LITERAL=257
|
RIGHT_ARROW=257
|
||||||
INTEGER_VALUE=258
|
STRING=258
|
||||||
DECIMAL_VALUE=259
|
UNICODE_STRING=259
|
||||||
DOUBLE_VALUE=260
|
BINARY_LITERAL=260
|
||||||
IDENTIFIER=261
|
INTEGER_VALUE=261
|
||||||
DIGIT_IDENTIFIER=262
|
DECIMAL_VALUE=262
|
||||||
QUOTED_IDENTIFIER=263
|
DOUBLE_VALUE=263
|
||||||
BACKQUOTED_IDENTIFIER=264
|
IDENTIFIER=264
|
||||||
TIME_WITH_TIME_ZONE=265
|
DIGIT_IDENTIFIER=265
|
||||||
TIMESTAMP_WITH_TIME_ZONE=266
|
QUOTED_IDENTIFIER=266
|
||||||
DOUBLE_PRECISION=267
|
BACKQUOTED_IDENTIFIER=267
|
||||||
SIMPLE_COMMENT=268
|
TIME_WITH_TIME_ZONE=268
|
||||||
BRACKETED_COMMENT=269
|
TIMESTAMP_WITH_TIME_ZONE=269
|
||||||
WS=270
|
DOUBLE_PRECISION=270
|
||||||
|
SIMPLE_COMMENT=271
|
||||||
|
BRACKETED_COMMENT=272
|
||||||
|
WS=273
|
||||||
'ADD'=1
|
'ADD'=1
|
||||||
'ALL'=2
|
'ALL'=2
|
||||||
'ANALYTIC'=3
|
'ANALYTIC'=3
|
||||||
@ -372,152 +375,155 @@ WS=270
|
|||||||
'INTERMEDIATE'=102
|
'INTERMEDIATE'=102
|
||||||
'INTO'=103
|
'INTO'=103
|
||||||
'INIT_FN'=104
|
'INIT_FN'=104
|
||||||
'INVALIDATE'=105
|
'IREGEXP'=105
|
||||||
'IS'=106
|
'ILIKE'=106
|
||||||
'JOIN'=107
|
'INVALIDATE'=107
|
||||||
'KEY'=108
|
'IS'=108
|
||||||
'KUDU'=109
|
'JOIN'=109
|
||||||
'LAST'=110
|
'KEY'=110
|
||||||
'LATERAL'=111
|
'KUDU'=111
|
||||||
'LEFT'=112
|
'LAST'=112
|
||||||
'LIKE'=113
|
'LATERAL'=113
|
||||||
'LIMIT'=114
|
'LEFT'=114
|
||||||
'LINES'=115
|
'LIKE'=115
|
||||||
'LOAD'=116
|
'LIMIT'=116
|
||||||
'LOCALTIME'=117
|
'LINES'=117
|
||||||
'LOCALTIMESTAMP'=118
|
'LOAD'=118
|
||||||
'METADATA'=119
|
'LOCALTIME'=119
|
||||||
'MAP'=120
|
'LOCALTIMESTAMP'=120
|
||||||
'MINUTE'=121
|
'METADATA'=121
|
||||||
'MINUTES'=122
|
'MAP'=122
|
||||||
'MONTH'=123
|
'MINUTE'=123
|
||||||
'MONTHS'=124
|
'MINUTES'=124
|
||||||
'MERGE_FN'=125
|
'MONTH'=125
|
||||||
'NFC'=126
|
'MONTHS'=126
|
||||||
'NFD'=127
|
'MERGE_FN'=127
|
||||||
'NFKC'=128
|
'NFC'=128
|
||||||
'NFKD'=129
|
'NFD'=129
|
||||||
'NORMALIZE'=130
|
'NFKC'=130
|
||||||
'NOT'=131
|
'NFKD'=131
|
||||||
'NULL'=132
|
'NORMALIZE'=132
|
||||||
'NULLS'=133
|
'NOT'=133
|
||||||
'OFFSET'=134
|
'NULL'=134
|
||||||
'ON'=135
|
'NULLS'=135
|
||||||
'OPTION'=136
|
'OFFSET'=136
|
||||||
'OR'=137
|
'ON'=137
|
||||||
'ORDER'=138
|
'OPTION'=138
|
||||||
'ORDINALITY'=139
|
'OR'=139
|
||||||
'OUTER'=140
|
'ORDER'=140
|
||||||
'OWNER'=141
|
'ORDINALITY'=141
|
||||||
'OVER'=142
|
'OUTER'=142
|
||||||
'OVERWRITE'=143
|
'OWNER'=143
|
||||||
'PARTITION'=144
|
'OVER'=144
|
||||||
'PARTITIONS'=145
|
'OVERWRITE'=145
|
||||||
'PARQUET'=146
|
'PARTITION'=146
|
||||||
'POSITION'=147
|
'PARTITIONS'=147
|
||||||
'PRECEDING'=148
|
'PARQUET'=148
|
||||||
'PRIMARY'=149
|
'POSITION'=149
|
||||||
'REPLICATION'=150
|
'PRECEDING'=150
|
||||||
'PRIVILEGES'=151
|
'PRIMARY'=151
|
||||||
'PROPERTIES'=152
|
'REPLICATION'=152
|
||||||
'RANGE'=153
|
'PRIVILEGES'=153
|
||||||
'RECOVER'=154
|
'PROPERTIES'=154
|
||||||
'RENAME'=155
|
'RANGE'=155
|
||||||
'REPEATABLE'=156
|
'RECOVER'=156
|
||||||
'REPLACE'=157
|
'RENAME'=157
|
||||||
'RESTRICT'=158
|
'REPEATABLE'=158
|
||||||
'RETURNS'=159
|
'REPLACE'=159
|
||||||
'REVOKE'=160
|
'RESTRICT'=160
|
||||||
'REFRESH'=161
|
'RETURNS'=161
|
||||||
'REGEXP'=162
|
'REVOKE'=162
|
||||||
'RLIKE'=163
|
'REFRESH'=163
|
||||||
'RIGHT'=164
|
'REGEXP'=164
|
||||||
'ROLE'=165
|
'RLIKE'=165
|
||||||
'ROLES'=166
|
'RIGHT'=166
|
||||||
'ROW'=167
|
'ROLE'=167
|
||||||
'ROWS'=168
|
'ROLES'=168
|
||||||
'SCHEMA'=169
|
'ROW'=169
|
||||||
'SCHEMAS'=170
|
'ROWS'=170
|
||||||
'SECOND'=171
|
'SCHEMA'=171
|
||||||
'SECONDS'=172
|
'SCHEMAS'=172
|
||||||
'SELECT'=173
|
'SECOND'=173
|
||||||
'SERDEPROPERTIES'=174
|
'SECONDS'=174
|
||||||
'SET'=175
|
'SELECT'=175
|
||||||
'SEMI'=176
|
'SERDEPROPERTIES'=176
|
||||||
'SERVER'=177
|
'SET'=177
|
||||||
'SHOW'=178
|
'SEMI'=178
|
||||||
'SHUTDOWN'=179
|
'SERVER'=179
|
||||||
'SOME'=180
|
'SHOW'=180
|
||||||
'STATS'=181
|
'SHUTDOWN'=181
|
||||||
'STRUCT'=182
|
'SOME'=182
|
||||||
'STRAIGHT_JOIN'=183
|
'STATS'=183
|
||||||
'SUBSTRING'=184
|
'STRUCT'=184
|
||||||
'SYSTEM'=185
|
'STRAIGHT_JOIN'=185
|
||||||
'SYMBOL'=186
|
'SUBSTRING'=186
|
||||||
'SERIALIZE_FN'=187
|
'SYSTEM'=187
|
||||||
'TABLE'=188
|
'SYMBOL'=188
|
||||||
'TABLES'=189
|
'SERIALIZE_FN'=189
|
||||||
'TABLESAMPLE'=190
|
'TABLE'=190
|
||||||
'TERMINATED '=191
|
'TABLES'=191
|
||||||
'THEN'=192
|
'TABLESAMPLE'=192
|
||||||
'TO'=193
|
'TERMINATED '=193
|
||||||
'TRUE'=194
|
'THEN'=194
|
||||||
'TRY_CAST'=195
|
'TO'=195
|
||||||
'TRUNCATE'=196
|
'TRUE'=196
|
||||||
'UNCACHED'=197
|
'TRY_CAST'=197
|
||||||
'UESCAPE'=198
|
'TRUNCATE'=198
|
||||||
'UNBOUNDED'=199
|
'UNCACHED'=199
|
||||||
'UNION'=200
|
'UESCAPE'=200
|
||||||
'UNNEST'=201
|
'UNBOUNDED'=201
|
||||||
'UNSET'=202
|
'UNION'=202
|
||||||
'USE'=203
|
'UNNEST'=203
|
||||||
'USER'=204
|
'UNSET'=204
|
||||||
'USING'=205
|
'USE'=205
|
||||||
'UPDATE_FN'=206
|
'USER'=206
|
||||||
'UPSERT'=207
|
'USING'=207
|
||||||
'URI'=208
|
'UPDATE_FN'=208
|
||||||
'VALUE'=209
|
'UPSERT'=209
|
||||||
'VALUES'=210
|
'UNKNOWN'=210
|
||||||
'VIEW'=211
|
'URI'=211
|
||||||
'VIEWS'=212
|
'VALUE'=212
|
||||||
'WHEN'=213
|
'VALUES'=213
|
||||||
'WHERE'=214
|
'VIEW'=214
|
||||||
'WITH'=215
|
'VIEWS'=215
|
||||||
'YEAR'=216
|
'WHEN'=216
|
||||||
'YEARS'=217
|
'WHERE'=217
|
||||||
'TEXTFILE'=218
|
'WITH'=218
|
||||||
'ORC'=219
|
'YEAR'=219
|
||||||
'AVRO'=220
|
'YEARS'=220
|
||||||
'SEQUENCEFILE'=221
|
'TEXTFILE'=221
|
||||||
'RCFILE'=222
|
'ORC'=222
|
||||||
'REFERENCES'=223
|
'AVRO'=223
|
||||||
'NOVALIDATE'=224
|
'SEQUENCEFILE'=224
|
||||||
'RELY'=225
|
'RCFILE'=225
|
||||||
'\'NUMDVS\''=226
|
'REFERENCES'=226
|
||||||
'\'NUMNULLS\''=227
|
'NOVALIDATE'=227
|
||||||
'\'AVGSIZE\''=228
|
'RELY'=228
|
||||||
'\'MAXSIZE\''=229
|
'\'NUMDVS\''=229
|
||||||
'='=230
|
'\'NUMNULLS\''=230
|
||||||
'<'=232
|
'\'AVGSIZE\''=231
|
||||||
'<='=233
|
'\'MAXSIZE\''=232
|
||||||
'>'=234
|
'='=233
|
||||||
'>='=235
|
'<'=235
|
||||||
'+'=236
|
'<='=236
|
||||||
'-'=237
|
'>'=237
|
||||||
'*'=238
|
'>='=238
|
||||||
'/'=239
|
'+'=239
|
||||||
'%'=240
|
'-'=240
|
||||||
'||'=241
|
'*'=241
|
||||||
'.'=242
|
'/'=242
|
||||||
';'=243
|
'%'=243
|
||||||
','=244
|
'||'=244
|
||||||
':'=245
|
'.'=245
|
||||||
'('=246
|
';'=246
|
||||||
')'=247
|
','=247
|
||||||
'['=248
|
':'=248
|
||||||
']'=249
|
'('=249
|
||||||
'{'=250
|
')'=250
|
||||||
'}'=251
|
'['=251
|
||||||
'|'=252
|
']'=252
|
||||||
'?'=253
|
'{'=253
|
||||||
'->'=254
|
'}'=254
|
||||||
|
'|'=255
|
||||||
|
'?'=256
|
||||||
|
'->'=257
|
||||||
|
File diff suppressed because one or more lines are too long
@ -12,7 +12,7 @@ import { InListContext } from "./ImpalaSqlParser";
|
|||||||
import { InSubqueryContext } from "./ImpalaSqlParser";
|
import { InSubqueryContext } from "./ImpalaSqlParser";
|
||||||
import { LikeContext } from "./ImpalaSqlParser";
|
import { LikeContext } from "./ImpalaSqlParser";
|
||||||
import { REGEXPContext } from "./ImpalaSqlParser";
|
import { REGEXPContext } from "./ImpalaSqlParser";
|
||||||
import { NullPredicateContext } from "./ImpalaSqlParser";
|
import { NullOrUnKnownOrBooleanPredicateContext } from "./ImpalaSqlParser";
|
||||||
import { DistinctFromContext } from "./ImpalaSqlParser";
|
import { DistinctFromContext } from "./ImpalaSqlParser";
|
||||||
import { DecimalLiteralContext } from "./ImpalaSqlParser";
|
import { DecimalLiteralContext } from "./ImpalaSqlParser";
|
||||||
import { DoubleLiteralContext } from "./ImpalaSqlParser";
|
import { DoubleLiteralContext } from "./ImpalaSqlParser";
|
||||||
@ -78,6 +78,9 @@ import { LogicalNotContext } from "./ImpalaSqlParser";
|
|||||||
import { LogicalBinaryContext } from "./ImpalaSqlParser";
|
import { LogicalBinaryContext } from "./ImpalaSqlParser";
|
||||||
import { ProgramContext } from "./ImpalaSqlParser";
|
import { ProgramContext } from "./ImpalaSqlParser";
|
||||||
import { StatementContext } from "./ImpalaSqlParser";
|
import { StatementContext } from "./ImpalaSqlParser";
|
||||||
|
import { SqlStatementsContext } from "./ImpalaSqlParser";
|
||||||
|
import { EmptyStatementContext } from "./ImpalaSqlParser";
|
||||||
|
import { SqlStatementContext } from "./ImpalaSqlParser";
|
||||||
import { UseStatementContext } from "./ImpalaSqlParser";
|
import { UseStatementContext } from "./ImpalaSqlParser";
|
||||||
import { CreateStatementContext } from "./ImpalaSqlParser";
|
import { CreateStatementContext } from "./ImpalaSqlParser";
|
||||||
import { CreateTableSelectContext } from "./ImpalaSqlParser";
|
import { CreateTableSelectContext } from "./ImpalaSqlParser";
|
||||||
@ -381,17 +384,17 @@ export interface ImpalaSqlParserListener extends ParseTreeListener {
|
|||||||
exitREGEXP?: (ctx: REGEXPContext) => void;
|
exitREGEXP?: (ctx: REGEXPContext) => void;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Enter a parse tree produced by the `nullPredicate`
|
* Enter a parse tree produced by the `nullOrUnKnownOrBooleanPredicate`
|
||||||
* labeled alternative in `ImpalaSqlParser.predicate`.
|
* labeled alternative in `ImpalaSqlParser.predicate`.
|
||||||
* @param ctx the parse tree
|
* @param ctx the parse tree
|
||||||
*/
|
*/
|
||||||
enterNullPredicate?: (ctx: NullPredicateContext) => void;
|
enterNullOrUnKnownOrBooleanPredicate?: (ctx: NullOrUnKnownOrBooleanPredicateContext) => void;
|
||||||
/**
|
/**
|
||||||
* Exit a parse tree produced by the `nullPredicate`
|
* Exit a parse tree produced by the `nullOrUnKnownOrBooleanPredicate`
|
||||||
* labeled alternative in `ImpalaSqlParser.predicate`.
|
* labeled alternative in `ImpalaSqlParser.predicate`.
|
||||||
* @param ctx the parse tree
|
* @param ctx the parse tree
|
||||||
*/
|
*/
|
||||||
exitNullPredicate?: (ctx: NullPredicateContext) => void;
|
exitNullOrUnKnownOrBooleanPredicate?: (ctx: NullOrUnKnownOrBooleanPredicateContext) => void;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Enter a parse tree produced by the `distinctFrom`
|
* Enter a parse tree produced by the `distinctFrom`
|
||||||
@ -1234,6 +1237,39 @@ export interface ImpalaSqlParserListener extends ParseTreeListener {
|
|||||||
*/
|
*/
|
||||||
exitStatement?: (ctx: StatementContext) => void;
|
exitStatement?: (ctx: StatementContext) => void;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Enter a parse tree produced by `ImpalaSqlParser.sqlStatements`.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
*/
|
||||||
|
enterSqlStatements?: (ctx: SqlStatementsContext) => void;
|
||||||
|
/**
|
||||||
|
* Exit a parse tree produced by `ImpalaSqlParser.sqlStatements`.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
*/
|
||||||
|
exitSqlStatements?: (ctx: SqlStatementsContext) => void;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Enter a parse tree produced by `ImpalaSqlParser.emptyStatement`.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
*/
|
||||||
|
enterEmptyStatement?: (ctx: EmptyStatementContext) => void;
|
||||||
|
/**
|
||||||
|
* Exit a parse tree produced by `ImpalaSqlParser.emptyStatement`.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
*/
|
||||||
|
exitEmptyStatement?: (ctx: EmptyStatementContext) => void;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Enter a parse tree produced by `ImpalaSqlParser.sqlStatement`.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
*/
|
||||||
|
enterSqlStatement?: (ctx: SqlStatementContext) => void;
|
||||||
|
/**
|
||||||
|
* Exit a parse tree produced by `ImpalaSqlParser.sqlStatement`.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
*/
|
||||||
|
exitSqlStatement?: (ctx: SqlStatementContext) => void;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Enter a parse tree produced by `ImpalaSqlParser.useStatement`.
|
* Enter a parse tree produced by `ImpalaSqlParser.useStatement`.
|
||||||
* @param ctx the parse tree
|
* @param ctx the parse tree
|
||||||
|
@ -12,7 +12,7 @@ import { InListContext } from "./ImpalaSqlParser";
|
|||||||
import { InSubqueryContext } from "./ImpalaSqlParser";
|
import { InSubqueryContext } from "./ImpalaSqlParser";
|
||||||
import { LikeContext } from "./ImpalaSqlParser";
|
import { LikeContext } from "./ImpalaSqlParser";
|
||||||
import { REGEXPContext } from "./ImpalaSqlParser";
|
import { REGEXPContext } from "./ImpalaSqlParser";
|
||||||
import { NullPredicateContext } from "./ImpalaSqlParser";
|
import { NullOrUnKnownOrBooleanPredicateContext } from "./ImpalaSqlParser";
|
||||||
import { DistinctFromContext } from "./ImpalaSqlParser";
|
import { DistinctFromContext } from "./ImpalaSqlParser";
|
||||||
import { DecimalLiteralContext } from "./ImpalaSqlParser";
|
import { DecimalLiteralContext } from "./ImpalaSqlParser";
|
||||||
import { DoubleLiteralContext } from "./ImpalaSqlParser";
|
import { DoubleLiteralContext } from "./ImpalaSqlParser";
|
||||||
@ -78,6 +78,9 @@ import { LogicalNotContext } from "./ImpalaSqlParser";
|
|||||||
import { LogicalBinaryContext } from "./ImpalaSqlParser";
|
import { LogicalBinaryContext } from "./ImpalaSqlParser";
|
||||||
import { ProgramContext } from "./ImpalaSqlParser";
|
import { ProgramContext } from "./ImpalaSqlParser";
|
||||||
import { StatementContext } from "./ImpalaSqlParser";
|
import { StatementContext } from "./ImpalaSqlParser";
|
||||||
|
import { SqlStatementsContext } from "./ImpalaSqlParser";
|
||||||
|
import { EmptyStatementContext } from "./ImpalaSqlParser";
|
||||||
|
import { SqlStatementContext } from "./ImpalaSqlParser";
|
||||||
import { UseStatementContext } from "./ImpalaSqlParser";
|
import { UseStatementContext } from "./ImpalaSqlParser";
|
||||||
import { CreateStatementContext } from "./ImpalaSqlParser";
|
import { CreateStatementContext } from "./ImpalaSqlParser";
|
||||||
import { CreateTableSelectContext } from "./ImpalaSqlParser";
|
import { CreateTableSelectContext } from "./ImpalaSqlParser";
|
||||||
@ -339,12 +342,12 @@ export interface ImpalaSqlParserVisitor<Result> extends ParseTreeVisitor<Result>
|
|||||||
visitREGEXP?: (ctx: REGEXPContext) => Result;
|
visitREGEXP?: (ctx: REGEXPContext) => Result;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Visit a parse tree produced by the `nullPredicate`
|
* Visit a parse tree produced by the `nullOrUnKnownOrBooleanPredicate`
|
||||||
* labeled alternative in `ImpalaSqlParser.predicate`.
|
* labeled alternative in `ImpalaSqlParser.predicate`.
|
||||||
* @param ctx the parse tree
|
* @param ctx the parse tree
|
||||||
* @return the visitor result
|
* @return the visitor result
|
||||||
*/
|
*/
|
||||||
visitNullPredicate?: (ctx: NullPredicateContext) => Result;
|
visitNullOrUnKnownOrBooleanPredicate?: (ctx: NullOrUnKnownOrBooleanPredicateContext) => Result;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Visit a parse tree produced by the `distinctFrom`
|
* Visit a parse tree produced by the `distinctFrom`
|
||||||
@ -864,6 +867,27 @@ export interface ImpalaSqlParserVisitor<Result> extends ParseTreeVisitor<Result>
|
|||||||
*/
|
*/
|
||||||
visitStatement?: (ctx: StatementContext) => Result;
|
visitStatement?: (ctx: StatementContext) => Result;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Visit a parse tree produced by `ImpalaSqlParser.sqlStatements`.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
* @return the visitor result
|
||||||
|
*/
|
||||||
|
visitSqlStatements?: (ctx: SqlStatementsContext) => Result;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Visit a parse tree produced by `ImpalaSqlParser.emptyStatement`.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
* @return the visitor result
|
||||||
|
*/
|
||||||
|
visitEmptyStatement?: (ctx: EmptyStatementContext) => Result;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Visit a parse tree produced by `ImpalaSqlParser.sqlStatement`.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
* @return the visitor result
|
||||||
|
*/
|
||||||
|
visitSqlStatement?: (ctx: SqlStatementContext) => Result;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Visit a parse tree produced by `ImpalaSqlParser.useStatement`.
|
* Visit a parse tree produced by `ImpalaSqlParser.useStatement`.
|
||||||
* @param ctx the parse tree
|
* @param ctx the parse tree
|
||||||
|
@ -1,7 +1,11 @@
|
|||||||
import { Token } from 'antlr4ts';
|
import { Token } from 'antlr4ts';
|
||||||
import { CandidatesCollection } from 'antlr4-c3';
|
import { CandidatesCollection } from 'antlr4-c3';
|
||||||
import { ImpalaSqlLexer } from '../lib/impala/ImpalaSqlLexer';
|
import { ImpalaSqlLexer } from '../lib/impala/ImpalaSqlLexer';
|
||||||
import { ImpalaSqlParser, ProgramContext, StatementContext } from '../lib/impala/ImpalaSqlParser';
|
import {
|
||||||
|
ImpalaSqlParser,
|
||||||
|
ProgramContext,
|
||||||
|
SqlStatementContext,
|
||||||
|
} from '../lib/impala/ImpalaSqlParser';
|
||||||
import BasicParser from './common/basicParser';
|
import BasicParser from './common/basicParser';
|
||||||
import { ImpalaSqlParserListener } from '../lib/impala/ImpalaSqlParserListener';
|
import { ImpalaSqlParserListener } from '../lib/impala/ImpalaSqlParserListener';
|
||||||
import { SyntaxContextType, Suggestions, SyntaxSuggestion } from './common/basic-parser-types';
|
import { SyntaxContextType, Suggestions, SyntaxSuggestion } from './common/basic-parser-types';
|
||||||
@ -125,13 +129,13 @@ export default class ImpalaSQL extends BasicParser<
|
|||||||
}
|
}
|
||||||
|
|
||||||
export class ImpalaSqlSplitListener implements ImpalaSqlParserListener {
|
export class ImpalaSqlSplitListener implements ImpalaSqlParserListener {
|
||||||
private _statementContext: StatementContext[] = [];
|
private _statementContext: SqlStatementContext[] = [];
|
||||||
|
|
||||||
exitStatement = (ctx: StatementContext) => {
|
exitSqlStatement = (ctx: SqlStatementContext) => {
|
||||||
this._statementContext.push(ctx);
|
this._statementContext.push(ctx);
|
||||||
};
|
};
|
||||||
|
|
||||||
enterStatement = (ctx: StatementContext) => {};
|
enterSqlStatement = (ctx: SqlStatementContext) => {};
|
||||||
|
|
||||||
get statementsContext() {
|
get statementsContext() {
|
||||||
return this._statementContext;
|
return this._statementContext;
|
||||||
|
@ -9,7 +9,7 @@ describe('impala SQL Listener Tests', () => {
|
|||||||
|
|
||||||
const parseTree = parser.parse(sql);
|
const parseTree = parser.parse(sql);
|
||||||
|
|
||||||
test('Listener enterTableName', async () => {
|
test('Listener enterTableNamePath', async () => {
|
||||||
let result = '';
|
let result = '';
|
||||||
class MyListener implements ImpalaSqlParserListener {
|
class MyListener implements ImpalaSqlParserListener {
|
||||||
enterTableNamePath = (ctx): void => {
|
enterTableNamePath = (ctx): void => {
|
||||||
@ -21,4 +21,24 @@ describe('impala SQL Listener Tests', () => {
|
|||||||
await parser.listen(listenTableName as ParseTreeListener, parseTree);
|
await parser.listen(listenTableName as ParseTreeListener, parseTree);
|
||||||
expect(result).toBe(expectTableName);
|
expect(result).toBe(expectTableName);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('Listener sql', async () => {
|
||||||
|
const sql = `SELECT id FROM games ORDER BY score DESC;\nSHOW SCHEMAS LIKE 'xxx';`;
|
||||||
|
const sqlSlices = parser.splitSQLByStatement(sql);
|
||||||
|
expect(sqlSlices.length).toBe(2);
|
||||||
|
|
||||||
|
expect(sqlSlices[0].text).toBe('SELECT id FROM games ORDER BY score DESC;');
|
||||||
|
expect(sql.slice(sqlSlices[0].startIndex, sqlSlices[0].endIndex + 1)).toBe(
|
||||||
|
sqlSlices[0].text
|
||||||
|
);
|
||||||
|
expect(sqlSlices[0].startLine).toBe(1);
|
||||||
|
expect(sqlSlices[0].endLine).toBe(1);
|
||||||
|
|
||||||
|
expect(sqlSlices[1].text).toBe(`SHOW SCHEMAS LIKE 'xxx';`);
|
||||||
|
expect(sql.slice(sqlSlices[1].startIndex, sqlSlices[1].endIndex + 1)).toBe(
|
||||||
|
sqlSlices[1].text
|
||||||
|
);
|
||||||
|
expect(sqlSlices[1].startLine).toBe(2);
|
||||||
|
expect(sqlSlices[1].endLine).toBe(2);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
@ -189,3 +189,28 @@ select appx_median(x) from million_numbers;
|
|||||||
select count(x) as higher from million_numbers where x > (select appx_median(x) from million_numbers);
|
select count(x) as higher from million_numbers where x > (select appx_median(x) from million_numbers);
|
||||||
|
|
||||||
select avg(length(s)) from t1;
|
select avg(length(s)) from t1;
|
||||||
|
|
||||||
|
select 'fooBar' ilike 'FOOBAR';
|
||||||
|
|
||||||
|
select 'ABCXYZ' not ilike 'ab_xyz';
|
||||||
|
|
||||||
|
select 1 not in (1,null,2,3);
|
||||||
|
|
||||||
|
SELECT c1 AS "starts with vowel" FROM t2 WHERE upper(substr(c1,1,1)) IN ('A','E','I','O','U');
|
||||||
|
|
||||||
|
select 'abcABCaabbcc' iregexp '^[a-c]+$';
|
||||||
|
|
||||||
|
select null is distinct from null, null != null;
|
||||||
|
|
||||||
|
select
|
||||||
|
'x' is distinct from 'x ' as string_with_trailing_spaces,
|
||||||
|
cast('x' as char(5)) is distinct from cast('x ' as char(5)) as char_with_trailing_spaces;
|
||||||
|
|
||||||
|
select assertion, b, b is true, b is false, b is unknown
|
||||||
|
from boolean_test;
|
||||||
|
|
||||||
|
select true and null;
|
||||||
|
|
||||||
|
select c_first_name, c_last_name from customer where lower(trim(c_last_name)) regexp '^de.*';
|
||||||
|
|
||||||
|
select c_first_name, c_last_name from customer where lower(trim(c_last_name)) rlike '^de.*';
|
@ -11,7 +11,7 @@ describe('impala SQL Visitor Tests', () => {
|
|||||||
console.log('Parse error:', error);
|
console.log('Parse error:', error);
|
||||||
});
|
});
|
||||||
|
|
||||||
test('Visitor visitTableName', () => {
|
test('Visitor visitTableNamePath', () => {
|
||||||
let result = '';
|
let result = '';
|
||||||
class MyVisitor
|
class MyVisitor
|
||||||
extends AbstractParseTreeVisitor<any>
|
extends AbstractParseTreeVisitor<any>
|
||||||
|
Loading…
Reference in New Issue
Block a user