Skip to content

Commit 0f04adf

Browse files
committed
fixed column position in alter statement and renamed QUERY to JDBC_PARAM_PLACEHOLDER to avoid mistakes
1 parent 07eac76 commit 0f04adf

File tree

3 files changed

+24
-19
lines changed

3 files changed

+24
-19
lines changed

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -253,7 +253,7 @@ PULLING : P U L L I N G ;
253253
PULL : P U L L;
254254
QUARTER : Q U A R T E R;
255255
QUERIES : Q U E R I E S;
256-
QUERY_SQL : Q U E R Y; // conflicts with '?'
256+
QUERY : Q U E R Y;
257257
QUEUE : Q U E U E ;
258258
QUEUES : Q U E U E S ;
259259
QUOTA : Q U O T A;
@@ -460,7 +460,7 @@ LT : '<';
460460
NOT_EQ : '!=' | '<>';
461461
PERCENT : '%';
462462
PLUS : '+';
463-
QUERY : '?';
463+
JDBC_PARAM_PLACEHOLDER : '?';
464464
QUOTE_DOUBLE : '"';
465465
QUOTE_SINGLE : '\'';
466466
RBRACE : '}';

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

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -63,9 +63,9 @@ alterStmt
6363
;
6464

6565
alterTableClause
66-
: ADD COLUMN (IF NOT EXISTS)? tableColumnDfnt ((AFTER nestedIdentifier) | FIRST)? # AlterTableClauseAddColumn
67-
| ADD INDEX (IF NOT EXISTS)? tableIndexDfnt ((AFTER nestedIdentifier) | FIRST)? # AlterTableClauseAddIndex
68-
| ADD PROJECTION (IF NOT EXISTS)? tableProjectionDfnt (AFTER (nestedIdentifier | FIRST))? # AlterTableClauseAddProjection
66+
: ADD COLUMN (IF NOT EXISTS)? tableColumnDfnt alterTableColumnPosition? # AlterTableClauseAddColumn
67+
| ADD INDEX (IF NOT EXISTS)? tableIndexDfnt alterTableColumnPosition? # AlterTableClauseAddIndex
68+
| ADD PROJECTION (IF NOT EXISTS)? tableProjectionDfnt alterTableColumnPosition? # AlterTableClauseAddProjection
6969
| ATTACH partitionClause (FROM tableIdentifier)? # AlterTableClauseAttach
7070
| CLEAR COLUMN (IF EXISTS)? nestedIdentifier (IN partitionClause)? # AlterTableClauseClearColumn
7171
| CLEAR INDEX (IF EXISTS)? nestedIdentifier (IN partitionClause)? # AlterTableClauseClearIndex
@@ -84,7 +84,7 @@ alterTableClause
8484
| MODIFY COLUMN (IF EXISTS)? nestedIdentifier COMMENT STRING_LITERAL # AlterTableClauseModifyComment
8585
| MODIFY COLUMN (IF EXISTS)? nestedIdentifier REMOVE tableColumnPropertyType # AlterTableClauseModifyRemove
8686
| MODIFY COLUMN (IF EXISTS)? tableColumnDfnt # AlterTableClauseModify
87-
| ALTER COLUMN (IF EXISTS)? identifier TYPE columnTypeExpr codecExpr? ttlClause? settingExprList? ((AFTER nestedIdentifier) | FIRST)? # AlterTableClauseAlterType
87+
| ALTER COLUMN (IF EXISTS)? identifier TYPE columnTypeExpr codecExpr? ttlClause? settingExprList? alterTableColumnPosition? # AlterTableClauseAlterType
8888
| MODIFY ORDER BY columnExpr # AlterTableClauseModifyOrderBy
8989
| MODIFY ttlClause # AlterTableClauseModifyTTL
9090
| MODIFY COMMENT literal # AlterTableClauseModifyComment
@@ -99,13 +99,18 @@ alterTableClause
9999
| UPDATE assignmentExprList whereClause # AlterTableClauseUpdate
100100
;
101101

102+
alterTableColumnPosition
103+
: (AFTER nestedIdentifier)
104+
| FIRST
105+
;
106+
102107
assignmentExprList
103108
: assignmentExpr (COMMA assignmentExpr)*
104109
;
105110

106111
assignmentExpr
107112
: nestedIdentifier EQ_SINGLE columnExpr
108-
| nestedIdentifier EQ_SINGLE QUERY
113+
| nestedIdentifier EQ_SINGLE JDBC_PARAM_PLACEHOLDER
109114
;
110115

111116
tableColumnPropertyType
@@ -419,7 +424,7 @@ assignmentValues
419424

420425
assignmentValue
421426
: literal # InsertRawValue
422-
| QUERY # InsertParameter
427+
| JDBC_PARAM_PLACEHOLDER # InsertParameter
423428
| identifier (LPAREN columnExprList? RPAREN)? # InsertParameterFuncExpr
424429
| LPAREN? columnExpr RPAREN? # InserParameterExpr
425430
;
@@ -428,7 +433,7 @@ assignmentValue
428433

429434
killStmt
430435
: KILL MUTATION clusterClause? whereClause (SYNC | ASYNC | TEST)? (FORMAT identifier)? # KillMutationStmt
431-
| KILL QUERY_SQL clusterClause? whereClause (SYNC | ASYNC | TEST)? (FORMAT identifier)? # KillQueryStmt
436+
| KILL QUERY clusterClause? whereClause (SYNC | ASYNC | TEST)? (FORMAT identifier)? # KillQueryStmt
432437
;
433438

434439
// OPTIMIZE statement
@@ -493,7 +498,7 @@ columnAliases
493498

494499
cteUnboundCol
495500
: literal AS identifier # CteUnboundColLiteral
496-
| QUERY AS identifier # CteUnboundColParam
501+
| JDBC_PARAM_PLACEHOLDER AS identifier # CteUnboundColParam
497502
| LPAREN? columnExpr RPAREN? AS? identifier? # CteUnboundColExpr
498503
| LPAREN selectStmt RPAREN AS identifier # CteUnboundSubQuery
499504
// | LPAREN cteStmt? selectStmt RPAREN AS identifier # CteUnboundNestedSelect
@@ -505,13 +510,13 @@ topClause
505510

506511
fromClause
507512
: FROM joinExpr
508-
| FROM identifier LPAREN QUERY RPAREN
513+
| FROM identifier LPAREN JDBC_PARAM_PLACEHOLDER RPAREN
509514
| FROM selectStmt
510515
| FROM identifier LPAREN viewParam (COMMA viewParam)? RPAREN
511516
;
512517

513518
viewParam
514-
: identifier EQ_SINGLE (literal | QUERY)
519+
: identifier EQ_SINGLE (literal | JDBC_PARAM_PLACEHOLDER)
515520
;
516521

517522
arrayJoinClause
@@ -1096,21 +1101,21 @@ columnExpr
10961101
| columnExpr OR columnExpr # ColumnExprOr
10971102
// TODO(ilezhankin): `BETWEEN a AND b AND c` is parsed in a wrong way: `BETWEEN (a AND b) AND c`
10981103
| columnExpr NOT? BETWEEN columnExpr AND columnExpr # ColumnExprBetween
1099-
| <assoc = right> columnExpr QUERY columnExpr COLON columnExpr # ColumnExprTernaryOp
1104+
| <assoc = right> columnExpr JDBC_PARAM_PLACEHOLDER columnExpr COLON columnExpr # ColumnExprTernaryOp
11001105
| columnExpr (alias | AS identifier) # ColumnExprAlias
11011106
| (tableIdentifier DOT)? ASTERISK # ColumnExprAsterisk // single-column only
11021107
| LPAREN selectUnionStmt RPAREN # ColumnExprSubquery // single-column only
11031108
| LPAREN columnExpr RPAREN # ColumnExprParens // single-column only
11041109
| LPAREN columnExprList RPAREN # ColumnExprTuple
11051110
| LBRACKET columnExprList? RBRACKET # ColumnExprArray
11061111
| columnIdentifier # ColumnExprIdentifier
1107-
| QUERY (CAST_OP identifier)? # ColumnExprParam
1112+
| JDBC_PARAM_PLACEHOLDER (CAST_OP identifier)? # ColumnExprParam
11081113
| columnExpr REGEXP literal # ColumnExprRegexp
11091114
;
11101115

11111116
columnArgList
11121117
: columnArgExpr (COMMA columnArgExpr)*
1113-
| QUERY (COMMA QUERY)*
1118+
| JDBC_PARAM_PLACEHOLDER (COMMA JDBC_PARAM_PLACEHOLDER)*
11141119
;
11151120

11161121
columnArgExpr

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -199,15 +199,15 @@ public void enterInsertParameter(ClickHouseParser.InsertParameterContext ctx) {
199199

200200
@Override
201201
public void enterFromClause(ClickHouseParser.FromClauseContext ctx) {
202-
if (ctx.QUERY() != null) {
203-
appendParameter(ctx.QUERY().getSymbol().getStartIndex());
202+
if (ctx.JDBC_PARAM_PLACEHOLDER() != null) {
203+
appendParameter(ctx.JDBC_PARAM_PLACEHOLDER().getSymbol().getStartIndex());
204204
}
205205
}
206206

207207
@Override
208208
public void enterViewParam(ClickHouseParser.ViewParamContext ctx) {
209-
if (ctx.QUERY() != null) {
210-
appendParameter(ctx.QUERY().getSymbol().getStartIndex());
209+
if (ctx.JDBC_PARAM_PLACEHOLDER() != null) {
210+
appendParameter(ctx.JDBC_PARAM_PLACEHOLDER().getSymbol().getStartIndex());
211211
}
212212
}
213213

0 commit comments

Comments
 (0)