Merge branch 'develop' into feature/TD-1925_new
This commit is contained in:
commit
ddf53cd785
|
@ -32,7 +32,7 @@ ELSEIF (TD_WINDOWS)
|
||||||
#INSTALL(TARGETS taos RUNTIME DESTINATION driver)
|
#INSTALL(TARGETS taos RUNTIME DESTINATION driver)
|
||||||
#INSTALL(TARGETS shell RUNTIME DESTINATION .)
|
#INSTALL(TARGETS shell RUNTIME DESTINATION .)
|
||||||
IF (TD_MVN_INSTALLED)
|
IF (TD_MVN_INSTALLED)
|
||||||
INSTALL(FILES ${LIBRARY_OUTPUT_PATH}/taos-jdbcdriver-2.0.15-dist.jar DESTINATION connector/jdbc)
|
INSTALL(FILES ${LIBRARY_OUTPUT_PATH}/taos-jdbcdriver-2.0.16-dist.jar DESTINATION connector/jdbc)
|
||||||
ENDIF ()
|
ENDIF ()
|
||||||
ELSEIF (TD_DARWIN)
|
ELSEIF (TD_DARWIN)
|
||||||
SET(TD_MAKE_INSTALL_SH "${TD_COMMUNITY_DIR}/packaging/tools/make_install.sh")
|
SET(TD_MAKE_INSTALL_SH "${TD_COMMUNITY_DIR}/packaging/tools/make_install.sh")
|
||||||
|
|
|
@ -4,7 +4,7 @@ PROJECT(TDengine)
|
||||||
IF (DEFINED VERNUMBER)
|
IF (DEFINED VERNUMBER)
|
||||||
SET(TD_VER_NUMBER ${VERNUMBER})
|
SET(TD_VER_NUMBER ${VERNUMBER})
|
||||||
ELSE ()
|
ELSE ()
|
||||||
SET(TD_VER_NUMBER "2.0.13.0")
|
SET(TD_VER_NUMBER "2.0.14.0")
|
||||||
ENDIF ()
|
ENDIF ()
|
||||||
|
|
||||||
IF (DEFINED VERCOMPATIBLE)
|
IF (DEFINED VERCOMPATIBLE)
|
||||||
|
|
|
@ -218,7 +218,7 @@ SHOW MNODES;
|
||||||
|
|
||||||
如果一个数据节点离线,TDengine集群将自动检测到。有如下两种情况:
|
如果一个数据节点离线,TDengine集群将自动检测到。有如下两种情况:
|
||||||
|
|
||||||
- 该数据节点离线超过一定时间(taos.cfg里配置参数offlineThreshold控制时长),系统将自动把该数据节点删除,产生系统报警信息,触发负载均衡流程。如果该被删除的数据节点重现上线时,它将无法加入集群,需要系统管理员重新将其添加进集群才会开始工作。
|
- 该数据节点离线超过一定时间(taos.cfg里配置参数offlineThreshold控制时长),系统将自动把该数据节点删除,产生系统报警信息,触发负载均衡流程。如果该被删除的数据节点重新上线时,它将无法加入集群,需要系统管理员重新将其添加进集群才会开始工作。
|
||||||
- 离线后,在offlineThreshold的时长内重新上线,系统将自动启动数据恢复流程,等数据完全恢复后,该节点将开始正常工作。
|
- 离线后,在offlineThreshold的时长内重新上线,系统将自动启动数据恢复流程,等数据完全恢复后,该节点将开始正常工作。
|
||||||
|
|
||||||
**注意:**如果一个虚拟节点组(包括mnode组)里所归属的每个数据节点都处于离线或unsynced状态,必须等该虚拟节点组里的所有数据节点都上线、都能交换状态信息后,才能选出Master,该虚拟节点组才能对外提供服务。比如整个集群有3个数据节点,副本数为3,如果3个数据节点都宕机,然后2个数据节点重启,是无法工作的,只有等3个数据节点都重启成功,才能对外服务。
|
**注意:**如果一个虚拟节点组(包括mnode组)里所归属的每个数据节点都处于离线或unsynced状态,必须等该虚拟节点组里的所有数据节点都上线、都能交换状态信息后,才能选出Master,该虚拟节点组才能对外提供服务。比如整个集群有3个数据节点,副本数为3,如果3个数据节点都宕机,然后2个数据节点重启,是无法工作的,只有等3个数据节点都重启成功,才能对外服务。
|
||||||
|
|
|
@ -1,5 +1,19 @@
|
||||||
# 常见问题
|
# 常见问题
|
||||||
|
|
||||||
|
## 0. 怎么报告问题?
|
||||||
|
|
||||||
|
如果 FAQ 中的信息不能够帮到您,需要 TDengine 技术团队的技术支持与协助,请将以下两个目录中内容打包:
|
||||||
|
1. /var/log/taos (如果没有修改过默认路径)
|
||||||
|
2. /etc/taos
|
||||||
|
|
||||||
|
附上必要的问题描述,包括使用的 TDengine 版本信息、平台环境信息、发生该问题的执行操作、出现问题的表征及大概的时间,在<a href='https://github.com/taosdata/TDengine'> GitHub</a>提交Issue。
|
||||||
|
|
||||||
|
为了保证有足够的debug信息,如果问题能够重复,请修改/etc/taos/taos.cfg文件,最后面添加一行“debugFlag 135"(不带引号本身),然后重启taosd, 重复问题,然后再递交。也可以通过如下SQL语句,临时设置taosd的日志级别。
|
||||||
|
```
|
||||||
|
alter dnode <dnode_id> debugFlag 135;
|
||||||
|
```
|
||||||
|
但系统正常运行时,请一定将debugFlag设置为131,否则会产生大量的日志信息,降低系统效率。
|
||||||
|
|
||||||
## 1. TDengine2.0之前的版本升级到2.0及以上的版本应该注意什么?☆☆☆
|
## 1. TDengine2.0之前的版本升级到2.0及以上的版本应该注意什么?☆☆☆
|
||||||
|
|
||||||
2.0版本在之前版本的基础上,进行了完全的重构,配置文件和数据文件是不兼容的。在升级之前务必进行如下操作:
|
2.0版本在之前版本的基础上,进行了完全的重构,配置文件和数据文件是不兼容的。在升级之前务必进行如下操作:
|
||||||
|
@ -118,16 +132,8 @@ TDengine是根据hostname唯一标志一台机器的,在数据文件从机器A
|
||||||
- 2.0.7.0 及以后的版本,到/var/lib/taos/dnode下,修复dnodeEps.json的dnodeId对应的FQDN,重启。确保机器内所有机器的此文件是完全相同的。
|
- 2.0.7.0 及以后的版本,到/var/lib/taos/dnode下,修复dnodeEps.json的dnodeId对应的FQDN,重启。确保机器内所有机器的此文件是完全相同的。
|
||||||
- 1.x 和 2.x 版本的存储结构不兼容,需要使用迁移工具或者自己开发应用导出导入数据。
|
- 1.x 和 2.x 版本的存储结构不兼容,需要使用迁移工具或者自己开发应用导出导入数据。
|
||||||
|
|
||||||
## 17. 怎么报告问题?
|
## 17. TDengine 是否支持删除或更新已经写入的数据?
|
||||||
|
|
||||||
如果 FAQ 中的信息不能够帮到您,需要 TDengine 技术团队的技术支持与协助,请将以下两个目录中内容打包:
|
TDengine 目前尚不支持删除功能,未来根据用户需求可能会支持。
|
||||||
1. /var/log/taos
|
|
||||||
2. /etc/taos
|
|
||||||
|
|
||||||
附上必要的问题描述,以及发生该问题的执行操作,出现问题的表征及大概的时间,在<a href='https://github.com/taosdata/TDengine'> GitHub</a>提交Issue。
|
从 2.0.8.0 开始,TDengine 支持更新已经写入数据的功能。使用更新功能需要在创建数据库时使用 UPDATE 1 参数,之后可以使用 INSERT INTO 命令更新已经写入的相同时间戳数据。UPDATE 参数不支持 ALTER DATABASE 命令修改。没有使用 UPDATE 1 参数创建的数据库,写入相同时间戳的数据不会修改之前的数据,也不会报错。
|
||||||
|
|
||||||
为了保证有足够的debug信息,如果问题能够重复,请修改/etc/taos/taos.cfg文件,最后面添加一行“debugFlag 135"(不带引号本身),然后重启taosd, 重复问题,然后再递交。也可以通过如下SQL语句,临时设置taosd的日志级别。
|
|
||||||
```
|
|
||||||
alter dnode <dnode_id> debugFlag 135;
|
|
||||||
```
|
|
||||||
但系统正常运行时,请一定将debugFlag设置为131,否则会产生大量的日志信息,降低系统效率。
|
|
|
@ -1,6 +1,6 @@
|
||||||
name: tdengine
|
name: tdengine
|
||||||
base: core18
|
base: core18
|
||||||
version: '2.0.13.0'
|
version: '2.0.14.0'
|
||||||
icon: snap/gui/t-dengine.svg
|
icon: snap/gui/t-dengine.svg
|
||||||
summary: an open-source big data platform designed and optimized for IoT.
|
summary: an open-source big data platform designed and optimized for IoT.
|
||||||
description: |
|
description: |
|
||||||
|
@ -72,7 +72,7 @@ parts:
|
||||||
- usr/bin/taosd
|
- usr/bin/taosd
|
||||||
- usr/bin/taos
|
- usr/bin/taos
|
||||||
- usr/bin/taosdemo
|
- usr/bin/taosdemo
|
||||||
- usr/lib/libtaos.so.2.0.13.0
|
- usr/lib/libtaos.so.2.0.14.0
|
||||||
- usr/lib/libtaos.so.1
|
- usr/lib/libtaos.so.1
|
||||||
- usr/lib/libtaos.so
|
- usr/lib/libtaos.so
|
||||||
|
|
||||||
|
|
|
@ -1,32 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<classpath>
|
|
||||||
<classpathentry kind="src" output="target/classes" path="src/main/java">
|
|
||||||
<attributes>
|
|
||||||
<attribute name="optional" value="true"/>
|
|
||||||
<attribute name="maven.pomderived" value="true"/>
|
|
||||||
</attributes>
|
|
||||||
</classpathentry>
|
|
||||||
<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">
|
|
||||||
<attributes>
|
|
||||||
<attribute name="maven.pomderived" value="true"/>
|
|
||||||
</attributes>
|
|
||||||
</classpathentry>
|
|
||||||
<classpathentry kind="src" output="target/test-classes" path="src/test/java">
|
|
||||||
<attributes>
|
|
||||||
<attribute name="optional" value="true"/>
|
|
||||||
<attribute name="maven.pomderived" value="true"/>
|
|
||||||
<attribute name="test" value="true"/>
|
|
||||||
</attributes>
|
|
||||||
</classpathentry>
|
|
||||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
|
|
||||||
<attributes>
|
|
||||||
<attribute name="maven.pomderived" value="true"/>
|
|
||||||
</attributes>
|
|
||||||
</classpathentry>
|
|
||||||
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
|
|
||||||
<attributes>
|
|
||||||
<attribute name="maven.pomderived" value="true"/>
|
|
||||||
</attributes>
|
|
||||||
</classpathentry>
|
|
||||||
<classpathentry kind="output" path="target/classes"/>
|
|
||||||
</classpath>
|
|
|
@ -1,23 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<projectDescription>
|
|
||||||
<name>taos-jdbcdriver</name>
|
|
||||||
<comment></comment>
|
|
||||||
<projects>
|
|
||||||
</projects>
|
|
||||||
<buildSpec>
|
|
||||||
<buildCommand>
|
|
||||||
<name>org.eclipse.jdt.core.javabuilder</name>
|
|
||||||
<arguments>
|
|
||||||
</arguments>
|
|
||||||
</buildCommand>
|
|
||||||
<buildCommand>
|
|
||||||
<name>org.eclipse.m2e.core.maven2Builder</name>
|
|
||||||
<arguments>
|
|
||||||
</arguments>
|
|
||||||
</buildCommand>
|
|
||||||
</buildSpec>
|
|
||||||
<natures>
|
|
||||||
<nature>org.eclipse.jdt.core.javanature</nature>
|
|
||||||
<nature>org.eclipse.m2e.core.maven2Nature</nature>
|
|
||||||
</natures>
|
|
||||||
</projectDescription>
|
|
|
@ -8,7 +8,7 @@ IF (TD_MVN_INSTALLED)
|
||||||
ADD_CUSTOM_COMMAND(OUTPUT ${JDBC_CMD_NAME}
|
ADD_CUSTOM_COMMAND(OUTPUT ${JDBC_CMD_NAME}
|
||||||
POST_BUILD
|
POST_BUILD
|
||||||
COMMAND mvn -Dmaven.test.skip=true install -f ${CMAKE_CURRENT_SOURCE_DIR}/pom.xml
|
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.15-dist.jar ${LIBRARY_OUTPUT_PATH}
|
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/target/taos-jdbcdriver-2.0.16-dist.jar ${LIBRARY_OUTPUT_PATH}
|
||||||
COMMAND mvn -Dmaven.test.skip=true clean -f ${CMAKE_CURRENT_SOURCE_DIR}/pom.xml
|
COMMAND mvn -Dmaven.test.skip=true clean -f ${CMAKE_CURRENT_SOURCE_DIR}/pom.xml
|
||||||
COMMENT "build jdbc driver")
|
COMMENT "build jdbc driver")
|
||||||
ADD_CUSTOM_TARGET(${JDBC_TARGET_NAME} ALL WORKING_DIRECTORY ${EXECUTABLE_OUTPUT_PATH} DEPENDS ${JDBC_CMD_NAME})
|
ADD_CUSTOM_TARGET(${JDBC_TARGET_NAME} ALL WORKING_DIRECTORY ${EXECUTABLE_OUTPUT_PATH} DEPENDS ${JDBC_CMD_NAME})
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
|
|
||||||
<groupId>com.taosdata.jdbc</groupId>
|
<groupId>com.taosdata.jdbc</groupId>
|
||||||
<artifactId>taos-jdbcdriver</artifactId>
|
<artifactId>taos-jdbcdriver</artifactId>
|
||||||
<version>2.0.15</version>
|
<version>2.0.16</version>
|
||||||
<packaging>jar</packaging>
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
<name>JDBCDriver</name>
|
<name>JDBCDriver</name>
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<groupId>com.taosdata.jdbc</groupId>
|
<groupId>com.taosdata.jdbc</groupId>
|
||||||
<artifactId>taos-jdbcdriver</artifactId>
|
<artifactId>taos-jdbcdriver</artifactId>
|
||||||
<version>2.0.15</version>
|
<version>2.0.16</version>
|
||||||
<packaging>jar</packaging>
|
<packaging>jar</packaging>
|
||||||
<name>JDBCDriver</name>
|
<name>JDBCDriver</name>
|
||||||
<url>https://github.com/taosdata/TDengine/tree/master/src/connector/jdbc</url>
|
<url>https://github.com/taosdata/TDengine/tree/master/src/connector/jdbc</url>
|
||||||
|
@ -49,6 +49,7 @@
|
||||||
</exclusion>
|
</exclusion>
|
||||||
</exclusions>
|
</exclusions>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>junit</groupId>
|
<groupId>junit</groupId>
|
||||||
<artifactId>junit</artifactId>
|
<artifactId>junit</artifactId>
|
||||||
|
@ -56,12 +57,6 @@
|
||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
|
||||||
<groupId>mysql</groupId>
|
|
||||||
<artifactId>mysql-connector-java</artifactId>
|
|
||||||
<version>5.1.47</version>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<!-- for restful -->
|
<!-- for restful -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.apache.httpcomponents</groupId>
|
<groupId>org.apache.httpcomponents</groupId>
|
||||||
|
@ -79,12 +74,6 @@
|
||||||
<version>1.2.58</version>
|
<version>1.2.58</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
|
||||||
<groupId>mysql</groupId>
|
|
||||||
<artifactId>mysql-connector-java</artifactId>
|
|
||||||
<version>5.1.49</version>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
<build>
|
<build>
|
||||||
|
|
|
@ -497,12 +497,12 @@ public abstract class AbstractDatabaseMetaData implements DatabaseMetaData {
|
||||||
|
|
||||||
public ResultSet getProcedures(String catalog, String schemaPattern, String procedureNamePattern)
|
public ResultSet getProcedures(String catalog, String schemaPattern, String procedureNamePattern)
|
||||||
throws SQLException {
|
throws SQLException {
|
||||||
throw new SQLException(TSDBConstants.UNSUPPORT_METHOD_EXCEPTIONZ_MSG);
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ResultSet getProcedureColumns(String catalog, String schemaPattern, String procedureNamePattern,
|
public ResultSet getProcedureColumns(String catalog, String schemaPattern, String procedureNamePattern,
|
||||||
String columnNamePattern) throws SQLException {
|
String columnNamePattern) throws SQLException {
|
||||||
throw new SQLException(TSDBConstants.UNSUPPORT_METHOD_EXCEPTIONZ_MSG);
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract ResultSet getTables(String catalog, String schemaPattern, String tableNamePattern, String[] types)
|
public abstract ResultSet getTables(String catalog, String schemaPattern, String tableNamePattern, String[] types)
|
||||||
|
|
|
@ -20,13 +20,11 @@ import java.util.List;
|
||||||
|
|
||||||
public class TSDBDatabaseMetaData implements java.sql.DatabaseMetaData {
|
public class TSDBDatabaseMetaData implements java.sql.DatabaseMetaData {
|
||||||
|
|
||||||
private String dbProductName = null;
|
private String url;
|
||||||
private String url = null;
|
private String userName;
|
||||||
private String userName = null;
|
private Connection conn;
|
||||||
private Connection conn = null;
|
|
||||||
|
|
||||||
public TSDBDatabaseMetaData(String dbProductName, String url, String userName) {
|
public TSDBDatabaseMetaData(String url, String userName) {
|
||||||
this.dbProductName = dbProductName;
|
|
||||||
this.url = url;
|
this.url = url;
|
||||||
this.userName = userName;
|
this.userName = userName;
|
||||||
}
|
}
|
||||||
|
@ -35,12 +33,17 @@ public class TSDBDatabaseMetaData implements java.sql.DatabaseMetaData {
|
||||||
this.conn = conn;
|
this.conn = conn;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public <T> T unwrap(Class<T> iface) throws SQLException {
|
public <T> T unwrap(Class<T> iface) throws SQLException {
|
||||||
return null;
|
try {
|
||||||
|
return iface.cast(this);
|
||||||
|
} catch (ClassCastException cce) {
|
||||||
|
throw new SQLException("Unable to unwrap to " + iface.toString());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isWrapperFor(Class<?> iface) throws SQLException {
|
public boolean isWrapperFor(Class<?> iface) throws SQLException {
|
||||||
return false;
|
return iface.isInstance(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean allProceduresAreCallable() throws SQLException {
|
public boolean allProceduresAreCallable() throws SQLException {
|
||||||
|
@ -80,11 +83,11 @@ public class TSDBDatabaseMetaData implements java.sql.DatabaseMetaData {
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getDatabaseProductName() throws SQLException {
|
public String getDatabaseProductName() throws SQLException {
|
||||||
return this.dbProductName;
|
return "TDengine";
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getDatabaseProductVersion() throws SQLException {
|
public String getDatabaseProductVersion() throws SQLException {
|
||||||
return "1.5.1";
|
return "2.0.x.x";
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getDriverName() throws SQLException {
|
public String getDriverName() throws SQLException {
|
||||||
|
@ -92,7 +95,7 @@ public class TSDBDatabaseMetaData implements java.sql.DatabaseMetaData {
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getDriverVersion() throws SQLException {
|
public String getDriverVersion() throws SQLException {
|
||||||
return "1.0.0";
|
return "2.0.x";
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getDriverMajorVersion() {
|
public int getDriverMajorVersion() {
|
||||||
|
@ -111,7 +114,9 @@ public class TSDBDatabaseMetaData implements java.sql.DatabaseMetaData {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public boolean supportsMixedCaseIdentifiers() throws SQLException {
|
public boolean supportsMixedCaseIdentifiers() throws SQLException {
|
||||||
|
//像database、table这些对象的标识符,在存储时是否采用大小写混合的模式
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -120,7 +125,7 @@ public class TSDBDatabaseMetaData implements java.sql.DatabaseMetaData {
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean storesLowerCaseIdentifiers() throws SQLException {
|
public boolean storesLowerCaseIdentifiers() throws SQLException {
|
||||||
return false;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean storesMixedCaseIdentifiers() throws SQLException {
|
public boolean storesMixedCaseIdentifiers() throws SQLException {
|
||||||
|
@ -128,6 +133,7 @@ public class TSDBDatabaseMetaData implements java.sql.DatabaseMetaData {
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean supportsMixedCaseQuotedIdentifiers() throws SQLException {
|
public boolean supportsMixedCaseQuotedIdentifiers() throws SQLException {
|
||||||
|
//像database、table这些对象的标识符,在存储时是否采用大小写混合、并带引号的模式
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -188,10 +194,12 @@ public class TSDBDatabaseMetaData implements java.sql.DatabaseMetaData {
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean nullPlusNonNullIsNull() throws SQLException {
|
public boolean nullPlusNonNullIsNull() throws SQLException {
|
||||||
|
// null + non-null != null
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean supportsConvert() throws SQLException {
|
public boolean supportsConvert() throws SQLException {
|
||||||
|
// 是否支持转换函数convert
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -216,7 +224,7 @@ public class TSDBDatabaseMetaData implements java.sql.DatabaseMetaData {
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean supportsGroupBy() throws SQLException {
|
public boolean supportsGroupBy() throws SQLException {
|
||||||
return false;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean supportsGroupByUnrelated() throws SQLException {
|
public boolean supportsGroupByUnrelated() throws SQLException {
|
||||||
|
@ -488,7 +496,7 @@ public class TSDBDatabaseMetaData implements java.sql.DatabaseMetaData {
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getDefaultTransactionIsolation() throws SQLException {
|
public int getDefaultTransactionIsolation() throws SQLException {
|
||||||
return 0;
|
return Connection.TRANSACTION_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean supportsTransactions() throws SQLException {
|
public boolean supportsTransactions() throws SQLException {
|
||||||
|
@ -496,6 +504,8 @@ public class TSDBDatabaseMetaData implements java.sql.DatabaseMetaData {
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean supportsTransactionIsolationLevel(int level) throws SQLException {
|
public boolean supportsTransactionIsolationLevel(int level) throws SQLException {
|
||||||
|
if (level == Connection.TRANSACTION_NONE)
|
||||||
|
return true;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -517,28 +527,27 @@ public class TSDBDatabaseMetaData implements java.sql.DatabaseMetaData {
|
||||||
|
|
||||||
public ResultSet getProcedures(String catalog, String schemaPattern, String procedureNamePattern)
|
public ResultSet getProcedures(String catalog, String schemaPattern, String procedureNamePattern)
|
||||||
throws SQLException {
|
throws SQLException {
|
||||||
throw new SQLException(TSDBConstants.UNSUPPORT_METHOD_EXCEPTIONZ_MSG);
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ResultSet getProcedureColumns(String catalog, String schemaPattern, String procedureNamePattern,
|
public ResultSet getProcedureColumns(String catalog, String schemaPattern, String procedureNamePattern,
|
||||||
String columnNamePattern) throws SQLException {
|
String columnNamePattern) throws SQLException {
|
||||||
throw new SQLException(TSDBConstants.UNSUPPORT_METHOD_EXCEPTIONZ_MSG);
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ResultSet getTables(String catalog, String schemaPattern, String tableNamePattern, String[] types)
|
public ResultSet getTables(String catalog, String schemaPattern, String tableNamePattern, String[] types) throws SQLException {
|
||||||
throws SQLException {
|
if (conn == null || conn.isClosed()) {
|
||||||
Statement stmt = null;
|
throw new SQLException(TSDBConstants.FixErrMsg(TSDBConstants.JNI_CONNECTION_NULL));
|
||||||
if (null != conn && !conn.isClosed()) {
|
}
|
||||||
stmt = conn.createStatement();
|
|
||||||
if (catalog == null || catalog.length() < 1) {
|
try (Statement stmt = conn.createStatement()) {
|
||||||
catalog = conn.getCatalog();
|
if (catalog == null || catalog.isEmpty())
|
||||||
}
|
return null;
|
||||||
|
|
||||||
stmt.executeUpdate("use " + catalog);
|
stmt.executeUpdate("use " + catalog);
|
||||||
ResultSet resultSet0 = stmt.executeQuery("show tables");
|
ResultSet resultSet0 = stmt.executeQuery("show tables");
|
||||||
GetTablesResultSet getTablesResultSet = new GetTablesResultSet(resultSet0, catalog, schemaPattern, tableNamePattern, types);
|
GetTablesResultSet getTablesResultSet = new GetTablesResultSet(resultSet0, catalog, schemaPattern, tableNamePattern, types);
|
||||||
return getTablesResultSet;
|
return getTablesResultSet;
|
||||||
} else {
|
|
||||||
throw new SQLException(TSDBConstants.FixErrMsg(TSDBConstants.JNI_CONNECTION_NULL));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -547,14 +556,12 @@ public class TSDBDatabaseMetaData implements java.sql.DatabaseMetaData {
|
||||||
}
|
}
|
||||||
|
|
||||||
public ResultSet getCatalogs() throws SQLException {
|
public ResultSet getCatalogs() throws SQLException {
|
||||||
|
if (conn == null || conn.isClosed())
|
||||||
|
throw new SQLException(TSDBConstants.FixErrMsg(TSDBConstants.JNI_CONNECTION_NULL));
|
||||||
|
|
||||||
if (conn != null && !conn.isClosed()) {
|
try (Statement stmt = conn.createStatement()) {
|
||||||
Statement stmt = conn.createStatement();
|
ResultSet rs = stmt.executeQuery("show databases");
|
||||||
ResultSet resultSet0 = stmt.executeQuery("show databases");
|
return new CatalogResultSet(rs);
|
||||||
CatalogResultSet resultSet = new CatalogResultSet(resultSet0);
|
|
||||||
return resultSet;
|
|
||||||
} else {
|
|
||||||
return getEmptyResultSet();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -562,7 +569,7 @@ public class TSDBDatabaseMetaData implements java.sql.DatabaseMetaData {
|
||||||
DatabaseMetaDataResultSet resultSet = new DatabaseMetaDataResultSet();
|
DatabaseMetaDataResultSet resultSet = new DatabaseMetaDataResultSet();
|
||||||
|
|
||||||
// set up ColumnMetaDataList
|
// set up ColumnMetaDataList
|
||||||
List<ColumnMetaData> columnMetaDataList = new ArrayList<ColumnMetaData>(1);
|
List<ColumnMetaData> columnMetaDataList = new ArrayList<>(1);
|
||||||
ColumnMetaData colMetaData = new ColumnMetaData();
|
ColumnMetaData colMetaData = new ColumnMetaData();
|
||||||
colMetaData.setColIndex(0);
|
colMetaData.setColIndex(0);
|
||||||
colMetaData.setColName("TABLE_TYPE");
|
colMetaData.setColName("TABLE_TYPE");
|
||||||
|
@ -571,7 +578,7 @@ public class TSDBDatabaseMetaData implements java.sql.DatabaseMetaData {
|
||||||
columnMetaDataList.add(colMetaData);
|
columnMetaDataList.add(colMetaData);
|
||||||
|
|
||||||
// set up rowDataList
|
// set up rowDataList
|
||||||
List<TSDBResultSetRowData> rowDataList = new ArrayList<TSDBResultSetRowData>(2);
|
List<TSDBResultSetRowData> rowDataList = new ArrayList<>(2);
|
||||||
TSDBResultSetRowData rowData = new TSDBResultSetRowData();
|
TSDBResultSetRowData rowData = new TSDBResultSetRowData();
|
||||||
rowData.setString(0, "TABLE");
|
rowData.setString(0, "TABLE");
|
||||||
rowDataList.add(rowData);
|
rowDataList.add(rowData);
|
||||||
|
@ -591,11 +598,10 @@ public class TSDBDatabaseMetaData implements java.sql.DatabaseMetaData {
|
||||||
Statement stmt = null;
|
Statement stmt = null;
|
||||||
if (null != conn && !conn.isClosed()) {
|
if (null != conn && !conn.isClosed()) {
|
||||||
stmt = conn.createStatement();
|
stmt = conn.createStatement();
|
||||||
if (catalog == null || catalog.length() < 1) {
|
if (catalog == null || catalog.isEmpty())
|
||||||
catalog = conn.getCatalog();
|
return null;
|
||||||
}
|
|
||||||
stmt.executeUpdate("use " + catalog);
|
|
||||||
|
|
||||||
|
stmt.executeUpdate("use " + catalog);
|
||||||
DatabaseMetaDataResultSet resultSet = new DatabaseMetaDataResultSet();
|
DatabaseMetaDataResultSet resultSet = new DatabaseMetaDataResultSet();
|
||||||
// set up ColumnMetaDataList
|
// set up ColumnMetaDataList
|
||||||
List<ColumnMetaData> columnMetaDataList = new ArrayList<>(24);
|
List<ColumnMetaData> columnMetaDataList = new ArrayList<>(24);
|
||||||
|
@ -851,7 +857,7 @@ public class TSDBDatabaseMetaData implements java.sql.DatabaseMetaData {
|
||||||
}
|
}
|
||||||
|
|
||||||
public Connection getConnection() throws SQLException {
|
public Connection getConnection() throws SQLException {
|
||||||
return null;
|
return this.conn;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean supportsSavepoints() throws SQLException {
|
public boolean supportsSavepoints() throws SQLException {
|
||||||
|
@ -884,15 +890,17 @@ public class TSDBDatabaseMetaData implements java.sql.DatabaseMetaData {
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean supportsResultSetHoldability(int holdability) throws SQLException {
|
public boolean supportsResultSetHoldability(int holdability) throws SQLException {
|
||||||
|
if (holdability == ResultSet.HOLD_CURSORS_OVER_COMMIT)
|
||||||
|
return true;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getResultSetHoldability() throws SQLException {
|
public int getResultSetHoldability() throws SQLException {
|
||||||
return 0;
|
return ResultSet.HOLD_CURSORS_OVER_COMMIT;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getDatabaseMajorVersion() throws SQLException {
|
public int getDatabaseMajorVersion() throws SQLException {
|
||||||
return 0;
|
return 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getDatabaseMinorVersion() throws SQLException {
|
public int getDatabaseMinorVersion() throws SQLException {
|
||||||
|
@ -900,7 +908,7 @@ public class TSDBDatabaseMetaData implements java.sql.DatabaseMetaData {
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getJDBCMajorVersion() throws SQLException {
|
public int getJDBCMajorVersion() throws SQLException {
|
||||||
return 0;
|
return 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getJDBCMinorVersion() throws SQLException {
|
public int getJDBCMinorVersion() throws SQLException {
|
||||||
|
|
|
@ -214,7 +214,7 @@ public class TSDBDriver extends AbstractTaosDriver {
|
||||||
urlProps.setProperty(TSDBDriver.PROPERTY_KEY_HOST, url);
|
urlProps.setProperty(TSDBDriver.PROPERTY_KEY_HOST, url);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.dbMetaData = new TSDBDatabaseMetaData(dbProductName, urlForMeta, urlProps.getProperty(TSDBDriver.PROPERTY_KEY_USER));
|
this.dbMetaData = new TSDBDatabaseMetaData(urlForMeta, urlProps.getProperty(TSDBDriver.PROPERTY_KEY_USER));
|
||||||
return urlProps;
|
return urlProps;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -39,7 +39,6 @@ import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@SuppressWarnings("unused")
|
|
||||||
public class TSDBResultSet implements ResultSet {
|
public class TSDBResultSet implements ResultSet {
|
||||||
private TSDBJNIConnector jniConnector = null;
|
private TSDBJNIConnector jniConnector = null;
|
||||||
|
|
||||||
|
@ -104,6 +103,7 @@ public class TSDBResultSet implements ResultSet {
|
||||||
}
|
}
|
||||||
|
|
||||||
public TSDBResultSet() {
|
public TSDBResultSet() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public TSDBResultSet(TSDBJNIConnector connector, long resultSetPointer) throws SQLException {
|
public TSDBResultSet(TSDBJNIConnector connector, long resultSetPointer) throws SQLException {
|
||||||
|
|
|
@ -17,6 +17,7 @@ package com.taosdata.jdbc;
|
||||||
import java.sql.*;
|
import java.sql.*;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
public class TSDBStatement implements Statement {
|
public class TSDBStatement implements Statement {
|
||||||
private TSDBJNIConnector connector = null;
|
private TSDBJNIConnector connector = null;
|
||||||
|
@ -68,7 +69,6 @@ public class TSDBStatement implements Statement {
|
||||||
pSql = this.connector.executeQuery(sql);
|
pSql = this.connector.executeQuery(sql);
|
||||||
|
|
||||||
long resultSetPointer = this.connector.getResultSet();
|
long resultSetPointer = this.connector.getResultSet();
|
||||||
|
|
||||||
if (resultSetPointer == TSDBConstants.JNI_CONNECTION_NULL) {
|
if (resultSetPointer == TSDBConstants.JNI_CONNECTION_NULL) {
|
||||||
this.connector.freeResultSet(pSql);
|
this.connector.freeResultSet(pSql);
|
||||||
throw new SQLException(TSDBConstants.FixErrMsg(TSDBConstants.JNI_CONNECTION_NULL));
|
throw new SQLException(TSDBConstants.FixErrMsg(TSDBConstants.JNI_CONNECTION_NULL));
|
||||||
|
|
|
@ -8,7 +8,6 @@ import java.util.List;
|
||||||
|
|
||||||
public class RestfulDatabaseMetaData extends AbstractDatabaseMetaData {
|
public class RestfulDatabaseMetaData extends AbstractDatabaseMetaData {
|
||||||
|
|
||||||
|
|
||||||
private final String url;
|
private final String url;
|
||||||
private final String userName;
|
private final String userName;
|
||||||
private final Connection connection;
|
private final Connection connection;
|
||||||
|
|
|
@ -1,245 +0,0 @@
|
||||||
package com.taosdata.jdbc;
|
|
||||||
|
|
||||||
import org.junit.AfterClass;
|
|
||||||
import org.junit.BeforeClass;
|
|
||||||
import org.junit.Test;
|
|
||||||
|
|
||||||
import java.sql.*;
|
|
||||||
import java.util.Properties;
|
|
||||||
|
|
||||||
public class DatabaseMetaDataTest {
|
|
||||||
static Connection connection = null;
|
|
||||||
static PreparedStatement statement = null;
|
|
||||||
static String dbName = "test";
|
|
||||||
static String tName = "t0";
|
|
||||||
static String host = "localhost";
|
|
||||||
|
|
||||||
@BeforeClass
|
|
||||||
public static void createConnection() throws SQLException {
|
|
||||||
try {
|
|
||||||
Class.forName("com.taosdata.jdbc.TSDBDriver");
|
|
||||||
} catch (ClassNotFoundException e) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
Properties properties = new Properties();
|
|
||||||
properties.setProperty(TSDBDriver.PROPERTY_KEY_HOST, host);
|
|
||||||
properties.setProperty(TSDBDriver.PROPERTY_KEY_USER, "root");
|
|
||||||
properties.setProperty(TSDBDriver.PROPERTY_KEY_PASSWORD, "taosdata");
|
|
||||||
properties.setProperty(TSDBDriver.PROPERTY_KEY_CHARSET, "UTF-8");
|
|
||||||
properties.setProperty(TSDBDriver.PROPERTY_KEY_LOCALE, "en_US.UTF-8");
|
|
||||||
properties.setProperty(TSDBDriver.PROPERTY_KEY_TIME_ZONE, "UTC-8");
|
|
||||||
connection = DriverManager.getConnection("jdbc:TAOS://" + host + ":0/", properties);
|
|
||||||
|
|
||||||
String sql = "drop database if exists " + dbName;
|
|
||||||
statement = connection.prepareStatement(sql);
|
|
||||||
statement.executeUpdate("create database if not exists " + dbName);
|
|
||||||
statement.executeUpdate("create table if not exists " + dbName + "." + tName + " (ts timestamp, k int, v int)");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testMetaDataTest() throws SQLException {
|
|
||||||
DatabaseMetaData databaseMetaData = connection.getMetaData();
|
|
||||||
ResultSet resultSet = databaseMetaData.getTables(dbName, "t*", "t*", new String[]{"t"});
|
|
||||||
while (resultSet.next()) {
|
|
||||||
for (int i = 1; i <= resultSet.getMetaData().getColumnCount(); i++) {
|
|
||||||
System.out.printf("%d: %s\n", i, resultSet.getString(i));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
resultSet.close();
|
|
||||||
databaseMetaData.isWrapperFor(null);
|
|
||||||
databaseMetaData.allProceduresAreCallable();
|
|
||||||
databaseMetaData.allTablesAreSelectable();
|
|
||||||
databaseMetaData.getURL();
|
|
||||||
databaseMetaData.getUserName();
|
|
||||||
databaseMetaData.isReadOnly();
|
|
||||||
databaseMetaData.nullsAreSortedHigh();
|
|
||||||
databaseMetaData.nullsAreSortedLow();
|
|
||||||
databaseMetaData.nullsAreSortedAtStart();
|
|
||||||
databaseMetaData.nullsAreSortedAtEnd();
|
|
||||||
databaseMetaData.getDatabaseProductName();
|
|
||||||
databaseMetaData.getDatabaseProductVersion();
|
|
||||||
databaseMetaData.getDriverName();
|
|
||||||
databaseMetaData.getDriverVersion();
|
|
||||||
databaseMetaData.getDriverMajorVersion();
|
|
||||||
databaseMetaData.getDriverMinorVersion();
|
|
||||||
databaseMetaData.usesLocalFiles();
|
|
||||||
databaseMetaData.usesLocalFilePerTable();
|
|
||||||
databaseMetaData.supportsMixedCaseIdentifiers();
|
|
||||||
databaseMetaData.storesUpperCaseIdentifiers();
|
|
||||||
databaseMetaData.storesLowerCaseIdentifiers();
|
|
||||||
databaseMetaData.storesMixedCaseIdentifiers();
|
|
||||||
databaseMetaData.supportsMixedCaseQuotedIdentifiers();
|
|
||||||
databaseMetaData.storesUpperCaseQuotedIdentifiers();
|
|
||||||
databaseMetaData.storesLowerCaseQuotedIdentifiers();
|
|
||||||
databaseMetaData.storesMixedCaseQuotedIdentifiers();
|
|
||||||
databaseMetaData.getIdentifierQuoteString();
|
|
||||||
databaseMetaData.getSQLKeywords();
|
|
||||||
databaseMetaData.getNumericFunctions();
|
|
||||||
databaseMetaData.getStringFunctions();
|
|
||||||
databaseMetaData.getSystemFunctions();
|
|
||||||
databaseMetaData.getTimeDateFunctions();
|
|
||||||
databaseMetaData.getSearchStringEscape();
|
|
||||||
databaseMetaData.getExtraNameCharacters();
|
|
||||||
databaseMetaData.supportsAlterTableWithAddColumn();
|
|
||||||
databaseMetaData.supportsAlterTableWithDropColumn();
|
|
||||||
databaseMetaData.supportsColumnAliasing();
|
|
||||||
databaseMetaData.nullPlusNonNullIsNull();
|
|
||||||
databaseMetaData.supportsConvert();
|
|
||||||
databaseMetaData.supportsConvert(0, 0);
|
|
||||||
databaseMetaData.supportsTableCorrelationNames();
|
|
||||||
databaseMetaData.supportsDifferentTableCorrelationNames();
|
|
||||||
databaseMetaData.supportsExpressionsInOrderBy();
|
|
||||||
databaseMetaData.supportsOrderByUnrelated();
|
|
||||||
databaseMetaData.supportsGroupBy();
|
|
||||||
databaseMetaData.supportsGroupByUnrelated();
|
|
||||||
databaseMetaData.supportsGroupByBeyondSelect();
|
|
||||||
databaseMetaData.supportsLikeEscapeClause();
|
|
||||||
databaseMetaData.supportsMultipleResultSets();
|
|
||||||
databaseMetaData.supportsMultipleTransactions();
|
|
||||||
databaseMetaData.supportsNonNullableColumns();
|
|
||||||
databaseMetaData.supportsMinimumSQLGrammar();
|
|
||||||
databaseMetaData.supportsCoreSQLGrammar();
|
|
||||||
databaseMetaData.supportsExtendedSQLGrammar();
|
|
||||||
databaseMetaData.supportsANSI92EntryLevelSQL();
|
|
||||||
databaseMetaData.supportsANSI92IntermediateSQL();
|
|
||||||
databaseMetaData.supportsANSI92FullSQL();
|
|
||||||
databaseMetaData.supportsIntegrityEnhancementFacility();
|
|
||||||
databaseMetaData.supportsOuterJoins();
|
|
||||||
databaseMetaData.supportsFullOuterJoins();
|
|
||||||
databaseMetaData.supportsLimitedOuterJoins();
|
|
||||||
databaseMetaData.getSchemaTerm();
|
|
||||||
databaseMetaData.getProcedureTerm();
|
|
||||||
databaseMetaData.getCatalogTerm();
|
|
||||||
databaseMetaData.isCatalogAtStart();
|
|
||||||
databaseMetaData.getCatalogSeparator();
|
|
||||||
databaseMetaData.supportsSchemasInDataManipulation();
|
|
||||||
databaseMetaData.supportsSchemasInProcedureCalls();
|
|
||||||
databaseMetaData.supportsSchemasInTableDefinitions();
|
|
||||||
databaseMetaData.supportsSchemasInIndexDefinitions();
|
|
||||||
databaseMetaData.supportsSchemasInPrivilegeDefinitions();
|
|
||||||
databaseMetaData.supportsCatalogsInDataManipulation();
|
|
||||||
databaseMetaData.supportsCatalogsInProcedureCalls();
|
|
||||||
databaseMetaData.supportsCatalogsInTableDefinitions();
|
|
||||||
databaseMetaData.supportsCatalogsInIndexDefinitions();
|
|
||||||
databaseMetaData.supportsCatalogsInPrivilegeDefinitions();
|
|
||||||
databaseMetaData.supportsPositionedDelete();
|
|
||||||
databaseMetaData.supportsPositionedUpdate();
|
|
||||||
databaseMetaData.supportsSelectForUpdate();
|
|
||||||
databaseMetaData.supportsStoredProcedures();
|
|
||||||
databaseMetaData.supportsSubqueriesInComparisons();
|
|
||||||
databaseMetaData.supportsSubqueriesInExists();
|
|
||||||
databaseMetaData.supportsSubqueriesInIns();
|
|
||||||
databaseMetaData.supportsSubqueriesInQuantifieds();
|
|
||||||
databaseMetaData.supportsCorrelatedSubqueries();
|
|
||||||
databaseMetaData.supportsUnion();
|
|
||||||
databaseMetaData.supportsUnionAll();
|
|
||||||
databaseMetaData.supportsOpenCursorsAcrossCommit();
|
|
||||||
databaseMetaData.supportsOpenCursorsAcrossRollback();
|
|
||||||
databaseMetaData.supportsOpenStatementsAcrossCommit();
|
|
||||||
databaseMetaData.supportsOpenStatementsAcrossRollback();
|
|
||||||
databaseMetaData.getMaxBinaryLiteralLength();
|
|
||||||
databaseMetaData.getMaxCharLiteralLength();
|
|
||||||
databaseMetaData.getMaxColumnNameLength();
|
|
||||||
databaseMetaData.getMaxColumnsInGroupBy();
|
|
||||||
databaseMetaData.getMaxColumnsInIndex();
|
|
||||||
databaseMetaData.getMaxColumnsInOrderBy();
|
|
||||||
databaseMetaData.getMaxColumnsInSelect();
|
|
||||||
databaseMetaData.getMaxColumnsInTable();
|
|
||||||
databaseMetaData.getMaxConnections();
|
|
||||||
databaseMetaData.getMaxCursorNameLength();
|
|
||||||
databaseMetaData.getMaxIndexLength();
|
|
||||||
databaseMetaData.getMaxSchemaNameLength();
|
|
||||||
databaseMetaData.getMaxProcedureNameLength();
|
|
||||||
databaseMetaData.getMaxCatalogNameLength();
|
|
||||||
databaseMetaData.getMaxRowSize();
|
|
||||||
databaseMetaData.doesMaxRowSizeIncludeBlobs();
|
|
||||||
databaseMetaData.getMaxStatementLength();
|
|
||||||
databaseMetaData.getMaxStatements();
|
|
||||||
databaseMetaData.getMaxTableNameLength();
|
|
||||||
databaseMetaData.getMaxTablesInSelect();
|
|
||||||
databaseMetaData.getMaxUserNameLength();
|
|
||||||
databaseMetaData.getDefaultTransactionIsolation();
|
|
||||||
databaseMetaData.supportsTransactions();
|
|
||||||
databaseMetaData.supportsTransactionIsolationLevel(0);
|
|
||||||
databaseMetaData.supportsDataDefinitionAndDataManipulationTransactions();
|
|
||||||
databaseMetaData.supportsDataManipulationTransactionsOnly();
|
|
||||||
databaseMetaData.dataDefinitionCausesTransactionCommit();
|
|
||||||
databaseMetaData.dataDefinitionIgnoredInTransactions();
|
|
||||||
try {
|
|
||||||
databaseMetaData.getProcedures("", "", "");
|
|
||||||
} catch (Exception e) {
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
databaseMetaData.getProcedureColumns("", "", "", "");
|
|
||||||
} catch (Exception e) {
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
databaseMetaData.getTables("", "", "", new String[]{""});
|
|
||||||
} catch (Exception e) {
|
|
||||||
}
|
|
||||||
databaseMetaData.getSchemas();
|
|
||||||
databaseMetaData.getCatalogs();
|
|
||||||
// databaseMetaData.getTableTypes();
|
|
||||||
|
|
||||||
databaseMetaData.getColumns(dbName, "", tName, "");
|
|
||||||
databaseMetaData.getColumnPrivileges("", "", "", "");
|
|
||||||
databaseMetaData.getTablePrivileges("", "", "");
|
|
||||||
databaseMetaData.getBestRowIdentifier("", "", "", 0, false);
|
|
||||||
databaseMetaData.getVersionColumns("", "", "");
|
|
||||||
databaseMetaData.getPrimaryKeys("", "", "");
|
|
||||||
databaseMetaData.getImportedKeys("", "", "");
|
|
||||||
databaseMetaData.getExportedKeys("", "", "");
|
|
||||||
databaseMetaData.getCrossReference("", "", "", "", "", "");
|
|
||||||
databaseMetaData.getTypeInfo();
|
|
||||||
databaseMetaData.getIndexInfo("", "", "", false, false);
|
|
||||||
databaseMetaData.supportsResultSetType(0);
|
|
||||||
databaseMetaData.supportsResultSetConcurrency(0, 0);
|
|
||||||
databaseMetaData.ownUpdatesAreVisible(0);
|
|
||||||
databaseMetaData.ownDeletesAreVisible(0);
|
|
||||||
databaseMetaData.ownInsertsAreVisible(0);
|
|
||||||
databaseMetaData.othersUpdatesAreVisible(0);
|
|
||||||
databaseMetaData.othersDeletesAreVisible(0);
|
|
||||||
databaseMetaData.othersInsertsAreVisible(0);
|
|
||||||
databaseMetaData.updatesAreDetected(0);
|
|
||||||
databaseMetaData.deletesAreDetected(0);
|
|
||||||
databaseMetaData.insertsAreDetected(0);
|
|
||||||
databaseMetaData.supportsBatchUpdates();
|
|
||||||
databaseMetaData.getUDTs("", "", "", new int[]{0});
|
|
||||||
databaseMetaData.getConnection();
|
|
||||||
databaseMetaData.supportsSavepoints();
|
|
||||||
databaseMetaData.supportsNamedParameters();
|
|
||||||
databaseMetaData.supportsMultipleOpenResults();
|
|
||||||
databaseMetaData.supportsGetGeneratedKeys();
|
|
||||||
databaseMetaData.getSuperTypes("", "", "");
|
|
||||||
databaseMetaData.getSuperTables("", "", "");
|
|
||||||
databaseMetaData.getAttributes("", "", "", "");
|
|
||||||
databaseMetaData.supportsResultSetHoldability(0);
|
|
||||||
databaseMetaData.getResultSetHoldability();
|
|
||||||
databaseMetaData.getDatabaseMajorVersion();
|
|
||||||
databaseMetaData.getDatabaseMinorVersion();
|
|
||||||
databaseMetaData.getJDBCMajorVersion();
|
|
||||||
databaseMetaData.getJDBCMinorVersion();
|
|
||||||
databaseMetaData.getSQLStateType();
|
|
||||||
databaseMetaData.locatorsUpdateCopy();
|
|
||||||
databaseMetaData.supportsStatementPooling();
|
|
||||||
databaseMetaData.getRowIdLifetime();
|
|
||||||
databaseMetaData.getSchemas("", "");
|
|
||||||
databaseMetaData.supportsStoredFunctionsUsingCallSyntax();
|
|
||||||
databaseMetaData.autoCommitFailureClosesAllResultSets();
|
|
||||||
databaseMetaData.getClientInfoProperties();
|
|
||||||
databaseMetaData.getFunctions("", "", "");
|
|
||||||
databaseMetaData.getFunctionColumns("", "", "", "");
|
|
||||||
databaseMetaData.getPseudoColumns("", "", "", "");
|
|
||||||
databaseMetaData.generatedKeyAlwaysReturned();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@AfterClass
|
|
||||||
public static void close() throws Exception {
|
|
||||||
statement.executeUpdate("drop database " + dbName);
|
|
||||||
statement.close();
|
|
||||||
connection.close();
|
|
||||||
Thread.sleep(10);
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -0,0 +1,913 @@
|
||||||
|
package com.taosdata.jdbc;
|
||||||
|
|
||||||
|
import org.junit.Assert;
|
||||||
|
import org.junit.Before;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import java.sql.Connection;
|
||||||
|
import java.sql.DriverManager;
|
||||||
|
import java.sql.ResultSet;
|
||||||
|
import java.sql.SQLException;
|
||||||
|
import java.util.Properties;
|
||||||
|
|
||||||
|
public class TSDBDatabaseMetaDataTest {
|
||||||
|
private TSDBDatabaseMetaData metaData;
|
||||||
|
private static final String host = "localhost";
|
||||||
|
|
||||||
|
@Before
|
||||||
|
public void before() throws ClassNotFoundException, SQLException {
|
||||||
|
Class.forName("com.taosdata.jdbc.TSDBDriver");
|
||||||
|
Properties properties = new Properties();
|
||||||
|
properties.setProperty(TSDBDriver.PROPERTY_KEY_HOST, host);
|
||||||
|
properties.setProperty(TSDBDriver.PROPERTY_KEY_CHARSET, "UTF-8");
|
||||||
|
properties.setProperty(TSDBDriver.PROPERTY_KEY_LOCALE, "en_US.UTF-8");
|
||||||
|
properties.setProperty(TSDBDriver.PROPERTY_KEY_TIME_ZONE, "UTC-8");
|
||||||
|
metaData = (TSDBDatabaseMetaData) DriverManager.getConnection("jdbc:TAOS://" + host + ":6030/?user=root&password=taosdata", properties).getMetaData();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void unwrap() throws SQLException {
|
||||||
|
TSDBDatabaseMetaData unwrap = metaData.unwrap(TSDBDatabaseMetaData.class);
|
||||||
|
Assert.assertNotNull(unwrap);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void isWrapperFor() throws SQLException {
|
||||||
|
Assert.assertTrue(metaData.isWrapperFor(TSDBDatabaseMetaData.class));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void allProceduresAreCallable() throws SQLException {
|
||||||
|
Assert.assertFalse(metaData.allProceduresAreCallable());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void allTablesAreSelectable() throws SQLException {
|
||||||
|
Assert.assertFalse(metaData.allTablesAreSelectable());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getURL() throws SQLException {
|
||||||
|
Assert.assertEquals("jdbc:TAOS://localhost:6030/?user=root&password=taosdata", metaData.getURL());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getUserName() throws SQLException {
|
||||||
|
Assert.assertEquals("root", metaData.getUserName());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void isReadOnly() throws SQLException {
|
||||||
|
Assert.assertFalse(metaData.isReadOnly());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void nullsAreSortedHigh() throws SQLException {
|
||||||
|
Assert.assertFalse(metaData.nullsAreSortedHigh());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void nullsAreSortedLow() throws SQLException {
|
||||||
|
Assert.assertTrue(metaData.nullsAreSortedLow());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void nullsAreSortedAtStart() throws SQLException {
|
||||||
|
Assert.assertTrue(metaData.nullsAreSortedAtStart());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void nullsAreSortedAtEnd() throws SQLException {
|
||||||
|
Assert.assertFalse(metaData.nullsAreSortedAtEnd());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getDatabaseProductName() throws SQLException {
|
||||||
|
Assert.assertEquals("TDengine", metaData.getDatabaseProductName());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getDatabaseProductVersion() throws SQLException {
|
||||||
|
Assert.assertEquals("2.0.x.x", metaData.getDatabaseProductVersion());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getDriverName() throws SQLException {
|
||||||
|
Assert.assertEquals("com.taosdata.jdbc.TSDBDriver", metaData.getDriverName());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getDriverVersion() throws SQLException {
|
||||||
|
Assert.assertEquals("2.0.x", metaData.getDriverVersion());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getDriverMajorVersion() {
|
||||||
|
Assert.assertEquals(2, metaData.getDriverMajorVersion());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getDriverMinorVersion() {
|
||||||
|
Assert.assertEquals(0, metaData.getDriverMinorVersion());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void usesLocalFiles() throws SQLException {
|
||||||
|
Assert.assertFalse(metaData.usesLocalFiles());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void usesLocalFilePerTable() throws SQLException {
|
||||||
|
Assert.assertFalse(metaData.usesLocalFilePerTable());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void supportsMixedCaseIdentifiers() throws SQLException {
|
||||||
|
Assert.assertFalse(metaData.supportsMixedCaseIdentifiers());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void storesUpperCaseIdentifiers() throws SQLException {
|
||||||
|
Assert.assertFalse(metaData.storesUpperCaseIdentifiers());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void storesLowerCaseIdentifiers() throws SQLException {
|
||||||
|
Assert.assertTrue(metaData.storesLowerCaseIdentifiers());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void storesMixedCaseIdentifiers() throws SQLException {
|
||||||
|
Assert.assertFalse(metaData.storesMixedCaseIdentifiers());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void supportsMixedCaseQuotedIdentifiers() throws SQLException {
|
||||||
|
Assert.assertFalse(metaData.supportsMixedCaseQuotedIdentifiers());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void storesUpperCaseQuotedIdentifiers() throws SQLException {
|
||||||
|
Assert.assertFalse(metaData.storesUpperCaseQuotedIdentifiers());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void storesLowerCaseQuotedIdentifiers() throws SQLException {
|
||||||
|
Assert.assertFalse(metaData.storesLowerCaseQuotedIdentifiers());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void storesMixedCaseQuotedIdentifiers() throws SQLException {
|
||||||
|
Assert.assertFalse(metaData.storesMixedCaseQuotedIdentifiers());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getIdentifierQuoteString() throws SQLException {
|
||||||
|
Assert.assertEquals(" ", metaData.getIdentifierQuoteString());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getSQLKeywords() throws SQLException {
|
||||||
|
Assert.assertEquals(null, metaData.getSQLKeywords());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getNumericFunctions() throws SQLException {
|
||||||
|
Assert.assertEquals(null, metaData.getNumericFunctions());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getStringFunctions() throws SQLException {
|
||||||
|
Assert.assertEquals(null, metaData.getStringFunctions());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getSystemFunctions() throws SQLException {
|
||||||
|
Assert.assertEquals(null, metaData.getSystemFunctions());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getTimeDateFunctions() throws SQLException {
|
||||||
|
Assert.assertEquals(null, metaData.getTimeDateFunctions());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getSearchStringEscape() throws SQLException {
|
||||||
|
Assert.assertEquals(null, metaData.getSearchStringEscape());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getExtraNameCharacters() throws SQLException {
|
||||||
|
Assert.assertEquals(null, metaData.getExtraNameCharacters());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void supportsAlterTableWithAddColumn() throws SQLException {
|
||||||
|
Assert.assertTrue(metaData.supportsAlterTableWithAddColumn());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void supportsAlterTableWithDropColumn() throws SQLException {
|
||||||
|
Assert.assertTrue(metaData.supportsAlterTableWithDropColumn());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void supportsColumnAliasing() throws SQLException {
|
||||||
|
Assert.assertTrue(metaData.supportsColumnAliasing());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void nullPlusNonNullIsNull() throws SQLException {
|
||||||
|
Assert.assertFalse(metaData.nullPlusNonNullIsNull());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void supportsConvert() throws SQLException {
|
||||||
|
Assert.assertFalse(metaData.supportsConvert());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testSupportsConvert() throws SQLException {
|
||||||
|
Assert.assertFalse(metaData.supportsConvert(1, 1));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void supportsTableCorrelationNames() throws SQLException {
|
||||||
|
Assert.assertFalse(metaData.supportsTableCorrelationNames());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void supportsDifferentTableCorrelationNames() throws SQLException {
|
||||||
|
Assert.assertFalse(metaData.supportsDifferentTableCorrelationNames());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void supportsExpressionsInOrderBy() throws SQLException {
|
||||||
|
Assert.assertFalse(metaData.supportsExpressionsInOrderBy());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void supportsOrderByUnrelated() throws SQLException {
|
||||||
|
Assert.assertFalse(metaData.supportsOrderByUnrelated());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void supportsGroupBy() throws SQLException {
|
||||||
|
Assert.assertTrue(metaData.supportsGroupBy());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void supportsGroupByUnrelated() throws SQLException {
|
||||||
|
Assert.assertFalse(metaData.supportsGroupByUnrelated());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void supportsGroupByBeyondSelect() throws SQLException {
|
||||||
|
Assert.assertFalse(metaData.supportsGroupByBeyondSelect());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void supportsLikeEscapeClause() throws SQLException {
|
||||||
|
Assert.assertFalse(metaData.supportsLikeEscapeClause());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void supportsMultipleResultSets() throws SQLException {
|
||||||
|
Assert.assertFalse(metaData.supportsMultipleResultSets());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void supportsMultipleTransactions() throws SQLException {
|
||||||
|
Assert.assertFalse(metaData.supportsMultipleTransactions());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void supportsNonNullableColumns() throws SQLException {
|
||||||
|
Assert.assertFalse(metaData.supportsNonNullableColumns());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void supportsMinimumSQLGrammar() throws SQLException {
|
||||||
|
Assert.assertFalse(metaData.supportsMinimumSQLGrammar());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void supportsCoreSQLGrammar() throws SQLException {
|
||||||
|
Assert.assertFalse(metaData.supportsCoreSQLGrammar());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void supportsExtendedSQLGrammar() throws SQLException {
|
||||||
|
Assert.assertFalse(metaData.supportsExtendedSQLGrammar());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void supportsANSI92EntryLevelSQL() throws SQLException {
|
||||||
|
Assert.assertFalse(metaData.supportsANSI92EntryLevelSQL());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void supportsANSI92IntermediateSQL() throws SQLException {
|
||||||
|
Assert.assertFalse(metaData.supportsANSI92IntermediateSQL());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void supportsANSI92FullSQL() throws SQLException {
|
||||||
|
Assert.assertFalse(metaData.supportsANSI92FullSQL());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void supportsIntegrityEnhancementFacility() throws SQLException {
|
||||||
|
Assert.assertFalse(metaData.supportsIntegrityEnhancementFacility());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void supportsOuterJoins() throws SQLException {
|
||||||
|
Assert.assertFalse(metaData.supportsOuterJoins());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void supportsFullOuterJoins() throws SQLException {
|
||||||
|
Assert.assertFalse(metaData.supportsFullOuterJoins());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void supportsLimitedOuterJoins() throws SQLException {
|
||||||
|
Assert.assertFalse(metaData.supportsLimitedOuterJoins());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getSchemaTerm() throws SQLException {
|
||||||
|
Assert.assertNull(metaData.getSchemaTerm());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getProcedureTerm() throws SQLException {
|
||||||
|
Assert.assertNull(metaData.getProcedureTerm());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getCatalogTerm() throws SQLException {
|
||||||
|
Assert.assertEquals("database", metaData.getCatalogTerm());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void isCatalogAtStart() throws SQLException {
|
||||||
|
Assert.assertTrue(metaData.isCatalogAtStart());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getCatalogSeparator() throws SQLException {
|
||||||
|
Assert.assertEquals(".", metaData.getCatalogSeparator());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void supportsSchemasInDataManipulation() throws SQLException {
|
||||||
|
Assert.assertFalse(metaData.supportsSchemasInDataManipulation());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void supportsSchemasInProcedureCalls() throws SQLException {
|
||||||
|
Assert.assertFalse(metaData.supportsSchemasInProcedureCalls());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void supportsSchemasInTableDefinitions() throws SQLException {
|
||||||
|
Assert.assertFalse(metaData.supportsSchemasInTableDefinitions());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void supportsSchemasInIndexDefinitions() throws SQLException {
|
||||||
|
Assert.assertFalse(metaData.supportsSchemasInIndexDefinitions());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void supportsSchemasInPrivilegeDefinitions() throws SQLException {
|
||||||
|
Assert.assertFalse(metaData.supportsSchemasInPrivilegeDefinitions());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void supportsCatalogsInDataManipulation() throws SQLException {
|
||||||
|
Assert.assertTrue(metaData.supportsCatalogsInDataManipulation());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void supportsCatalogsInProcedureCalls() throws SQLException {
|
||||||
|
Assert.assertFalse(metaData.supportsCatalogsInProcedureCalls());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void supportsCatalogsInTableDefinitions() throws SQLException {
|
||||||
|
Assert.assertFalse(metaData.supportsCatalogsInTableDefinitions());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void supportsCatalogsInIndexDefinitions() throws SQLException {
|
||||||
|
Assert.assertFalse(metaData.supportsCatalogsInIndexDefinitions());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void supportsCatalogsInPrivilegeDefinitions() throws SQLException {
|
||||||
|
Assert.assertFalse(metaData.supportsCatalogsInPrivilegeDefinitions());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void supportsPositionedDelete() throws SQLException {
|
||||||
|
Assert.assertFalse(metaData.supportsPositionedDelete());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void supportsPositionedUpdate() throws SQLException {
|
||||||
|
Assert.assertFalse(metaData.supportsPositionedUpdate());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void supportsSelectForUpdate() throws SQLException {
|
||||||
|
Assert.assertFalse(metaData.supportsSelectForUpdate());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void supportsStoredProcedures() throws SQLException {
|
||||||
|
Assert.assertFalse(metaData.supportsStoredProcedures());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void supportsSubqueriesInComparisons() throws SQLException {
|
||||||
|
Assert.assertFalse(metaData.supportsSubqueriesInComparisons());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void supportsSubqueriesInExists() throws SQLException {
|
||||||
|
Assert.assertFalse(metaData.supportsSubqueriesInExists());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void supportsSubqueriesInIns() throws SQLException {
|
||||||
|
Assert.assertFalse(metaData.supportsSubqueriesInIns());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void supportsSubqueriesInQuantifieds() throws SQLException {
|
||||||
|
Assert.assertFalse(metaData.supportsSubqueriesInQuantifieds());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void supportsCorrelatedSubqueries() throws SQLException {
|
||||||
|
Assert.assertFalse(metaData.supportsCorrelatedSubqueries());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void supportsUnion() throws SQLException {
|
||||||
|
Assert.assertFalse(metaData.supportsUnion());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void supportsUnionAll() throws SQLException {
|
||||||
|
Assert.assertFalse(metaData.supportsUnionAll());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void supportsOpenCursorsAcrossCommit() throws SQLException {
|
||||||
|
Assert.assertFalse(metaData.supportsOpenCursorsAcrossCommit());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void supportsOpenCursorsAcrossRollback() throws SQLException {
|
||||||
|
Assert.assertFalse(metaData.supportsOpenCursorsAcrossRollback());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void supportsOpenStatementsAcrossCommit() throws SQLException {
|
||||||
|
Assert.assertFalse(metaData.supportsOpenStatementsAcrossCommit());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void supportsOpenStatementsAcrossRollback() throws SQLException {
|
||||||
|
Assert.assertFalse(metaData.supportsOpenStatementsAcrossRollback());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getMaxBinaryLiteralLength() throws SQLException {
|
||||||
|
Assert.assertEquals(0, metaData.getMaxBinaryLiteralLength());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getMaxCharLiteralLength() throws SQLException {
|
||||||
|
Assert.assertEquals(0, metaData.getMaxCharLiteralLength());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getMaxColumnNameLength() throws SQLException {
|
||||||
|
Assert.assertEquals(0, metaData.getMaxColumnNameLength());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getMaxColumnsInGroupBy() throws SQLException {
|
||||||
|
Assert.assertEquals(0, metaData.getMaxColumnsInGroupBy());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getMaxColumnsInIndex() throws SQLException {
|
||||||
|
Assert.assertEquals(0, metaData.getMaxColumnsInIndex());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getMaxColumnsInOrderBy() throws SQLException {
|
||||||
|
Assert.assertEquals(0, metaData.getMaxColumnsInOrderBy());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getMaxColumnsInSelect() throws SQLException {
|
||||||
|
Assert.assertEquals(0, metaData.getMaxColumnsInSelect());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getMaxColumnsInTable() throws SQLException {
|
||||||
|
Assert.assertEquals(0, metaData.getMaxColumnsInTable());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getMaxConnections() throws SQLException {
|
||||||
|
Assert.assertEquals(0, metaData.getMaxConnections());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getMaxCursorNameLength() throws SQLException {
|
||||||
|
Assert.assertEquals(0, metaData.getMaxCursorNameLength());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getMaxIndexLength() throws SQLException {
|
||||||
|
Assert.assertEquals(0, metaData.getMaxIndexLength());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getMaxSchemaNameLength() throws SQLException {
|
||||||
|
Assert.assertEquals(0, metaData.getMaxSchemaNameLength());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getMaxProcedureNameLength() throws SQLException {
|
||||||
|
Assert.assertEquals(0, metaData.getMaxProcedureNameLength());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getMaxCatalogNameLength() throws SQLException {
|
||||||
|
Assert.assertEquals(0, metaData.getMaxCatalogNameLength());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getMaxRowSize() throws SQLException {
|
||||||
|
Assert.assertEquals(0, metaData.getMaxRowSize());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void doesMaxRowSizeIncludeBlobs() throws SQLException {
|
||||||
|
Assert.assertFalse(metaData.doesMaxRowSizeIncludeBlobs());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getMaxStatementLength() throws SQLException {
|
||||||
|
Assert.assertEquals(0, metaData.getMaxStatementLength());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getMaxStatements() throws SQLException {
|
||||||
|
Assert.assertEquals(0, metaData.getMaxStatements());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getMaxTableNameLength() throws SQLException {
|
||||||
|
Assert.assertEquals(0, metaData.getMaxTableNameLength());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getMaxTablesInSelect() throws SQLException {
|
||||||
|
Assert.assertEquals(0, metaData.getMaxTablesInSelect());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getMaxUserNameLength() throws SQLException {
|
||||||
|
Assert.assertEquals(0, metaData.getMaxUserNameLength());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getDefaultTransactionIsolation() throws SQLException {
|
||||||
|
Assert.assertEquals(Connection.TRANSACTION_NONE, metaData.getDefaultTransactionIsolation());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void supportsTransactions() throws SQLException {
|
||||||
|
Assert.assertFalse(metaData.supportsTransactions());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void supportsTransactionIsolationLevel() throws SQLException {
|
||||||
|
Assert.assertTrue(metaData.supportsTransactionIsolationLevel(Connection.TRANSACTION_NONE));
|
||||||
|
Assert.assertFalse(metaData.supportsTransactionIsolationLevel(Connection.TRANSACTION_READ_COMMITTED));
|
||||||
|
Assert.assertFalse(metaData.supportsTransactionIsolationLevel(Connection.TRANSACTION_READ_UNCOMMITTED));
|
||||||
|
Assert.assertFalse(metaData.supportsTransactionIsolationLevel(Connection.TRANSACTION_REPEATABLE_READ));
|
||||||
|
Assert.assertFalse(metaData.supportsTransactionIsolationLevel(Connection.TRANSACTION_SERIALIZABLE));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void supportsDataDefinitionAndDataManipulationTransactions() throws SQLException {
|
||||||
|
Assert.assertFalse(metaData.supportsDataDefinitionAndDataManipulationTransactions());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void supportsDataManipulationTransactionsOnly() throws SQLException {
|
||||||
|
Assert.assertFalse(metaData.supportsDataManipulationTransactionsOnly());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void dataDefinitionCausesTransactionCommit() throws SQLException {
|
||||||
|
Assert.assertFalse(metaData.dataDefinitionCausesTransactionCommit());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void dataDefinitionIgnoredInTransactions() throws SQLException {
|
||||||
|
Assert.assertFalse(metaData.dataDefinitionIgnoredInTransactions());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getProcedures() throws SQLException {
|
||||||
|
Assert.assertNull(metaData.getProcedures("*", "*", "*"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getProcedureColumns() throws SQLException {
|
||||||
|
Assert.assertNull(metaData.getProcedureColumns("*", "*", "*", "*"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getTables() throws SQLException {
|
||||||
|
Assert.assertNull(metaData.getTables("", "", "*", null));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getSchemas() throws SQLException {
|
||||||
|
Assert.assertNotNull(metaData.getSchemas());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getCatalogs() throws SQLException {
|
||||||
|
Assert.assertNotNull(metaData.getCatalogs());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getTableTypes() throws SQLException {
|
||||||
|
Assert.assertNotNull(metaData.getTableTypes());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getColumns() throws SQLException {
|
||||||
|
Assert.assertNotNull(metaData.getColumns("", "", "", ""));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getColumnPrivileges() throws SQLException {
|
||||||
|
Assert.assertNotNull(metaData.getColumnPrivileges("", "", "", ""));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getTablePrivileges() throws SQLException {
|
||||||
|
Assert.assertNotNull(metaData.getTablePrivileges("", "", ""));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getBestRowIdentifier() throws SQLException {
|
||||||
|
Assert.assertNotNull(metaData.getBestRowIdentifier("", "", "", 0, false));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getVersionColumns() throws SQLException {
|
||||||
|
Assert.assertNotNull(metaData.getVersionColumns("", "", ""));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getPrimaryKeys() throws SQLException {
|
||||||
|
Assert.assertNotNull(metaData.getPrimaryKeys("", "", ""));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getImportedKeys() throws SQLException {
|
||||||
|
Assert.assertNotNull(metaData.getImportedKeys("", "", ""));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getExportedKeys() throws SQLException {
|
||||||
|
Assert.assertNotNull(metaData.getExportedKeys("", "", ""));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getCrossReference() throws SQLException {
|
||||||
|
Assert.assertNotNull(metaData.getCrossReference("", "", "", "", "", ""));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getTypeInfo() throws SQLException {
|
||||||
|
Assert.assertNotNull(metaData.getTypeInfo());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getIndexInfo() throws SQLException {
|
||||||
|
Assert.assertNotNull(metaData.getIndexInfo("", "", "", false, false));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void supportsResultSetType() throws SQLException {
|
||||||
|
Assert.assertFalse(metaData.supportsResultSetType(0));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void supportsResultSetConcurrency() throws SQLException {
|
||||||
|
Assert.assertFalse(metaData.supportsResultSetConcurrency(0, 0));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void ownUpdatesAreVisible() throws SQLException {
|
||||||
|
Assert.assertFalse(metaData.ownUpdatesAreVisible(0));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void ownDeletesAreVisible() throws SQLException {
|
||||||
|
Assert.assertFalse(metaData.ownDeletesAreVisible(0));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void ownInsertsAreVisible() throws SQLException {
|
||||||
|
Assert.assertFalse(metaData.ownInsertsAreVisible(0));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void othersUpdatesAreVisible() throws SQLException {
|
||||||
|
Assert.assertFalse(metaData.othersUpdatesAreVisible(0));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void othersDeletesAreVisible() throws SQLException {
|
||||||
|
Assert.assertFalse(metaData.othersDeletesAreVisible(0));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void othersInsertsAreVisible() throws SQLException {
|
||||||
|
Assert.assertFalse(metaData.othersInsertsAreVisible(0));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void updatesAreDetected() throws SQLException {
|
||||||
|
Assert.assertFalse(metaData.updatesAreDetected(0));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void deletesAreDetected() throws SQLException {
|
||||||
|
Assert.assertFalse(metaData.deletesAreDetected(0));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void insertsAreDetected() throws SQLException {
|
||||||
|
Assert.assertFalse(metaData.insertsAreDetected(0));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void supportsBatchUpdates() throws SQLException {
|
||||||
|
Assert.assertFalse(metaData.supportsBatchUpdates());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getUDTs() throws SQLException {
|
||||||
|
Assert.assertNotNull(metaData.getUDTs("", "", "", null));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getConnection() throws SQLException {
|
||||||
|
Assert.assertNotNull(metaData.getConnection());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void supportsSavepoints() throws SQLException {
|
||||||
|
Assert.assertFalse(metaData.supportsSavepoints());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void supportsNamedParameters() throws SQLException {
|
||||||
|
Assert.assertFalse(metaData.supportsNamedParameters());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void supportsMultipleOpenResults() throws SQLException {
|
||||||
|
Assert.assertFalse(metaData.supportsMultipleOpenResults());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void supportsGetGeneratedKeys() throws SQLException {
|
||||||
|
Assert.assertFalse(metaData.supportsGetGeneratedKeys());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getSuperTypes() throws SQLException {
|
||||||
|
Assert.assertNotNull(metaData.getSuperTypes("", "", ""));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getSuperTables() throws SQLException {
|
||||||
|
Assert.assertNotNull(metaData.getSuperTables("", "", ""));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getAttributes() throws SQLException {
|
||||||
|
Assert.assertNotNull(metaData.getAttributes("", "", "", ""));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void supportsResultSetHoldability() throws SQLException {
|
||||||
|
Assert.assertTrue(metaData.supportsResultSetHoldability(ResultSet.HOLD_CURSORS_OVER_COMMIT));
|
||||||
|
Assert.assertFalse(metaData.supportsResultSetHoldability(ResultSet.CLOSE_CURSORS_AT_COMMIT));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getResultSetHoldability() throws SQLException {
|
||||||
|
Assert.assertEquals(1, metaData.getResultSetHoldability());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getDatabaseMajorVersion() throws SQLException {
|
||||||
|
Assert.assertEquals(2, metaData.getDatabaseMajorVersion());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getDatabaseMinorVersion() throws SQLException {
|
||||||
|
Assert.assertEquals(0, metaData.getDatabaseMinorVersion());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getJDBCMajorVersion() throws SQLException {
|
||||||
|
Assert.assertEquals(2, metaData.getJDBCMajorVersion());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getJDBCMinorVersion() throws SQLException {
|
||||||
|
Assert.assertEquals(0, metaData.getJDBCMinorVersion());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getSQLStateType() throws SQLException {
|
||||||
|
Assert.assertEquals(0, metaData.getSQLStateType());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void locatorsUpdateCopy() throws SQLException {
|
||||||
|
Assert.assertFalse(metaData.locatorsUpdateCopy());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void supportsStatementPooling() throws SQLException {
|
||||||
|
Assert.assertFalse(metaData.supportsStatementPooling());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getRowIdLifetime() throws SQLException {
|
||||||
|
Assert.assertNull(metaData.getRowIdLifetime());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testGetSchemas() throws SQLException {
|
||||||
|
Assert.assertNull(metaData.getSchemas());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void supportsStoredFunctionsUsingCallSyntax() throws SQLException {
|
||||||
|
Assert.assertFalse(metaData.supportsStoredFunctionsUsingCallSyntax());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void autoCommitFailureClosesAllResultSets() throws SQLException {
|
||||||
|
Assert.assertFalse(metaData.autoCommitFailureClosesAllResultSets());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getClientInfoProperties() throws SQLException {
|
||||||
|
Assert.assertNotNull(metaData.getClientInfoProperties());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getFunctions() throws SQLException {
|
||||||
|
Assert.assertNotNull(metaData.getFunctions("", "", ""));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getFunctionColumns() throws SQLException {
|
||||||
|
Assert.assertNotNull(metaData.getFunctionColumns("", "", "", ""));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getPseudoColumns() throws SQLException {
|
||||||
|
Assert.assertNotNull(metaData.getPseudoColumns("", "", "", ""));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void generatedKeyAlwaysReturned() throws SQLException {
|
||||||
|
Assert.assertFalse(metaData.generatedKeyAlwaysReturned());
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,91 @@
|
||||||
|
package com.taosdata.jdbc.cases;
|
||||||
|
|
||||||
|
import org.junit.After;
|
||||||
|
import org.junit.Before;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import java.sql.*;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
|
public class MultiThreadsWithSameStatmentTest {
|
||||||
|
|
||||||
|
|
||||||
|
private class Service {
|
||||||
|
public Connection conn;
|
||||||
|
public Statement stmt;
|
||||||
|
|
||||||
|
public Service() {
|
||||||
|
try {
|
||||||
|
Class.forName("com.taosdata.jdbc.TSDBDriver");
|
||||||
|
conn = DriverManager.getConnection("jdbc:TAOS://localhost:6030/?user=root&password=taosdata");
|
||||||
|
stmt = conn.createStatement();
|
||||||
|
stmt.execute("create database if not exists jdbctest");
|
||||||
|
stmt.executeUpdate("create table if not exists jdbctest.weather (ts timestamp, f1 int)");
|
||||||
|
} catch (ClassNotFoundException | SQLException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void release() {
|
||||||
|
try {
|
||||||
|
stmt.close();
|
||||||
|
conn.close();
|
||||||
|
} catch (SQLException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Before
|
||||||
|
public void before() {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void test() {
|
||||||
|
Thread t1 = new Thread(() -> {
|
||||||
|
try {
|
||||||
|
Service service = new Service();
|
||||||
|
ResultSet resultSet = service.stmt.executeQuery("select * from jdbctest.weather");
|
||||||
|
while (resultSet.next()) {
|
||||||
|
ResultSetMetaData metaData = resultSet.getMetaData();
|
||||||
|
for (int i = 1; i <= metaData.getColumnCount(); i++) {
|
||||||
|
System.out.print(metaData.getColumnLabel(i) + ": " + resultSet.getString(i));
|
||||||
|
}
|
||||||
|
System.out.println();
|
||||||
|
}
|
||||||
|
resultSet.close();
|
||||||
|
service.release();
|
||||||
|
} catch (SQLException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Thread t2 = new Thread(() -> {
|
||||||
|
while (true) {
|
||||||
|
try {
|
||||||
|
Service service = new Service();
|
||||||
|
service.stmt.executeUpdate("insert into jdbctest.weather values(now,1)");
|
||||||
|
service.release();
|
||||||
|
} catch (SQLException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
t1.start();
|
||||||
|
sleep(1000);
|
||||||
|
t2.start();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void sleep(long mills) {
|
||||||
|
try {
|
||||||
|
TimeUnit.MILLISECONDS.sleep(mills);
|
||||||
|
} catch (InterruptedException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@After
|
||||||
|
public void after() {
|
||||||
|
}
|
||||||
|
}
|
|
@ -5,7 +5,7 @@ with open("README.md", "r") as fh:
|
||||||
|
|
||||||
setuptools.setup(
|
setuptools.setup(
|
||||||
name="taos",
|
name="taos",
|
||||||
version="2.0.3",
|
version="2.0.4",
|
||||||
author="Taosdata Inc.",
|
author="Taosdata Inc.",
|
||||||
author_email="support@taosdata.com",
|
author_email="support@taosdata.com",
|
||||||
description="TDengine python client package",
|
description="TDengine python client package",
|
||||||
|
|
|
@ -184,7 +184,7 @@ class TDengineCursor(object):
|
||||||
|
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def fetchall(self):
|
def fetchall_row(self):
|
||||||
"""Fetch all (remaining) rows of a query result, returning them as a sequence of sequences (e.g. a list of tuples). Note that the cursor's arraysize attribute can affect the performance of this operation.
|
"""Fetch all (remaining) rows of a query result, returning them as a sequence of sequences (e.g. a list of tuples). Note that the cursor's arraysize attribute can affect the performance of this operation.
|
||||||
"""
|
"""
|
||||||
if self._result is None or self._fields is None:
|
if self._result is None or self._fields is None:
|
||||||
|
@ -203,7 +203,7 @@ class TDengineCursor(object):
|
||||||
for i in range(len(self._fields)):
|
for i in range(len(self._fields)):
|
||||||
buffer[i].extend(block[i])
|
buffer[i].extend(block[i])
|
||||||
return list(map(tuple, zip(*buffer)))
|
return list(map(tuple, zip(*buffer)))
|
||||||
def fetchall_block(self):
|
def fetchall(self):
|
||||||
if self._result is None or self._fields is None:
|
if self._result is None or self._fields is None:
|
||||||
raise OperationalError("Invalid use of fetchall")
|
raise OperationalError("Invalid use of fetchall")
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@ with open("README.md", "r") as fh:
|
||||||
|
|
||||||
setuptools.setup(
|
setuptools.setup(
|
||||||
name="taos",
|
name="taos",
|
||||||
version="2.0.3",
|
version="2.0.4",
|
||||||
author="Taosdata Inc.",
|
author="Taosdata Inc.",
|
||||||
author_email="support@taosdata.com",
|
author_email="support@taosdata.com",
|
||||||
description="TDengine python client package",
|
description="TDengine python client package",
|
||||||
|
|
|
@ -192,7 +192,7 @@ class TDengineCursor(object):
|
||||||
|
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def fetchall(self):
|
def fetchall_row(self):
|
||||||
"""Fetch all (remaining) rows of a query result, returning them as a sequence of sequences (e.g. a list of tuples). Note that the cursor's arraysize attribute can affect the performance of this operation.
|
"""Fetch all (remaining) rows of a query result, returning them as a sequence of sequences (e.g. a list of tuples). Note that the cursor's arraysize attribute can affect the performance of this operation.
|
||||||
"""
|
"""
|
||||||
if self._result is None or self._fields is None:
|
if self._result is None or self._fields is None:
|
||||||
|
@ -212,7 +212,7 @@ class TDengineCursor(object):
|
||||||
buffer[i].extend(block[i])
|
buffer[i].extend(block[i])
|
||||||
return list(map(tuple, zip(*buffer)))
|
return list(map(tuple, zip(*buffer)))
|
||||||
|
|
||||||
def fetchall_block(self):
|
def fetchall(self):
|
||||||
if self._result is None or self._fields is None:
|
if self._result is None or self._fields is None:
|
||||||
raise OperationalError("Invalid use of fetchall")
|
raise OperationalError("Invalid use of fetchall")
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@ with open("README.md", "r") as fh:
|
||||||
|
|
||||||
setuptools.setup(
|
setuptools.setup(
|
||||||
name="taos",
|
name="taos",
|
||||||
version="2.0.3",
|
version="2.0.4",
|
||||||
author="Taosdata Inc.",
|
author="Taosdata Inc.",
|
||||||
author_email="support@taosdata.com",
|
author_email="support@taosdata.com",
|
||||||
description="TDengine python client package",
|
description="TDengine python client package",
|
||||||
|
|
|
@ -138,7 +138,7 @@ class TDengineCursor(object):
|
||||||
def fetchmany(self):
|
def fetchmany(self):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def fetchall(self):
|
def fetchall_row(self):
|
||||||
"""Fetch all (remaining) rows of a query result, returning them as a sequence of sequences (e.g. a list of tuples). Note that the cursor's arraysize attribute can affect the performance of this operation.
|
"""Fetch all (remaining) rows of a query result, returning them as a sequence of sequences (e.g. a list of tuples). Note that the cursor's arraysize attribute can affect the performance of this operation.
|
||||||
"""
|
"""
|
||||||
if self._result is None or self._fields is None:
|
if self._result is None or self._fields is None:
|
||||||
|
@ -158,7 +158,7 @@ class TDengineCursor(object):
|
||||||
buffer[i].extend(block[i])
|
buffer[i].extend(block[i])
|
||||||
return list(map(tuple, zip(*buffer)))
|
return list(map(tuple, zip(*buffer)))
|
||||||
|
|
||||||
def fetchall_block(self):
|
def fetchall(self):
|
||||||
if self._result is None or self._fields is None:
|
if self._result is None or self._fields is None:
|
||||||
raise OperationalError("Invalid use of fetchall")
|
raise OperationalError("Invalid use of fetchall")
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@ with open("README.md", "r") as fh:
|
||||||
|
|
||||||
setuptools.setup(
|
setuptools.setup(
|
||||||
name="taos",
|
name="taos",
|
||||||
version="2.0.3",
|
version="2.0.4",
|
||||||
author="Taosdata Inc.",
|
author="Taosdata Inc.",
|
||||||
author_email="support@taosdata.com",
|
author_email="support@taosdata.com",
|
||||||
description="TDengine python client package",
|
description="TDengine python client package",
|
||||||
|
|
|
@ -139,7 +139,7 @@ class TDengineCursor(object):
|
||||||
def fetchmany(self):
|
def fetchmany(self):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def fetchall(self):
|
def fetchall_row(self):
|
||||||
"""Fetch all (remaining) rows of a query result, returning them as a sequence of sequences (e.g. a list of tuples). Note that the cursor's arraysize attribute can affect the performance of this operation.
|
"""Fetch all (remaining) rows of a query result, returning them as a sequence of sequences (e.g. a list of tuples). Note that the cursor's arraysize attribute can affect the performance of this operation.
|
||||||
"""
|
"""
|
||||||
if self._result is None or self._fields is None:
|
if self._result is None or self._fields is None:
|
||||||
|
@ -159,7 +159,7 @@ class TDengineCursor(object):
|
||||||
buffer[i].extend(block[i])
|
buffer[i].extend(block[i])
|
||||||
return list(map(tuple, zip(*buffer)))
|
return list(map(tuple, zip(*buffer)))
|
||||||
|
|
||||||
def fetchall_block(self):
|
def fetchall(self):
|
||||||
if self._result is None or self._fields is None:
|
if self._result is None or self._fields is None:
|
||||||
raise OperationalError("Invalid use of fetchall")
|
raise OperationalError("Invalid use of fetchall")
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,6 @@
|
||||||
|
|
||||||
|
|
||||||
需求:
|
需求:
|
||||||
1. 可以读lowa的配置文件
|
1. 可以读lowa的配置文件
|
||||||
2. 支持对JNI方式和Restful方式的taos-driver
|
2. 支持JDBC-JNI和JDBC-restful
|
||||||
|
3. 读取配置文件,持续执行查询
|
|
@ -19,14 +19,13 @@ import java.util.Map;
|
||||||
|
|
||||||
public class TaosDemoApplication {
|
public class TaosDemoApplication {
|
||||||
|
|
||||||
private static Logger logger = Logger.getLogger(TaosDemoApplication.class);
|
private static final Logger logger = Logger.getLogger(TaosDemoApplication.class);
|
||||||
|
|
||||||
public static void main(String[] args) throws IOException {
|
public static void main(String[] args) throws IOException {
|
||||||
// 读配置参数
|
// 读配置参数
|
||||||
JdbcTaosdemoConfig config = new JdbcTaosdemoConfig(args);
|
JdbcTaosdemoConfig config = new JdbcTaosdemoConfig(args);
|
||||||
boolean isHelp = Arrays.asList(args).contains("--help");
|
boolean isHelp = Arrays.asList(args).contains("--help");
|
||||||
if (isHelp || config.host == null || config.host.isEmpty()) {
|
if (isHelp || config.host == null || config.host.isEmpty()) {
|
||||||
// if (isHelp) {
|
|
||||||
JdbcTaosdemoConfig.printHelp();
|
JdbcTaosdemoConfig.printHelp();
|
||||||
System.exit(0);
|
System.exit(0);
|
||||||
}
|
}
|
||||||
|
@ -75,7 +74,7 @@ public class TaosDemoApplication {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
end = System.currentTimeMillis();
|
end = System.currentTimeMillis();
|
||||||
logger.error(">>> create table time cost : " + (end - start) + " ms.");
|
logger.info(">>> create table time cost : " + (end - start) + " ms.");
|
||||||
/**********************************************************************************/
|
/**********************************************************************************/
|
||||||
// 插入
|
// 插入
|
||||||
long tableSize = config.numOfTables;
|
long tableSize = config.numOfTables;
|
||||||
|
@ -90,7 +89,7 @@ public class TaosDemoApplication {
|
||||||
// multi threads to insert
|
// multi threads to insert
|
||||||
int affectedRows = subTableService.insertMultiThreads(superTableMeta, threadSize, tableSize, startTime, gap, config);
|
int affectedRows = subTableService.insertMultiThreads(superTableMeta, threadSize, tableSize, startTime, gap, config);
|
||||||
end = System.currentTimeMillis();
|
end = System.currentTimeMillis();
|
||||||
logger.error("insert " + affectedRows + " rows, time cost: " + (end - start) + " ms");
|
logger.info("insert " + affectedRows + " rows, time cost: " + (end - start) + " ms");
|
||||||
/**********************************************************************************/
|
/**********************************************************************************/
|
||||||
// 删除表
|
// 删除表
|
||||||
if (config.dropTable) {
|
if (config.dropTable) {
|
||||||
|
@ -108,5 +107,4 @@ public class TaosDemoApplication {
|
||||||
return startTime;
|
return startTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,27 +21,27 @@ public class DatabaseMapperImpl implements DatabaseMapper {
|
||||||
public void createDatabase(String dbname) {
|
public void createDatabase(String dbname) {
|
||||||
String sql = "create database if not exists " + dbname;
|
String sql = "create database if not exists " + dbname;
|
||||||
jdbcTemplate.execute(sql);
|
jdbcTemplate.execute(sql);
|
||||||
logger.info("SQL >>> " + sql);
|
logger.debug("SQL >>> " + sql);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void dropDatabase(String dbname) {
|
public void dropDatabase(String dbname) {
|
||||||
String sql = "drop database if exists " + dbname;
|
String sql = "drop database if exists " + dbname;
|
||||||
jdbcTemplate.update(sql);
|
jdbcTemplate.update(sql);
|
||||||
logger.info("SQL >>> " + sql);
|
logger.debug("SQL >>> " + sql);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void createDatabaseWithParameters(Map<String, String> map) {
|
public void createDatabaseWithParameters(Map<String, String> map) {
|
||||||
String sql = SqlSpeller.createDatabase(map);
|
String sql = SqlSpeller.createDatabase(map);
|
||||||
jdbcTemplate.execute(sql);
|
jdbcTemplate.execute(sql);
|
||||||
logger.info("SQL >>> " + sql);
|
logger.debug("SQL >>> " + sql);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void useDatabase(String dbname) {
|
public void useDatabase(String dbname) {
|
||||||
String sql = "use " + dbname;
|
String sql = "use " + dbname;
|
||||||
jdbcTemplate.execute(sql);
|
jdbcTemplate.execute(sql);
|
||||||
logger.info("SQL >>> " + sql);
|
logger.debug("SQL >>> " + sql);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,14 +21,14 @@ public class SubTableMapperImpl implements SubTableMapper {
|
||||||
@Override
|
@Override
|
||||||
public void createUsingSuperTable(SubTableMeta subTableMeta) {
|
public void createUsingSuperTable(SubTableMeta subTableMeta) {
|
||||||
String sql = SqlSpeller.createTableUsingSuperTable(subTableMeta);
|
String sql = SqlSpeller.createTableUsingSuperTable(subTableMeta);
|
||||||
logger.info("SQL >>> " + sql);
|
logger.debug("SQL >>> " + sql);
|
||||||
jdbcTemplate.execute(sql);
|
jdbcTemplate.execute(sql);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int insertOneTableMultiValues(SubTableValue subTableValue) {
|
public int insertOneTableMultiValues(SubTableValue subTableValue) {
|
||||||
String sql = SqlSpeller.insertOneTableMultiValues(subTableValue);
|
String sql = SqlSpeller.insertOneTableMultiValues(subTableValue);
|
||||||
logger.info("SQL >>> " + sql);
|
logger.debug("SQL >>> " + sql);
|
||||||
|
|
||||||
int affectRows = 0;
|
int affectRows = 0;
|
||||||
try {
|
try {
|
||||||
|
@ -42,7 +42,7 @@ public class SubTableMapperImpl implements SubTableMapper {
|
||||||
@Override
|
@Override
|
||||||
public int insertOneTableMultiValuesUsingSuperTable(SubTableValue subTableValue) {
|
public int insertOneTableMultiValuesUsingSuperTable(SubTableValue subTableValue) {
|
||||||
String sql = SqlSpeller.insertOneTableMultiValuesUsingSuperTable(subTableValue);
|
String sql = SqlSpeller.insertOneTableMultiValuesUsingSuperTable(subTableValue);
|
||||||
logger.info("SQL >>> " + sql);
|
logger.debug("SQL >>> " + sql);
|
||||||
|
|
||||||
int affectRows = 0;
|
int affectRows = 0;
|
||||||
try {
|
try {
|
||||||
|
@ -56,7 +56,7 @@ public class SubTableMapperImpl implements SubTableMapper {
|
||||||
@Override
|
@Override
|
||||||
public int insertMultiTableMultiValues(List<SubTableValue> tables) {
|
public int insertMultiTableMultiValues(List<SubTableValue> tables) {
|
||||||
String sql = SqlSpeller.insertMultiSubTableMultiValues(tables);
|
String sql = SqlSpeller.insertMultiSubTableMultiValues(tables);
|
||||||
logger.info("SQL >>> " + sql);
|
logger.debug("SQL >>> " + sql);
|
||||||
int affectRows = 0;
|
int affectRows = 0;
|
||||||
try {
|
try {
|
||||||
affectRows = jdbcTemplate.update(sql);
|
affectRows = jdbcTemplate.update(sql);
|
||||||
|
@ -69,7 +69,7 @@ public class SubTableMapperImpl implements SubTableMapper {
|
||||||
@Override
|
@Override
|
||||||
public int insertMultiTableMultiValuesUsingSuperTable(List<SubTableValue> tables) {
|
public int insertMultiTableMultiValuesUsingSuperTable(List<SubTableValue> tables) {
|
||||||
String sql = SqlSpeller.insertMultiTableMultiValuesUsingSuperTable(tables);
|
String sql = SqlSpeller.insertMultiTableMultiValuesUsingSuperTable(tables);
|
||||||
logger.info("SQL >>> " + sql);
|
logger.debug("SQL >>> " + sql);
|
||||||
int affectRows = 0;
|
int affectRows = 0;
|
||||||
try {
|
try {
|
||||||
affectRows = jdbcTemplate.update(sql);
|
affectRows = jdbcTemplate.update(sql);
|
||||||
|
|
|
@ -18,14 +18,14 @@ public class SuperTableMapperImpl implements SuperTableMapper {
|
||||||
@Override
|
@Override
|
||||||
public void createSuperTable(SuperTableMeta tableMetadata) {
|
public void createSuperTable(SuperTableMeta tableMetadata) {
|
||||||
String sql = SqlSpeller.createSuperTable(tableMetadata);
|
String sql = SqlSpeller.createSuperTable(tableMetadata);
|
||||||
logger.info("SQL >>> " + sql);
|
logger.debug("SQL >>> " + sql);
|
||||||
jdbcTemplate.execute(sql);
|
jdbcTemplate.execute(sql);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void dropSuperTable(String database, String name) {
|
public void dropSuperTable(String database, String name) {
|
||||||
String sql = "drop table if exists " + database + "." + name;
|
String sql = "drop table if exists " + database + "." + name;
|
||||||
logger.info("SQL >>> " + sql);
|
logger.debug("SQL >>> " + sql);
|
||||||
jdbcTemplate.execute(sql);
|
jdbcTemplate.execute(sql);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,43 +1,49 @@
|
||||||
package com.taosdata.taosdemo.dao;
|
package com.taosdata.taosdemo.dao;
|
||||||
|
|
||||||
import com.taosdata.taosdemo.dao.TableMapper;
|
|
||||||
import com.taosdata.taosdemo.domain.TableMeta;
|
import com.taosdata.taosdemo.domain.TableMeta;
|
||||||
import com.taosdata.taosdemo.domain.TableValue;
|
import com.taosdata.taosdemo.domain.TableValue;
|
||||||
import com.taosdata.taosdemo.utils.SqlSpeller;
|
import com.taosdata.taosdemo.utils.SqlSpeller;
|
||||||
|
import org.apache.log4j.Logger;
|
||||||
import org.springframework.jdbc.core.JdbcTemplate;
|
import org.springframework.jdbc.core.JdbcTemplate;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class TableMapperImpl implements TableMapper {
|
public class TableMapperImpl implements TableMapper {
|
||||||
|
private static final Logger logger = Logger.getLogger(TableMapperImpl.class);
|
||||||
private JdbcTemplate template;
|
private JdbcTemplate template;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void create(TableMeta tableMeta) {
|
public void create(TableMeta tableMeta) {
|
||||||
String sql = SqlSpeller.createTable(tableMeta);
|
String sql = SqlSpeller.createTable(tableMeta);
|
||||||
|
logger.debug("SQL >>> " + sql);
|
||||||
template.execute(sql);
|
template.execute(sql);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int insertOneTableMultiValues(TableValue values) {
|
public int insertOneTableMultiValues(TableValue values) {
|
||||||
String sql = SqlSpeller.insertOneTableMultiValues(values);
|
String sql = SqlSpeller.insertOneTableMultiValues(values);
|
||||||
|
logger.debug("SQL >>> " + sql);
|
||||||
return template.update(sql);
|
return template.update(sql);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int insertOneTableMultiValuesWithColumns(TableValue values) {
|
public int insertOneTableMultiValuesWithColumns(TableValue values) {
|
||||||
String sql = SqlSpeller.insertOneTableMultiValuesWithColumns(values);
|
String sql = SqlSpeller.insertOneTableMultiValuesWithColumns(values);
|
||||||
|
logger.debug("SQL >>> " + sql);
|
||||||
return template.update(sql);
|
return template.update(sql);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int insertMultiTableMultiValues(List<TableValue> tables) {
|
public int insertMultiTableMultiValues(List<TableValue> tables) {
|
||||||
String sql = SqlSpeller.insertMultiTableMultiValues(tables);
|
String sql = SqlSpeller.insertMultiTableMultiValues(tables);
|
||||||
|
logger.debug("SQL >>> " + sql);
|
||||||
return template.update(sql);
|
return template.update(sql);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int insertMultiTableMultiValuesWithColumns(List<TableValue> tables) {
|
public int insertMultiTableMultiValuesWithColumns(List<TableValue> tables) {
|
||||||
String sql = SqlSpeller.insertMultiTableMultiValuesWithColumns(tables);
|
String sql = SqlSpeller.insertMultiTableMultiValuesWithColumns(tables);
|
||||||
|
logger.debug("SQL >>> " + sql);
|
||||||
return template.update(sql);
|
return template.update(sql);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
### 设置###
|
### 设置###
|
||||||
log4j.rootLogger=error,stdout
|
log4j.rootLogger=info,stdout
|
||||||
### 输出信息到控制抬 ###
|
### 输出信息到控制抬 ###
|
||||||
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
|
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
|
||||||
log4j.appender.stdout.Target=System.out
|
log4j.appender.stdout.Target=System.out
|
||||||
|
|
Loading…
Reference in New Issue