Skip to content

Commit dfc938c

Browse files
committed
fixed more statement tests
1 parent b2d2399 commit dfc938c

File tree

3 files changed

+27
-11
lines changed

3 files changed

+27
-11
lines changed

jdbc-v2/src/main/antlr4/com/clickhouse/jdbc/internal/parser/ClickHouseLexer.g4

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,7 @@ ENGINES : E N G I N E S;
100100
ESTIMATE : E S T I M A T E;
101101
EVENTS : E V E N T S;
102102
EXCEPT : E X C E P T;
103+
EXCHANGE : E X C H A N G E;
103104
EXISTS : E X I S T S;
104105
EXPLAIN : E X P L A I N;
105106
EXPRESSION : E X P R E S S I O N;
@@ -241,6 +242,7 @@ REVOKE : R E V O K E;
241242
QUARTER : Q U A R T E R;
242243
QUEUE : Q U E U E ;
243244
QUEUES : Q U E U E S ;
245+
QUERY_SQL : Q U E R Y; // conflicts with '?'
244246
QUOTA : Q U O T A;
245247
QUOTAS : Q U O T A S ;
246248
RABBITMQ : R A B B I T M Q;

jdbc-v2/src/main/antlr4/com/clickhouse/jdbc/internal/parser/ClickHouseParser.g4

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ query
4040
| ctes? selectStmt
4141
| grantStmt
4242
| revokeStmt
43+
| exchangeStmt
4344
;
4445

4546
// CTE statement
@@ -368,10 +369,12 @@ describeStmt
368369
// DROP statement
369370

370371
dropStmt
371-
: (DETACH | DROP) DATABASE (IF EXISTS)? databaseIdentifier clusterClause? # DropDatabaseStmt
372-
| (DETACH | DROP) (DICTIONARY | TEMPORARY? TABLE | VIEW | ROLE | USER) (IF EXISTS)? tableIdentifier clusterClause? (
373-
NO DELAY
374-
)? # DropTableStmt
372+
: (DETACH | DROP) DATABASE (IF EXISTS)? databaseIdentifier clusterClause? SYNC?
373+
| (DETACH | DROP) (DICTIONARY | TEMPORARY? TABLE | VIEW) (IF EXISTS)? tableIdentifier clusterClause?
374+
(NO DELAY)? SYNC?
375+
| (DETACH | DROP) (USER | ROLE | QUOTA | SETTINGS? PROFILE) (IF EXISTS)? identifier clusterClause? (FROM identifier)?
376+
| (DETACH | DROP) ROW? POLICY (IF EXISTS)? identifier ON grantTableIdentifier (COMMA grantTableIdentifier)* clusterClause? (FROM identifier)?
377+
| (DETACH | DROP) (FUNCTION | NAMED COLLECTION) (IF EXISTS)? identifier clusterClause?
375378
;
376379

377380
// EXISTS statement
@@ -419,7 +422,8 @@ assignmentValue
419422
// KILL statement
420423

421424
killStmt
422-
: KILL MUTATION clusterClause? whereClause (SYNC | ASYNC | TEST)? # KillMutationStmt
425+
: KILL MUTATION clusterClause? whereClause (SYNC | ASYNC | TEST)? (FORMAT identifier)? # KillMutationStmt
426+
| KILL QUERY_SQL clusterClause? whereClause (SYNC | ASYNC | TEST)? (FORMAT identifier)? # KillQueryStmt
423427
;
424428

425429
// OPTIMIZE statement
@@ -432,6 +436,7 @@ optimizeStmt
432436

433437
renameStmt
434438
: RENAME TABLE tableIdentifier TO tableIdentifier (COMMA tableIdentifier TO tableIdentifier)* clusterClause?
439+
| RENAME
435440
;
436441

437442
// PROJECTION SELECT statement
@@ -608,6 +613,12 @@ winFrameBound
608613

609614
//rangeClause: RANGE LPAREN (MIN identifier MAX identifier | MAX identifier MIN identifier) RPAREN;
610615

616+
// EXCHANGE statement
617+
exchangeStmt
618+
: EXCHANGE (TABLES|DICTIONARIES) tableIdentifier AND tableIdentifier clusterClause?
619+
;
620+
621+
611622
// SET statement
612623

613624
setStmt
@@ -627,11 +638,9 @@ setRolesList
627638
// GRANT statements
628639

629640
grantStmt
630-
: GRANT clusterClause? identifier (COMMA identifier)* TO (CURRENT_USER | identifier (COMMA identifier)*)
631-
(WITH ADMIN OPTION)? (WITH REPLACE OPTION)?
632-
| GRANT clusterClause? privelegeList ON grantTableIdentifier
641+
: GRANT clusterClause? ((identifier (COMMA identifier)*) | (privelegeList ON grantTableIdentifier))
633642
TO (CURRENT_USER | identifier) (COMMA identifier)*
634-
(WITH GRANT OPTION)? (WITH REPLACE OPTION)?
643+
(WITH ADMIN OPTION)? (WITH GRANT OPTION)? (WITH REPLACE OPTION)?
635644
| GRANT CURRENT GRANTS (LPAREN ((privelegeList ON grantTableIdentifier) | (identifier (COMMA identifier)*)) RPAREN)?
636645
TO (CURRENT_USER | identifier (COMMA identifier)*)
637646
(WITH GRANT OPTION)? (WITH REPLACE OPTION)?
@@ -1250,6 +1259,7 @@ keyword
12501259
| PRECEDING
12511260
| PREWHERE
12521261
| PRIMARY
1262+
| PROFILE
12531263
| RANGE
12541264
| RELOAD
12551265
| REMOVE

jdbc-v2/src/test/java/com/clickhouse/jdbc/internal/SqlParserTest.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -556,7 +556,8 @@ public static Object[][] testStatementWithoutResultSetDP() {
556556
{"GRANT SELECT ON db.* TO john", 0, false},
557557
{"GRANT ON CLUSTER `default` SELECT(a, b) ON db1.tableA TO `user` WITH GRANT OPTION WITH REPLACE OPTION", 0, false},
558558
{"GRANT SELECT ON db.* TO user01 WITH REPLACE OPTION", 0, false},
559-
{"GRANT ON CLUSTER role1, role2 TO `user01` WITH ADMIN OPTION WITH REPLACE OPTION", 0, false},
559+
{"GRANT ON CLUSTER `default` role1, role2 TO `user01` WITH ADMIN OPTION WITH REPLACE OPTION", 0, false},
560+
{"GRANT role1, role2 TO `user01` WITH ADMIN OPTION WITH REPLACE OPTION", 0, false},
560561
{"GRANT CURRENT GRANTS TO user01", 0, false},
561562
{"REVOKE SELECT(a,b) ON db1.tableA FROM `user01`", 0, false},
562563
{"REVOKE SELECT ON db1.* FROM ALL", 0, false},
@@ -577,7 +578,9 @@ public static Object[][] testStatementWithoutResultSetDP() {
577578
{"DROP TABLE `db1`.`table01`", 0, false},
578579
{"DROP DICTIONARY `dict1`", 0, false},
579580
{"DROP ROLE IF EXISTS `role01`", 0 , false},
580-
{"DROP POLICY IF EXISTS `pol1`", 0, false},
581+
{"DROP POLICY IF EXISTS `pol1` ON db1.table1 ON CLUSTER `default` FROM `test`", 0, false},
582+
{"DROP POLICY IF EXISTS `pol1` ON db1.table1 ON CLUSTER `default`", 0, false},
583+
{"DROP POLICY IF EXISTS `pol1` ON table1", 0, false},
581584
{"DROP QUOTA IF EXISTS q1", 0, false},
582585
{"DROP SETTINGS PROFILE IF EXISTS `profile1` ON CLUSTER `default`", 0, false},
583586
{"DROP VIEW view1 ON CLUSTER `default` SYNC", 0, false},
@@ -607,6 +610,7 @@ public static Object[][] testStatementWithoutResultSetDP() {
607610
{"EXCHANGE DICTIONARIES dict1 AND dict2 ON CLUSTER `default`", 0, false},
608611
{"SET profile = 'profile-name-from-the-settings-file'", 0, false},
609612
{"SET use_some_feature_flag", 0, false},
613+
{"SET use_some_feature_flag = 'true'", 0, false},
610614
{"SET ROLE role1", 0, false},
611615
{"SET DEFAULT ROLE role1 TO user", 0, false},
612616
{"SET DEFAULT ROLE NONE TO user", 0, false},

0 commit comments

Comments
 (0)