@@ -63,9 +63,9 @@ alterStmt
6363 ;
6464
6565alterTableClause
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+
102107assignmentExprList
103108 : assignmentExpr (COMMA assignmentExpr)*
104109 ;
105110
106111assignmentExpr
107112 : nestedIdentifier EQ_SINGLE columnExpr
108- | nestedIdentifier EQ_SINGLE QUERY
113+ | nestedIdentifier EQ_SINGLE JDBC_PARAM_PLACEHOLDER
109114 ;
110115
111116tableColumnPropertyType
@@ -419,7 +424,7 @@ assignmentValues
419424
420425assignmentValue
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
429434killStmt
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
494499cteUnboundCol
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
506511fromClause
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
513518viewParam
514- : identifier EQ_SINGLE (literal | QUERY )
519+ : identifier EQ_SINGLE (literal | JDBC_PARAM_PLACEHOLDER )
515520 ;
516521
517522arrayJoinClause
@@ -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
11111116columnArgList
11121117 : columnArgExpr (COMMA columnArgExpr)*
1113- | QUERY (COMMA QUERY )*
1118+ | JDBC_PARAM_PLACEHOLDER (COMMA JDBC_PARAM_PLACEHOLDER )*
11141119 ;
11151120
11161121columnArgExpr
0 commit comments