From 3b2b05bb0759fd83aae7f8778c739c57ab09da0d Mon Sep 17 00:00:00 2001 From: Sergey Chernov Date: Fri, 6 Jun 2025 11:12:44 -0700 Subject: [PATCH 1/3] added source keyword as one for alias --- .../com/clickhouse/jdbc/internal/ClickHouseParser.g4 | 1 + .../java/com/clickhouse/jdbc/internal/SqlParserTest.java | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/jdbc-v2/src/main/antlr4/com/clickhouse/jdbc/internal/ClickHouseParser.g4 b/jdbc-v2/src/main/antlr4/com/clickhouse/jdbc/internal/ClickHouseParser.g4 index a1dea4092..31b7fb40c 100644 --- a/jdbc-v2/src/main/antlr4/com/clickhouse/jdbc/internal/ClickHouseParser.g4 +++ b/jdbc-v2/src/main/antlr4/com/clickhouse/jdbc/internal/ClickHouseParser.g4 @@ -975,6 +975,7 @@ keywordForAlias | FIRST | ID | KEY + | SOURCE ; alias diff --git a/jdbc-v2/src/test/java/com/clickhouse/jdbc/internal/SqlParserTest.java b/jdbc-v2/src/test/java/com/clickhouse/jdbc/internal/SqlParserTest.java index 11d4908f4..9ad23ff85 100644 --- a/jdbc-v2/src/test/java/com/clickhouse/jdbc/internal/SqlParserTest.java +++ b/jdbc-v2/src/test/java/com/clickhouse/jdbc/internal/SqlParserTest.java @@ -1,10 +1,16 @@ package com.clickhouse.jdbc.internal; +import org.antlr.v4.runtime.tree.TerminalNode; import org.testng.Assert; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; +import java.lang.reflect.Method; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertFalse; import static org.testng.Assert.assertTrue; @@ -275,6 +281,8 @@ public Object[][] testMiscStmtDp() { return new Object[][] { {"SELECT INTERVAL '1 day'", 0}, {"SELECT INTERVAL 1 day", 0}, + {"SELECT * FROM table key WHERE ts = ?", 1}, + {"SELECT * FROM table source WHERE ts = ?", 1}, }; } } \ No newline at end of file From 2a923830513c4e4ab95dca8a93cdbf18eeca9a40 Mon Sep 17 00:00:00 2001 From: Sergey Chernov Date: Fri, 6 Jun 2025 14:05:13 -0700 Subject: [PATCH 2/3] added some keywords for alias name that allowed by ClickHouse --- .../com/clickhouse/jdbc/internal/ClickHouseParser.g4 | 9 +++++++++ .../com/clickhouse/jdbc/internal/SqlParserTest.java | 10 ++++++++++ 2 files changed, 19 insertions(+) diff --git a/jdbc-v2/src/main/antlr4/com/clickhouse/jdbc/internal/ClickHouseParser.g4 b/jdbc-v2/src/main/antlr4/com/clickhouse/jdbc/internal/ClickHouseParser.g4 index 31b7fb40c..1353a5e83 100644 --- a/jdbc-v2/src/main/antlr4/com/clickhouse/jdbc/internal/ClickHouseParser.g4 +++ b/jdbc-v2/src/main/antlr4/com/clickhouse/jdbc/internal/ClickHouseParser.g4 @@ -976,6 +976,15 @@ keywordForAlias | ID | KEY | SOURCE + | AFTER + | CASE + | CLUSTER + | CURRENT + | INDEX + | TABLES + | TEST + | VIEW + | PRIMARY ; alias diff --git a/jdbc-v2/src/test/java/com/clickhouse/jdbc/internal/SqlParserTest.java b/jdbc-v2/src/test/java/com/clickhouse/jdbc/internal/SqlParserTest.java index 9ad23ff85..2b4c14754 100644 --- a/jdbc-v2/src/test/java/com/clickhouse/jdbc/internal/SqlParserTest.java +++ b/jdbc-v2/src/test/java/com/clickhouse/jdbc/internal/SqlParserTest.java @@ -283,6 +283,16 @@ public Object[][] testMiscStmtDp() { {"SELECT INTERVAL 1 day", 0}, {"SELECT * FROM table key WHERE ts = ?", 1}, {"SELECT * FROM table source WHERE ts = ?", 1}, + {"SELECT * FROM table after WHERE ts = ?", 1}, + {"SELECT * FROM table before WHERE ts = ?", 1}, + {"SELECT * FROM table case WHERE ts = ?", 1}, + {"SELECT * FROM table cluster WHERE ts = ?", 1}, + {"SELECT * FROM table current WHERE ts = ?", 1}, + {"SELECT * FROM table index WHERE ts = ?", 1}, + {"SELECT * FROM table tables WHERE ts = ?", 1}, + {"SELECT * FROM table test WHERE ts = ?", 1}, + {"SELECT * FROM table view WHERE ts = ?", 1}, + {"SELECT * FROM table primary WHERE ts = ?", 1}, }; } } \ No newline at end of file From 16524004c3cd33d193f8090b531f36ec947615a0 Mon Sep 17 00:00:00 2001 From: Sergey Chernov Date: Fri, 6 Jun 2025 14:09:57 -0700 Subject: [PATCH 3/3] fixed test for prepared statement to accept SUCCESS_NO_INFO result for Cloud --- .../test/java/com/clickhouse/jdbc/PreparedStatementTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jdbc-v2/src/test/java/com/clickhouse/jdbc/PreparedStatementTest.java b/jdbc-v2/src/test/java/com/clickhouse/jdbc/PreparedStatementTest.java index 6f7a252c9..a183a5c38 100644 --- a/jdbc-v2/src/test/java/com/clickhouse/jdbc/PreparedStatementTest.java +++ b/jdbc-v2/src/test/java/com/clickhouse/jdbc/PreparedStatementTest.java @@ -768,7 +768,7 @@ void testBatchInsertWithRowBinary(String sql, Class implClass) throws Exception int[] result = stmt.executeBatch(); for (int r : result) { - Assert.assertEquals(r, 1); + Assert.assertTrue(r == 1 || r == PreparedStatement.SUCCESS_NO_INFO); } }