diff --git a/src/connector/jdbc/pom.xml b/src/connector/jdbc/pom.xml index 3d5cf8efe359049d3a9bd2197af7afe1c9fe5321..907562fe26ab831876a4b0a7edf9860cb8f297a2 100644 --- a/src/connector/jdbc/pom.xml +++ b/src/connector/jdbc/pom.xml @@ -122,6 +122,7 @@ **/TSDBJNIConnectorTest.java **/TaosInfoMonitorTest.java **/UnsignedNumberJniTest.java + **/TimeZoneTest.java true diff --git a/src/connector/jdbc/src/main/java/com/taosdata/jdbc/TSDBJNIConnector.java b/src/connector/jdbc/src/main/java/com/taosdata/jdbc/TSDBJNIConnector.java index 051eca7e10ad18daea6a7b1ad55f148b786e0798..4fdbb308c54c23a1fb427f1e9f1530894b0daae1 100755 --- a/src/connector/jdbc/src/main/java/com/taosdata/jdbc/TSDBJNIConnector.java +++ b/src/connector/jdbc/src/main/java/com/taosdata/jdbc/TSDBJNIConnector.java @@ -80,7 +80,8 @@ public class TSDBJNIConnector { this.taos = this.connectImp(host, port, dbName, user, password); if (this.taos == TSDBConstants.JNI_NULL_POINTER) { - throw TSDBError.createSQLException(TSDBErrorNumbers.ERROR_JNI_CONNECTION_NULL); + String errMsg = this.getErrMsg(0); + throw TSDBError.createSQLException(TSDBErrorNumbers.ERROR_JNI_CONNECTION_NULL, errMsg); } // invoke connectImp only here taosInfo.conn_open_increment(); diff --git a/src/connector/jdbc/src/test/java/com/taosdata/jdbc/cases/QueryDataTest.java b/src/connector/jdbc/src/test/java/com/taosdata/jdbc/cases/QueryDataTest.java index 535e56f7d7735a7cbd209fbb2a2fddd492021e15..3fea221446775a779593f8c74c77474bc55fb071 100644 --- a/src/connector/jdbc/src/test/java/com/taosdata/jdbc/cases/QueryDataTest.java +++ b/src/connector/jdbc/src/test/java/com/taosdata/jdbc/cases/QueryDataTest.java @@ -34,9 +34,8 @@ public class QueryDataTest { String createTableSql = "create table " + stbName + "(ts timestamp, name binary(64))"; statement.executeUpdate(createTableSql); - } catch (SQLException e) { - return; + e.printStackTrace(); } } diff --git a/src/connector/jdbc/src/test/java/com/taosdata/jdbc/cases/TimeZoneTest.java b/src/connector/jdbc/src/test/java/com/taosdata/jdbc/cases/TimeZoneTest.java new file mode 100644 index 0000000000000000000000000000000000000000..94a175ad5c7fd50fa35d6b45ea59ab26ffc02ce1 --- /dev/null +++ b/src/connector/jdbc/src/test/java/com/taosdata/jdbc/cases/TimeZoneTest.java @@ -0,0 +1,71 @@ +package com.taosdata.jdbc.cases; + +import com.taosdata.jdbc.TSDBDriver; +import org.junit.Test; + +import java.sql.*; +import java.time.Instant; +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.util.Properties; + +public class TimeZoneTest { + + private String url = "jdbc:TAOS://127.0.0.1:6030/?user=root&password=taosdata"; + + @Test + public void javaTimeZone() { + LocalDateTime localDateTime = LocalDateTime.of(1970, 1, 1, 0, 0, 0); + + Instant instant = localDateTime.atZone(ZoneId.of("UTC-8")).toInstant(); + System.out.println("UTC-8: " + instant.getEpochSecond() + "," + instant); + + instant = localDateTime.atZone(ZoneId.of("UT")).toInstant(); + System.out.println("UTC: " + instant.getEpochSecond() + "," + instant); + + + instant = localDateTime.atZone(ZoneId.of("UTC+8")).toInstant(); + System.out.println("UTC+8: " + instant.getEpochSecond() + "," + instant); + } + + @Test + public void taosTimeZone() { + // given + Properties props = new Properties(); + props.setProperty(TSDBDriver.PROPERTY_KEY_TIME_ZONE, "UTC-8"); + + // when and then + try (Connection connection = DriverManager.getConnection(url, props)) { + Statement stmt = connection.createStatement(); + + stmt.execute("drop database if exists timezone_test"); + stmt.execute("create database if not exists timezone_test keep 365000"); + stmt.execute("use timezone_test"); + stmt.execute("create table weather(ts timestamp, temperature float)"); + + stmt.execute("insert into timezone_test.weather(ts, temperature) values('1970-01-01 00:00:00', 1.0)"); + + ResultSet rs = stmt.executeQuery("select * from timezone_test.weather"); + while (rs.next()) { + Timestamp ts = rs.getTimestamp("ts"); + System.out.println("ts: " + ts.getTime() + "," + ts); + } + + stmt.execute("insert into timezone_test.weather(ts, temperature, humidity) values('1970-01-02 00:00:00', 1.0, 2.0)"); + + rs = stmt.executeQuery("select * from timezone_test.weather"); + while (rs.next()) { + Timestamp ts = rs.getTimestamp("ts"); + System.out.println("ts: " + ts.getTime() + "," + ts); + } + + + stmt.execute("drop database if exists timezone_test"); + + stmt.close(); + } catch (SQLException e) { + e.printStackTrace(); + } + } + +} \ No newline at end of file