Skip to content

Commit 950c07d

Browse files
committed
fixed missing statements syntax
1 parent 9f3eec9 commit 950c07d

File tree

8 files changed

+320
-31
lines changed

8 files changed

+320
-31
lines changed

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ jmh-result.*
4949
profile.html
5050
jdbc-v2/gen
5151
jdbc-v2/src/main/antlr4/com/clickhouse/jdbc/internal/gen
52-
52+
jdbc-v2/src/main/antlr4/com/clickhouse/jdbc/internal/ClickHouseLexer.tokens
5353

5454
# Shell scripts
5555
*.sh

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

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -228,6 +228,37 @@ WHERE : W H E R E;
228228
WINDOW : W I N D O W;
229229
WITH : W I T H;
230230
YEAR : Y E A R | Y Y Y Y;
231+
QUOTA : Q U O T A;
232+
ACCESS : A C C E S S;
233+
GRANT : G R A N T;
234+
WAIT : W A I T;
235+
CLEANUP : C L E A N U P;
236+
DEFINER : D E F I N E R;
237+
RESTART : R E S T A R T;
238+
SOURCES : S O U R C E S;
239+
AZURE : A Z U R E;
240+
FILE : F I L E;
241+
HDFS : H D F S;
242+
HIVE : H I V E;
243+
JDBC : J D B C;
244+
KAFKA : K A F K A;
245+
MONGO : M O N G O;
246+
MYSQL : M Y S Q L;
247+
NATS : N A T S;
248+
ODBC : O D B C;
249+
POSTGRES : P O S T G R E S;
250+
RABBITMQ : R A B B I T M Q;
251+
REDIS : R E D I S;
252+
REMOTE : R E M O T E;
253+
S3 : S '3';
254+
SQLITE : S Q L I T E;
255+
URL : U R L;
256+
LOADING : L O A D I N G;
257+
VIRTUAL : V I R T U A L;
258+
VIEWS : V I E W S;
259+
POLICY : P O L I C Y;
260+
PERMISSIVE : P E R M I S S I V E;
261+
RESTRICTIVE : R E S T R I C T I V E;
231262

232263
JSON_FALSE : 'false';
233264
JSON_TRUE : 'true';

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

Lines changed: 243 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ query
3636
| useStmt
3737
| watchStmt
3838
| ctes? selectStmt
39+
| grantStmt
3940
;
4041

4142
// CTE statement
@@ -148,8 +149,12 @@ createStmt
148149
validUntilClause?
149150
(DEFAULT ROLE identifier (COMMA identifier)*)?
150151
(DEFAULT DATABASE identifier | NONE)?
151-
152152
settingsClause? #CreateUserStmt
153+
| CREATE ROLE (IF NOT EXISTS | OR REPLACE)? identifier (COMMA identifier)* clusterClause?
154+
(IN identifier)? settingsClause? #CreateRoleStmt
155+
| CREATE (ROW)? POLICY (IF NOT EXISTS | OR REPLACE)? identifier clusterClause? ON tableIdentifier
156+
(IN identifier)? (AS (PERMISSIVE | RESTRICTIVE))? (FOR SELECT)? USING columnExpr
157+
(TO identifier | ALL | ALL EXCEPT identifier)? # CreatePolicyStmt
153158
;
154159

155160
userIdentifier
@@ -328,7 +333,7 @@ describeStmt
328333

329334
dropStmt
330335
: (DETACH | DROP) DATABASE (IF EXISTS)? databaseIdentifier clusterClause? # DropDatabaseStmt
331-
| (DETACH | DROP) (DICTIONARY | TEMPORARY? TABLE | VIEW) (IF EXISTS)? tableIdentifier clusterClause? (
336+
| (DETACH | DROP) (DICTIONARY | TEMPORARY? TABLE | VIEW | ROLE | USER) (IF EXISTS)? tableIdentifier clusterClause? (
332337
NO DELAY
333338
)? # DropTableStmt
334339
;
@@ -372,7 +377,7 @@ assignmentValue
372377
: literal # InsertRawValue
373378
| QUERY # InsertParameter
374379
| identifier (LPAREN columnExprList? RPAREN)? # InsertParameterFuncExpr
375-
380+
| LPAREN columnExpr RPAREN # InserParameterExpr
376381
;
377382

378383
// KILL statement
@@ -571,13 +576,245 @@ setStmt
571576
// SET ROLE statement
572577

573578
setRoleStmt
574-
: SET (DEFAULT)? ROLE (setRolesList | NONE | ALL (EXCEPT setRolesList)) TO identifier | CURRENT_USER (COMMA identifier | CURRENT_USER)*
579+
: SET (DEFAULT)? ROLE (setRolesList | NONE | ALL (EXCEPT setRolesList)) (TO identifier | CURRENT_USER (COMMA identifier | CURRENT_USER)*)?
575580
;
576581

577582
setRolesList
578583
: identifier (COMMA identifier)*
579584
;
580585

586+
grantStmt
587+
: GRANT clusterClause? ((privilege ON grantTableIdentifier) | (identifier (COMMA identifier)*))
588+
TO (CURRENT_USER | identifier) (COMMA identifier)*
589+
(WITH GRANT OPTION)? (WITH REPLACE OPTION)?
590+
;
591+
592+
grantTableIdentifier
593+
: (identifier DOT)? identifier
594+
| (identifier DOT)? ASTERISK
595+
| (ASTERISK DOT)? identifier
596+
| (ASTERISK DOT)? ASTERISK
597+
;
598+
599+
privilege
600+
:
601+
| ACCESS MANAGEMENT
602+
| ALLOW SQL SECURITY NONE
603+
| ROLE ADMIN
604+
| TABLE ENGINE
605+
| TRUNCATE
606+
| UNDROP TABLE
607+
| NONE
608+
| BACKUP
609+
| CLUSTER
610+
| INSERT
611+
| INTROSPECTION
612+
| KILL QUERY
613+
| KILL TRANSACTION
614+
| MOVE PARTITION BETWEEN SHARDS
615+
| NAMED COLLECTION ADMIN
616+
| ALTER NAMED COLLECTION
617+
| CREATE NAMED COLLECTION
618+
| NAMED COLLECTION
619+
| OPTIMIZE
620+
| SELECT
621+
| SET DEFINER
622+
| alterPrivilege
623+
| createPrivilege
624+
| dropPrivilege
625+
| showPrivilege
626+
| sourcePrivilege
627+
| systemPrivilege
628+
;
629+
630+
alterPrivilege
631+
:
632+
| ALTER QUOTA
633+
| ALTER ROLE
634+
| ALTER ROW POLICY
635+
| ALTER SETTINGS PROFILE
636+
| ALTER USER
637+
| ALTER
638+
| ALTER DATABASE
639+
| ALTER DATABASE SETTINGS
640+
| ALTER TABLE
641+
| ALTER COLUMN
642+
| ALTER ADD COLUMN
643+
| ALTER CLEAR COLUMN
644+
| ALTER COMMENT COLUMN
645+
| ALTER DROP COLUMN
646+
| ALTER MATERIALIZE COLUMN
647+
| ALTER MODIFY COLUMN
648+
| ALTER RENAME COLUMN
649+
| ALTER CONSTRAINT
650+
| ALTER ADD CONSTRAINT
651+
| ALTER DROP CONSTRAINT
652+
| ALTER DELETE
653+
| ALTER FETCH PARTITION
654+
| ALTER FREEZE PARTITION
655+
| ALTER INDEX
656+
| ALTER ADD INDEX
657+
| ALTER CLEAR INDEX
658+
| ALTER DROP INDEX
659+
| ALTER MATERIALIZE INDEX
660+
| ALTER ORDER BY
661+
| ALTER SAMPLE BY
662+
| ALTER MATERIALIZE TTL
663+
| ALTER MODIFY COMMENT
664+
| ALTER MOVE PARTITION
665+
| ALTER PROJECTION
666+
| ALTER SETTINGS
667+
| ALTER STATISTICS
668+
| ALTER ADD STATISTICS
669+
| ALTER DROP STATISTICS
670+
| ALTER MATERIALIZE STATISTICS
671+
| ALTER MODIFY STATISTICS
672+
| ALTER TTL
673+
| ALTER UPDATE
674+
| ALTER VIEW
675+
| ALTER VIEW MODIFY QUERY
676+
| ALTER VIEW REFRESH
677+
| ALTER VIEW MODIFY SQL SECURITY
678+
;
679+
680+
createPrivilege
681+
:CREATE QUOTA
682+
| CREATE ROLE
683+
| CREATE ROW POLICY
684+
| CREATE SETTINGS PROFILE
685+
| CREATE USER
686+
| CREATE
687+
| CREATE ARBITRARY TEMPORARY TABLE
688+
| CREATE TEMPORARY TABLE
689+
| CREATE DATABASE
690+
| CREATE DICTIONARY
691+
| CREATE FUNCTION
692+
| CREATE RESOURCE
693+
| CREATE TABLE
694+
| CREATE VIEW
695+
| CREATE WORKLOAD
696+
;
697+
698+
dropPrivilege
699+
: DROP QUOTA
700+
| DROP ROLE
701+
| DROP ROW POLICY
702+
| DROP SETTINGS PROFILE
703+
| DROP USER
704+
| DROP
705+
| DROP DATABASE
706+
| DROP DICTIONARY
707+
| DROP FUNCTION
708+
| DROP RESOURCE
709+
| DROP TABLE
710+
| DROP VIEW
711+
| DROP WORKLOAD
712+
| DROP NAMED COLLECTION
713+
;
714+
715+
showPrivilege
716+
: SHOW ACCESS
717+
| SHOW QUOTAS
718+
| SHOW ROLES
719+
| SHOW ROW POLICIES
720+
| SHOW SETTINGS PROFILES
721+
| SHOW USERS
722+
| SHOW
723+
| SHOW COLUMNS
724+
| SHOW DATABASES
725+
| SHOW DICTIONARIES
726+
| SHOW TABLES
727+
| SHOW FILESYSTEM CACHES
728+
| SHOW NAMED COLLECTIONS
729+
| SHOW NAMED COLLECTIONS SECRETS
730+
;
731+
732+
sourcePrivilege
733+
: SOURCES
734+
| AZURE
735+
| FILE
736+
| HDFS
737+
| HIVE
738+
| JDBC
739+
| KAFKA
740+
| MONGO
741+
| MYSQL
742+
| NATS
743+
| ODBC
744+
| POSTGRES
745+
| RABBITMQ
746+
| REDIS
747+
| REMOTE
748+
| S3
749+
| SQLITE
750+
| URL
751+
;
752+
753+
systemPrivilege
754+
: SYSTEM
755+
| SYSTEM CLEANUP
756+
| SYSTEM DROP CACHE
757+
| SYSTEM DROP COMPILED EXPRESSION CACHE
758+
| SYSTEM DROP CONNECTIONS CACHE
759+
| SYSTEM DROP DISTRIBUTED CACHE
760+
| SYSTEM DROP DNS CACHE
761+
| SYSTEM DROP FILESYSTEM CACHE
762+
| SYSTEM DROP FORMAT SCHEMA CACHE
763+
| SYSTEM DROP MARK CACHE
764+
| SYSTEM DROP MMAP CACHE
765+
| SYSTEM DROP PAGE CACHE
766+
| SYSTEM DROP PRIMARY INDEX CACHE
767+
| SYSTEM DROP QUERY CACHE
768+
| SYSTEM DROP S3 CLIENT CACHE
769+
| SYSTEM DROP SCHEMA CACHE
770+
| SYSTEM DROP UNCOMPRESSED CACHE
771+
| SYSTEM DROP PRIMARY INDEX CACHE
772+
| SYSTEM DROP REPLICA
773+
| SYSTEM FAILPOINT
774+
| SYSTEM FETCHES
775+
| SYSTEM FLUSH
776+
| SYSTEM FLUSH ASYNC INSERT QUEUE
777+
| SYSTEM FLUSH LOGS
778+
| SYSTEM JEMALLOC
779+
| SYSTEM KILL QUERY
780+
| SYSTEM KILL TRANSACTION
781+
| SYSTEM LISTEN
782+
| SYSTEM LOAD PRIMARY KEY
783+
| SYSTEM MERGES
784+
| SYSTEM MOVES
785+
| SYSTEM PULLING REPLICATION LOG
786+
| SYSTEM REDUCE BLOCKING PARTS
787+
| SYSTEM REPLICATION QUEUES
788+
| SYSTEM REPLICA READINESS
789+
| SYSTEM RESTART DISK
790+
| SYSTEM RESTART REPLICA
791+
| SYSTEM RESTORE REPLICA
792+
| SYSTEM RELOAD
793+
| SYSTEM RELOAD ASYNCHRONOUS METRICS
794+
| SYSTEM RELOAD CONFIG
795+
| SYSTEM RELOAD DICTIONARY
796+
| SYSTEM RELOAD EMBEDDED DICTIONARIES
797+
| SYSTEM RELOAD FUNCTION
798+
| SYSTEM RELOAD MODEL
799+
| SYSTEM RELOAD USERS
800+
| SYSTEM SENDS
801+
| SYSTEM DISTRIBUTED SENDS
802+
| SYSTEM REPLICATED SENDS
803+
| SYSTEM SHUTDOWN
804+
| SYSTEM SYNC DATABASE REPLICA
805+
| SYSTEM SYNC FILE CACHE
806+
| SYSTEM SYNC FILESYSTEM CACHE
807+
| SYSTEM SYNC REPLICA
808+
| SYSTEM SYNC TRANSACTION LOG
809+
| SYSTEM THREAD FUZZER
810+
| SYSTEM TTL MERGES
811+
| SYSTEM UNFREEZE
812+
| SYSTEM UNLOAD PRIMARY KEY
813+
| SYSTEM VIEWS
814+
| SYSTEM VIRTUAL PARTS UPDATE
815+
| SYSTEM WAIT LOADING PARTS
816+
;
817+
581818
// SHOW statements
582819

583820
showStmt
@@ -643,6 +880,7 @@ columnsExpr
643880
columnExpr
644881
: CASE columnExpr? (WHEN columnExpr THEN columnExpr)+ (ELSE columnExpr)? END # ColumnExprCase
645882
| CAST LPAREN columnExpr AS columnTypeExpr RPAREN # ColumnExprCast
883+
| columnExpr CAST_OP columnTypeExpr # ColumnExprCast2
646884
| DATE STRING_LITERAL # ColumnExprDate
647885
| EXTRACT LPAREN interval FROM columnExpr RPAREN # ColumnExprExtract
648886
| INTERVAL columnExpr interval? # ColumnExprInterval
@@ -693,8 +931,7 @@ columnExpr
693931
| LPAREN columnExprList RPAREN # ColumnExprTuple
694932
| LBRACKET columnExprList? RBRACKET # ColumnExprArray
695933
| columnIdentifier # ColumnExprIdentifier
696-
| QUERY # ColumnExprParam
697-
| QUERY CAST_OP identifier # ColumnExprParamWithCast
934+
| QUERY (CAST_OP identifier)? # ColumnExprParam
698935
;
699936

700937
columnArgList

jdbc-v2/src/main/java/com/clickhouse/jdbc/internal/ParsedPreparedStatement.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -166,10 +166,9 @@ public void enterColumnExprParam(ClickHouseParser.ColumnExprParamContext ctx) {
166166
appendParameter(ctx.start.getStartIndex());
167167
}
168168

169-
170169
@Override
171-
public void enterColumnExprParamWithCast(ClickHouseParser.ColumnExprParamWithCastContext ctx) {
172-
appendParameter(ctx.start.getStartIndex());
170+
public void enterColumnExprPrecedence3(ClickHouseParser.ColumnExprPrecedence3Context ctx) {
171+
super.enterColumnExprPrecedence3(ctx);
173172
}
174173

175174
@Override

0 commit comments

Comments
 (0)