From 98c2de3eb51a1bad748a3c5993f4d98d985137a8 Mon Sep 17 00:00:00 2001 From: mzitnik Date: Sun, 13 Apr 2025 17:49:00 +0300 Subject: [PATCH] Solves issue #2206 --- .../java/com/clickhouse/jdbc/internal/JdbcConfiguration.java | 4 +++- .../com/clickhouse/jdbc/internal/JdbcConfigurationTest.java | 5 +++-- 2 files changed, 6 insertions(+), 3 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 024774f0c..8fce772e0 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 @@ -61,7 +61,9 @@ public JdbcConfiguration(String url, Properties info) throws SQLException { initProperties(urlProperties, info); // after initializing all properties - set final connection URL - boolean useSSL = Boolean.parseBoolean(info.getProperty(DriverProperties.SECURE_CONNECTION.getKey(), "false")); + boolean useSSLInfo = Boolean.parseBoolean(info.getProperty(DriverProperties.SECURE_CONNECTION.getKey(), "false")); + boolean useSSLUrlProperties = Boolean.parseBoolean(urlProperties.getOrDefault(DriverProperties.SECURE_CONNECTION.getKey(), "false")); + boolean useSSL = useSSLInfo || useSSLUrlProperties; String bearerToken = info.getProperty(ClientConfigProperties.BEARERTOKEN_AUTH.getKey(), null); if (bearerToken != null) { clientProperties.put(ClientConfigProperties.BEARERTOKEN_AUTH.getKey(), bearerToken); diff --git a/jdbc-v2/src/test/java/com/clickhouse/jdbc/internal/JdbcConfigurationTest.java b/jdbc-v2/src/test/java/com/clickhouse/jdbc/internal/JdbcConfigurationTest.java index 293d9d091..125ce0f85 100644 --- a/jdbc-v2/src/test/java/com/clickhouse/jdbc/internal/JdbcConfigurationTest.java +++ b/jdbc-v2/src/test/java/com/clickhouse/jdbc/internal/JdbcConfigurationTest.java @@ -18,6 +18,7 @@ public class JdbcConfigurationTest { + @Test(dataProvider = "testConnectionUrlDataProvider") public void testConnectionUrl(String jdbcUrl, String connectionUrl, Properties properties, Map expectedClientProps) throws Exception { JdbcConfiguration configuration = new JdbcConfiguration(jdbcUrl, properties); @@ -38,7 +39,7 @@ public static Object[][] testConnectionUrlDataProvider() { Map useSSLParams = Map.of("ssl", "true"); Map withListParams = Map.of("database", "default", "param1", "value1", "custom_header1", "val1,val2,val3", "user", "default", "password", ""); Map withListParamsQuotes = Map.of("database", "default", "param1", "value1", "custom_header1", "\"role 1,3,4\",'val2',val3", "user", "default", "password", ""); - + Map useDatabaseSSLParams = Map.of("database", "clickhouse", "ssl", "true", "user", "default", "password", ""); return new Object[][] { {"jdbc:clickhouse://localhost:8123/", "http://localhost:8123", defaultProps, defaultParams}, @@ -47,7 +48,7 @@ public static Object[][] testConnectionUrlDataProvider() { {"jdbc:clickhouse://localhost:8443/", "https://localhost:8443", useSSL, useSSLParams}, {"jdbc:clickhouse://localhost:8443/default?param1=value1&custom_header1=val1,val2,val3", "http://localhost:8443", defaultProps, withListParams}, {"jdbc:clickhouse://localhost:8443/default?custom_header1=\"role 1,3,4\",'val2',val3¶m1=value1", "http://localhost:8443", defaultProps, withListParamsQuotes}, - + {"jdbc:clickhouse://localhost:8443/clickhouse?ssl=true", "https://localhost:8443", defaultProps, useDatabaseSSLParams}, }; }