From 763b4f3b1d91c905a1b4ebd37c66de9f9f0efe9c Mon Sep 17 00:00:00 2001
From: Zhiyu Yang <69311263+zyyang-taosdata@users.noreply.github.com>
Date: Fri, 23 Jul 2021 23:04:29 +0800
Subject: [PATCH] Release/td 5493 (#6993)
* merge jdbc update on develop into master
* remove useless test cases
* change
* change
* remove uneccesary test case
* change
---
src/connector/jdbc/CMakeLists.txt | 2 +-
src/connector/jdbc/deploy-pom.xml | 2 +-
src/connector/jdbc/pom.xml | 35 +-
.../com/taosdata/jdbc/AbstractConnection.java | 64 +-
.../jdbc/AbstractDatabaseMetaData.java | 4 +-
.../com/taosdata/jdbc/AbstractDriver.java | 4 +-
.../jdbc/AbstractParameterMetaData.java | 2 -
.../com/taosdata/jdbc/AbstractStatement.java | 44 +-
.../jdbc/DatabaseMetaDataResultSet.java | 12 +-
.../com/taosdata/jdbc/EmptyResultSet.java | 10 +-
.../com/taosdata/jdbc/TSDBConnection.java | 2 +-
.../java/com/taosdata/jdbc/TSDBConstants.java | 9 +-
.../taosdata/jdbc/TSDBDatabaseMetaData.java | 4 +-
.../java/com/taosdata/jdbc/TSDBDriver.java | 11 +-
.../java/com/taosdata/jdbc/TSDBError.java | 6 +-
.../com/taosdata/jdbc/TSDBErrorNumbers.java | 7 +-
.../com/taosdata/jdbc/TSDBJNIConnector.java | 47 +-
.../taosdata/jdbc/TSDBPreparedStatement.java | 73 +--
.../java/com/taosdata/jdbc/TSDBResultSet.java | 4 +-
.../taosdata/jdbc/TSDBResultSetBlockData.java | 20 +-
.../taosdata/jdbc/TSDBResultSetMetaData.java | 5 +-
.../taosdata/jdbc/TSDBResultSetRowData.java | 131 ++--
.../java/com/taosdata/jdbc/TSDBSubscribe.java | 3 -
.../taosdata/jdbc/enums/TimestampFormat.java | 7 +
.../jdbc/enums/TimestampPrecision.java | 8 +
.../taosdata/jdbc/rs/RestfulConnection.java | 2 +-
.../jdbc/rs/RestfulPreparedStatement.java | 27 +-
.../taosdata/jdbc/rs/RestfulResultSet.java | 199 +++---
.../jdbc/rs/RestfulResultSetMetaData.java | 17 +-
.../taosdata/jdbc/rs/RestfulStatement.java | 7 -
.../jdbc/utils/HttpClientPoolUtil.java | 29 +-
.../java/com/taosdata/jdbc/utils/OSUtils.java | 6 +-
.../jdbc/utils/SqlSyntaxValidator.java | 30 +-
.../com/taosdata/jdbc/utils/TaosInfo.java | 6 +-
.../java/com/taosdata/jdbc/utils/Utils.java | 133 ++--
.../java/com/taosdata/jdbc/StatementTest.java | 108 ----
.../com/taosdata/jdbc/TSDBConnectionTest.java | 8 +-
.../taosdata/jdbc/TSDBJNIConnectorTest.java | 75 ++-
.../jdbc/TSDBParameterMetaDataTest.java | 1 -
.../jdbc/TSDBPreparedStatementTest.java | 326 +++++++++-
.../com/taosdata/jdbc/TSDBResultSetTest.java | 14 +-
.../com/taosdata/jdbc/TSDBStatementTest.java | 22 -
.../jdbc/cases/AppMemoryLeakTest.java | 7 +-
.../{rs => cases}/AuthenticationTest.java | 2 +-
.../jdbc/cases/BadLocaleSettingTest.java | 59 ++
.../jdbc/cases/BatchErrorIgnoreTest.java | 144 +++++
.../taosdata/jdbc/cases/BatchInsertTest.java | 3 -
...iTaosdByRestfulWithDifferentTokenTest.java | 17 +-
.../jdbc/cases/DatetimeBefore1970Test.java | 66 +-
...174Test.java => DoubleQuoteInSqlTest.java} | 56 +-
.../jdbc/cases/DriverAutoloadTest.java | 2 +-
.../com/taosdata/jdbc/cases/ImportTest.java | 5 -
.../jdbc/cases/InsertDbwithoutUseDbTest.java | 4 +-
.../cases/InsertSpecialCharacterJniTest.java | 16 +-
.../InsertSpecialCharacterRestfulTest.java | 16 +-
.../cases/InvalidResultSetPointerTest.java | 8 +-
....java => MicroSecondPrecisionJNITest.java} | 3 +-
...a => MicroSecondPrecisionRestfulTest.java} | 3 +-
...=> MultiThreadsWithSameStatementTest.java} | 12 +-
.../cases/NanoSecondTimestampJNITest.java | 182 ++++++
.../cases/NanoSecondTimestampRestfulTest.java | 182 ++++++
....java => NullValueInResultSetJNITest.java} | 7 +-
...a => NullValueInResultSetRestfulTest.java} | 4 +-
...est.java => NullValueInResultSetTest.java} | 2 +-
.../PreparedStatementBatchInsertJNITest.java | 98 +++
...eparedStatementBatchInsertRestfulTest.java | 98 +++
.../taosdata/jdbc/cases/QueryDataTest.java | 5 +-
.../jdbc/cases/ResetQueryCacheTest.java | 2 -
...sultSetMetaShouldNotBeNullRestfulTest.java | 86 +++
.../com/taosdata/jdbc/cases/SelectTest.java | 4 -
.../com/taosdata/jdbc/cases/StableTest.java | 15 +-
.../com/taosdata/jdbc/cases/TD4144Test.java | 105 ----
.../jdbc/cases/TaosInfoMonitorTest.java | 4 +-
.../TimestampPrecisionInNanoInJniTest.java | 570 ++++++++++++++++++
.../jdbc/cases/UnsignedNumberJniTest.java | 2 +-
.../jdbc/cases/UnsignedNumberRestfulTest.java | 2 +-
.../taosdata/jdbc/rs/RestfulDriverTest.java | 9 +-
.../com/taosdata/jdbc/rs/RestfulJDBCTest.java | 193 +++---
.../jdbc/rs/RestfulPreparedStatementTest.java | 34 +-
.../jdbc/rs/RestfulResultSetTest.java | 14 +-
.../jdbc/rs/RestfulStatementTest.java | 20 +-
.../java/com/taosdata/jdbc/rs/SQLTest.java | 366 +++++++++--
.../com/taosdata/jdbc/utils/OSUtilsTest.java | 6 +-
.../com/taosdata/jdbc/utils/SQLExecutor.java | 74 ---
.../taosdata/jdbc/utils/TimestampUtil.java | 43 --
.../com/taosdata/jdbc/utils/UtilsTest.java | 122 +++-
86 files changed, 2996 insertions(+), 1202 deletions(-)
mode change 100755 => 100644 src/connector/jdbc/pom.xml
create mode 100644 src/connector/jdbc/src/main/java/com/taosdata/jdbc/enums/TimestampFormat.java
create mode 100644 src/connector/jdbc/src/main/java/com/taosdata/jdbc/enums/TimestampPrecision.java
delete mode 100644 src/connector/jdbc/src/test/java/com/taosdata/jdbc/StatementTest.java
rename src/connector/jdbc/src/test/java/com/taosdata/jdbc/{rs => cases}/AuthenticationTest.java (98%)
create mode 100644 src/connector/jdbc/src/test/java/com/taosdata/jdbc/cases/BadLocaleSettingTest.java
create mode 100644 src/connector/jdbc/src/test/java/com/taosdata/jdbc/cases/BatchErrorIgnoreTest.java
rename src/connector/jdbc/src/test/java/com/taosdata/jdbc/cases/{TD4174Test.java => DoubleQuoteInSqlTest.java} (55%)
rename src/connector/jdbc/src/test/java/com/taosdata/jdbc/cases/{TwoTypeTimestampPercisionInJniTest.java => MicroSecondPrecisionJNITest.java} (97%)
rename src/connector/jdbc/src/test/java/com/taosdata/jdbc/cases/{TwoTypeTimestampPercisionInRestfulTest.java => MicroSecondPrecisionRestfulTest.java} (99%)
rename src/connector/jdbc/src/test/java/com/taosdata/jdbc/cases/{MultiThreadsWithSameStatmentTest.java => MultiThreadsWithSameStatementTest.java} (83%)
create mode 100644 src/connector/jdbc/src/test/java/com/taosdata/jdbc/cases/NanoSecondTimestampJNITest.java
create mode 100644 src/connector/jdbc/src/test/java/com/taosdata/jdbc/cases/NanoSecondTimestampRestfulTest.java
rename src/connector/jdbc/src/test/java/com/taosdata/jdbc/cases/{NullValueInResultSetForJdbcJniTest.java => NullValueInResultSetJNITest.java} (87%)
rename src/connector/jdbc/src/test/java/com/taosdata/jdbc/cases/{NullValueInResultSetForJdbcRestfulTest.java => NullValueInResultSetRestfulTest.java} (92%)
rename src/connector/jdbc/src/test/java/com/taosdata/jdbc/cases/{TD3841Test.java => NullValueInResultSetTest.java} (99%)
create mode 100644 src/connector/jdbc/src/test/java/com/taosdata/jdbc/cases/PreparedStatementBatchInsertJNITest.java
create mode 100644 src/connector/jdbc/src/test/java/com/taosdata/jdbc/cases/PreparedStatementBatchInsertRestfulTest.java
create mode 100644 src/connector/jdbc/src/test/java/com/taosdata/jdbc/cases/ResultSetMetaShouldNotBeNullRestfulTest.java
delete mode 100644 src/connector/jdbc/src/test/java/com/taosdata/jdbc/cases/TD4144Test.java
create mode 100644 src/connector/jdbc/src/test/java/com/taosdata/jdbc/cases/TimestampPrecisionInNanoInJniTest.java
delete mode 100644 src/connector/jdbc/src/test/java/com/taosdata/jdbc/utils/SQLExecutor.java
diff --git a/src/connector/jdbc/CMakeLists.txt b/src/connector/jdbc/CMakeLists.txt
index 3fabd751d0..8e30481575 100644
--- a/src/connector/jdbc/CMakeLists.txt
+++ b/src/connector/jdbc/CMakeLists.txt
@@ -8,7 +8,7 @@ IF (TD_MVN_INSTALLED)
ADD_CUSTOM_COMMAND(OUTPUT ${JDBC_CMD_NAME}
POST_BUILD
COMMAND mvn -Dmaven.test.skip=true install -f ${CMAKE_CURRENT_SOURCE_DIR}/pom.xml
- COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/target/taos-jdbcdriver-2.0.31.jar ${LIBRARY_OUTPUT_PATH}
+ COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/target/taos-jdbcdriver-2.0.33.jar ${LIBRARY_OUTPUT_PATH}
COMMAND mvn -Dmaven.test.skip=true clean -f ${CMAKE_CURRENT_SOURCE_DIR}/pom.xml
COMMENT "build jdbc driver")
ADD_CUSTOM_TARGET(${JDBC_TARGET_NAME} ALL WORKING_DIRECTORY ${EXECUTABLE_OUTPUT_PATH} DEPENDS ${JDBC_CMD_NAME})
diff --git a/src/connector/jdbc/deploy-pom.xml b/src/connector/jdbc/deploy-pom.xml
index 8f77582d30..86f498b24a 100755
--- a/src/connector/jdbc/deploy-pom.xml
+++ b/src/connector/jdbc/deploy-pom.xml
@@ -5,7 +5,7 @@
com.taosdata.jdbc
taos-jdbcdriver
- 2.0.31
+ 2.0.33
jar
JDBCDriver
diff --git a/src/connector/jdbc/pom.xml b/src/connector/jdbc/pom.xml
old mode 100755
new mode 100644
index d08d5502c2..ac2f99b0c5
--- a/src/connector/jdbc/pom.xml
+++ b/src/connector/jdbc/pom.xml
@@ -3,7 +3,7 @@
4.0.0
com.taosdata.jdbc
taos-jdbcdriver
- 2.0.31
+ 2.0.33
jar
JDBCDriver
https://github.com/taosdata/TDengine/tree/master/src/connector/jdbc
@@ -37,27 +37,26 @@
-
- junit
- junit
- 4.13
- test
-
-
org.apache.httpcomponents
httpclient
- 4.5.8
+ 4.5.13
com.alibaba
fastjson
- 1.2.58
+ 1.2.76
com.google.guava
guava
- 29.0-jre
+ 30.1.1-jre
+
+
+ junit
+ junit
+ 4.13.1
+ test
@@ -113,17 +112,19 @@
**/*Test.java
- **/TSDBJNIConnectorTest.java
- **/UnsignedNumberJniTest.java
- **/DatetimeBefore1970Test.java
+ **/TimestampPrecisionInNanoInJniTest.java
+ **/NanoSecondTimestampJNITest.java
+ **/NanoSecondTimestampRestfulTest.java
**/AppMemoryLeakTest.java
**/AuthenticationTest.java
- **/TaosInfoMonitorTest.java
+ **/ConnectMultiTaosdByRestfulWithDifferentTokenTest.java
+ **/DatetimeBefore1970Test.java
**/FailOverTest.java
**/InvalidResultSetPointerTest.java
**/RestfulConnectionTest.java
- **/TD4144Test.java
- **/ConnectMultiTaosdByRestfulWithDifferentTokenTest.java
+ **/TSDBJNIConnectorTest.java
+ **/TaosInfoMonitorTest.java
+ **/UnsignedNumberJniTest.java
true
diff --git a/src/connector/jdbc/src/main/java/com/taosdata/jdbc/AbstractConnection.java b/src/connector/jdbc/src/main/java/com/taosdata/jdbc/AbstractConnection.java
index 2970f6c2d3..9950dbeb64 100644
--- a/src/connector/jdbc/src/main/java/com/taosdata/jdbc/AbstractConnection.java
+++ b/src/connector/jdbc/src/main/java/com/taosdata/jdbc/AbstractConnection.java
@@ -1,5 +1,7 @@
package com.taosdata.jdbc;
+import com.taosdata.jdbc.enums.TimestampFormat;
+
import java.sql.*;
import java.util.Enumeration;
import java.util.Map;
@@ -18,7 +20,7 @@ public abstract class AbstractConnection extends WrapperImpl implements Connecti
for (String propName : propNames) {
clientInfoProps.setProperty(propName, properties.getProperty(propName));
}
- String timestampFormat = properties.getProperty(TSDBDriver.PROPERTY_KEY_TIMESTAMP_FORMAT, "STRING");
+ String timestampFormat = properties.getProperty(TSDBDriver.PROPERTY_KEY_TIMESTAMP_FORMAT, String.valueOf(TimestampFormat.STRING));
clientInfoProps.setProperty(TSDBDriver.PROPERTY_KEY_TIMESTAMP_FORMAT, timestampFormat);
}
@@ -169,11 +171,7 @@ public abstract class AbstractConnection extends WrapperImpl implements Connecti
// do nothing
}
- @Override
- public Statement createStatement(int resultSetType, int resultSetConcurrency) throws SQLException {
- if (isClosed())
- throw TSDBError.createSQLException(TSDBErrorNumbers.ERROR_CONNECTION_CLOSED);
-
+ private void checkResultSetTypeAndResultSetConcurrency(int resultSetType, int resultSetConcurrency) throws SQLException {
switch (resultSetType) {
case ResultSet.TYPE_FORWARD_ONLY:
break;
@@ -192,7 +190,14 @@ public abstract class AbstractConnection extends WrapperImpl implements Connecti
default:
throw TSDBError.createSQLException(TSDBErrorNumbers.ERROR_INVALID_VARIABLE);
}
+ }
+ @Override
+ public Statement createStatement(int resultSetType, int resultSetConcurrency) throws SQLException {
+ if (isClosed())
+ throw TSDBError.createSQLException(TSDBErrorNumbers.ERROR_CONNECTION_CLOSED);
+
+ checkResultSetTypeAndResultSetConcurrency(resultSetType, resultSetConcurrency);
return createStatement();
}
@@ -201,24 +206,7 @@ public abstract class AbstractConnection extends WrapperImpl implements Connecti
if (isClosed())
throw TSDBError.createSQLException(TSDBErrorNumbers.ERROR_CONNECTION_CLOSED);
- switch (resultSetType) {
- case ResultSet.TYPE_FORWARD_ONLY:
- break;
- case ResultSet.TYPE_SCROLL_INSENSITIVE:
- case ResultSet.TYPE_SCROLL_SENSITIVE:
- throw TSDBError.createSQLException(TSDBErrorNumbers.ERROR_UNSUPPORTED_METHOD);
- default:
- throw TSDBError.createSQLException(TSDBErrorNumbers.ERROR_INVALID_VARIABLE);
- }
-
- switch (resultSetConcurrency) {
- case ResultSet.CONCUR_READ_ONLY:
- break;
- case ResultSet.CONCUR_UPDATABLE:
- throw TSDBError.createSQLException(TSDBErrorNumbers.ERROR_UNSUPPORTED_METHOD);
- default:
- throw TSDBError.createSQLException(TSDBErrorNumbers.ERROR_INVALID_VARIABLE);
- }
+ checkResultSetTypeAndResultSetConcurrency(resultSetType, resultSetConcurrency);
return prepareStatement(sql);
}
@@ -304,9 +292,6 @@ public abstract class AbstractConnection extends WrapperImpl implements Connecti
@Override
public Statement createStatement(int resultSetType, int resultSetConcurrency, int resultSetHoldability) throws SQLException {
- if (isClosed())
- throw TSDBError.createSQLException(TSDBErrorNumbers.ERROR_CONNECTION_CLOSED);
-
switch (resultSetHoldability) {
case ResultSet.HOLD_CURSORS_OVER_COMMIT:
break;
@@ -320,11 +305,7 @@ public abstract class AbstractConnection extends WrapperImpl implements Connecti
}
@Override
- public PreparedStatement prepareStatement(String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability)
- throws SQLException {
- if (isClosed())
- throw TSDBError.createSQLException(TSDBErrorNumbers.ERROR_CONNECTION_CLOSED);
-
+ public PreparedStatement prepareStatement(String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability) throws SQLException {
switch (resultSetHoldability) {
case ResultSet.HOLD_CURSORS_OVER_COMMIT:
break;
@@ -423,7 +404,7 @@ public abstract class AbstractConnection extends WrapperImpl implements Connecti
status = resultSet.getInt("server_status()");
resultSet.close();
}
- return status == 1 ? true : false;
+ return status == 1;
});
boolean status = false;
@@ -432,9 +413,7 @@ public abstract class AbstractConnection extends WrapperImpl implements Connecti
status = future.get();
else
status = future.get(timeout, TimeUnit.SECONDS);
- } catch (InterruptedException e) {
- e.printStackTrace();
- } catch (ExecutionException e) {
+ } catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
} catch (TimeoutException e) {
future.cancel(true);
@@ -450,8 +429,7 @@ public abstract class AbstractConnection extends WrapperImpl implements Connecti
if (isClosed)
throw (SQLClientInfoException) TSDBError.createSQLException(TSDBErrorNumbers.ERROR_SQLCLIENT_EXCEPTION_ON_CONNECTION_CLOSED);
- if (clientInfoProps != null)
- clientInfoProps.setProperty(name, value);
+ clientInfoProps.setProperty(name, value);
}
@Override
@@ -459,8 +437,8 @@ public abstract class AbstractConnection extends WrapperImpl implements Connecti
if (isClosed)
throw (SQLClientInfoException) TSDBError.createSQLException(TSDBErrorNumbers.ERROR_SQLCLIENT_EXCEPTION_ON_CONNECTION_CLOSED);
- for (Enumeration