Skip to content

Commit c4f6d93

Browse files
committed
Fixed version methods to reflect major and minor version from semver.
1 parent f17c5d8 commit c4f6d93

File tree

6 files changed

+66
-94
lines changed

6 files changed

+66
-94
lines changed
Lines changed: 3 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -1,64 +1,8 @@
11
package com.clickhouse.client.internal;
22

3-
import com.clickhouse.client.api.ClientConfigProperties;
4-
import com.clickhouse.client.api.data_formats.internal.ProcessParser;
5-
import com.clickhouse.client.api.metrics.OperationMetrics;
6-
import com.clickhouse.client.api.metrics.ServerMetrics;
7-
import org.testng.Assert;
8-
import org.testng.annotations.Test;
9-
10-
import java.math.BigDecimal;
11-
import java.math.BigInteger;
12-
import java.time.ZoneId;
13-
import java.time.ZonedDateTime;
14-
3+
/**
4+
* Tests playground
5+
*/
156
public class SmallTests {
167

17-
18-
@Test
19-
public void testSummaryParser() {
20-
OperationMetrics operationMetrics = new OperationMetrics(null);
21-
String summary = createSummary(10, 200, 0, 0, 5, 6000);
22-
ProcessParser.parseSummary(summary, operationMetrics);
23-
24-
Assert.assertEquals(operationMetrics.getMetric(ServerMetrics.NUM_ROWS_READ).getLong(), 10);
25-
Assert.assertEquals(operationMetrics.getMetric(ServerMetrics.NUM_BYTES_READ).getLong(), 200);
26-
27-
}
28-
29-
public static String createSummary(int readRows, int readBytes, int writtenRows,
30-
int writtenBytes, int totalRowsToRead, long elapsedNs) {
31-
return "{\"read_rows\":\"" + readRows + "\"," +
32-
"\"read_bytes\":\"" + readBytes + "\"," +
33-
"\"written_rows\":\"" + writtenRows + "\"," +
34-
"\"written_bytes\":\"" + writtenBytes + "\"," +
35-
"\"total_rows_to_read\":\"" + totalRowsToRead + "\"," +
36-
"\"elapsed_ns\":\"" + elapsedNs + "\"}";
37-
38-
}
39-
40-
@Test
41-
public void testTimezoneConvertion() {
42-
ZonedDateTime dt = ZonedDateTime.now();
43-
System.out.println(" now: " + dt);
44-
ZonedDateTime utcSameInstantDt = dt.withZoneSameInstant(ZoneId.of("UTC"));
45-
System.out.println("withZoneSameInstant: " + utcSameInstantDt);
46-
ZonedDateTime utcSameLocalDt = dt.withZoneSameLocal(ZoneId.of("UTC"));
47-
System.out.println("withZoneSameLocal: " + utcSameLocalDt);
48-
}
49-
50-
@Test
51-
public void testGenConfigParameters() {
52-
System.out.println("<br/> <br/> Default: `none` <br/> Enum: `none` <br/> Key: `none` "
53-
54-
55-
);
56-
for (ClientConfigProperties p : ClientConfigProperties.values()) {
57-
String defaultValue = p.getDefaultValue() == null ? "-" : "`" + p.getDefaultValue() + "`";
58-
System.out.println("<br/> <br/> Default: " +defaultValue + " <br/> Enum: `ClientConfigProperties." + p.name() + "` <br/> Key: `" + p.getKey() +"` "
59-
60-
61-
);
62-
}
63-
}
648
}

jdbc-v2/src/main/java/com/clickhouse/jdbc/ConnectionImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ public ConnectionImpl(String url, Properties info) throws SQLException {
8080
this.appName = "";
8181
this.readOnly = false;
8282
this.holdability = ResultSet.HOLD_CURSORS_OVER_COMMIT;
83-
String clientName = "ClickHouse JDBC Driver V2/" + Driver.driverVersion;
83+
String clientName = "ClickHouse JDBC Driver V2/" + Driver.getLibraryVersion();
8484

8585
Map<String, String> clientProperties = config.getClientProperties();
8686
if (clientProperties.get(ClientConfigProperties.CLIENT_NAME.getKey()) != null) {

jdbc-v2/src/main/java/com/clickhouse/jdbc/Driver.java

Lines changed: 28 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,10 @@
2626
*/
2727
public class Driver implements java.sql.Driver {
2828
private static final Logger log = LoggerFactory.getLogger(Driver.class);
29-
public static final String driverVersion;
30-
public static final int majorVersion;
31-
public static final int minorVersion;
29+
30+
private static final String driverVersion;
31+
private static final int majorVersion;
32+
private static final int minorVersion;
3233
private final DataSourceImpl dataSource;
3334

3435
public static String frameworksDetected = null;
@@ -66,25 +67,10 @@ public static String getFrameworksDetected() {
6667
driverVersion = ClickHouseClientOption.readVersionFromResource("jdbc-v2-version.properties");
6768
log.debug("ClickHouse JDBC driver version: {}", driverVersion);
6869

69-
int tmpMajorVersion;
70-
int tmpMinorVersion;
71-
72-
try {
73-
Matcher m = Pattern.compile("(\\d+)(\\.\\d+)(\\.\\d+)").matcher(driverVersion);
74-
if (m.find()) {
75-
tmpMajorVersion = Integer.parseInt(m.group(1));
76-
tmpMinorVersion = Integer.parseInt(m.group(2).substring(1));
77-
} else {
78-
tmpMajorVersion = 0;
79-
tmpMinorVersion = 0;
80-
}
81-
} catch (Exception e) {
82-
tmpMajorVersion = 0;
83-
tmpMinorVersion = 0;
84-
}
70+
int[] versions = parseVersion(driverVersion);
8571

86-
majorVersion = tmpMajorVersion;
87-
minorVersion = tmpMinorVersion;
72+
majorVersion = versions[0];
73+
minorVersion = versions[1];
8874

8975
//Load the driver
9076
//load(); //Commented out to avoid loading the driver multiple times, because we're referenced in V1
@@ -153,6 +139,7 @@ public int getMinorVersion() {
153139

154140
@Override
155141
public boolean jdbcCompliant() {
142+
// Mainly because of not supported Transactions.
156143
return false;
157144
}
158145

@@ -165,5 +152,25 @@ public java.util.logging.Logger getParentLogger() throws SQLFeatureNotSupportedE
165152
throw new SQLFeatureNotSupportedException("Method not supported", ExceptionUtils.SQL_STATE_FEATURE_NOT_SUPPORTED);
166153
}
167154

155+
public static String getLibraryVersion() {
156+
return driverVersion;
157+
}
158+
168159
private static final Driver INSTANCE = new Driver();
160+
161+
public static int[] parseVersion(String version) {
162+
if (version != null) {
163+
final Pattern pattern = Pattern.compile("(\\d+)\\.(\\d+)\\.(\\d+)");
164+
165+
Matcher matcher = pattern.matcher(version);
166+
if (matcher.find()) {
167+
short major = Short.parseShort(matcher.group(1));
168+
short minor = Short.parseShort(matcher.group(2));
169+
int patch = Integer.parseInt(matcher.group(3));
170+
int majorVersion = (major << 16) | minor;
171+
return new int[]{majorVersion, patch};
172+
}
173+
}
174+
return new int[] { 0, 0 };
175+
}
169176
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -303,7 +303,7 @@ public void updateUserClient(String clientName, Client client) {
303303
public static String getDefaultClientName() {
304304
StringBuilder jdbcName = new StringBuilder();
305305
jdbcName.append(Driver.DRIVER_CLIENT_NAME)
306-
.append(Driver.driverVersion);
306+
.append(Driver.getLibraryVersion());
307307

308308
return jdbcName.toString();
309309
}

jdbc-v2/src/main/java/com/clickhouse/jdbc/metadata/DatabaseMetaDataImpl.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,9 @@
88
import com.clickhouse.jdbc.Driver;
99
import com.clickhouse.jdbc.DriverProperties;
1010
import com.clickhouse.jdbc.JdbcV2Wrapper;
11-
import com.clickhouse.jdbc.ResultSetImpl;
11+
import com.clickhouse.jdbc.internal.DetachedResultSet;
1212
import com.clickhouse.jdbc.internal.ExceptionUtils;
1313
import com.clickhouse.jdbc.internal.JdbcUtils;
14-
import com.clickhouse.jdbc.internal.DetachedResultSet;
1514
import com.clickhouse.logging.Logger;
1615
import com.clickhouse.logging.LoggerFactory;
1716

@@ -29,7 +28,6 @@
2928
import java.util.List;
3029
import java.util.Map;
3130
import java.util.function.Consumer;
32-
import java.util.function.Function;
3331

3432
public class DatabaseMetaDataImpl implements java.sql.DatabaseMetaData, JdbcV2Wrapper {
3533
private static final Logger log = LoggerFactory.getLogger(DatabaseMetaDataImpl.class);
@@ -132,7 +130,7 @@ public String getDriverName() throws SQLException {
132130

133131
@Override
134132
public String getDriverVersion() throws SQLException {
135-
return Driver.driverVersion;
133+
return Driver.getLibraryVersion();
136134
}
137135

138136
@Override

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

Lines changed: 31 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,17 @@
22

33
import com.clickhouse.client.api.ClientConfigProperties;
44
import org.testng.Assert;
5+
import org.testng.annotations.DataProvider;
56
import org.testng.annotations.Test;
67

78
import java.sql.DriverManager;
89
import java.sql.SQLException;
910
import java.util.Properties;
11+
import java.util.regex.Matcher;
12+
import java.util.regex.Pattern;
13+
14+
import static org.testng.AssertJUnit.assertTrue;
15+
import static org.testng.internal.junit.ArrayAsserts.assertArrayEquals;
1016

1117

1218
public class DriverTest extends JdbcIntegrationTest {
@@ -46,10 +52,11 @@ public void testAcceptsURL() {
4652
}
4753
}
4854

49-
@Test (enabled = false) //Disabled for now because it's not implemented
55+
@Test(groups = {"integration"})
5056
public void testGetPropertyInfo() {
5157
try {
5258
Driver driver = new Driver();
59+
driver.getPropertyInfo(getEndpointString(), new Properties());
5360
Assert.assertEquals(driver.getPropertyInfo(getEndpointString(), new Properties()).length, 7);
5461
Properties sample = new Properties();
5562
sample.setProperty("testing", "true");
@@ -59,16 +66,32 @@ public void testGetPropertyInfo() {
5966
}
6067
}
6168

62-
@Test(groups = { "integration" })
63-
public void testGetMajorVersion() {
69+
@Test(groups = {"integration"})
70+
public void testGetDriverVersion() {
6471
Driver driver = new Driver();
65-
Assert.assertEquals(driver.getMajorVersion(), 0);
72+
assertTrue(driver.getMajorVersion() > 0);
73+
assertTrue(driver.getMinorVersion() > -1);
6674
}
6775

68-
@Test(groups = { "integration" })
69-
public void testGetMinorVersion() {
70-
Driver driver = new Driver();
71-
Assert.assertEquals(driver.getMinorVersion(), 9);
76+
@Test(groups = {"integration"}, dataProvider = "testParsingDriverVersionDP")
77+
public void testParsingDriverVersion(String version, int expectedMajor, int expectedMinor) {
78+
int[] versions = Driver.parseVersion(version);
79+
Assert.assertEquals(versions, new int[] { expectedMajor, expectedMinor });
80+
}
81+
82+
@DataProvider(name = "testParsingDriverVersionDP")
83+
public static Object[][] testParsingDriverVersionDP() {
84+
return new Object[][]{
85+
{"", 0, 0},
86+
{null, 0, 0},
87+
{"0.9.1", 0x09, 0x01},
88+
{"1.0.0", 0x010000, 0},
89+
{"1.0.1", 0x010000, 1},
90+
{"1.1.1", 0x010001, 1},
91+
{"1.2.1", 0x010002, 1},
92+
{"5000.20.1", 0x13880014, 1},
93+
{"2.1.1", 0x020001, 1},
94+
};
7295
}
7396

7497
@Test(groups = { "integration" })

0 commit comments

Comments
 (0)