Skip to content

Commit ae813da

Browse files
baslo2AXEPOH
authored andcommitted
[DBTOOLS-1772] Improved ClickHouse parser
1 parent cd03090 commit ae813da

File tree

4 files changed

+37
-14
lines changed

4 files changed

+37
-14
lines changed

src/main/antlr4/org/pgcodekeeper/core/parsers/antlr/ch/generated/CHLexer.g4

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,14 @@ import org.pgcodekeeper.core.parsers.antlr.base.CodeUnitLexer;
1313

1414

1515
// case sensitive data types
16-
16+
ADDRESS_TO_LINE options { caseInsensitive = false; } : 'addressToLine';
17+
ADDRESS_TO_LINE_WITH_IN_LINES options { caseInsensitive = false; } : 'addressToLineWithInlines';
18+
ADDRESS_TO_SYMBOL options { caseInsensitive = false; } : 'addressToSymbol';
1719
AGGREGATE_FUNCTION options { caseInsensitive = false; } : 'Simple'? 'AggregateFunction';
1820
// ARRAY_TYPE: 'Array';
21+
DEMANGLE options { caseInsensitive = false; } : 'demangle';
22+
DICTGET options { caseInsensitive = false; } : 'dictGet';
23+
DISPLAY_SECRETS_IN_SHOW_AND_SELECT options { caseInsensitive = false; } : 'displaySecretsInShowAndSelect';
1924
ENUM options { caseInsensitive = false; } : 'Enum' ('8'|'16') | [eE] [nN] [uU] [mM];
2025
FIXED_STRING options { caseInsensitive = false; } : 'FixedString';
2126
FLOAT options { caseInsensitive = false; } : 'Float' ('32' | '64') | [fF] [lL] [oO] [aA] [tT];
@@ -102,6 +107,7 @@ CN: 'CN';
102107
CODEC: 'CODEC';
103108
COLLATE: 'COLLATE';
104109
COLLECTION: 'COLLECTION';
110+
COLLECTIONS: 'COLLECTIONS';
105111
COLUMN: 'COLUMN';
106112
COLUMNS: 'COLUMNS';
107113
COMMENT: 'COMMENT';
@@ -133,7 +139,6 @@ DESCENDING: 'DESCENDING';
133139
DESCRIBE: 'DESCRIBE';
134140
DETACH: 'DETACH';
135141
DETACHED: 'DETACHED';
136-
DICTGET: 'DICTGET';
137142
DICTIONARIES: 'DICTIONARIES';
138143
DICTIONARY: 'DICTIONARY';
139144
DISK: 'DISK';
@@ -341,6 +346,7 @@ ROW: 'ROW';
341346
ROWS: 'ROWS';
342347
SAMPLE: 'SAMPLE';
343348
SECOND: 'SECOND' 'S'?;
349+
SECRETS: 'SECRETS';
344350
SECURITY: 'SECURITY';
345351
SELECT: 'SELECT';
346352
SEMI: 'SEMI';
@@ -350,6 +356,7 @@ SET: 'SET';
350356
SETS: 'SETS';
351357
SETTING: 'SETTING';
352358
SETTINGS: 'SETTINGS';
359+
SHARDS: 'SHARDS';
353360
SHOW: 'SHOW';
354361
SHUTDOWN: 'SHUTDOWN';
355362
SIGNED: 'SIGNED';
@@ -394,6 +401,7 @@ TYPE: 'TYPE';
394401
UNBOUNDED: 'UNBOUNDED';
395402
UNFREEZE: 'UNFREEZE';
396403
UNCOMPRESSED: 'UNCOMPRESSED';
404+
UNDROP: 'UNDROP';
397405
UNION: 'UNION';
398406
UNSIGNED: 'UNSIGNED';
399407
UNTIL: 'UNTIL';

src/main/antlr4/org/pgcodekeeper/core/parsers/antlr/ch/generated/CHParser.g4

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -147,12 +147,13 @@ permission
147147
| CREATE (object_type | DICTIONARY | FUNCTION | ARBITRARY? TEMPORARY TABLE)?
148148
| DELETE
149149
| DICTGET
150+
| DISPLAY_SECRETS_IN_SHOW_AND_SELECT
150151
| DROP (object_type | DICTIONARY | FUNCTION)?
151152
| source_privilige
152153
| INSERT
153-
| INTROSPECTION
154+
| INTROSPECTION (ADDRESS_TO_LINE | ADDRESS_TO_LINE_WITH_IN_LINES | ADDRESS_TO_SYMBOL | DEMANGLE)?
154155
| KILL (QUERY | TRANSACTION)
155-
// | MOVE PARTITION BETWEEN SHARDS
156+
| MOVE PARTITION BETWEEN SHARDS
156157
| NAMED COLLECTION ADMIN?
157158
| NONE
158159
| OPTIMIZE
@@ -161,7 +162,7 @@ permission
161162
| SET DEFINER
162163
| SHOW (COLUMNS | DATABASES | DICTIONARIES | QUOTAS | ROLES | ROW POLICIES | TABLES | USERS
163164
| ACCESS | FILESYSTEM CACHES | SETTINGS PROFILES)?
164-
// | SHOW NAMED COLLECTIONS SECRETS?
165+
| SHOW NAMED COLLECTIONS SECRETS?
165166
| SOURCES
166167
| SYSTEM
167168
// | SYSTEM CLEANUP
@@ -191,13 +192,8 @@ permission
191192
// | SYSTEM VIRTUAL PARTS UPDATE
192193
// | SYSTEM WAIT LOADING PARTS
193194
| TRUNCATE
194-
// | UNDROP TABLE
195+
| UNDROP TABLE
195196
| USAGE
196-
// | addressToLine
197-
// | addressToLineWithInlines
198-
// | addressToSymbol
199-
// | demangle
200-
// | displaySecretsInShowAndSelect
201197
;
202198

203199
object_type
@@ -699,7 +695,6 @@ table_column_def
699695
data_type_expr
700696
: not_null? table_column_property_expr
701697
| data_type not_null? table_column_property_expr?
702-
| IDENTIFIER NULL table_column_property_expr
703698
;
704699

705700
comment_expr
@@ -1291,6 +1286,9 @@ tokens_nonreserved
12911286
: ACCESS
12921287
| ADD
12931288
| ADMIN
1289+
| ADDRESS_TO_LINE
1290+
| ADDRESS_TO_LINE_WITH_IN_LINES
1291+
| ADDRESS_TO_SYMBOL
12941292
| AFTER
12951293
| AGGREGATE_FUNCTION
12961294
| ALIAS
@@ -1333,6 +1331,7 @@ tokens_nonreserved
13331331
| CODEC
13341332
| COLLATE
13351333
| COLLECTION
1334+
| COLLECTIONS
13361335
| COLUMN
13371336
| COLUMNS
13381337
| COMMENT
@@ -1357,6 +1356,7 @@ tokens_nonreserved
13571356
| DELAY
13581357
| DELETE
13591358
| DELETED
1359+
| DEMANGLE
13601360
| DESC
13611361
| DESCENDING
13621362
| DESCRIBE
@@ -1554,13 +1554,15 @@ tokens_nonreserved
15541554
| ROLLUP
15551555
| ROW
15561556
| ROWS
1557+
| SECRETS
15571558
| SECURITY
15581559
| SELECT
15591560
| SENDS
15601561
| SERVER
15611562
| SET
15621563
| SETS
15631564
| SETTING
1565+
| SHARDS
15641566
| SHOW
15651567
| SHUTDOWN
15661568
| SIGNED
@@ -1607,6 +1609,7 @@ tokens_nonreserved
16071609
| UNBOUNDED
16081610
| UNFREEZE
16091611
| UNCOMPRESSED
1612+
| UNDROP
16101613
| UNSIGNED
16111614
| UNTIL
16121615
| UPDATE

src/test/resources/org/pgcodekeeper/core/it/parser/ch/ch_privileges.sql

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,4 +50,10 @@ REVOKE SELECT(c1, c2, c3, c4, c5) ON db1.table1 FROM test_role_01073;
5050
REVOKE SELECT(col1) ON db.table FROM test_user_01074;
5151
REVOKE SELECT(col1, col2) ON db.table FROM test_user_01074;
5252
REVOKE SELECT(col2) ON db4.table FROM test_user_01073;
53-
GRANT AZURE, BACKUP, FILE, HDFS, HIVE, JDBC, KAFKA, MONGO, MYSQL, NATS, ODBC, POSTGRES, RABBITMQ, REDIS, REMOTE, S3, SQLITE, URL ON *.* TO username;
53+
GRANT AZURE, BACKUP, FILE, HDFS, HIVE, JDBC, KAFKA, MONGO, MYSQL, NATS, ODBC, POSTGRES, RABBITMQ, REDIS, REMOTE, S3, SQLITE, URL ON *.* TO username;
54+
GRANT INTROSPECTION addressToLine ON *.* TO userName;
55+
GRANT INTROSPECTION addressToLineWithInlines ON *.* TO userName;
56+
GRANT INTROSPECTION addressToSymbol ON *.* TO userName;
57+
GRANT INTROSPECTION demangle ON *.* TO userName;
58+
GRANT SHOW, SELECT, INSERT, ALTER, CREATE, DROP, UNDROP TABLE, TRUNCATE, OPTIMIZE, BACKUP, KILL QUERY, KILL TRANSACTION, MOVE PARTITION BETWEEN SHARDS, ACCESS MANAGEMENT, SYSTEM, dictGet, displaySecretsInShowAndSelect, INTROSPECTION, SOURCES, CLUSTER ON *.* TO default WITH GRANT OPTION;
59+
GRANT ALTER NAMED COLLECTION, CREATE NAMED COLLECTION, DROP NAMED COLLECTION, SHOW NAMED COLLECTIONS SECRETS, NAMED COLLECTION ON * TO default WITH GRANT OPTION;

src/test/resources/org/pgcodekeeper/core/it/parser/ch/ch_privileges_refs.txt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,4 +50,10 @@ Reference: action = REVOKE, offset = 2532, line number = 49, charPositionInLine
5050
Reference: action = REVOKE, offset = 2602, line number = 50, charPositionInLine = 0
5151
Reference: action = REVOKE, offset = 2656, line number = 51, charPositionInLine = 0
5252
Reference: action = REVOKE, offset = 2716, line number = 52, charPositionInLine = 0
53-
Reference: action = GRANT, offset = 2771, line number = 53, charPositionInLine = 0
53+
Reference: action = GRANT, offset = 2771, line number = 53, charPositionInLine = 0
54+
Reference: action = GRANT, offset = 2920, line number = 54, charPositionInLine = 0
55+
Reference: action = GRANT, offset = 2974, line number = 55, charPositionInLine = 0
56+
Reference: action = GRANT, offset = 3039, line number = 56, charPositionInLine = 0
57+
Reference: action = GRANT, offset = 3095, line number = 57, charPositionInLine = 0
58+
Reference: action = GRANT, offset = 3144, line number = 58, charPositionInLine = 0
59+
Reference: action = GRANT, offset = 3432, line number = 59, charPositionInLine = 0

0 commit comments

Comments
 (0)