From b2275ee8f5dc9116696f855d3bf54ac7959bbb11 Mon Sep 17 00:00:00 2001 From: Nikolay Antonov Date: Tue, 27 Oct 2026 12:10:01 +0500 Subject: [PATCH 1/2] Upgrade ClickHouse JDBC to 0.11.0 Update the server and automation driver dependencies to support ClickHouse 26.9, including its ZSTD-compressed responses. Test against ClickHouse 24 and 26.9 and remove cases that set http_connection_provider, which JDBC v2 ignores. Update the driver recommendation in the ClickHouse guide. --- automation/pom.xml | 2 +- .../features/jdbc/JdbcClickhouseTest.java | 35 +------------------ docs/access-jdbc/jdbc_pxf_clickhouse.md | 2 +- server/pxf-jdbc-drivers/build.gradle | 2 +- 4 files changed, 4 insertions(+), 37 deletions(-) diff --git a/automation/pom.xml b/automation/pom.xml index a4d244225..8f1f04eae 100644 --- a/automation/pom.xml +++ b/automation/pom.xml @@ -263,7 +263,7 @@ com.clickhouse clickhouse-jdbc - 0.9.8 + 0.11.0 all diff --git a/automation/src/test/java/org/apache/cloudberry/pxf/automation/features/jdbc/JdbcClickhouseTest.java b/automation/src/test/java/org/apache/cloudberry/pxf/automation/features/jdbc/JdbcClickhouseTest.java index 34302432d..745969e44 100644 --- a/automation/src/test/java/org/apache/cloudberry/pxf/automation/features/jdbc/JdbcClickhouseTest.java +++ b/automation/src/test/java/org/apache/cloudberry/pxf/automation/features/jdbc/JdbcClickhouseTest.java @@ -53,7 +53,6 @@ public class JdbcClickhouseTest extends AbstractTestcontainersTest { // PXF protocol compression options passed via LOCATION user parameters. private static final String PROTOCOL_COMPRESS_ENABLED = "compress=true"; private static final String PROTOCOL_COMPRESS_ALGORITHM_LZ4 = "compress_algorithm=lz4"; - private static final String HTTP_CONNECTION_PROVIDER_APACHE = "http_connection_provider=APACHE_HTTP_CLIENT"; /** PXF external/foreign table column definitions — same for read and write tests. */ private static final String[] CLICKHOUSE_PXF_FIELDS = new String[] { @@ -103,7 +102,7 @@ public static Object[][] clickhouseVersions() { { "24" }, // ClickHouse 25.10+ doesn't work with old JDBC drivers // https://github.com/ClickHouse/clickhouse-java/issues/2636 - { "26.2" }, + { "26.9" }, }; } @@ -137,11 +136,6 @@ public void readSupportedTypesWithProtocolCompression() throws Exception { runReadSupportedTypes(clickhouseContainer.getInternalJdbcUrl(), clickhouseContainer.getJdbcUrl(), true); } - @Test(groups = {"testcontainers", "pxf-jdbc"}) - public void readSupportedTypesWithHttpConnectionProvider() throws Exception { - runReadSupportedTypes(clickhouseContainer.getInternalJdbcUrl(), clickhouseContainer.getJdbcUrl(), false, true); - } - @Test(groups = {"testcontainers", "pxf-jdbc"}) public void writeSupportedTypes() throws Exception { runWriteSupportedTypes(clickhouseContainer.getInternalJdbcUrl(), clickhouseContainer.getJdbcUrl(), false); @@ -152,21 +146,7 @@ public void writeSupportedTypesWithProtocolCompression() throws Exception { runWriteSupportedTypes(clickhouseContainer.getInternalJdbcUrl(), clickhouseContainer.getJdbcUrl(), true); } - @Test(groups = {"testcontainers", "pxf-jdbc"}) - public void writeSupportedTypesWithHttpConnectionProvider() throws Exception { - runWriteSupportedTypes(clickhouseContainer.getInternalJdbcUrl(), clickhouseContainer.getJdbcUrl(), false, true); - } - - @Test(groups = {"testcontainers", "pxf-jdbc"}) - public void writeSupportedTypesWithHttpConnectionProviderAndCompression() throws Exception { - runWriteSupportedTypes(clickhouseContainer.getInternalJdbcUrl(), clickhouseContainer.getJdbcUrl(), true, true); - } - private void runReadSupportedTypes(String internalJdbcUrl, String externalJdbcUrl, boolean enableProtocolCompression) throws Exception { - runReadSupportedTypes(internalJdbcUrl, externalJdbcUrl, enableProtocolCompression, false); - } - - private void runReadSupportedTypes(String internalJdbcUrl, String externalJdbcUrl, boolean enableProtocolCompression, boolean enableHttpConnectionProvider) throws Exception { createAndSeedClickhouseReadTable(externalJdbcUrl); ExternalTable pxfRead = TableFactory.getPxfJdbcReadableTable( @@ -183,9 +163,6 @@ private void runReadSupportedTypes(String internalJdbcUrl, String externalJdbcUr pxfRead.addUserParameter(PROTOCOL_COMPRESS_ENABLED); pxfRead.addUserParameter(PROTOCOL_COMPRESS_ALGORITHM_LZ4); } - if (enableHttpConnectionProvider) { - pxfRead.addUserParameter(HTTP_CONNECTION_PROVIDER_APACHE); - } cloudberry.createTableAndVerify(pxfRead); try { @@ -196,10 +173,6 @@ private void runReadSupportedTypes(String internalJdbcUrl, String externalJdbcUr } private void runWriteSupportedTypes(String internalJdbcUrl, String externalJdbcUrl, boolean enableProtocolCompression) throws Exception { - runWriteSupportedTypes(internalJdbcUrl, externalJdbcUrl, enableProtocolCompression, false); - } - - private void runWriteSupportedTypes(String internalJdbcUrl, String externalJdbcUrl, boolean enableProtocolCompression, boolean enableHttpConnectionProvider) throws Exception { createClickhouseWriteTable(externalJdbcUrl); ExternalTable pxfWrite = TableFactory.getPxfJdbcWritableTable( @@ -216,9 +189,6 @@ private void runWriteSupportedTypes(String internalJdbcUrl, String externalJdbcU pxfWrite.addUserParameter(PROTOCOL_COMPRESS_ENABLED); pxfWrite.addUserParameter(PROTOCOL_COMPRESS_ALGORITHM_LZ4); } - if (enableHttpConnectionProvider) { - pxfWrite.addUserParameter(HTTP_CONNECTION_PROVIDER_APACHE); - } cloudberry.createTableAndVerify(pxfWrite); ExternalTable pxfVerify = TableFactory.getPxfJdbcReadableTable( @@ -235,9 +205,6 @@ private void runWriteSupportedTypes(String internalJdbcUrl, String externalJdbcU pxfVerify.addUserParameter(PROTOCOL_COMPRESS_ENABLED); pxfVerify.addUserParameter(PROTOCOL_COMPRESS_ALGORITHM_LZ4); } - if (enableHttpConnectionProvider) { - pxfVerify.addUserParameter(HTTP_CONNECTION_PROVIDER_APACHE); - } cloudberry.createTableAndVerify(pxfVerify); try { diff --git a/docs/access-jdbc/jdbc_pxf_clickhouse.md b/docs/access-jdbc/jdbc_pxf_clickhouse.md index aaf599ec1..8bb47cfb0 100644 --- a/docs/access-jdbc/jdbc_pxf_clickhouse.md +++ b/docs/access-jdbc/jdbc_pxf_clickhouse.md @@ -70,7 +70,7 @@ You do **not** need a `servers/clickhouse/jdbc-site.xml` if you pass connection Automated tests exercise ClickHouse server versions **24** and **26** together with the ClickHouse JDBC drivers. -For ClickHouse we recommend latest clickhouse-jdbc-all:0.9.7 or newer (fat jar version with shaded dependencies). In case you observe HTTP reliably issues you can use Apache HttpClient: add the JDBC URL parameter `http_connection_provider=APACHE_HTTP_CLIENT` (for example `jdbc:clickhouse://clickhousehost:8123/default?http_connection_provider=APACHE_HTTP_CLIENT`). +For ClickHouse we recommend latest clickhouse-jdbc-all:0.11.0 or newer (fat jar version with shaded dependencies). ## Read from the ClickHouse Table diff --git a/server/pxf-jdbc-drivers/build.gradle b/server/pxf-jdbc-drivers/build.gradle index 69acb7cab..c7284f68c 100644 --- a/server/pxf-jdbc-drivers/build.gradle +++ b/server/pxf-jdbc-drivers/build.gradle @@ -22,7 +22,7 @@ dependencies { // Its version is defined in server/build.gradle // Clickhouse - implementation('com.clickhouse:clickhouse-jdbc:0.9.8:all') { transitive = false } + implementation('com.clickhouse:clickhouse-jdbc:0.11.0:all') { transitive = false } // Oracle implementation('com.oracle.database.jdbc:ojdbc11:23.3.0.23.09') From d2a28d451942ffc2ef87d62da9dac00c32739143 Mon Sep 17 00:00:00 2001 From: Nikolay Antonov Date: Tue, 10 Nov 2026 13:42:13 +0500 Subject: [PATCH 2/2] Bump ClickHouse JDBC to 0.11.1 --- automation/pom.xml | 2 +- docs/access-jdbc/jdbc_pxf_clickhouse.md | 2 +- server/pxf-jdbc-drivers/build.gradle | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/automation/pom.xml b/automation/pom.xml index 8f1f04eae..a328fa065 100644 --- a/automation/pom.xml +++ b/automation/pom.xml @@ -263,7 +263,7 @@ com.clickhouse clickhouse-jdbc - 0.11.0 + 0.11.1 all diff --git a/docs/access-jdbc/jdbc_pxf_clickhouse.md b/docs/access-jdbc/jdbc_pxf_clickhouse.md index 8bb47cfb0..a9054cb60 100644 --- a/docs/access-jdbc/jdbc_pxf_clickhouse.md +++ b/docs/access-jdbc/jdbc_pxf_clickhouse.md @@ -70,7 +70,7 @@ You do **not** need a `servers/clickhouse/jdbc-site.xml` if you pass connection Automated tests exercise ClickHouse server versions **24** and **26** together with the ClickHouse JDBC drivers. -For ClickHouse we recommend latest clickhouse-jdbc-all:0.11.0 or newer (fat jar version with shaded dependencies). +For ClickHouse we recommend latest clickhouse-jdbc-all:0.11.1 or newer (fat jar version with shaded dependencies). ## Read from the ClickHouse Table diff --git a/server/pxf-jdbc-drivers/build.gradle b/server/pxf-jdbc-drivers/build.gradle index c7284f68c..a0623ce7a 100644 --- a/server/pxf-jdbc-drivers/build.gradle +++ b/server/pxf-jdbc-drivers/build.gradle @@ -22,7 +22,7 @@ dependencies { // Its version is defined in server/build.gradle // Clickhouse - implementation('com.clickhouse:clickhouse-jdbc:0.11.0:all') { transitive = false } + implementation('com.clickhouse:clickhouse-jdbc:0.11.1:all') { transitive = false } // Oracle implementation('com.oracle.database.jdbc:ojdbc11:23.3.0.23.09')