Skip to content

Commit 0ef8069

Browse files
author
Erindcl
committed
feat(flink): add describe/explain/use/show statement and some test
1 parent d1259b4 commit 0ef8069

18 files changed

Lines changed: 13974 additions & 20771 deletions
Lines changed: 348 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,348 @@
1+
lexer grammar FlinkSqlLexer;
2+
3+
// SKIP
4+
5+
SPACE: [ \t\r\n]+ -> channel(HIDDEN);
6+
COMMENT_INPUT: '/*' .*? '*/' -> channel(HIDDEN);
7+
LINE_COMMENT: (
8+
('-- ' | '#') ~[\r\n]* ('\r'? '\n' | EOF)
9+
| '--' ('\r'? '\n' | EOF)
10+
) -> channel(HIDDEN);
11+
12+
13+
// Common Keywords
14+
15+
SELECT: 'SELECT';
16+
FROM: 'FROM';
17+
ADD: 'ADD';
18+
AS: 'AS';
19+
ALL: 'ALL';
20+
ANY: 'ANY';
21+
DISTINCT: 'DISTINCT';
22+
WHERE: 'WHERE';
23+
GROUP: 'GROUP';
24+
BY: 'BY';
25+
GROUPING: 'GROUPING';
26+
SETS: 'SETS';
27+
CUBE: 'CUBE';
28+
ROLLUP: 'ROLLUP';
29+
ORDER: 'ORDER';
30+
HAVING: 'HAVING';
31+
LIMIT: 'LIMIT';
32+
AT: 'AT';
33+
OR: 'OR';
34+
AND: 'AND';
35+
IN: 'IN';
36+
NOT: 'NOT';
37+
NO: 'NO';
38+
EXISTS: 'EXISTS';
39+
BETWEEN: 'BETWEEN';
40+
LIKE: 'LIKE';
41+
RLIKE: 'RLIKE';
42+
IS: 'IS';
43+
TRUE: 'TRUE';
44+
FALSE: 'FALSE';
45+
NULLS: 'NULLS';
46+
ASC: 'ASC';
47+
DESC: 'DESC';
48+
FOR: 'FOR';
49+
INTERVAL: 'INTERVAL';
50+
CASE: 'CASE';
51+
WHEN: 'WHEN';
52+
THEN: 'THEN';
53+
ELSE: 'ELSE';
54+
END: 'END';
55+
JOIN: 'JOIN';
56+
CROSS: 'CROSS';
57+
OUTER: 'OUTER';
58+
INNER: 'INNER';
59+
LEFT: 'LEFT';
60+
SEMI: 'SEMI';
61+
RIGHT: 'RIGHT';
62+
FULL: 'FULL';
63+
NATURAL: 'NATURAL';
64+
ON: 'ON';
65+
PIVOT: 'PIVOT';
66+
LATERAL: 'LATERAL';
67+
WINDOW: 'WINDOW';
68+
OVER: 'OVER';
69+
PARTITION: 'PARTITION';
70+
RANGE: 'RANGE';
71+
ROWS: 'ROWS';
72+
UNBOUNDED: 'UNBOUNDED';
73+
PRECEDING: 'PRECEDING';
74+
FOLLOWING: 'FOLLOWING';
75+
CURRENT: 'CURRENT';
76+
FIRST: 'FIRST';
77+
AFTER: 'AFTER';
78+
LAST: 'LAST';
79+
WITH: 'WITH';
80+
VALUES: 'VALUES';
81+
CREATE: 'CREATE';
82+
TABLE: 'TABLE';
83+
DIRECTORY: 'DIRECTORY';
84+
VIEW: 'VIEW';
85+
REPLACE: 'REPLACE';
86+
INSERT: 'INSERT';
87+
DELETE: 'DELETE';
88+
INTO: 'INTO';
89+
DESCRIBE: 'DESCRIBE';
90+
EXPLAIN: 'EXPLAIN';
91+
FORMAT: 'FORMAT';
92+
LOGICAL: 'LOGICAL';
93+
CODEGEN: 'CODEGEN';
94+
COST: 'COST';
95+
CAST: 'CAST';
96+
SHOW: 'SHOW';
97+
TABLES: 'TABLES';
98+
COLUMNS: 'COLUMNS';
99+
COLUMN: 'COLUMN';
100+
USE: 'USE';
101+
PARTITIONS: 'PARTITIONS';
102+
FUNCTIONS: 'FUNCTIONS';
103+
DROP: 'DROP';
104+
UNION: 'UNION';
105+
EXCEPT: 'EXCEPT';
106+
SETMINUS: 'SETMINUS';
107+
INTERSECT: 'INTERSECT';
108+
TO: 'TO';
109+
TABLESAMPLE: 'TABLESAMPLE';
110+
STRATIFY: 'STRATIFY';
111+
ALTER: 'ALTER';
112+
RENAME: 'RENAME';
113+
STRUCT: 'STRUCT';
114+
COMMENT: 'COMMENT';
115+
SET: 'SET';
116+
RESET: 'RESET';
117+
DATA: 'DATA';
118+
START: 'START';
119+
TRANSACTION: 'TRANSACTION';
120+
COMMIT: 'COMMIT';
121+
ROLLBACK: 'ROLLBACK';
122+
MACRO: 'MACRO';
123+
IGNORE: 'IGNORE';
124+
BOTH: 'BOTH';
125+
LEADING: 'LEADING';
126+
TRAILING: 'TRAILING';
127+
IF: 'IF';
128+
POSITION: 'POSITION';
129+
EXTRACT: 'EXTRACT';
130+
EQ: 'EQ';
131+
NSEQ: 'NSEQ';
132+
NEQ: 'NEQ';
133+
NEQJ: 'NEQJ';
134+
LT: 'LT';
135+
LTE: 'LTE';
136+
GT: 'GT';
137+
GTE: 'GTE';
138+
PLUS: 'PLUS';
139+
MINUS: 'MINUS';
140+
ASTERISK: 'ASTERISK';
141+
SLASH: 'SLASH';
142+
PERCENT: 'PERCENT';
143+
DIV: 'DIV';
144+
TILDE: 'TILDE';
145+
AMPERSAND: 'AMPERSAND';
146+
PIPE: 'PIPE';
147+
CONCAT_PIPE: 'CONCAT_PIPE';
148+
HAT: 'HAT';
149+
PERCENTLIT: 'PERCENTLIT';
150+
BUCKET: 'BUCKET';
151+
OUT: 'OUT';
152+
OF: 'OF';
153+
SORT: 'SORT';
154+
CLUSTER: 'CLUSTER';
155+
DISTRIBUTE: 'DISTRIBUTE';
156+
OVERWRITE: 'OVERWRITE';
157+
TRANSFORM: 'TRANSFORM';
158+
REDUCE: 'REDUCE';
159+
USING: 'USING';
160+
SERDE: 'SERDE';
161+
SERDEPROPERTIES: 'SERDEPROPERTIES';
162+
RECORDREADER: 'RECORDREADER';
163+
RECORDWRITER: 'RECORDWRITER';
164+
DELIMITED: 'DELIMITED';
165+
FIELDS: 'FIELDS';
166+
TERMINATED: 'TERMINATED';
167+
COLLECTION: 'COLLECTION';
168+
ITEMS: 'ITEMS';
169+
KEYS: 'KEYS';
170+
ESCAPED: 'ESCAPED';
171+
LINES: 'LINES';
172+
SEPARATED: 'SEPARATED';
173+
FUNCTION: 'FUNCTION';
174+
EXTENDED: 'EXTENDED';
175+
REFRESH: 'REFRESH';
176+
CLEAR: 'CLEAR';
177+
CACHE: 'CACHE';
178+
UNCACHE: 'UNCACHE';
179+
LAZY: 'LAZY';
180+
FORMATTED: 'FORMATTED';
181+
GLOBAL: 'GLOBAL';
182+
TEMPORARY: 'TEMPORARY';
183+
OPTIONS: 'OPTIONS';
184+
UNSET: 'UNSET';
185+
TBLPROPERTIES: 'TBLPROPERTIES';
186+
DBPROPERTIES: 'DBPROPERTIES';
187+
BUCKETS: 'BUCKETS';
188+
SKEWED: 'SKEWED';
189+
STORED: 'STORED';
190+
DIRECTORIES: 'DIRECTORIES';
191+
LOCATION: 'LOCATION';
192+
EXCHANGE: 'EXCHANGE';
193+
ARCHIVE: 'ARCHIVE';
194+
UNARCHIVE: 'UNARCHIVE';
195+
FILEFORMAT: 'FILEFORMAT';
196+
TOUCH: 'TOUCH';
197+
COMPACT: 'COMPACT';
198+
CONCATENATE: 'CONCATENATE';
199+
CHANGE: 'CHANGE';
200+
CASCADE: 'CASCADE';
201+
RESTRICT: 'RESTRICT';
202+
CLUSTERED: 'CLUSTERED';
203+
SORTED: 'SORTED';
204+
PURGE: 'PURGE';
205+
INPUTFORMAT: 'INPUTFORMAT';
206+
OUTPUTFORMAT: 'OUTPUTFORMAT';
207+
DATABASE: 'DATABASE';
208+
DATABASES: 'DATABASES';
209+
DFS: 'DFS';
210+
TRUNCATE: 'TRUNCATE';
211+
ANALYZE: 'ANALYZE';
212+
COMPUTE: 'COMPUTE';
213+
LIST: 'LIST';
214+
STATISTICS: 'STATISTICS';
215+
PARTITIONED: 'PARTITIONED';
216+
EXTERNAL: 'EXTERNAL';
217+
DEFINED: 'DEFINED';
218+
REVOKE: 'REVOKE';
219+
GRANT: 'GRANT';
220+
LOCK: 'LOCK';
221+
UNLOCK: 'UNLOCK';
222+
MSCK: 'MSCK';
223+
REPAIR: 'REPAIR';
224+
RECOVER: 'RECOVER';
225+
EXPORT: 'EXPORT';
226+
IMPORT: 'IMPORT';
227+
LOAD: 'LOAD';
228+
ROLE: 'ROLE';
229+
ROLES: 'ROLES';
230+
COMPACTIONS: 'COMPACTIONS';
231+
PRINCIPALS: 'PRINCIPALS';
232+
TRANSACTIONS: 'TRANSACTIONS';
233+
INDEX: 'INDEX';
234+
INDEXES: 'INDEXES';
235+
LOCKS: 'LOCKS';
236+
OPTION: 'OPTION';
237+
ANTI: 'ANTI';
238+
LOCAL: 'LOCAL';
239+
INPATH: 'INPATH';
240+
WATERMARK: 'WATERMARK';
241+
UNNEST: 'UNNEST';
242+
MATCH_RECOGNIZE: 'MATCH_RECOGNIZE';
243+
MEASURES: 'MEASURES';
244+
ONE: 'ONE';
245+
PER: 'PER';
246+
MATCH: 'MATCH';
247+
SKIP1: 'SKIP1';
248+
NEXT: 'NEXT';
249+
PAST: 'PAST';
250+
PATTERN: 'PATTERN';
251+
WITHIN: 'WITHIN';
252+
DEFINE: 'DEFINE';
253+
WS: 'WS';
254+
SYSTEM: 'SYSTEM';
255+
INCLUDING: 'INCLUDING';
256+
EXCLUDING: 'EXCLUDING';
257+
CONSTRAINTS: 'CONSTRAINTS';
258+
OVERWRITING: 'OVERWRITING';
259+
GENERATED: 'GENERATED';
260+
CATALOG: 'CATALOG';
261+
LANGUAGE: 'LANGUAGE';
262+
CATALOGS: 'CATALOGS';
263+
VIEWS: 'VIEWS';
264+
265+
266+
// DATA TYPE Keywords
267+
268+
STRING: 'STRING';
269+
ARRAY: 'ARRAY';
270+
MAP: 'MAP';
271+
CHAR: 'CHAR';
272+
VARCHAR: 'VARCHAR';
273+
BINARY: 'BINARY';
274+
VARBINARY: 'VARBINARY';
275+
BYTES: 'BYTES';
276+
DECIMAL: 'DECIMAL';
277+
TINYINT: 'TINYINT';
278+
SMALLINT: 'SMALLINT';
279+
INT: 'INT';
280+
BIGINT: 'BIGINT';
281+
FLOAT: 'FLOAT';
282+
DOUBLE: 'DOUBLE';
283+
DATE: 'DATE';
284+
TIME: 'TIME';
285+
TIMESTAMP: 'TIMESTAMP';
286+
MULTISET: 'MULTISET';
287+
BOOLEAN: 'BOOLEAN';
288+
RAW: 'RAW';
289+
ROW: 'ROW';
290+
NULL: 'NULL';
291+
292+
293+
// Operators. Comparation
294+
295+
EQUAL_SYMBOL: '=';
296+
GREATER_SYMBOL: '>';
297+
LESS_SYMBOL: '<';
298+
EXCLAMATION_SYMBOL: '!';
299+
300+
301+
// Operators. Bit
302+
303+
BIT_NOT_OP: '~';
304+
BIT_OR_OP: '|';
305+
BIT_AND_OP: '&';
306+
BIT_XOR_OP: '^';
307+
308+
309+
// Constructors symbols
310+
311+
DOT: '.';
312+
LS_BRACKET: '[';
313+
RS_BRACKET: ']';
314+
LR_BRACKET: '(';
315+
RR_BRACKET: ')';
316+
COMMA: ',';
317+
SEMICOLON: ';';
318+
AT_SIGN: '@';
319+
SINGLE_QUOTE_SYMB: '\'';
320+
DOUBLE_QUOTE_SYMB: '"';
321+
REVERSE_QUOTE_SYMB: '`';
322+
COLON_SYMB: ':';
323+
ASTERISK_SIGN: '*';
324+
UNDERLINE_SIGN: '_';
325+
HYPNEN_SIGN: '-';
326+
ADD_SIGN: '+';
327+
PENCENT_SIGN: '%';
328+
DOUBLE_VERTICAL_SIGN: '||';
329+
DOUBLE_HYPNEN_SIGN: '--';
330+
SLASH_SIGN: '/';
331+
DOT_ID: '.' ID_LITERAL;
332+
STRING_LITERAL: DQUOTA_STRING | SQUOTA_STRING | BQUOTA_STRING;
333+
DIG_LITERAL: DEC_DIGIT+;
334+
REAL_LITERAL: (DEC_DIGIT+)? '.' DEC_DIGIT+
335+
| DEC_DIGIT+ '.' EXPONENT_NUM_PART
336+
| (DEC_DIGIT+)? '.' (DEC_DIGIT+ EXPONENT_NUM_PART)
337+
| DEC_DIGIT+ EXPONENT_NUM_PART;
338+
BIT_STRING: BIT_STRING_L;
339+
ID: ID_LITERAL;
340+
341+
fragment EXPONENT_NUM_PART: 'E' [-+]? DEC_DIGIT+;
342+
fragment ID_LITERAL: [A-Z_0-9a-z]*?[A-Z_a-z]+?[A-Z_0-9a-z]*;
343+
fragment DEC_DIGIT: [0-9];
344+
fragment DEC_LETTER: [A-Za-z];
345+
fragment DQUOTA_STRING: '"' ( '\\'. | '""' | ~('"'| '\\') )* '"';
346+
fragment SQUOTA_STRING: '\'' ('\\'. | '\'\'' | ~('\'' | '\\'))* '\'';
347+
fragment BIT_STRING_L: 'B' '\'' [01]+ '\'';
348+
fragment BQUOTA_STRING: '`' ( '\\'. | '``' | ~('`'|'\\'))* '`';

0 commit comments

Comments
 (0)