Skip to content

Commit f01a30e

Browse files
authored
Set JDBC v2 as default driver (#2076)
* Set the V2 as the default driver * Add tests & fix logic in edge case * Set test to work with v1 explicitly * Replace with beforemethod annotation * replace with beforemethod in all test
1 parent b6752c2 commit f01a30e

17 files changed

+99
-13
lines changed

clickhouse-jdbc/src/main/java/com/clickhouse/jdbc/ClickHouseDriver.java

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -48,32 +48,34 @@ public static boolean isV2() {
4848
return new ClickHouseDriver().isV2(null);
4949
}
5050
public boolean isV2(String url) {
51-
log.debug("Checking if V2 driver is requested");
52-
boolean v2Flag = Boolean.parseBoolean(System.getProperty("clickhouse.jdbc.v2", "false"));
53-
if (v2Flag) {
54-
log.info("V2 driver is requested through system property.");
55-
return true;
51+
log.debug("Checking if V1 driver is requested. V2 is the default driver.");
52+
boolean v1Flag = Boolean.parseBoolean(System.getProperty("clickhouse.jdbc.v1", "false"));
53+
if (v1Flag) {
54+
log.info("V1 driver is requested through system property.");
55+
return false;
5656
}
5757

58-
if (url != null && url.contains("clickhouse.jdbc.v2")) {
58+
if (url != null && url.contains("clickhouse.jdbc.v")) {
5959
urlFlagSent = true;
6060

61-
if (url.contains("clickhouse.jdbc.v2=true")) {
62-
log.info("V2 driver is requested through URL.");
63-
return true;
64-
} else {
61+
if (url.contains("clickhouse.jdbc.v1=true")) {
62+
log.info("V1 driver is requested through URL.");
63+
return false;
64+
} if (url.contains("clickhouse.jdbc.v2=false")) {
6565
log.info("V1 driver is requested through URL.");
6666
return false;
67+
} else {
68+
log.info("V2 driver is requested through URL.");
69+
return true;
6770
}
6871
}
6972

70-
return false;
73+
return true;
7174
}
7275

7376

7477
private java.sql.Driver getDriver(String url) {
7578
if (urlFlagSent && driver != null) {// if the URL flag was sent, we don't need to check the URL again
76-
7779
return driver;
7880
}
7981

clickhouse-jdbc/src/test/java/com/clickhouse/jdbc/AccessManagementTest.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
import com.clickhouse.client.http.config.HttpConnectionProvider;
66
import com.clickhouse.data.ClickHouseVersion;
77
import org.testng.Assert;
8+
import org.testng.annotations.BeforeClass;
9+
import org.testng.annotations.BeforeMethod;
810
import org.testng.annotations.DataProvider;
911
import org.testng.annotations.Test;
1012

@@ -16,7 +18,10 @@
1618
import java.util.Properties;
1719

1820
public class AccessManagementTest extends JdbcIntegrationTest {
19-
21+
@BeforeMethod(groups = "integration")
22+
public void setV1() {
23+
System.setProperty("clickhouse.jdbc.v1","true");
24+
}
2025
@Test(groups = "integration", dataProvider = "setRolesArgsForTestSetRole")
2126
public void testSetRoleDifferentConnections(String[] roles, String setRoleExpr, String[] activeRoles,
2227
String connectionProvider) throws SQLException {

clickhouse-jdbc/src/test/java/com/clickhouse/jdbc/ClickHouseConnectionTest.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,15 @@
1818

1919
import org.testng.Assert;
2020
import org.testng.SkipException;
21+
import org.testng.annotations.BeforeClass;
22+
import org.testng.annotations.BeforeMethod;
2123
import org.testng.annotations.Test;
2224

2325
public class ClickHouseConnectionTest extends JdbcIntegrationTest {
26+
@BeforeMethod(groups = "integration")
27+
public void setV1() {
28+
System.setProperty("clickhouse.jdbc.v1","true");
29+
}
2430
@Override
2531
public ClickHouseConnection newConnection(Properties properties) throws SQLException {
2632
return (ClickHouseConnection) newDataSource(properties).getConnection();

clickhouse-jdbc/src/test/java/com/clickhouse/jdbc/ClickHouseDataSourceTest.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
import com.clickhouse.client.ClickHouseServerForTest;
1010
import junit.runner.Version;
1111
import org.testng.Assert;
12+
import org.testng.annotations.BeforeClass;
13+
import org.testng.annotations.BeforeMethod;
1214
import org.testng.annotations.Ignore;
1315
import org.testng.annotations.Test;
1416

@@ -19,6 +21,10 @@
1921
import com.clickhouse.client.config.ClickHouseDefaults;
2022

2123
public class ClickHouseDataSourceTest extends JdbcIntegrationTest {
24+
@BeforeMethod(groups = "integration")
25+
public void setV1() {
26+
System.setProperty("clickhouse.jdbc.v1","true");
27+
}
2228
@Test(groups = "integration")
2329
public void testHighAvailabilityConfig() throws SQLException {
2430
if (isCloud() || ClickHouseDriver.isV2()) return; //TODO: testHighAvailabilityConfig - Revisit, see: https://github.com/ClickHouse/clickhouse-java/issues/1747

clickhouse-jdbc/src/test/java/com/clickhouse/jdbc/ClickHouseDatabaseMetaDataTest.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,16 @@
1616
import com.clickhouse.logging.Logger;
1717
import com.clickhouse.logging.LoggerFactory;
1818
import org.testng.Assert;
19+
import org.testng.annotations.BeforeClass;
20+
import org.testng.annotations.BeforeMethod;
1921
import org.testng.annotations.DataProvider;
2022
import org.testng.annotations.Test;
2123

2224
public class ClickHouseDatabaseMetaDataTest extends JdbcIntegrationTest {
25+
@BeforeMethod(groups = "integration")
26+
public void setV1() {
27+
System.setProperty("clickhouse.jdbc.v1","true");
28+
}
2329

2430
private static final Logger log = LoggerFactory.getLogger(ClickHouseDatabaseMetaDataTest.class);
2531
@DataProvider(name = "selectedColumns")

clickhouse-jdbc/src/test/java/com/clickhouse/jdbc/ClickHouseDriverTest.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,23 @@ public void testAcceptUrl() throws SQLException {
2323
@Test(groups = "integration")
2424
public void testConnect() throws SQLException {
2525
if (isCloud()) return; //TODO: testConnect - Revisit, see: https://github.com/ClickHouse/clickhouse-java/issues/1747
26+
System.setProperty("clickhouse.jdbc.v1","true");
2627
String address = getServerAddress(ClickHouseProtocol.HTTP, true);
2728
ClickHouseDriver driver = new ClickHouseDriver();
2829
Connection conn = driver.connect("jdbc:clickhouse://" + address, null);
2930
conn.close();
3031
}
32+
@Test(groups = "integration")
33+
public void testV2Driver() {
34+
System.setProperty("clickhouse.jdbc.v1","false");
35+
ClickHouseDriver driver = new ClickHouseDriver();
36+
Boolean V1 = false;
37+
Boolean V2 = true;
38+
Assert.assertEquals(driver.isV2("jdbc:clickhouse://localhost:8123"), V2);
39+
Assert.assertEquals(driver.isV2("jdbc:clickhouse://localhost:8123?clickhouse.jdbc.v1=true"), V1);
40+
Assert.assertEquals(driver.isV2("jdbc:clickhouse://localhost:8123?clickhouse.jdbc.v1=false"), V2);
41+
Assert.assertEquals(driver.isV2("jdbc:clickhouse://localhost:8123?clickhouse.jdbc.v2=true"), V2);
42+
Assert.assertEquals(driver.isV2("jdbc:clickhouse://localhost:8123?clickhouse.jdbc.v2=false"), V1);
43+
System.setProperty("clickhouse.jdbc.v1","true");
44+
}
3145
}

clickhouse-jdbc/src/test/java/com/clickhouse/jdbc/ClickHousePreparedStatementTest.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,11 +60,17 @@
6060

6161
import org.testng.Assert;
6262
import org.testng.SkipException;
63+
import org.testng.annotations.BeforeClass;
64+
import org.testng.annotations.BeforeMethod;
6365
import org.testng.annotations.DataProvider;
6466
import org.testng.annotations.Ignore;
6567
import org.testng.annotations.Test;
6668

6769
public class ClickHousePreparedStatementTest extends JdbcIntegrationTest {
70+
@BeforeMethod(groups = "integration")
71+
public void setV1() {
72+
System.setProperty("clickhouse.jdbc.v1","true");
73+
}
6874
@DataProvider(name = "columnsWithDefaultValue")
6975
private Object[][] getColumnsWithDefaultValue() {
7076
return new Object[][] {

clickhouse-jdbc/src/test/java/com/clickhouse/jdbc/ClickHouseResultSetTest.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,16 @@
3434

3535
import org.testng.Assert;
3636
import org.testng.SkipException;
37+
import org.testng.annotations.BeforeClass;
38+
import org.testng.annotations.BeforeMethod;
3739
import org.testng.annotations.DataProvider;
3840
import org.testng.annotations.Test;
3941

4042
public class ClickHouseResultSetTest extends JdbcIntegrationTest {
43+
@BeforeMethod(groups = "integration")
44+
public void setV1() {
45+
System.setProperty("clickhouse.jdbc.v1","true");
46+
}
4147
@DataProvider(name = "nullableTypes")
4248
private Object[][] getNullableTypes() {
4349
return new Object[][] {

clickhouse-jdbc/src/test/java/com/clickhouse/jdbc/ClickHouseStatementTest.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717
import org.roaringbitmap.longlong.Roaring64NavigableMap;
1818
import org.testng.Assert;
1919
import org.testng.SkipException;
20+
import org.testng.annotations.BeforeClass;
21+
import org.testng.annotations.BeforeMethod;
2022
import org.testng.annotations.DataProvider;
2123
import org.testng.annotations.Test;
2224

@@ -59,6 +61,10 @@
5961
import java.util.concurrent.atomic.AtomicReference;
6062

6163
public class ClickHouseStatementTest extends JdbcIntegrationTest {
64+
@BeforeMethod(groups = "integration")
65+
public void setV1() {
66+
System.setProperty("clickhouse.jdbc.v1","true");
67+
}
6268
@DataProvider(name = "timeZoneTestOptions")
6369
private Object[][] getTimeZoneTestOptions() {
6470
return new Object[][] {

clickhouse-jdbc/src/test/java/com/clickhouse/jdbc/CombinedResultSetTest.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
import java.util.List;
88

99
import org.testng.Assert;
10+
import org.testng.annotations.BeforeClass;
11+
import org.testng.annotations.BeforeMethod;
1012
import org.testng.annotations.DataProvider;
1113
import org.testng.annotations.Test;
1214

@@ -15,6 +17,10 @@
1517
import com.clickhouse.data.ClickHouseColumn;
1618

1719
public class CombinedResultSetTest {
20+
@BeforeMethod(groups = "integration")
21+
public void setV1() {
22+
System.setProperty("clickhouse.jdbc.v1","true");
23+
}
1824
@DataProvider(name = "multipleResultSetsProvider")
1925
private Object[][] getMultipleResultSets() {
2026
ClickHouseConfig config = new ClickHouseConfig();

0 commit comments

Comments
 (0)