Skip to content

Commit b319fd6

Browse files
authored
Merge pull request #2566 from lmartelli/main
Convert values to java.time.Instant
2 parents 84c080b + 0cadf36 commit b319fd6

File tree

3 files changed

+25
-6
lines changed

3 files changed

+25
-6
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
## 0.9.2
22

3+
### Improvements
4+
- [jdbc-v2] `ResultSetImpl.getObject()` handles `java.time.Instant`
5+
36
### Improvements
47
- [jdbc-v2] Classes `com.clickhouse.jdbc.ClientInfoProperties` and `com.clickhouse.jdbc.DriverProperties` moved to public
58
API. (https://github.com/ClickHouse/clickhouse-java/pull/2521)

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

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,8 @@
2020
import java.sql.SQLException;
2121
import java.sql.SQLType;
2222
import java.sql.Types;
23-
import java.time.LocalDate;
24-
import java.time.LocalDateTime;
25-
import java.time.LocalTime;
26-
import java.time.OffsetDateTime;
27-
import java.time.ZonedDateTime;
23+
import java.time.*;
24+
import java.time.chrono.ChronoZonedDateTime;
2825
import java.time.temporal.TemporalAccessor;
2926
import java.util.ArrayList;
3027
import java.util.Collections;
@@ -260,6 +257,8 @@ public static Object convert(Object value, Class<?> type, ClickHouseColumn colum
260257
return OffsetDateTime.from((TemporalAccessor) value);
261258
} else if (type == ZonedDateTime.class && value instanceof TemporalAccessor) {
262259
return ZonedDateTime.from((TemporalAccessor) value);
260+
} else if (type == Instant.class && value instanceof TemporalAccessor) {
261+
return Instant.from((TemporalAccessor) value);
263262
} else if (type == Date.class && value instanceof TemporalAccessor) {
264263
return Date.valueOf(LocalDate.from((TemporalAccessor) value));
265264
} else if (type == java.sql.Timestamp.class && value instanceof TemporalAccessor) {

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

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,12 @@
22

33
import com.clickhouse.client.api.data_formats.internal.BinaryStreamReader;
44
import com.clickhouse.data.ClickHouseColumn;
5-
import org.testng.annotations.Test;
5+
import org.testng.annotations.*;
66

77
import java.math.BigDecimal;
88
import java.sql.SQLException;
9+
import java.time.Instant;
10+
import java.time.ZoneId;
911
import java.util.Arrays;
1012
import java.util.List;
1113

@@ -78,4 +80,19 @@ public void testConvertToInetAddress() throws Exception {
7880
ClickHouseColumn column = ClickHouseColumn.of("ip", "IPv4");
7981
assertEquals(JdbcUtils.convert(java.net.InetAddress.getByName("192.168.0.1"), java.net.Inet6Address.class, column).toString(), "/0:0:0:0:0:ffff:c0a8:1");
8082
}
83+
84+
@DataProvider(name = "timeZones")
85+
public Object[][] timeZones() {
86+
return new Object[][] {
87+
{ ZoneId.of("UTC") },
88+
{ ZoneId.of("Europe/Paris") },
89+
};
90+
}
91+
92+
@Test(groups = {"unit"})
93+
public void testConvertToJavaTimeInstant() throws Exception {
94+
Instant timestamp = Instant.parse("2016-06-07T21:30:00Z");
95+
assertEquals(JdbcUtils.convert(timestamp.atZone(ZoneId.of("UTC")), Instant.class), timestamp);
96+
assertEquals(JdbcUtils.convert(timestamp.atZone(ZoneId.of("UTC+7")), Instant.class), timestamp);
97+
}
8198
}

0 commit comments

Comments
 (0)