diff --git a/jdbc-v2/src/main/antlr4/com/clickhouse/jdbc/internal/parser/antlr4/ClickHouseLexer.g4 b/jdbc-v2/src/main/antlr4/com/clickhouse/jdbc/internal/parser/antlr4/ClickHouseLexer.g4 index 1b77a9d85..4a1064209 100644 --- a/jdbc-v2/src/main/antlr4/com/clickhouse/jdbc/internal/parser/antlr4/ClickHouseLexer.g4 +++ b/jdbc-v2/src/main/antlr4/com/clickhouse/jdbc/internal/parser/antlr4/ClickHouseLexer.g4 @@ -114,6 +114,7 @@ FETCHES : F E T C H E S; FETCH : F E T C H ; FILE : F I L E; FILESYSTEM : F I L E S Y S T E M ; +FILTER : F I L T E R; FINAL : F I N A L; FIRST : F I R S T; FLUSH : F L U S H; diff --git a/jdbc-v2/src/main/antlr4/com/clickhouse/jdbc/internal/parser/antlr4/ClickHouseParser.g4 b/jdbc-v2/src/main/antlr4/com/clickhouse/jdbc/internal/parser/antlr4/ClickHouseParser.g4 index bd94b69c9..ced2d4a89 100644 --- a/jdbc-v2/src/main/antlr4/com/clickhouse/jdbc/internal/parser/antlr4/ClickHouseParser.g4 +++ b/jdbc-v2/src/main/antlr4/com/clickhouse/jdbc/internal/parser/antlr4/ClickHouseParser.g4 @@ -1069,6 +1069,7 @@ columnExpr | TRIM LPAREN (BOTH | LEADING | TRAILING) STRING_LITERAL FROM columnExpr RPAREN # ColumnExprTrim | identifier (LPAREN columnExprList? RPAREN) OVER LPAREN windowExpr RPAREN # ColumnExprWinFunction | identifier (LPAREN columnExprList? RPAREN) OVER identifier # ColumnExprWinFunctionTarget + | identifier (LPAREN columnExprList? RPAREN) FILTER LPAREN whereClause RPAREN # ColumnExprAgrFuncWithFilter | identifier (LPAREN columnExprList? RPAREN)? LPAREN DISTINCT? columnArgList? RPAREN # ColumnExprFunction | literal # ColumnExprLiteral diff --git a/jdbc-v2/src/test/java/com/clickhouse/jdbc/internal/BaseSqlParserFacadeTest.java b/jdbc-v2/src/test/java/com/clickhouse/jdbc/internal/BaseSqlParserFacadeTest.java index ae51a8bce..a982a76e6 100644 --- a/jdbc-v2/src/test/java/com/clickhouse/jdbc/internal/BaseSqlParserFacadeTest.java +++ b/jdbc-v2/src/test/java/com/clickhouse/jdbc/internal/BaseSqlParserFacadeTest.java @@ -356,6 +356,9 @@ public Object[][] testMiscStmtDp() { " arrayConcat(t.s.arr1, t.s.arr2)" + " )" + ")", 0}, + {"select count(*) filter (where 1 = 1)", 0}, + {"select countIf(*, 1 = ?)", 1}, + {"select count(*) filter (where 1 = ?)", 1} }; }