From fe069f509d000484dbe293b663fdc7a39a9fcfbf Mon Sep 17 00:00:00 2001 From: Sergey Chernov Date: Fri, 10 Apr 2026 11:59:52 -0700 Subject: [PATCH 1/3] made tests case more reasonable --- .../src/test/java/com/clickhouse/jdbc/GenericJDBCTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/clickhouse-jdbc/src/test/java/com/clickhouse/jdbc/GenericJDBCTest.java b/clickhouse-jdbc/src/test/java/com/clickhouse/jdbc/GenericJDBCTest.java index c9474c2f2..981cabc46 100644 --- a/clickhouse-jdbc/src/test/java/com/clickhouse/jdbc/GenericJDBCTest.java +++ b/clickhouse-jdbc/src/test/java/com/clickhouse/jdbc/GenericJDBCTest.java @@ -33,7 +33,7 @@ public void connectionWithPropertiesTest() throws SQLException { properties.setProperty("user", "default"); properties.setProperty("password", "FAKE123456FAKE"); - assertThrows(SQLException.class, () -> getConnection(properties)); + assertThrows(SQLException.class, () -> getConnection(properties).isValid(10)); } @Test From 7d29d5c796831b1b6ac9e118cbd7fdd846f93151 Mon Sep 17 00:00:00 2001 From: Sergey Chernov Date: Fri, 10 Apr 2026 13:59:21 -0700 Subject: [PATCH 2/3] Fixed java 10 code. added missing keywords --- .../com/clickhouse/jdbc/internal/JdbcConfiguration.java | 7 +++++-- .../jdbc/internal/parser/javacc/ClickHouseSqlUtils.java | 6 ++++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/jdbc-v2/src/main/java/com/clickhouse/jdbc/internal/JdbcConfiguration.java b/jdbc-v2/src/main/java/com/clickhouse/jdbc/internal/JdbcConfiguration.java index 9aa5ce61a..8cd837b6c 100644 --- a/jdbc-v2/src/main/java/com/clickhouse/jdbc/internal/JdbcConfiguration.java +++ b/jdbc-v2/src/main/java/com/clickhouse/jdbc/internal/JdbcConfiguration.java @@ -217,14 +217,17 @@ private Map parseUrl(String url) throws SQLException { String pathWithoutLeadingSlash = rawPath.startsWith("/") ? rawPath.substring(1) : rawPath; int lastSlashIndex = pathWithoutLeadingSlash.lastIndexOf('/'); + String pathToDecode; if (lastSlashIndex > 0) { httpPath = "/" + pathWithoutLeadingSlash.substring(0, lastSlashIndex); - database = URLDecoder.decode(pathWithoutLeadingSlash.substring(lastSlashIndex + 1), StandardCharsets.UTF_8); + pathToDecode = pathWithoutLeadingSlash.substring(lastSlashIndex + 1); } else { // No slash found (lastSlashIndex == -1), so it's a single segment representing the database name. // Example: "mydb" -> httpPath="", database="mydb" - database = URLDecoder.decode(pathWithoutLeadingSlash, StandardCharsets.UTF_8); + pathToDecode = pathWithoutLeadingSlash; } +// requires 10+ java database = URLDecoder.decode(pathWithoutLeadingSlash.substring(lastSlashIndex + 1), StandardCharsets.UTF_8); + database = URLDecoder.decode(pathToDecode); } // Build connection URL with HTTP path preserved diff --git a/jdbc-v2/src/main/java/com/clickhouse/jdbc/internal/parser/javacc/ClickHouseSqlUtils.java b/jdbc-v2/src/main/java/com/clickhouse/jdbc/internal/parser/javacc/ClickHouseSqlUtils.java index 9b0e37b4c..d3477ce6c 100644 --- a/jdbc-v2/src/main/java/com/clickhouse/jdbc/internal/parser/javacc/ClickHouseSqlUtils.java +++ b/jdbc-v2/src/main/java/com/clickhouse/jdbc/internal/parser/javacc/ClickHouseSqlUtils.java @@ -61,9 +61,11 @@ private static Set initAllowedKeywordAliases() { "USER", "VALID", "VALUES", "VARYING", "VIEW", "VISIBLE", "VOLUME", "WATCH", "WATERMARK", "WEEK", "WEEKS", "WHEN", "WITH_ITEMINDEX", "WK", "WORKER", "WORKLOAD", "WRITABLE", "WRITE", "WW", "YEAR", "YEARS", "YY", "YYYY", "ZKPATH", - // Append 04/01/2026. + // Appended 04/01/2026. "CENTURY", "DECADE", "DOW", "DOY", "EPOCH", "ISODOW", "ISOYEAR", "MILLENNIUM", "NATURAL", "SOME", - "ZONE" + "ZONE", + // Appended 04/10/2026 + "PATH", "PLACING" ); } From a5bd8a121f202046d5db507fb1568d249aa64684 Mon Sep 17 00:00:00 2001 From: Sergey Chernov Date: Fri, 10 Apr 2026 14:32:14 -0700 Subject: [PATCH 3/3] fixed test --- .../test/java/com/clickhouse/jdbc/GenericJDBCTest.java | 10 +++++++--- .../clickhouse/jdbc/internal/JdbcConfiguration.java | 2 +- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/clickhouse-jdbc/src/test/java/com/clickhouse/jdbc/GenericJDBCTest.java b/clickhouse-jdbc/src/test/java/com/clickhouse/jdbc/GenericJDBCTest.java index 981cabc46..36b312d04 100644 --- a/clickhouse-jdbc/src/test/java/com/clickhouse/jdbc/GenericJDBCTest.java +++ b/clickhouse-jdbc/src/test/java/com/clickhouse/jdbc/GenericJDBCTest.java @@ -1,12 +1,16 @@ package com.clickhouse.jdbc; import org.testng.Assert; -import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; -import java.sql.*; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; import java.util.Properties; +import static org.testng.Assert.assertFalse; import static org.testng.Assert.assertThrows; @Test(groups = { "integration" }) @@ -33,7 +37,7 @@ public void connectionWithPropertiesTest() throws SQLException { properties.setProperty("user", "default"); properties.setProperty("password", "FAKE123456FAKE"); - assertThrows(SQLException.class, () -> getConnection(properties).isValid(10)); + assertFalse(getConnection(properties).isValid(10)); } @Test diff --git a/jdbc-v2/src/main/java/com/clickhouse/jdbc/internal/JdbcConfiguration.java b/jdbc-v2/src/main/java/com/clickhouse/jdbc/internal/JdbcConfiguration.java index 8cd837b6c..3680cc32b 100644 --- a/jdbc-v2/src/main/java/com/clickhouse/jdbc/internal/JdbcConfiguration.java +++ b/jdbc-v2/src/main/java/com/clickhouse/jdbc/internal/JdbcConfiguration.java @@ -226,7 +226,7 @@ private Map parseUrl(String url) throws SQLException { // Example: "mydb" -> httpPath="", database="mydb" pathToDecode = pathWithoutLeadingSlash; } -// requires 10+ java database = URLDecoder.decode(pathWithoutLeadingSlash.substring(lastSlashIndex + 1), StandardCharsets.UTF_8); + // requires 10+ java database = URLDecoder.decode(pathWithoutLeadingSlash.substring(lastSlashIndex + 1), StandardCharsets.UTF_8); database = URLDecoder.decode(pathToDecode); }