Skip to content

Commit b707710

Browse files
committed
Database names with dashes
1 parent d475e82 commit b707710

File tree

4 files changed

+60
-28
lines changed

4 files changed

+60
-28
lines changed

jdbc-v2/src/main/java/com/clickhouse/jdbc/internal/JdbcConfiguration.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,5 @@
11
package com.clickhouse.jdbc.internal;
22

3-
import com.clickhouse.client.api.Client;
4-
import com.clickhouse.client.api.ClientConfigProperties;
5-
import com.clickhouse.jdbc.Driver;
6-
import com.google.common.collect.ImmutableMap;
7-
83
import java.net.URI;
94
import java.sql.DriverPropertyInfo;
105
import java.sql.SQLException;
@@ -17,6 +12,11 @@
1712
import java.util.regex.Pattern;
1813
import java.util.stream.Collectors;
1914

15+
import com.clickhouse.client.api.Client;
16+
import com.clickhouse.client.api.ClientConfigProperties;
17+
import com.clickhouse.jdbc.Driver;
18+
import com.google.common.collect.ImmutableMap;
19+
2020
public class JdbcConfiguration {
2121
private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(JdbcConfiguration.class);
2222
public static final String PREFIX_CLICKHOUSE = "jdbc:clickhouse:";
@@ -126,7 +126,7 @@ private static String stripJDBCPrefix(String url) {
126126
* <li>5 - query parameters as is (optional)</li>
127127
* </ul>
128128
*/
129-
private static final Pattern URL_REGEXP = Pattern.compile("(https?:)?\\/\\/([\\w\\.\\-]+|\\[[0-9a-fA-F:]+\\]):?([\\d]*)(?:\\/([\\w]+))?\\/?\\??(.*)$");
129+
private static final Pattern URL_REGEXP = Pattern.compile("(https?:)?\\/\\/([\\w\\.\\-]+|\\[[0-9a-fA-F:]+\\]):?([\\d]*)(?:\\/([\\w-]+))?\\/?\\??(.*)$");
130130

131131
/**
132132
* Extracts positions of parameters names.

jdbc-v2/src/test/java/com/clickhouse/jdbc/ConnectionTest.java

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,5 @@
11
package com.clickhouse.jdbc;
22

3-
import com.clickhouse.client.ClickHouseNode;
4-
import com.clickhouse.client.ClickHouseProtocol;
5-
import com.clickhouse.client.ClickHouseServerForTest;
6-
import com.clickhouse.client.api.Client;
7-
import com.clickhouse.client.api.ClientConfigProperties;
8-
import com.clickhouse.client.api.ServerException;
9-
import com.clickhouse.client.api.internal.ServerSettings;
10-
import com.clickhouse.jdbc.internal.ClientInfoProperties;
11-
import com.clickhouse.jdbc.internal.DriverProperties;
12-
import com.github.tomakehurst.wiremock.WireMockServer;
13-
import com.github.tomakehurst.wiremock.client.WireMock;
14-
import com.github.tomakehurst.wiremock.common.ConsoleNotifier;
15-
import com.github.tomakehurst.wiremock.core.WireMockConfiguration;
16-
import org.testng.Assert;
17-
import org.testng.annotations.DataProvider;
18-
import org.testng.annotations.Test;
19-
203
import java.nio.charset.StandardCharsets;
214
import java.sql.Array;
225
import java.sql.Connection;
@@ -31,6 +14,24 @@
3114
import java.util.Properties;
3215
import java.util.UUID;
3316

17+
import org.testng.Assert;
18+
import org.testng.annotations.DataProvider;
19+
import org.testng.annotations.Test;
20+
21+
import com.clickhouse.client.ClickHouseNode;
22+
import com.clickhouse.client.ClickHouseProtocol;
23+
import com.clickhouse.client.ClickHouseServerForTest;
24+
import com.clickhouse.client.api.Client;
25+
import com.clickhouse.client.api.ClientConfigProperties;
26+
import com.clickhouse.client.api.ServerException;
27+
import com.clickhouse.client.api.internal.ServerSettings;
28+
import com.clickhouse.jdbc.internal.ClientInfoProperties;
29+
import com.clickhouse.jdbc.internal.DriverProperties;
30+
import com.github.tomakehurst.wiremock.WireMockServer;
31+
import com.github.tomakehurst.wiremock.client.WireMock;
32+
import com.github.tomakehurst.wiremock.common.ConsoleNotifier;
33+
import com.github.tomakehurst.wiremock.core.WireMockConfiguration;
34+
3435
import static org.testng.Assert.assertThrows;
3536
import static org.testng.Assert.fail;
3637

@@ -549,4 +550,5 @@ public void testDisableExtraCallToServer() throws Exception {
549550

550551
}
551552

553+
552554
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
/*
2+
* Copyright (c) 2025 Riege Software. All rights reserved.
3+
* Use is subject to license terms.
4+
*/
5+
package com.clickhouse.jdbc;
6+
7+
import java.sql.Connection;
8+
9+
import org.testng.Assert;
10+
import org.testng.annotations.Test;
11+
12+
public class ConnectionWithCustomDatabaseTest extends JdbcIntegrationTest {
13+
14+
@Test(groups = { "integration" })
15+
public void testConnectionWithDashDatabaseName() throws Exception {
16+
Connection conn = this.getJdbcConnection();
17+
Assert.assertEquals(
18+
conn.createStatement().executeQuery("SELECT 1"),
19+
Integer.valueOf(1));
20+
}
21+
22+
protected static String getDatabase() {
23+
return "with-dashes";
24+
}
25+
26+
}

jdbc-v2/src/test/java/com/clickhouse/jdbc/internal/JdbcConfigurationTest.java

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,17 @@
11
package com.clickhouse.jdbc.internal;
22

3-
import com.clickhouse.client.api.ClientConfigProperties;
4-
import org.testng.Assert;
5-
import org.testng.annotations.DataProvider;
6-
import org.testng.annotations.Test;
7-
83
import java.sql.DriverPropertyInfo;
94
import java.util.Arrays;
105
import java.util.Map;
116
import java.util.Properties;
127
import java.util.stream.Collectors;
138

9+
import org.testng.Assert;
10+
import org.testng.annotations.DataProvider;
11+
import org.testng.annotations.Test;
12+
13+
import com.clickhouse.client.api.ClientConfigProperties;
14+
1415
import static org.testng.Assert.assertEquals;
1516

1617
public class JdbcConfigurationTest {
@@ -37,6 +38,7 @@ public static Object[][] testConnectionUrlDataProvider() {
3738
Map<String, String> withListParams = Map.of("database", "default", "param1", "value1", "custom_header1", "val1,val2,val3", "user", "default", "password", "");
3839
Map<String, String> withListParamsQuotes = Map.of("database", "default", "param1", "value1", "custom_header1", "\"role 1,3,4\",'val2',val3", "user", "default", "password", "");
3940
Map<String, String> useDatabaseSSLParams = Map.of("database", "clickhouse", "ssl", "true", "user", "default", "password", "");
41+
Map<String, String> dashParams = Map.of( "user", "default", "password", "", "database", "with-dash");
4042

4143
return new Object[][] {
4244
{"jdbc:clickhouse://localhost:8123/", "http://localhost:8123", defaultProps, defaultParams},
@@ -49,6 +51,7 @@ public static Object[][] testConnectionUrlDataProvider() {
4951
{"jdbc:clickhouse://localhost:8443/default?param1=value1&custom_header1=val1,val2,val3", "http://localhost:8443", defaultProps, withListParams},
5052
{"jdbc:clickhouse://localhost:8443/default?custom_header1=\"role 1,3,4\",'val2',val3&param1=value1", "http://localhost:8443", defaultProps, withListParamsQuotes},
5153
{"jdbc:clickhouse://localhost:8443/clickhouse?ssl=true", "https://localhost:8443", defaultProps, useDatabaseSSLParams},
54+
{"jdbc:clickhouse://localhost:8443/with-dash", "http://localhost:8443", defaultProps, dashParams},
5255
};
5356
}
5457

@@ -67,4 +70,5 @@ public void testConfigurationProperties() throws Exception {
6770
DriverPropertyInfo p = infos.get(ClientConfigProperties.DATABASE.getKey());
6871
Assert.assertEquals(p.value, "default1");
6972
}
73+
7074
}

0 commit comments

Comments
 (0)