Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
e5294ee5
T
TDengine
项目概览
taosdata
/
TDengine
大约 2 年 前同步成功
通知
1192
Star
22018
Fork
4786
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
e5294ee5
编写于
6月 19, 2020
作者:
S
Shengliang Guan
提交者:
GitHub
6月 19, 2020
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #2362 from taosdata/hotfix/taos-tools
fix coverity's bug
上级
f26403d1
e70de288
变更
32
隐藏空白更改
内联
并排
Showing
32 changed file
with
2354 addition
and
642 deletion
+2354
-642
src/client/src/TSDBJNIConnector.c
src/client/src/TSDBJNIConnector.c
+4
-4
src/connector/jdbc/.classpath
src/connector/jdbc/.classpath
+49
-0
src/connector/jdbc/.project
src/connector/jdbc/.project
+23
-0
src/connector/jdbc/.settings/org.eclipse.core.resources.prefs
...connector/jdbc/.settings/org.eclipse.core.resources.prefs
+0
-5
src/connector/jdbc/.settings/org.eclipse.jdt.core.prefs
src/connector/jdbc/.settings/org.eclipse.jdt.core.prefs
+0
-13
src/connector/jdbc/.settings/org.eclipse.m2e.core.prefs
src/connector/jdbc/.settings/org.eclipse.m2e.core.prefs
+0
-4
src/connector/jdbc/pom.xml
src/connector/jdbc/pom.xml
+134
-103
src/connector/jdbc/src/main/java/com/taosdata/jdbc/TSDBDatabaseMetaData.java
...src/main/java/com/taosdata/jdbc/TSDBDatabaseMetaData.java
+3
-2
src/connector/jdbc/src/main/java/com/taosdata/jdbc/TSDBError.java
...ector/jdbc/src/main/java/com/taosdata/jdbc/TSDBError.java
+0
-223
src/connector/jdbc/src/main/java/com/taosdata/jdbc/TSDBJNIConnector.java
...dbc/src/main/java/com/taosdata/jdbc/TSDBJNIConnector.java
+5
-10
src/connector/jdbc/src/main/java/com/taosdata/jdbc/TSDBStatement.java
...r/jdbc/src/main/java/com/taosdata/jdbc/TSDBStatement.java
+13
-6
src/connector/jdbc/src/main/java/com/taosdata/jdbc/TSDBSubscribe.java
...r/jdbc/src/main/java/com/taosdata/jdbc/TSDBSubscribe.java
+1
-2
src/connector/jdbc/src/test/java/TestAsyncTSDBSubscribe.java
src/connector/jdbc/src/test/java/TestAsyncTSDBSubscribe.java
+11
-4
src/connector/jdbc/src/test/java/TestPreparedStatement.java
src/connector/jdbc/src/test/java/TestPreparedStatement.java
+10
-3
src/connector/jdbc/src/test/java/TestTSDBDatabaseMetaData.java
...onnector/jdbc/src/test/java/TestTSDBDatabaseMetaData.java
+13
-9
src/connector/jdbc/src/test/java/TestTSDBSubscribe.java
src/connector/jdbc/src/test/java/TestTSDBSubscribe.java
+6
-2
src/connector/jdbc/src/test/java/com/taosdata/jdbc/AsyncSubscribeTest.java
...c/src/test/java/com/taosdata/jdbc/AsyncSubscribeTest.java
+99
-0
src/connector/jdbc/src/test/java/com/taosdata/jdbc/ConnectionTest.java
.../jdbc/src/test/java/com/taosdata/jdbc/ConnectionTest.java
+62
-0
src/connector/jdbc/src/test/java/com/taosdata/jdbc/DatabaseMetaDataTest.java
...src/test/java/com/taosdata/jdbc/DatabaseMetaDataTest.java
+245
-0
src/connector/jdbc/src/test/java/com/taosdata/jdbc/ImportTest.java
...ctor/jdbc/src/test/java/com/taosdata/jdbc/ImportTest.java
+93
-0
src/connector/jdbc/src/test/java/com/taosdata/jdbc/PreparedStatementTest.java
...rc/test/java/com/taosdata/jdbc/PreparedStatementTest.java
+201
-0
src/connector/jdbc/src/test/java/com/taosdata/jdbc/ResultSetTest.java
...r/jdbc/src/test/java/com/taosdata/jdbc/ResultSetTest.java
+829
-0
src/connector/jdbc/src/test/java/com/taosdata/jdbc/SelectTest.java
...ctor/jdbc/src/test/java/com/taosdata/jdbc/SelectTest.java
+72
-0
src/connector/jdbc/src/test/java/com/taosdata/jdbc/StableTest.java
...ctor/jdbc/src/test/java/com/taosdata/jdbc/StableTest.java
+123
-0
src/connector/jdbc/src/test/java/com/taosdata/jdbc/StatementTest.java
...r/jdbc/src/test/java/com/taosdata/jdbc/StatementTest.java
+174
-0
src/connector/jdbc/src/test/java/com/taosdata/jdbc/SubscribeTest.java
...r/jdbc/src/test/java/com/taosdata/jdbc/SubscribeTest.java
+94
-0
src/kit/taosnetwork/client.c
src/kit/taosnetwork/client.c
+42
-6
src/kit/taosnetwork/server.c
src/kit/taosnetwork/server.c
+48
-10
src/kit/taosnetwork/taosnetwork_client.c
src/kit/taosnetwork/taosnetwork_client.c
+0
-66
src/kit/taosnetwork/taosnetwork_server.c
src/kit/taosnetwork/taosnetwork_server.c
+0
-57
src/kit/taosnetwork/test_client.c
src/kit/taosnetwork/test_client.c
+0
-50
src/kit/taosnetwork/test_server.c
src/kit/taosnetwork/test_server.c
+0
-63
未找到文件。
src/client/src/TSDBJNIConnector.c
浏览文件 @
e5294ee5
...
@@ -342,7 +342,7 @@ JNIEXPORT jlong JNICALL Java_com_taosdata_jdbc_TSDBJNIConnector_getResultSetImp(
...
@@ -342,7 +342,7 @@ JNIEXPORT jlong JNICALL Java_com_taosdata_jdbc_TSDBJNIConnector_getResultSetImp(
STscObj
*
pObj
=
pSql
->
pTscObj
;
STscObj
*
pObj
=
pSql
->
pTscObj
;
if
(
tscIsUpdateQuery
(
pSql
))
{
if
(
tscIsUpdateQuery
(
pSql
))
{
taos_free_result
(
pSql
);
// free result here
//
taos_free_result(pSql); // free result here
jniTrace
(
"jobj:%p, conn:%p, no resultset, %p"
,
jobj
,
pObj
,
(
void
*
)
tres
);
jniTrace
(
"jobj:%p, conn:%p, no resultset, %p"
,
jobj
,
pObj
,
(
void
*
)
tres
);
return
0
;
return
0
;
}
else
{
}
else
{
...
@@ -383,7 +383,7 @@ JNIEXPORT jint JNICALL Java_com_taosdata_jdbc_TSDBJNIConnector_getAffectedRowsIm
...
@@ -383,7 +383,7 @@ JNIEXPORT jint JNICALL Java_com_taosdata_jdbc_TSDBJNIConnector_getAffectedRowsIm
}
}
jint
ret
=
taos_affected_rows
((
SSqlObj
*
)
res
);
jint
ret
=
taos_affected_rows
((
SSqlObj
*
)
res
);
jniTrace
(
"jobj:%p, conn:%p, sql:%p,
affect rows:%d"
,
jobj
,
tscon
,
(
SSqlObj
*
)
res
,
ret
);
jniTrace
(
"jobj:%p, conn:%p, sql:%p,
res: %p, affect rows:%d"
,
jobj
,
tscon
,
(
void
*
)
con
,
(
void
*
)
res
,
ret
);
return
ret
;
return
ret
;
}
}
...
@@ -409,10 +409,10 @@ JNIEXPORT jint JNICALL Java_com_taosdata_jdbc_TSDBJNIConnector_getSchemaMetaData
...
@@ -409,10 +409,10 @@ JNIEXPORT jint JNICALL Java_com_taosdata_jdbc_TSDBJNIConnector_getSchemaMetaData
// jobject arrayListObj = (*env)->NewObject(env, g_arrayListClass, g_arrayListConstructFp, "");
// jobject arrayListObj = (*env)->NewObject(env, g_arrayListClass, g_arrayListConstructFp, "");
if
(
num_fields
==
0
)
{
if
(
num_fields
==
0
)
{
jniError
(
"jobj:%p, conn:%p, resultset:%p, fields size is %d"
,
jobj
,
tscon
,
(
void
*
)
res
,
num_fields
);
jniError
(
"jobj:%p, conn:%p, resultset:%p, fields size is %d"
,
jobj
,
tscon
,
(
void
*
)
res
,
num_fields
);
return
JNI_NUM_OF_FIELDS_0
;
return
JNI_NUM_OF_FIELDS_0
;
}
else
{
}
else
{
jniTrace
(
"jobj:%p, conn:%p, resultset:%p, fields size is %d"
,
jobj
,
tscon
,
(
void
*
)
res
,
num_fields
);
jniTrace
(
"jobj:%p, conn:%p, resultset:%p, fields size is %d"
,
jobj
,
tscon
,
(
void
*
)
res
,
num_fields
);
for
(
int
i
=
0
;
i
<
num_fields
;
++
i
)
{
for
(
int
i
=
0
;
i
<
num_fields
;
++
i
)
{
jobject
metadataObj
=
(
*
env
)
->
NewObject
(
env
,
g_metadataClass
,
g_metadataConstructFp
);
jobject
metadataObj
=
(
*
env
)
->
NewObject
(
env
,
g_metadataClass
,
g_metadataConstructFp
);
(
*
env
)
->
SetIntField
(
env
,
metadataObj
,
g_metadataColtypeField
,
fields
[
i
].
type
);
(
*
env
)
->
SetIntField
(
env
,
metadataObj
,
g_metadataColtypeField
,
fields
[
i
].
type
);
...
...
src/connector/jdbc/.classpath
0 → 100644
浏览文件 @
e5294ee5
<?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=
"src"
path=
"target/generated-sources/annotations"
>
<attributes>
<attribute
name=
"optional"
value=
"true"
/>
<attribute
name=
"maven.pomderived"
value=
"true"
/>
<attribute
name=
"ignore_optional_problems"
value=
"true"
/>
<attribute
name=
"m2e-apt"
value=
"true"
/>
</attributes>
</classpathentry>
<classpathentry
kind=
"src"
output=
"target/test-classes"
path=
"target/generated-test-sources/test-annotations"
>
<attributes>
<attribute
name=
"optional"
value=
"true"
/>
<attribute
name=
"maven.pomderived"
value=
"true"
/>
<attribute
name=
"ignore_optional_problems"
value=
"true"
/>
<attribute
name=
"m2e-apt"
value=
"true"
/>
<attribute
name=
"test"
value=
"true"
/>
</attributes>
</classpathentry>
<classpathentry
kind=
"output"
path=
"target/classes"
/>
</classpath>
src/connector/jdbc/.project
0 → 100644
浏览文件 @
e5294ee5
<?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>
src/connector/jdbc/.settings/org.eclipse.core.resources.prefs
已删除
100755 → 0
浏览文件 @
f26403d1
eclipse.preferences.version=1
encoding//src/main/java=GBK
encoding//src/main/java/com/taosdata/jdbc/TSDBJNIConnector.java=UTF-8
encoding//src/main/resources=UTF-8
encoding/<project>=UTF-8
src/connector/jdbc/.settings/org.eclipse.jdt.core.prefs
已删除
100755 → 0
浏览文件 @
f26403d1
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
org.eclipse.jdt.core.compiler.compliance=1.6
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
org.eclipse.jdt.core.compiler.source=1.6
src/connector/jdbc/.settings/org.eclipse.m2e.core.prefs
已删除
100755 → 0
浏览文件 @
f26403d1
activeProfiles=
eclipse.preferences.version=1
resolveWorkspaceProjects=true
version=1
src/connector/jdbc/pom.xml
浏览文件 @
e5294ee5
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<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>
1.0.3
</version>
<version>
1.0.3
</version>
<packaging>
jar
</packaging>
<packaging>
jar
</packaging>
<name>
JDBCDriver
</name>
<url>
https://github.com/taosdata/TDengine/tree/master/src/connector/jdbc
</url>
<name>
JDBCDriver
</name>
<description>
TDengine JDBC Driver
</description>
<url>
https://github.com/taosdata/TDengine/tree/master/src/connector/jdbc
</url>
<licenses>
<description>
TDengine JDBC Driver
</description>
<license>
<name>
GNU AFFERO GENERAL PUBLIC LICENSE Version 3
</name>
<licenses>
<url>
https://github.com/taosdata/TDengine/blob/master/LICENSE
</url>
<license>
<distribution>
repo
</distribution>
<name>
GNU AFFERO GENERAL PUBLIC LICENSE Version 3
</name>
</license>
<url>
https://github.com/taosdata/TDengine/blob/master/LICENSE
</url>
</licenses>
<distribution>
repo
</distribution>
<scm>
</license>
<connection>
scm:git:git://github.com/taosdata/TDengine.git
</connection>
</licenses>
<developerConnection>
scm:git:git@github.com:taosdata/TDengine.git
</developerConnection>
<url>
https://github.com/taosdata/TDengine/tree/master/src/connector/jdbc
</url>
<scm>
<tag>
HEAD
</tag>
<connection>
scm:git:git://github.com/taosdata/TDengine.git
</connection>
</scm>
<developerConnection>
scm:git:git@github.com:taosdata/TDengine.git
</developerConnection>
<developers>
<url>
https://github.com/taosdata/TDengine/tree/master/src/connector/jdbc
</url>
<developer>
<tag>
HEAD
</tag>
<name>
taosdata
</name>
</scm>
<email>
support@taosdata.com
</email>
<organization>
https://www.taosdata.com/
</organization>
<developers>
<organizationUrl>
https://www.taosdata.com/
</organizationUrl>
<developer>
</developer>
<name>
taosdata
</name>
</developers>
<email>
support@taosdata.com
</email>
<properties>
<organization>
https://www.taosdata.com/
</organization>
<project.build.sourceEncoding>
UTF-8
</project.build.sourceEncoding>
<organizationUrl>
https://www.taosdata.com/
</organizationUrl>
<java.version>
1.8
</java.version>
</developer>
<maven-compiler-plugin.version>
3.6.0
</maven-compiler-plugin.version>
</developers>
<commons-logging.version>
1.1.2
</commons-logging.version>
<commons-lang3.version>
3.5
</commons-lang3.version>
<properties>
</properties>
<project.build.sourceEncoding>
UTF-8
</project.build.sourceEncoding>
<dependencies>
<java.version>
1.8
</java.version>
<dependency>
<groupId>
commons-logging
</groupId>
<maven-compiler-plugin.version>
3.6.0
</maven-compiler-plugin.version>
<artifactId>
commons-logging
</artifactId>
<version>
${commons-logging.version}
</version>
<commons-logging.version>
1.1.2
</commons-logging.version>
<exclusions>
<commons-lang3.version>
3.5
</commons-lang3.version>
<exclusion>
</properties>
<groupId>
*
</groupId>
<artifactId>
*
</artifactId>
<dependencies>
</exclusion>
<dependency>
</exclusions>
<groupId>
commons-logging
</groupId>
</dependency>
<artifactId>
commons-logging
</artifactId>
<dependency>
<version>
${commons-logging.version}
</version>
<groupId>
org.apache.commons
</groupId>
<exclusions>
<artifactId>
commons-lang3
</artifactId>
<exclusion>
<version>
${commons-lang3.version}
</version>
<groupId>
*
</groupId>
</dependency>
<artifactId>
*
</artifactId>
<dependency>
</exclusion>
<groupId>
org.jacoco
</groupId>
</exclusions>
<artifactId>
jacoco-maven-plugin
</artifactId>
</dependency>
<version>
0.8.3
</version>
<dependency>
</dependency>
<groupId>
org.apache.commons
</groupId>
<dependency>
<artifactId>
commons-lang3
</artifactId>
<groupId>
junit
</groupId>
<version>
${commons-lang3.version}
</version>
<artifactId>
junit
</artifactId>
</dependency>
<version>
4.13
</version>
</dependencies>
<scope>
test
</scope>
</dependency>
<build>
</dependencies>
<plugins>
<build>
<plugin>
<plugins>
<groupId>
org.apache.maven.plugins
</groupId>
<plugin>
<artifactId>
maven-assembly-plugin
</artifactId>
<groupId>
org.apache.maven.plugins
</groupId>
<version>
3.0.0
</version>
<artifactId>
maven-assembly-plugin
</artifactId>
<configuration>
<version>
3.0.0
</version>
<descriptors>
<configuration>
<!--<descriptor>src/main/assembly/assembly.xml</descriptor>-->
<descriptors>
<descriptor>
src/main/assembly/assembly-jar.xml
</descriptor>
<descriptor>
src/main/assembly/assembly-jar.xml
</descriptor>
</descriptors>
</descriptors>
</configuration>
</configuration>
<executions>
<executions>
<execution>
<execution>
<id>
make-assembly
</id>
<id>
make-assembly
</id>
<phase>
package
</phase>
<phase>
package
</phase>
<goals>
<goals>
<goal>
single
</goal>
<goal>
single
</goal>
</goals>
</goals>
</execution>
</execution>
</executions>
</executions>
</plugin>
</plugin>
<plugin>
<plugin>
<groupId>
org.apache.maven.plugins
</groupId>
<groupId>
org.apache.maven.plugins
</groupId>
<artifactId>
maven-compiler-plugin
</artifactId>
<artifactId>
maven-compiler-plugin
</artifactId>
<version>
${maven-compiler-plugin.version}
</version>
<version>
${maven-compiler-plugin.version}
</version>
<configuration>
<configuration>
<encoding>
UTF-8
</encoding>
<encoding>
UTF-8
</encoding>
<source>
${java.version}
</source>
<source>
${java.version}
</source>
<target>
${java.version}
</target>
<target>
${java.version}
</target>
<debug>
true
</debug>
<debug>
true
</debug>
<showDeprecation>
true
</showDeprecation>
<showDeprecation>
true
</showDeprecation>
</configuration>
</configuration>
</plugin>
</plugin>
</plugins>
<plugin>
</build>
<groupId>
org.apache.maven.plugins
</groupId>
<artifactId>
maven-surefire-plugin
</artifactId>
<version>
2.12.4
</version>
<configuration>
<testFailureIgnore>
true
</testFailureIgnore>
</configuration>
</plugin>
<plugin>
<groupId>
org.jacoco
</groupId>
<artifactId>
jacoco-maven-plugin
</artifactId>
<version>
0.8.3
</version>
<configuration>
<includes>
<include>
com/**/*
</include>
</includes>
</configuration>
<executions>
<execution>
<id>
pre-test
</id>
<goals>
<goal>
prepare-agent
</goal>
</goals>
</execution>
<execution>
<id>
post-test
</id>
<phase>
test
</phase>
<goals>
<goal>
report
</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
</project>
src/connector/jdbc/src/main/java/com/taosdata/jdbc/TSDBDatabaseMetaData.java
浏览文件 @
e5294ee5
...
@@ -527,8 +527,9 @@ public class TSDBDatabaseMetaData implements java.sql.DatabaseMetaData {
...
@@ -527,8 +527,9 @@ public class TSDBDatabaseMetaData implements java.sql.DatabaseMetaData {
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
;
Statement
stmt
=
conn
.
createStatement
();
if
(
null
!=
conn
&&
!
conn
.
isClosed
())
{
stmt
=
conn
.
createStatement
();
if
(
catalog
==
null
||
catalog
.
length
()
<
1
)
{
if
(
catalog
==
null
||
catalog
.
length
()
<
1
)
{
catalog
=
conn
.
getCatalog
();
catalog
=
conn
.
getCatalog
();
}
}
...
...
src/connector/jdbc/src/main/java/com/taosdata/jdbc/TSDBError.java
已删除
100644 → 0
浏览文件 @
f26403d1
/***************************************************************************
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
*
* This program is free software: you can use, redistribute, and/or modify
* it under the terms of the GNU Affero General Public License, version 3
* or later ("AGPL"), as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*****************************************************************************/
package
com.taosdata.jdbc
;
import
java.util.HashMap
;
import
java.util.Map
;
/**
*
* TDengine error code and error message enumeration.
*
*/
public
enum
TSDBError
{
TSDB_CODE_SUCCESS
(
0
,
"success"
),
TSDB_CODE_ACTION_IN_PROGRESS
(
1
,
"in progress"
),
TSDB_CODE_LAST_SESSION_NOT_FINISHED
(
5
,
"last session not finished"
),
TSDB_CODE_INVALID_SESSION_ID
(
6
,
"invalid session ID"
),
TSDB_CODE_INVALID_TRAN_ID
(
7
,
"invalid tran ID"
),
TSDB_CODE_INVALID_MSG_TYPE
(
8
,
"invalid msg type"
),
TSDB_CODE_ALREADY_PROCESSED
(
9
,
"alredy processed"
),
TSDB_CODE_AUTH_FAILURE
(
10
,
"authentication failure"
),
TSDB_CODE_WRONG_MSG_SIZE
(
11
,
"wrong msg size"
),
TSDB_CODE_UNEXPECTED_RESPONSE
(
12
,
"unexpected response"
),
TSDB_CODE_INVALID_RESPONSE_TYPE
(
13
,
"invalid response type"
),
TSDB_CODE_NO_RESOURCE
(
14
,
"no resource"
),
TSDB_CODE_INVALID_TIME_STAMP
(
15
,
"invalid time stamp"
),
TSDB_CODE_MISMATCHED_METER_ID
(
16
,
"mismatched meter ID"
),
TSDB_CODE_ACTION_TRANS_NOT_FINISHED
(
17
,
"transcation not finished"
),
TSDB_CODE_ACTION_NOT_ONLINE
(
18
,
"not online"
),
TSDB_CODE_ACTION_SEND_FAILD
(
19
,
"send failed"
),
TSDB_CODE_NOT_ACTIVE_SESSION
(
20
,
"not active session"
),
TSDB_CODE_INSERT_FAILED
(
21
,
"insert failed"
),
TSDB_CODE_APP_ERROR
(
22
,
"App error"
),
TSDB_CODE_INVALID_IE
(
23
,
"invalid IE"
),
TSDB_CODE_INVALID_VALUE
(
24
,
"invalid value"
),
TSDB_CODE_REDIRECT
(
25
,
"service not available"
),
TSDB_CODE_ALREADY_THERE
(
26
,
"already there"
),
TSDB_CODE_INVALID_TABLE_ID
(
27
,
"invalid meter ID"
),
TSDB_CODE_INVALID_SQL
(
28
,
"invalid SQL"
),
// this message often comes with additional info which will vary based on the specific error situation
TSDB_CODE_NETWORK_UNAVAIL
(
29
,
"failed to connect to server"
),
TSDB_CODE_INVALID_MSG_LEN
(
30
,
"invalid msg len"
),
TSDB_CODE_INVALID_DB
(
31
,
"invalid DB"
),
TSDB_CODE_INVALID_TABLE
(
32
,
"invalid table"
),
TSDB_CODE_DB_ALREADY_EXIST
(
33
,
"DB already there"
),
TSDB_CODE_TABLE_ALREADY_EXIST
(
34
,
"table already there"
),
TSDB_CODE_INVALID_USER
(
35
,
"invalid user name"
),
TSDB_CODE_INVALID_ACCT
(
36
,
"invalid acct name"
),
TSDB_CODE_INVALID_PASS
(
37
,
"invalid password"
),
TSDB_CODE_DB_NOT_SELECTED
(
38
,
"DB not selected"
),
TSDB_CODE_MEMORY_CORRUPTED
(
39
,
"memory corrupted"
),
TSDB_CODE_USER_ALREADY_EXIST
(
40
,
"user name exists"
),
TSDB_CODE_NO_RIGHTS
(
41
,
"not authorized"
),
TSDB_CODE_DISCONNECTED
(
42
,
"login disconnected), login again"
),
TSDB_CODE_NO_MASTER
(
43
,
"mgmt master node not available"
),
TSDB_CODE_NOT_CONFIGURED
(
44
,
"not configured"
),
TSDB_CODE_INVALID_OPTION
(
45
,
"invalid option"
),
TSDB_CODE_NODE_OFFLINE
(
46
,
"node offline"
),
TSDB_CODE_SYNC_REQUIRED
(
47
,
"sync required"
),
TSDB_CODE_NO_ENOUGH_DNODES
(
48
,
"more dnodes are needed"
),
TSDB_CODE_UNSYNCED
(
49
,
"node in unsynced state"
),
TSDB_CODE_TOO_SLOW
(
50
,
"too slow"
),
TSDB_CODE_OTHERS
(
51
,
"others"
),
TSDB_CODE_NO_REMOVE_MASTER
(
52
,
"can't remove dnode which is master"
),
TSDB_CODE_WRONG_SCHEMA
(
53
,
"wrong schema"
),
TSDB_CODE_NO_RESULT
(
54
,
"no results"
),
TSDB_CODE_TOO_MANY_USERS
(
55
,
"num of users execeed maxUsers"
),
TSDB_CODE_TOO_MANY_DATABSES
(
56
,
"num of databases execeed maxDbs"
),
TSDB_CODE_TOO_MANY_TABLES
(
57
,
"num of tables execeed maxTables"
),
TSDB_CODE_TOO_MANY_DNODES
(
58
,
"num of dnodes execeed maxDnodes"
),
TSDB_CODE_TOO_MANY_ACCTS
(
59
,
"num of accounts execeed maxAccts"
),
TSDB_CODE_ACCT_ALREADY_EXIST
(
60
,
"accout name exists"
),
TSDB_CODE_DNODE_ALREADY_EXIST
(
61
,
"dnode ip exists"
),
TSDB_CODE_SDB_ERROR
(
62
,
"sdb error"
),
TSDB_CODE_METRICMETA_EXPIRED
(
63
,
"metric meta expired"
),
// local cached metric-meta expired causes error in metric query
TSDB_CODE_NOT_READY
(
64
,
"not ready"
),
// peer is not ready to process data
TSDB_CODE_MAX_SESSIONS
(
65
,
"too many sessions on server"
),
// too many sessions
TSDB_CODE_MAX_CONNECTIONS
(
66
,
"too many sessions from app"
),
// too many connections
TSDB_CODE_SESSION_ALREADY_EXIST
(
67
,
"session to dest is already there"
),
TSDB_CODE_NO_QSUMMARY
(
68
,
"query list not there), please show again"
),
TSDB_CODE_SERV_OUT_OF_MEMORY
(
69
,
"server out of memory"
),
TSDB_CODE_INVALID_QHANDLE
(
70
,
"invalid query handle"
),
TSDB_CODE_RELATED_TABLES_EXIST
(
71
,
"tables related to metric exist"
),
TSDB_CODE_MONITOR_DB_FORBEIDDEN
(
72
,
"can't drop monitor database or tables"
),
TSDB_CODE_VG_COMMITLOG_INIT_FAILED
(
73
,
"commit log init failed"
),
TSDB_CODE_VG_INIT_FAILED
(
74
,
"vgroup init failed"
),
TSDB_CODE_DATA_ALREADY_IMPORTED
(
75
,
"data is already imported"
),
TSDB_CODE_OPS_NOT_SUPPORT
(
76
,
"not supported operation"
),
TSDB_CODE_INVALID_QUERY_ID
(
77
,
"invalid query id string"
),
TSDB_CODE_INVALID_STREAM_ID
(
78
,
"invalid stream id string"
),
TSDB_CODE_INVALID_CONNECTION
(
79
,
"invalid connection string"
),
TSDB_CODE_ACTION_NOT_BALANCED
(
80
,
"dnode not balanced"
),
TSDB_CODE_CLI_OUT_OF_MEMORY
(
81
,
"client out of memory"
),
TSDB_CODE_DATA_OVERFLOW
(
82
,
"data value overflow"
),
TSDB_CODE_QUERY_CANCELLED
(
83
,
"query cancelled"
),
TSDB_CODE_GRANT_POINT_LIMITED
(
84
,
"grant points limited"
),
TSDB_CODE_GRANT_EXPIRED
(
85
,
"grant expired"
),
TSDB_CODE_CLI_NO_DISKSPACE
(
86
,
"client no disk space"
),
TSDB_CODE_FILE_CORRUPTED
(
87
,
"DB file corrupted"
),
TSDB_CODE_INVALID_CLIENT_VERSION
(
88
,
"version of client and server not match"
);
private
long
errCode
;
private
String
errMessage
;
private
static
Map
<
Integer
,
String
>
errorCodeMap
=
new
HashMap
<>(
86
);
static
{
errorCodeMap
.
put
(
0
,
"success"
);
errorCodeMap
.
put
(
1
,
"in progress"
);
errorCodeMap
.
put
(
5
,
"last session not finished"
);
errorCodeMap
.
put
(
6
,
"invalid session ID"
);
errorCodeMap
.
put
(
7
,
"invalid tran ID"
);
errorCodeMap
.
put
(
8
,
"invalid msg type"
);
errorCodeMap
.
put
(
9
,
"alredy processed"
);
errorCodeMap
.
put
(
10
,
"authentication failure"
);
errorCodeMap
.
put
(
11
,
"wrong msg size"
);
errorCodeMap
.
put
(
12
,
"unexpected response"
);
errorCodeMap
.
put
(
13
,
"invalid response type"
);
errorCodeMap
.
put
(
14
,
"no resource"
);
errorCodeMap
.
put
(
15
,
"invalid time stamp"
);
errorCodeMap
.
put
(
16
,
"mismatched meter ID"
);
errorCodeMap
.
put
(
17
,
"transcation not finished"
);
errorCodeMap
.
put
(
18
,
"not online"
);
errorCodeMap
.
put
(
19
,
"send failed"
);
errorCodeMap
.
put
(
20
,
"not active session"
);
errorCodeMap
.
put
(
21
,
"insert failed"
);
errorCodeMap
.
put
(
22
,
"App error"
);
errorCodeMap
.
put
(
23
,
"invalid IE"
);
errorCodeMap
.
put
(
24
,
"invalid value"
);
errorCodeMap
.
put
(
25
,
"service not available"
);
errorCodeMap
.
put
(
26
,
"already there"
);
errorCodeMap
.
put
(
27
,
"invalid meter ID"
);
errorCodeMap
.
put
(
28
,
"invalid SQL"
);
// this message often comes with additional info which will vary based on the specific error situation
errorCodeMap
.
put
(
29
,
"failed to connect to server"
);
errorCodeMap
.
put
(
30
,
"invalid msg len"
);
errorCodeMap
.
put
(
31
,
"invalid DB"
);
errorCodeMap
.
put
(
32
,
"invalid table"
);
errorCodeMap
.
put
(
33
,
"DB already there"
);
errorCodeMap
.
put
(
34
,
"table already there"
);
errorCodeMap
.
put
(
35
,
"invalid user name"
);
errorCodeMap
.
put
(
36
,
"invalid acct name"
);
errorCodeMap
.
put
(
37
,
"invalid password"
);
errorCodeMap
.
put
(
38
,
"DB not selected"
);
errorCodeMap
.
put
(
39
,
"memory corrupted"
);
errorCodeMap
.
put
(
40
,
"user name exists"
);
errorCodeMap
.
put
(
41
,
"not authorized"
);
errorCodeMap
.
put
(
42
,
"login disconnected); login again"
);
errorCodeMap
.
put
(
43
,
"mgmt master node not available"
);
errorCodeMap
.
put
(
44
,
"not configured"
);
errorCodeMap
.
put
(
45
,
"invalid option"
);
errorCodeMap
.
put
(
46
,
"node offline"
);
errorCodeMap
.
put
(
47
,
"sync required"
);
errorCodeMap
.
put
(
48
,
"more dnodes are needed"
);
errorCodeMap
.
put
(
49
,
"node in unsynced state"
);
errorCodeMap
.
put
(
50
,
"too slow"
);
errorCodeMap
.
put
(
51
,
"others"
);
errorCodeMap
.
put
(
52
,
"can't remove dnode which is master"
);
errorCodeMap
.
put
(
53
,
"wrong schema"
);
errorCodeMap
.
put
(
54
,
"no results"
);
errorCodeMap
.
put
(
55
,
"num of users execeed maxUsers"
);
errorCodeMap
.
put
(
56
,
"num of databases execeed maxDbs"
);
errorCodeMap
.
put
(
57
,
"num of tables execeed maxTables"
);
errorCodeMap
.
put
(
58
,
"num of dnodes execeed maxDnodes"
);
errorCodeMap
.
put
(
59
,
"num of accounts execeed maxAccts"
);
errorCodeMap
.
put
(
60
,
"accout name exists"
);
errorCodeMap
.
put
(
61
,
"dnode ip exists"
);
errorCodeMap
.
put
(
62
,
"sdb error"
);
errorCodeMap
.
put
(
63
,
"metric meta expired"
);
// local cached metric-meta expired causes error in metric query
errorCodeMap
.
put
(
64
,
"not ready"
);
// peer is not ready to process data
errorCodeMap
.
put
(
65
,
"too many sessions on server"
);
// too many sessions
errorCodeMap
.
put
(
66
,
"too many sessions from app"
);
// too many connections
errorCodeMap
.
put
(
67
,
"session to dest is already there"
);
errorCodeMap
.
put
(
68
,
"query list not there); please show again"
);
errorCodeMap
.
put
(
69
,
"server out of memory"
);
errorCodeMap
.
put
(
70
,
"invalid query handle"
);
errorCodeMap
.
put
(
71
,
"tables related to metric exist"
);
errorCodeMap
.
put
(
72
,
"can't drop monitor database or tables"
);
errorCodeMap
.
put
(
73
,
"commit log init failed"
);
errorCodeMap
.
put
(
74
,
"vgroup init failed"
);
errorCodeMap
.
put
(
75
,
"data is already imported"
);
errorCodeMap
.
put
(
76
,
"not supported operation"
);
errorCodeMap
.
put
(
77
,
"invalid query id string"
);
errorCodeMap
.
put
(
78
,
"invalid stream id string"
);
errorCodeMap
.
put
(
79
,
"invalid connection string"
);
errorCodeMap
.
put
(
80
,
"dnode not balanced"
);
errorCodeMap
.
put
(
81
,
"client out of memory"
);
errorCodeMap
.
put
(
82
,
"data value overflow"
);
errorCodeMap
.
put
(
83
,
"query cancelled"
);
errorCodeMap
.
put
(
84
,
"grant points limited"
);
errorCodeMap
.
put
(
85
,
"grant expired"
);
errorCodeMap
.
put
(
86
,
"client no disk space"
);
errorCodeMap
.
put
(
87
,
"DB file corrupted"
);
errorCodeMap
.
put
(
88
,
"version of client and server not match"
);
}
TSDBError
(
long
code
,
String
message
)
{
this
.
errCode
=
code
;
this
.
errMessage
=
message
;
}
public
long
getErrCode
()
{
return
this
.
errCode
;
}
public
String
getErrMessage
()
{
return
this
.
errMessage
;
}
public
static
String
getErrMessageByCode
(
long
errCode
)
{
return
errorCodeMap
.
get
(
errCode
);
}
}
src/connector/jdbc/src/main/java/com/taosdata/jdbc/TSDBJNIConnector.java
浏览文件 @
e5294ee5
...
@@ -19,7 +19,7 @@ import java.sql.SQLWarning;
...
@@ -19,7 +19,7 @@ import java.sql.SQLWarning;
import
java.util.List
;
import
java.util.List
;
public
class
TSDBJNIConnector
{
public
class
TSDBJNIConnector
{
static
volatile
Boolean
isInitialized
=
false
;
private
static
volatile
Boolean
isInitialized
=
false
;
static
{
static
{
System
.
loadLibrary
(
"taos"
);
System
.
loadLibrary
(
"taos"
);
...
@@ -51,8 +51,6 @@ public class TSDBJNIConnector {
...
@@ -51,8 +51,6 @@ public class TSDBJNIConnector {
/**
/**
* Returns the status of last result set in current connection
* Returns the status of last result set in current connection
*
* @return
*/
*/
public
boolean
isResultsetClosed
()
{
public
boolean
isResultsetClosed
()
{
return
this
.
isResultsetClosed
;
return
this
.
isResultsetClosed
;
...
@@ -112,7 +110,7 @@ public class TSDBJNIConnector {
...
@@ -112,7 +110,7 @@ public class TSDBJNIConnector {
*
*
* @throws SQLException
* @throws SQLException
*/
*/
public
int
executeQuery
(
String
sql
)
throws
SQLException
{
public
long
executeQuery
(
String
sql
)
throws
SQLException
{
if
(!
this
.
isResultsetClosed
)
{
if
(!
this
.
isResultsetClosed
)
{
freeResultSet
(
taosResultSetPointer
);
freeResultSet
(
taosResultSetPointer
);
}
}
...
@@ -127,7 +125,6 @@ public class TSDBJNIConnector {
...
@@ -127,7 +125,6 @@ public class TSDBJNIConnector {
}
}
int
code
=
this
.
getErrCode
(
pSql
);
int
code
=
this
.
getErrCode
(
pSql
);
affectedRows
=
code
;
if
(
code
<
0
)
{
if
(
code
<
0
)
{
affectedRows
=
-
1
;
affectedRows
=
-
1
;
if
(
code
==
TSDBConstants
.
JNI_TDENGINE_ERROR
)
{
if
(
code
==
TSDBConstants
.
JNI_TDENGINE_ERROR
)
{
...
@@ -146,7 +143,7 @@ public class TSDBJNIConnector {
...
@@ -146,7 +143,7 @@ public class TSDBJNIConnector {
if
(
taosResultSetPointer
!=
TSDBConstants
.
JNI_NULL_POINTER
)
{
if
(
taosResultSetPointer
!=
TSDBConstants
.
JNI_NULL_POINTER
)
{
isResultsetClosed
=
false
;
isResultsetClosed
=
false
;
}
}
return
code
;
return
pSql
;
}
}
private
native
long
executeQueryImp
(
byte
[]
sqlBytes
,
long
connection
);
private
native
long
executeQueryImp
(
byte
[]
sqlBytes
,
long
connection
);
...
@@ -199,8 +196,6 @@ public class TSDBJNIConnector {
...
@@ -199,8 +196,6 @@ public class TSDBJNIConnector {
/**
/**
* Close the open result set which is associated to the current connection. If the result set is already
* Close the open result set which is associated to the current connection. If the result set is already
* closed, return 0 for success.
* closed, return 0 for success.
*
* @return
*/
*/
public
int
freeResultSet
()
{
public
int
freeResultSet
()
{
int
resCode
=
TSDBConstants
.
JNI_SUCCESS
;
int
resCode
=
TSDBConstants
.
JNI_SUCCESS
;
...
@@ -217,7 +212,7 @@ public class TSDBJNIConnector {
...
@@ -217,7 +212,7 @@ public class TSDBJNIConnector {
/**
/**
* Get affected rows count
* Get affected rows count
*/
*/
public
int
getAffectedRows
(
L
ong
pSql
)
{
public
int
getAffectedRows
(
l
ong
pSql
)
{
int
affectedRows
=
this
.
affectedRows
;
int
affectedRows
=
this
.
affectedRows
;
if
(
affectedRows
<
0
)
{
if
(
affectedRows
<
0
)
{
affectedRows
=
this
.
getAffectedRowsImp
(
this
.
taos
,
pSql
);
affectedRows
=
this
.
getAffectedRowsImp
(
this
.
taos
,
pSql
);
...
@@ -225,7 +220,7 @@ public class TSDBJNIConnector {
...
@@ -225,7 +220,7 @@ public class TSDBJNIConnector {
return
affectedRows
;
return
affectedRows
;
}
}
private
native
int
getAffectedRowsImp
(
long
connection
,
L
ong
pSql
);
private
native
int
getAffectedRowsImp
(
long
connection
,
l
ong
pSql
);
/**
/**
* Get schema metadata
* Get schema metadata
...
...
src/connector/jdbc/src/main/java/com/taosdata/jdbc/TSDBStatement.java
浏览文件 @
e5294ee5
...
@@ -51,13 +51,16 @@ public class TSDBStatement implements Statement {
...
@@ -51,13 +51,16 @@ public class TSDBStatement implements Statement {
if
(
isClosed
)
{
if
(
isClosed
)
{
throw
new
SQLException
(
"Invalid method call on a closed statement."
);
throw
new
SQLException
(
"Invalid method call on a closed statement."
);
}
}
this
.
connecter
.
executeQuery
(
sql
);
pSql
=
this
.
connecter
.
executeQuery
(
sql
);
long
resultSetPointer
=
this
.
connecter
.
getResultSet
();
long
resultSetPointer
=
this
.
connecter
.
getResultSet
();
if
(
resultSetPointer
==
TSDBConstants
.
JNI_CONNECTION_NULL
)
{
if
(
resultSetPointer
==
TSDBConstants
.
JNI_CONNECTION_NULL
)
{
this
.
connecter
.
freeResultSet
(
pSql
);
throw
new
SQLException
(
TSDBConstants
.
FixErrMsg
(
TSDBConstants
.
JNI_CONNECTION_NULL
));
throw
new
SQLException
(
TSDBConstants
.
FixErrMsg
(
TSDBConstants
.
JNI_CONNECTION_NULL
));
}
else
if
(
resultSetPointer
==
TSDBConstants
.
JNI_NULL_POINTER
)
{
}
else
if
(
resultSetPointer
==
TSDBConstants
.
JNI_NULL_POINTER
)
{
// create/insert/update/del/alter
this
.
connecter
.
freeResultSet
(
pSql
);
return
null
;
return
null
;
}
else
{
}
else
{
return
new
TSDBResultSet
(
this
.
connecter
,
resultSetPointer
);
return
new
TSDBResultSet
(
this
.
connecter
,
resultSetPointer
);
...
@@ -68,17 +71,18 @@ public class TSDBStatement implements Statement {
...
@@ -68,17 +71,18 @@ public class TSDBStatement implements Statement {
if
(
isClosed
)
{
if
(
isClosed
)
{
throw
new
SQLException
(
"Invalid method call on a closed statement."
);
throw
new
SQLException
(
"Invalid method call on a closed statement."
);
}
}
long
res
=
this
.
connecter
.
executeQuery
(
sql
);
pSql
=
this
.
connecter
.
executeQuery
(
sql
);
long
resultSetPointer
=
this
.
connecter
.
getResultSet
();
long
resultSetPointer
=
this
.
connecter
.
getResultSet
();
if
(
resultSetPointer
==
TSDBConstants
.
JNI_CONNECTION_NULL
)
{
if
(
resultSetPointer
==
TSDBConstants
.
JNI_CONNECTION_NULL
)
{
this
.
connecter
.
freeResultSet
(
res
);
this
.
connecter
.
freeResultSet
(
pSql
);
throw
new
SQLException
(
TSDBConstants
.
FixErrMsg
(
TSDBConstants
.
JNI_CONNECTION_NULL
));
throw
new
SQLException
(
TSDBConstants
.
FixErrMsg
(
TSDBConstants
.
JNI_CONNECTION_NULL
));
}
else
if
(
resultSetPointer
!=
TSDBConstants
.
JNI_NULL_POINTER
)
{
}
else
if
(
resultSetPointer
!=
TSDBConstants
.
JNI_NULL_POINTER
)
{
this
.
connecter
.
freeResultSet
();
this
.
connecter
.
freeResultSet
();
throw
new
SQLException
(
"The executed SQL is not a DML or a DDL"
);
throw
new
SQLException
(
"The executed SQL is not a DML or a DDL"
);
}
else
{
}
else
{
int
num
=
this
.
connecter
.
getAffectedRows
(
res
);
int
num
=
this
.
connecter
.
getAffectedRows
(
pSql
);
this
.
connecter
.
freeResultSet
(
pSql
);
return
num
;
return
num
;
}
}
}
}
...
@@ -146,16 +150,19 @@ public class TSDBStatement implements Statement {
...
@@ -146,16 +150,19 @@ public class TSDBStatement implements Statement {
throw
new
SQLException
(
"Invalid method call on a closed statement."
);
throw
new
SQLException
(
"Invalid method call on a closed statement."
);
}
}
boolean
res
=
true
;
boolean
res
=
true
;
this
.
connecter
.
executeQuery
(
sql
);
pSql
=
this
.
connecter
.
executeQuery
(
sql
);
long
resultSetPointer
=
this
.
connecter
.
getResultSet
();
long
resultSetPointer
=
this
.
connecter
.
getResultSet
();
if
(
resultSetPointer
==
TSDBConstants
.
JNI_CONNECTION_NULL
)
{
if
(
resultSetPointer
==
TSDBConstants
.
JNI_CONNECTION_NULL
)
{
this
.
connecter
.
freeResultSet
(
pSql
);
throw
new
SQLException
(
TSDBConstants
.
FixErrMsg
(
TSDBConstants
.
JNI_CONNECTION_NULL
));
throw
new
SQLException
(
TSDBConstants
.
FixErrMsg
(
TSDBConstants
.
JNI_CONNECTION_NULL
));
}
else
if
(
resultSetPointer
==
TSDBConstants
.
JNI_NULL_POINTER
)
{
}
else
if
(
resultSetPointer
==
TSDBConstants
.
JNI_NULL_POINTER
)
{
// no result set is retrieved
// no result set is retrieved
res
=
false
;
res
=
false
;
}
}
return
res
;
this
.
connecter
.
freeResultSet
(
pSql
);
return
res
;
}
}
public
ResultSet
getResultSet
()
throws
SQLException
{
public
ResultSet
getResultSet
()
throws
SQLException
{
...
...
src/connector/jdbc/src/main/java/com/taosdata/jdbc/TSDBSubscribe.java
浏览文件 @
e5294ee5
...
@@ -171,8 +171,7 @@ public class TSDBSubscribe {
...
@@ -171,8 +171,7 @@ public class TSDBSubscribe {
state
=
1
;
state
=
1
;
try
{
try
{
TSDBResultSet
resultSet
=
consume
(
subscription
);
callBack
.
invoke
(
consume
(
subscription
));
callBack
.
invoke
(
resultSet
);
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
this
.
cancel
();
this
.
cancel
();
throw
new
RuntimeException
(
e
);
throw
new
RuntimeException
(
e
);
...
...
src/connector/jdbc/src/test/java/TestAsyncTSDBSubscribe.java
浏览文件 @
e5294ee5
...
@@ -3,10 +3,11 @@ import org.apache.commons.lang3.StringUtils;
...
@@ -3,10 +3,11 @@ import org.apache.commons.lang3.StringUtils;
import
java.sql.Connection
;
import
java.sql.Connection
;
import
java.sql.DriverManager
;
import
java.sql.DriverManager
;
import
java.sql.SQLException
;
import
java.util.Properties
;
import
java.util.Properties
;
public
class
TestAsyncTSDBSubscribe
{
public
class
TestAsyncTSDBSubscribe
{
public
static
void
main
(
String
[]
args
)
{
public
static
void
main
(
String
[]
args
)
throws
SQLException
{
String
usage
=
"java -cp taos-jdbcdriver-1.0.3_dev-dist.jar com.taosdata.jdbc.TSDBSubscribe -db dbName -topic topicName "
+
String
usage
=
"java -cp taos-jdbcdriver-1.0.3_dev-dist.jar com.taosdata.jdbc.TSDBSubscribe -db dbName -topic topicName "
+
"-tname tableName -h host"
;
"-tname tableName -h host"
;
if
(
args
.
length
<
2
)
{
if
(
args
.
length
<
2
)
{
...
@@ -38,15 +39,18 @@ public class TestAsyncTSDBSubscribe {
...
@@ -38,15 +39,18 @@ public class TestAsyncTSDBSubscribe {
}
}
Connection
connection
=
null
;
Connection
connection
=
null
;
TSDBSubscribe
subscribe
=
null
;
long
subscribId
=
0
;
long
subscribId
=
0
;
try
{
try
{
Class
.
forName
(
"com.taosdata.jdbc.TSDBDriver"
);
Class
.
forName
(
"com.taosdata.jdbc.TSDBDriver"
);
Properties
properties
=
new
Properties
();
Properties
properties
=
new
Properties
();
properties
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_HOST
,
host
);
properties
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_HOST
,
host
);
properties
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_TIME_ZONE
,
"UTC-8"
);
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/"
+
dbName
+
"?user=root&password=taosdata"
,
properties
);
connection
=
DriverManager
.
getConnection
(
"jdbc:TAOS://"
+
host
+
":0/"
+
dbName
+
"?user=root&password=taosdata"
,
properties
);
String
rawSql
=
"select * from "
+
tName
+
";"
;
String
rawSql
=
"select * from "
+
tName
+
";"
;
subscribe
=
((
TSDBConnection
)
connection
).
createSubscribe
();
TSDBSubscribe
subscribe
=
((
TSDBConnection
)
connection
).
createSubscribe
();
subscribId
=
subscribe
.
subscribe
(
topic
,
rawSql
,
false
,
1000
,
new
CallBack
(
"first"
));
subscribId
=
subscribe
.
subscribe
(
topic
,
rawSql
,
false
,
1000
,
new
CallBack
(
"first"
));
long
subscribId2
=
subscribe
.
subscribe
(
"test"
,
rawSql
,
false
,
1000
,
new
CallBack
(
"second"
));
long
subscribId2
=
subscribe
.
subscribe
(
"test"
,
rawSql
,
false
,
1000
,
new
CallBack
(
"second"
));
int
a
=
0
;
int
a
=
0
;
...
@@ -55,6 +59,9 @@ public class TestAsyncTSDBSubscribe {
...
@@ -55,6 +59,9 @@ public class TestAsyncTSDBSubscribe {
System
.
err
.
println
(
"cancel subscribe"
);
System
.
err
.
println
(
"cancel subscribe"
);
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
e
.
printStackTrace
();
if
(
null
!=
connection
&&
!
connection
.
isClosed
())
{
connection
.
close
();
}
}
}
}
}
...
...
src/connector/jdbc/src/test/java/TestPreparedStatement.java
浏览文件 @
e5294ee5
...
@@ -6,24 +6,31 @@ import java.util.Properties;
...
@@ -6,24 +6,31 @@ import java.util.Properties;
public
class
TestPreparedStatement
{
public
class
TestPreparedStatement
{
public
static
void
main
(
String
[]
args
)
{
public
static
void
main
(
String
[]
args
)
throws
SQLException
{
Connection
connection
=
null
;
try
{
try
{
Class
.
forName
(
"com.taosdata.jdbc.TSDBDriver"
);
Class
.
forName
(
"com.taosdata.jdbc.TSDBDriver"
);
Properties
properties
=
new
Properties
();
Properties
properties
=
new
Properties
();
properties
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_HOST
,
"localhost"
);
properties
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_HOST
,
"localhost"
);
Connection
connection
=
DriverManager
.
getConnection
(
"jdbc:TAOS://localhost:0/?user=root&password=taosdata"
,
properties
);
connection
=
DriverManager
.
getConnection
(
"jdbc:TAOS://localhost:0/?user=root&password=taosdata"
,
properties
);
String
rawSql
=
"select * from test.log0601"
;
String
rawSql
=
"select * from test.log0601"
;
// String[] params = new String[]{"ts", "c1"};
// String[] params = new String[]{"ts", "c1"};
PreparedStatement
pstmt
=
(
TSDBPreparedStatement
)
connection
.
prepareStatement
(
rawSql
);
PreparedStatement
pstmt
=
(
TSDBPreparedStatement
)
connection
.
prepareStatement
(
rawSql
);
ResultSet
resSet
=
pstmt
.
executeQuery
();
ResultSet
resSet
=
pstmt
.
executeQuery
();
while
(
resSet
.
next
())
{
while
(
resSet
.
next
())
{
for
(
int
i
=
1
;
i
<=
resSet
.
getMetaData
().
getColumnCount
();
i
++)
{
for
(
int
i
=
1
;
i
<=
resSet
.
getMetaData
().
getColumnCount
();
i
++)
{
System
.
out
.
printf
(
"%d: %s\n"
,
i
,
resSet
.
getString
(
i
));
System
.
out
.
printf
(
"%d: %s
\n"
,
i
,
resSet
.
getString
(
i
));
}
}
}
}
resSet
.
close
();
pstmt
.
close
();
connection
.
close
();
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
e
.
printStackTrace
();
if
(
null
!=
connection
)
{
connection
.
close
();
}
}
}
}
}
}
}
src/connector/jdbc/src/test/java/TestTSDBDatabaseMetaData.java
浏览文件 @
e5294ee5
import
com.taosdata.jdbc.TSDBDriver
;
import
com.taosdata.jdbc.TSDBDriver
;
import
java.sql.Connection
;
import
java.sql.*
;
import
java.sql.DatabaseMetaData
;
import
java.sql.DriverManager
;
import
java.sql.ResultSet
;
import
java.util.Properties
;
import
java.util.Properties
;
public
class
TestTSDBDatabaseMetaData
{
public
class
TestTSDBDatabaseMetaData
{
public
static
void
main
(
String
[]
args
)
{
public
static
void
main
(
String
[]
args
)
throws
SQLException
{
Connection
connection
=
null
;
DatabaseMetaData
dbMetaData
=
null
;
ResultSet
resSet
=
null
;
try
{
try
{
Class
.
forName
(
"com.taosdata.jdbc.TSDBDriver"
);
Class
.
forName
(
"com.taosdata.jdbc.TSDBDriver"
);
Properties
properties
=
new
Properties
();
Properties
properties
=
new
Properties
();
properties
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_HOST
,
"
192.168.1.114
"
);
properties
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_HOST
,
"
localhost
"
);
Connection
connection
=
DriverManager
.
getConnection
(
"jdbc:TAOS://192.168.1.114
:0/?user=root&password=taosdata"
,
properties
);
connection
=
DriverManager
.
getConnection
(
"jdbc:TAOS://localhost
:0/?user=root&password=taosdata"
,
properties
);
DatabaseMetaData
dbMetaData
=
connection
.
getMetaData
();
dbMetaData
=
connection
.
getMetaData
();
ResultSet
resSet
=
dbMetaData
.
getCatalogs
();
resSet
=
dbMetaData
.
getCatalogs
();
while
(
resSet
.
next
())
{
while
(
resSet
.
next
())
{
for
(
int
i
=
1
;
i
<=
resSet
.
getMetaData
().
getColumnCount
();
i
++)
{
for
(
int
i
=
1
;
i
<=
resSet
.
getMetaData
().
getColumnCount
();
i
++)
{
System
.
out
.
printf
(
"dbMetaData.getCatalogs(%d) = %s\n"
,
i
,
resSet
.
getString
(
i
));
System
.
out
.
printf
(
"dbMetaData.getCatalogs(%d) = %s\n"
,
i
,
resSet
.
getString
(
i
));
}
}
}
}
resSet
.
close
();
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
e
.
printStackTrace
();
if
(
null
!=
connection
)
{
connection
.
close
();
}
}
}
}
}
}
}
src/connector/jdbc/src/test/java/TestTSDBSubscribe.java
浏览文件 @
e5294ee5
...
@@ -46,16 +46,20 @@ public class TestTSDBSubscribe {
...
@@ -46,16 +46,20 @@ public class TestTSDBSubscribe {
try
{
try
{
Class
.
forName
(
"com.taosdata.jdbc.TSDBDriver"
);
Class
.
forName
(
"com.taosdata.jdbc.TSDBDriver"
);
Properties
properties
=
new
Properties
();
Properties
properties
=
new
Properties
();
properties
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_HOST
,
host
);
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"
);
connection
=
DriverManager
.
getConnection
(
"jdbc:TAOS://"
+
host
+
":0/"
+
dbName
+
"?user=root&password=taosdata"
connection
=
DriverManager
.
getConnection
(
"jdbc:TAOS://"
+
host
+
":0/"
+
dbName
+
"?user=root&password=taosdata"
,
properties
);
,
properties
);
String
rawSql
=
"select * from "
+
tName
+
";"
;
String
rawSql
=
"select * from "
+
tName
+
";"
;
subscribe
=
((
TSDBConnection
)
connection
).
createSubscribe
();
subscribe
=
((
TSDBConnection
)
connection
).
createSubscribe
();
subscribId
=
subscribe
.
subscribe
(
topic
,
rawSql
,
false
,
1000
);
subscribId
=
subscribe
.
subscribe
(
topic
,
rawSql
,
false
,
1000
);
int
a
=
0
;
int
a
=
0
;
TSDBResultSet
resSet
=
null
;
while
(
true
)
{
while
(
true
)
{
Thread
.
sleep
(
900
);
Thread
.
sleep
(
900
);
TSDBResultSet
resSet
=
subscribe
.
consume
(
subscribId
);
resSet
=
subscribe
.
consume
(
subscribId
);
while
(
resSet
.
next
())
{
while
(
resSet
.
next
())
{
for
(
int
i
=
1
;
i
<=
resSet
.
getMetaData
().
getColumnCount
();
i
++)
{
for
(
int
i
=
1
;
i
<=
resSet
.
getMetaData
().
getColumnCount
();
i
++)
{
...
...
src/connector/jdbc/src/test/java/com/taosdata/jdbc/AsyncSubscribeTest.java
0 → 100644
浏览文件 @
e5294ee5
package
com.taosdata.jdbc
;
import
org.junit.After
;
import
org.junit.Before
;
import
org.junit.Test
;
import
java.sql.Connection
;
import
java.sql.DriverManager
;
import
java.sql.SQLException
;
import
java.sql.Statement
;
import
java.util.Properties
;
import
static
org
.
junit
.
Assert
.
assertTrue
;
public
class
AsyncSubscribeTest
{
Connection
connection
=
null
;
Statement
statement
=
null
;
String
dbName
=
"test"
;
String
tName
=
"t0"
;
String
host
=
"localhost"
;
String
topic
=
"test"
;
long
subscribId
=
0
;
@Before
public
void
createDatabase
()
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_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/"
+
"?user=root&password=taosdata"
,
properties
);
statement
=
connection
.
createStatement
();
statement
.
executeUpdate
(
"create database if not exists "
+
dbName
);
statement
.
executeUpdate
(
"create table if not exists "
+
dbName
+
"."
+
tName
+
" (ts timestamp, k int, v int)"
);
long
ts
=
System
.
currentTimeMillis
();
for
(
int
i
=
0
;
i
<
2
;
i
++)
{
ts
+=
i
;
statement
.
executeUpdate
(
"insert into \" + dbName + \".\" + tName + \" values ("
+
ts
+
", "
+
(
100
+
i
)
+
", "
+
i
+
")"
);
}
}
@Test
public
void
subscribe
()
throws
Exception
{
TSDBSubscribe
subscribe
=
null
;
try
{
String
rawSql
=
"select * from "
+
dbName
+
"."
+
tName
+
";"
;
System
.
out
.
println
(
rawSql
);
subscribe
=
((
TSDBConnection
)
connection
).
createSubscribe
();
subscribId
=
subscribe
.
subscribe
(
topic
,
rawSql
,
false
,
1000
,
new
CallBack
(
"first"
));
assertTrue
(
subscribId
>
0
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
Thread
.
sleep
(
2000
);
subscribe
.
unsubscribe
(
subscribId
,
true
);
}
private
static
class
CallBack
implements
TSDBSubscribeCallBack
{
private
String
name
=
""
;
public
CallBack
(
String
name
)
{
this
.
name
=
name
;
}
@Override
public
void
invoke
(
TSDBResultSet
resultSet
)
{
try
{
while
(
null
!=
resultSet
&&
resultSet
.
next
())
{
System
.
out
.
print
(
"callback_"
+
name
+
": "
);
for
(
int
i
=
1
;
i
<=
resultSet
.
getMetaData
().
getColumnCount
();
i
++)
{
System
.
out
.
printf
(
i
+
": "
+
resultSet
.
getString
(
i
)
+
"\t"
);
}
System
.
out
.
println
();
}
resultSet
.
close
();
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
}
}
@After
public
void
close
()
throws
Exception
{
statement
.
executeQuery
(
"drop database test"
);
statement
.
close
();
connection
.
close
();
Thread
.
sleep
(
10
);
}
}
\ No newline at end of file
src/connector/jdbc/src/test/java/com/taosdata/jdbc/ConnectionTest.java
0 → 100644
浏览文件 @
e5294ee5
package
com.taosdata.jdbc
;
import
org.junit.Test
;
import
java.sql.Connection
;
import
java.sql.DriverManager
;
import
java.sql.SQLException
;
import
java.sql.Statement
;
import
java.util.Properties
;
import
static
org
.
junit
.
Assert
.
assertTrue
;
public
class
ConnectionTest
{
static
Connection
connection
=
null
;
static
Statement
statement
=
null
;
static
String
dbName
=
"test"
;
static
String
stbName
=
"st"
;
static
String
host
=
"localhost"
;
@Test
public
void
testConnection
()
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_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/"
+
"?user=root&password=taosdata"
,
properties
);
assertTrue
(
null
!=
connection
);
statement
=
connection
.
createStatement
();
assertTrue
(
null
!=
statement
);
// try reconnect
connection
=
DriverManager
.
getConnection
(
"jdbc:TAOS://"
+
host
+
":0/"
+
"?user=root&password=taosdata"
,
properties
);
try
{
statement
.
execute
(
"create database if not exists "
+
dbName
);
}
catch
(
SQLException
e
)
{
assert
false
:
"create database error: "
+
e
.
getMessage
();
}
try
{
if
(!
connection
.
isClosed
())
{
if
(!
statement
.
isClosed
())
{
statement
.
executeUpdate
(
"drop database "
+
dbName
);
statement
.
close
();
}
connection
.
close
();
Thread
.
sleep
(
10
);
}
}
catch
(
Exception
e
)
{
assert
false
:
"close connection error: "
+
e
.
getMessage
();
}
}
}
src/connector/jdbc/src/test/java/com/taosdata/jdbc/DatabaseMetaDataTest.java
0 → 100644
浏览文件 @
e5294ee5
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_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/"
+
"?user=root&password=taosdata"
,
properties
);
String
sql
=
"drop database if exists "
+
dbName
;
statement
=
(
TSDBPreparedStatement
)
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
(
""
,
""
,
""
,
""
);
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
);
}
}
src/connector/jdbc/src/test/java/com/taosdata/jdbc/ImportTest.java
0 → 100644
浏览文件 @
e5294ee5
package
com.taosdata.jdbc
;
import
org.junit.After
;
import
org.junit.Before
;
import
org.junit.Test
;
import
java.sql.*
;
import
java.util.Properties
;
import
static
org
.
junit
.
Assert
.
assertEquals
;
public
class
ImportTest
{
Connection
connection
=
null
;
Statement
statement
=
null
;
String
dbName
=
"test"
;
String
tName
=
"t0"
;
String
host
=
"localhost"
;
@Before
public
void
createDatabase
()
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_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/"
+
"?user=root&password=taosdata"
,
properties
);
statement
=
connection
.
createStatement
();
statement
.
executeUpdate
(
"drop database if exists "
+
dbName
);
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
insertData
()
throws
Exception
{
long
ts
=
1496732686000
l
;
for
(
int
i
=
0
;
i
<
50
;
i
++)
{
ts
++;
int
row
=
statement
.
executeUpdate
(
"insert into "
+
dbName
+
"."
+
tName
+
" values ("
+
ts
+
", "
+
(
100
+
i
)
+
", "
+
i
+
")"
);
System
.
out
.
println
(
"insert into "
+
dbName
+
"."
+
tName
+
" values ("
+
ts
+
", "
+
(
100
+
i
)
+
", "
+
i
+
")\t"
+
row
);
assertEquals
(
1
,
row
);
}
}
@Test
public
void
selectData
()
throws
Exception
{
insertData
();
String
sql
=
"select * from test.t0"
;
ResultSet
resSet
=
statement
.
executeQuery
(
sql
);
while
(
resSet
.
next
())
{
for
(
int
i
=
1
;
i
<=
resSet
.
getMetaData
().
getColumnCount
();
i
++)
{
System
.
out
.
printf
(
i
+
": "
+
resSet
.
getString
(
i
)
+
"\t"
);
}
}
resSet
.
close
();
}
@Test
public
void
importData
()
throws
Exception
{
// 避免时间重复
long
ts
=
1496732686000
l
;
StringBuilder
sqlBuilder
=
new
StringBuilder
(
"insert into "
).
append
(
dbName
).
append
(
"."
).
append
(
tName
).
append
(
" values "
);
for
(
int
i
=
0
;
i
<
50
;
i
++)
{
int
a
=
i
/
5
;
long
t
=
ts
+
a
;
sqlBuilder
.
append
(
"("
).
append
(
t
).
append
(
","
).
append
((
100
+
i
)).
append
(
","
).
append
(
i
).
append
(
") "
);
}
System
.
out
.
println
(
sqlBuilder
.
toString
());
int
rows
=
statement
.
executeUpdate
(
sqlBuilder
.
toString
());
System
.
out
.
println
(
rows
);
assertEquals
(
10
,
rows
);
}
@After
public
void
close
()
throws
Exception
{
statement
.
executeUpdate
(
"drop database "
+
dbName
);
statement
.
close
();
connection
.
close
();
Thread
.
sleep
(
10
);
}
}
src/connector/jdbc/src/test/java/com/taosdata/jdbc/PreparedStatementTest.java
0 → 100644
浏览文件 @
e5294ee5
package
com.taosdata.jdbc
;
import
org.junit.AfterClass
;
import
org.junit.BeforeClass
;
import
org.junit.FixMethodOrder
;
import
org.junit.Test
;
import
org.junit.runners.MethodSorters
;
import
java.sql.*
;
import
java.util.Properties
;
import
static
org
.
junit
.
Assert
.
assertEquals
;
import
static
org
.
junit
.
Assert
.
assertTrue
;
@FixMethodOrder
(
MethodSorters
.
DEFAULT
)
public
class
PreparedStatementTest
{
static
Connection
connection
=
null
;
static
PreparedStatement
statement
=
null
;
static
String
dbName
=
"test"
;
static
String
tName
=
"t0"
;
static
String
host
=
"localhost"
;
static
ResultSet
resSet
=
null
;
@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_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/"
+
"?user=root&password=taosdata"
,
properties
);
String
sql
=
"drop database if exists "
+
dbName
;
statement
=
(
TSDBPreparedStatement
)
connection
.
prepareStatement
(
sql
);
}
@Test
public
void
createTableAndQuery
()
throws
SQLException
{
long
ts
=
System
.
currentTimeMillis
();
statement
.
executeUpdate
(
"create database if not exists "
+
dbName
);
statement
.
executeUpdate
(
"create table if not exists "
+
dbName
+
"."
+
tName
+
"(ts timestamp, k1 int)"
);
statement
.
executeUpdate
(
"insert into "
+
dbName
+
"."
+
tName
+
" values ("
+
ts
+
", 1)"
);
PreparedStatement
selectStatement
=
connection
.
prepareStatement
(
"select * from "
+
dbName
+
"."
+
tName
);
ResultSet
resultSet
=
selectStatement
.
executeQuery
();
assertTrue
(
null
!=
resultSet
);
boolean
isClosed
=
statement
.
isClosed
();
assertEquals
(
false
,
isClosed
);
}
@Test
public
void
testPreparedStatement
()
throws
SQLException
{
long
ts
=
System
.
currentTimeMillis
()
+
20000
;
PreparedStatement
saveStatement
=
connection
.
prepareStatement
(
"insert into "
+
dbName
+
"."
+
tName
+
" values ("
+
ts
+
", 1)"
);
int
affectedRows
=
saveStatement
.
executeUpdate
();
assertTrue
(
1
==
affectedRows
);
}
@Test
public
void
testSavedPreparedStatement
()
throws
SQLException
{
long
ts
=
System
.
currentTimeMillis
();
TSDBPreparedStatement
saveStatement
=
(
TSDBPreparedStatement
)
connection
.
prepareStatement
(
"insert into "
+
dbName
+
"."
+
tName
+
" values (?, ?)"
);
saveStatement
.
setObject
(
1
,
ts
+
10000
);
saveStatement
.
setObject
(
2
,
3
);
int
rows
=
saveStatement
.
executeUpdate
();
assertEquals
(
1
,
rows
);
}
@Test
public
void
testUnsupport
()
{
// if(null == resSet) {
// return;
// }
TSDBPreparedStatement
tsdbStatement
=
(
TSDBPreparedStatement
)
statement
;
try
{
tsdbStatement
.
unwrap
(
null
);
}
catch
(
SQLException
e
)
{
}
try
{
tsdbStatement
.
isWrapperFor
(
null
);
}
catch
(
SQLException
e
)
{
}
try
{
tsdbStatement
.
getMaxFieldSize
();
}
catch
(
SQLException
e
)
{
}
try
{
tsdbStatement
.
setMaxFieldSize
(
0
);
}
catch
(
SQLException
e
)
{
}
try
{
tsdbStatement
.
setEscapeProcessing
(
true
);
}
catch
(
SQLException
e
)
{
}
try
{
tsdbStatement
.
cancel
();
}
catch
(
SQLException
e
)
{
}
try
{
tsdbStatement
.
getWarnings
();
}
catch
(
SQLException
e
)
{
}
try
{
tsdbStatement
.
clearWarnings
();
}
catch
(
SQLException
e
)
{
}
try
{
tsdbStatement
.
setCursorName
(
null
);
}
catch
(
SQLException
e
)
{
}
try
{
tsdbStatement
.
getMoreResults
();
}
catch
(
SQLException
e
)
{
}
try
{
tsdbStatement
.
setFetchDirection
(
0
);
}
catch
(
SQLException
e
)
{
}
try
{
tsdbStatement
.
getFetchDirection
();
}
catch
(
SQLException
e
)
{
}
try
{
tsdbStatement
.
getResultSetConcurrency
();
}
catch
(
SQLException
e
)
{
}
try
{
tsdbStatement
.
getResultSetType
();
}
catch
(
SQLException
e
)
{
}
try
{
tsdbStatement
.
getConnection
();
}
catch
(
SQLException
e
)
{
}
try
{
tsdbStatement
.
getMoreResults
();
}
catch
(
SQLException
e
)
{
}
try
{
tsdbStatement
.
getGeneratedKeys
();
}
catch
(
SQLException
e
)
{
}
try
{
tsdbStatement
.
executeUpdate
(
null
,
0
);
}
catch
(
SQLException
e
)
{
}
try
{
tsdbStatement
.
executeUpdate
(
null
,
new
int
[]{
0
});
}
catch
(
SQLException
e
)
{
}
try
{
tsdbStatement
.
executeUpdate
(
null
,
new
String
[]{
"str1"
,
"str2"
});
}
catch
(
SQLException
e
)
{
}
try
{
tsdbStatement
.
getResultSetHoldability
();
}
catch
(
SQLException
e
)
{
}
try
{
tsdbStatement
.
setPoolable
(
true
);
}
catch
(
SQLException
e
)
{
}
try
{
tsdbStatement
.
isPoolable
();
}
catch
(
SQLException
e
)
{
}
try
{
tsdbStatement
.
closeOnCompletion
();
}
catch
(
SQLException
e
)
{
}
try
{
tsdbStatement
.
isCloseOnCompletion
();
}
catch
(
SQLException
e
)
{
}
}
@AfterClass
public
static
void
close
()
throws
Exception
{
statement
.
executeUpdate
(
"drop database "
+
dbName
);
statement
.
close
();
connection
.
close
();
Thread
.
sleep
(
10
);
}
}
src/connector/jdbc/src/test/java/com/taosdata/jdbc/ResultSetTest.java
0 → 100644
浏览文件 @
e5294ee5
package
com.taosdata.jdbc
;
import
org.junit.AfterClass
;
import
org.junit.BeforeClass
;
import
org.junit.Test
;
import
javax.sql.rowset.serial.SerialBlob
;
import
javax.sql.rowset.serial.SerialClob
;
import
java.sql.*
;
import
java.util.HashMap
;
import
java.util.Properties
;
import
static
org
.
junit
.
Assert
.
assertEquals
;
import
static
org
.
junit
.
Assert
.
assertTrue
;
public
class
ResultSetTest
{
static
Connection
connection
=
null
;
static
Statement
statement
=
null
;
static
String
dbName
=
"test"
;
static
String
tName
=
"t0"
;
static
String
host
=
"localhost"
;
static
ResultSet
resSet
=
null
;
@BeforeClass
public
static
void
createDatabaseAndTable
()
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_TIME_ZONE
,
"UTC-8"
);
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/"
+
"?user=root&password=taosdata"
,
properties
);
statement
=
connection
.
createStatement
();
statement
.
executeUpdate
(
"drop database if exists "
+
dbName
);
statement
.
executeUpdate
(
"create database if not exists "
+
dbName
);
statement
.
executeUpdate
(
"create table if not exists "
+
dbName
+
"."
+
tName
+
" (ts timestamp, k1 int, k2 bigint, k3 float, k4 double, k5 binary(30), k6 smallint, k7 bool, k8 nchar(20))"
);
statement
.
executeQuery
(
"use "
+
dbName
);
}
@Test
public
void
testResultSet
()
{
String
sql
=
null
;
long
ts
=
1496732686000
l
;
int
v1
=
2147483600
;
long
v2
=
ts
+
1000
;
float
v3
=
3.1415926f
;
double
v4
=
3.1415926535897
;
String
v5
=
"涛思数据,强~!"
;
short
v6
=
12
;
boolean
v7
=
false
;
String
v8
=
"TDengine is powerful"
;
sql
=
"insert into "
+
dbName
+
"."
+
tName
+
" values ("
+
ts
+
","
+
v1
+
","
+
v2
+
","
+
v3
+
","
+
v4
+
",\""
+
v5
+
"\","
+
v6
+
","
+
v7
+
",\""
+
v8
+
"\")"
;
try
{
statement
.
executeUpdate
(
sql
);
assertEquals
(
1
,
statement
.
getUpdateCount
());
}
catch
(
SQLException
e
)
{
assert
false
:
"insert error "
+
e
.
getMessage
();
}
try
{
statement
.
executeQuery
(
"select * from "
+
dbName
+
"."
+
tName
);
resSet
=
statement
.
getResultSet
();
System
.
out
.
println
(((
TSDBResultSet
)
resSet
).
getRowData
());
while
(
resSet
.
next
())
{
assertEquals
(
ts
,
resSet
.
getLong
(
1
));
assertEquals
(
ts
,
resSet
.
getLong
(
"ts"
));
System
.
out
.
println
(
resSet
.
getTimestamp
(
1
));
assertEquals
(
v1
,
resSet
.
getInt
(
2
));
assertEquals
(
v1
,
resSet
.
getInt
(
"k1"
));
assertEquals
(
v2
,
resSet
.
getLong
(
3
));
assertEquals
(
v2
,
resSet
.
getLong
(
"k2"
));
assertEquals
(
v3
,
resSet
.
getFloat
(
4
),
7
);
assertEquals
(
v3
,
resSet
.
getFloat
(
"k3"
),
7
);
assertEquals
(
v4
,
resSet
.
getDouble
(
5
),
13
);
assertEquals
(
v4
,
resSet
.
getDouble
(
"k4"
),
13
);
assertEquals
(
v5
,
resSet
.
getString
(
6
));
assertEquals
(
v5
,
resSet
.
getString
(
"k5"
));
assertEquals
(
v6
,
resSet
.
getShort
(
7
));
assertEquals
(
v6
,
resSet
.
getShort
(
"k6"
));
assertEquals
(
v7
,
resSet
.
getBoolean
(
8
));
assertEquals
(
v7
,
resSet
.
getBoolean
(
"k7"
));
assertEquals
(
v8
,
resSet
.
getString
(
9
));
assertEquals
(
v8
,
resSet
.
getString
(
"k8"
));
resSet
.
getBytes
(
9
);
resSet
.
getObject
(
6
);
resSet
.
getObject
(
"k8"
);
}
if
(!
resSet
.
isClosed
())
{
resSet
.
close
();
}
}
catch
(
SQLException
e
)
{
assert
false
:
"insert error "
+
e
.
getMessage
();
}
}
@Test
public
void
testUnsupport
()
throws
SQLException
{
statement
.
executeQuery
(
"show databases"
);
resSet
=
statement
.
getResultSet
();
try
{
resSet
.
unwrap
(
null
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
isWrapperFor
(
null
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
getAsciiStream
(
0
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
getUnicodeStream
(
null
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
getBinaryStream
(
null
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
getAsciiStream
(
""
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
getUnicodeStream
(
null
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
getBinaryStream
(
null
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
getWarnings
();
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
clearWarnings
();
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
getCursorName
();
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
getCharacterStream
(
null
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
getCharacterStream
(
null
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
isBeforeFirst
();
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
isAfterLast
();
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
isFirst
();
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
isLast
();
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
beforeFirst
();
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
afterLast
();
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
first
();
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
last
();
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
getRow
();
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
absolute
(
1
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
relative
(
1
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
previous
();
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
setFetchDirection
(
0
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
getFetchDirection
();
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
setFetchSize
(
0
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
getFetchSize
();
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
getConcurrency
();
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
rowUpdated
();
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
rowInserted
();
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
rowDeleted
();
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
updateNull
(
null
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
updateBoolean
(
0
,
true
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
updateByte
(
0
,
(
byte
)
2
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
updateShort
(
0
,
(
short
)
1
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
updateInt
(
0
,
0
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
updateLong
(
0
,
0
l
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
updateFloat
(
0
,
3.14f
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
updateDouble
(
0
,
3.1415
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
updateBigDecimal
(
null
,
null
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
updateString
(
null
,
null
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
updateBytes
(
null
,
null
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
updateDate
(
null
,
null
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
updateTime
(
null
,
null
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
updateTimestamp
(
null
,
null
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
updateAsciiStream
(
null
,
null
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
updateBinaryStream
(
null
,
null
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
updateCharacterStream
(
null
,
null
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
updateObject
(
null
,
null
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
updateObject
(
null
,
null
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
updateNull
(
null
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
updateBoolean
(
""
,
false
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
updateByte
(
""
,
(
byte
)
1
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
updateShort
(
""
,
(
short
)
1
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
updateInt
(
""
,
0
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
updateLong
(
""
,
0
l
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
updateFloat
(
""
,
3.14f
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
updateDouble
(
""
,
3.1415
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
updateBigDecimal
(
null
,
null
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
updateString
(
null
,
null
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
updateBytes
(
null
,
null
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
updateDate
(
null
,
null
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
updateTime
(
null
,
null
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
updateTimestamp
(
null
,
null
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
updateAsciiStream
(
null
,
null
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
updateBinaryStream
(
null
,
null
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
updateCharacterStream
(
null
,
null
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
updateObject
(
null
,
null
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
updateObject
(
null
,
null
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
insertRow
();
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
updateRow
();
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
deleteRow
();
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
refreshRow
();
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
cancelRowUpdates
();
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
moveToInsertRow
();
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
moveToCurrentRow
();
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
getStatement
();
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
getObject
(
0
,
new
HashMap
<>());
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
getRef
(
null
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
getBlob
(
null
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
getClob
(
null
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
getArray
(
null
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
getObject
(
""
,
new
HashMap
<>());
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
getRef
(
null
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
getBlob
(
null
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
getClob
(
null
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
getArray
(
null
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
getDate
(
null
,
null
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
getDate
(
null
,
null
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
getTime
(
null
,
null
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
getTime
(
null
,
null
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
getTimestamp
(
null
,
null
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
getTimestamp
(
null
,
null
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
getURL
(
null
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
getURL
(
null
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
updateRef
(
null
,
null
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
updateRef
(
null
,
null
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
updateBlob
(
0
,
new
SerialBlob
(
""
.
getBytes
(
"UTF8"
)));
}
catch
(
Exception
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
updateBlob
(
""
,
new
SerialBlob
(
""
.
getBytes
(
"UTF8"
)));
}
catch
(
Exception
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
updateClob
(
""
,
new
SerialClob
(
""
.
toCharArray
()));
}
catch
(
Exception
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
updateClob
(
0
,
new
SerialClob
(
""
.
toCharArray
()));
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
updateArray
(
null
,
null
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
updateArray
(
null
,
null
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
getRowId
(
null
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
getRowId
(
null
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
updateRowId
(
null
,
null
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
updateRowId
(
null
,
null
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
getHoldability
();
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
updateNString
(
null
,
null
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
updateNString
(
null
,
null
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
getNClob
(
null
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
getNClob
(
null
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
getSQLXML
(
null
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
getSQLXML
(
null
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
updateSQLXML
(
null
,
null
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
updateSQLXML
(
null
,
null
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
getNCharacterStream
(
null
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
getNCharacterStream
(
null
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
updateNCharacterStream
(
null
,
null
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
updateNCharacterStream
(
null
,
null
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
updateAsciiStream
(
null
,
null
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
updateBinaryStream
(
null
,
null
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
updateCharacterStream
(
null
,
null
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
updateAsciiStream
(
null
,
null
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
updateBinaryStream
(
null
,
null
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
updateCharacterStream
(
null
,
null
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
updateNCharacterStream
(
null
,
null
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
updateNCharacterStream
(
null
,
null
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
updateAsciiStream
(
null
,
null
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
updateBinaryStream
(
null
,
null
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
updateCharacterStream
(
null
,
null
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
updateAsciiStream
(
null
,
null
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
updateBinaryStream
(
null
,
null
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
try
{
resSet
.
updateCharacterStream
(
null
,
null
);
}
catch
(
SQLException
e
)
{
assertTrue
(
e
.
getMessage
().
contains
(
"this operation is NOT supported currently!"
));
}
}
@Test
public
void
testBatch
()
throws
SQLException
{
String
[]
sqls
=
new
String
[]{
"insert into test.t0 values (1496732686001,2147483600,1496732687000,3.1415925,3.1415926\n"
+
"535897,\"涛思数据,强~!\",12,12,\"TDengine is powerful\")"
,
"insert into test.t0 values (1496732686002,2147483600,1496732687000,3.1415925,3.1415926\n"
+
"535897,\"涛思数据,强~!\",12,12,\"TDengine is powerful\")"
};
for
(
String
sql
:
sqls
)
{
statement
.
addBatch
(
sql
);
}
int
[]
res
=
statement
.
executeBatch
();
assertEquals
(
res
.
length
,
2
);
statement
.
clearBatch
();
}
@AfterClass
public
static
void
close
()
throws
Exception
{
statement
.
executeUpdate
(
"drop database "
+
dbName
);
statement
.
close
();
connection
.
close
();
Thread
.
sleep
(
10
);
}
}
src/connector/jdbc/src/test/java/com/taosdata/jdbc/SelectTest.java
0 → 100644
浏览文件 @
e5294ee5
package
com.taosdata.jdbc
;
import
org.junit.After
;
import
org.junit.Before
;
import
org.junit.Test
;
import
java.sql.*
;
import
java.util.Properties
;
import
static
org
.
junit
.
Assert
.
assertEquals
;
public
class
SelectTest
{
Connection
connection
=
null
;
Statement
statement
=
null
;
String
dbName
=
"test"
;
String
tName
=
"t0"
;
String
host
=
"localhost"
;
@Before
public
void
createDatabaseAndTable
()
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_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/"
+
"?user=root&password=taosdata"
,
properties
);
statement
=
connection
.
createStatement
();
statement
.
executeUpdate
(
"drop database if exists "
+
dbName
);
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
selectData
()
throws
SQLException
{
long
ts
=
1496732686000
l
;
for
(
int
i
=
0
;
i
<
50
;
i
++)
{
ts
++;
int
row
=
statement
.
executeUpdate
(
"insert into "
+
dbName
+
"."
+
tName
+
" values ("
+
ts
+
", "
+
(
100
+
i
)
+
", "
+
i
+
")"
);
System
.
out
.
println
(
"insert into "
+
dbName
+
"."
+
tName
+
" values ("
+
ts
+
", "
+
(
100
+
i
)
+
", "
+
i
+
")\t"
+
row
);
assertEquals
(
1
,
row
);
}
String
sql
=
"select * from "
+
dbName
+
"."
+
tName
;
ResultSet
resSet
=
statement
.
executeQuery
(
sql
);
int
num
=
0
;
while
(
resSet
.
next
())
{
num
++;
}
resSet
.
close
();
assertEquals
(
num
,
50
);
}
@After
public
void
close
()
throws
Exception
{
statement
.
executeUpdate
(
"drop database "
+
dbName
);
statement
.
close
();
connection
.
close
();
Thread
.
sleep
(
10
);
}
}
src/connector/jdbc/src/test/java/com/taosdata/jdbc/StableTest.java
0 → 100644
浏览文件 @
e5294ee5
package
com.taosdata.jdbc
;
import
org.junit.AfterClass
;
import
org.junit.BeforeClass
;
import
org.junit.FixMethodOrder
;
import
org.junit.Test
;
import
org.junit.runners.MethodSorters
;
import
java.sql.*
;
import
java.util.Properties
;
import
static
org
.
junit
.
Assert
.
assertEquals
;
@FixMethodOrder
(
MethodSorters
.
NAME_ASCENDING
)
public
class
StableTest
{
static
Connection
connection
=
null
;
static
Statement
statement
=
null
;
static
String
dbName
=
"test"
;
static
String
stbName
=
"st"
;
static
String
host
=
"localhost"
;
@BeforeClass
public
static
void
createDatabase
()
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_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/"
+
"?user=root&password=taosdata"
,
properties
);
statement
=
connection
.
createStatement
();
statement
.
executeUpdate
(
"create database if not exists "
+
dbName
);
statement
.
executeQuery
(
"use "
+
dbName
);
}
// @Test
public
void
createStable
()
{
String
sql
=
"create table "
+
stbName
+
" (ts timestamp, v1 int, v2 int) tags (tg nchar(20)) "
;
try
{
statement
.
executeUpdate
(
sql
);
}
catch
(
SQLException
e
)
{
assert
false
:
"error create stable"
+
e
.
getMessage
();
}
}
// @Test
public
void
createTable
()
{
String
sql
=
"create table t1 using "
+
stbName
+
" tags (\"beijing\")"
;
try
{
statement
.
executeUpdate
(
sql
);
}
catch
(
SQLException
e
)
{
assert
false
:
"error create table"
+
e
.
getMessage
();
}
}
@Test
public
void
describeSTable
()
{
createStable
();
String
sql
=
"describe "
+
stbName
;
int
num
=
0
;
System
.
out
.
println
(
"describe stable"
);
try
{
ResultSet
res
=
statement
.
executeQuery
(
sql
);
while
(
res
.
next
())
{
for
(
int
i
=
1
;
i
<=
res
.
getMetaData
().
getColumnCount
();
i
++)
{
System
.
out
.
printf
(
"%d: %s\n"
,
i
,
res
.
getString
(
i
));
}
num
++;
}
res
.
close
();
assertEquals
(
4
,
num
);
}
catch
(
SQLException
e
)
{
assert
false
:
"error describe stable"
+
e
.
getMessage
();
}
}
@Test
public
void
describeTable
()
{
createTable
();
String
sql
=
"describe t1"
;
int
num
=
0
;
System
.
out
.
println
(
"describe table"
);
try
{
ResultSet
res
=
statement
.
executeQuery
(
sql
);
while
(
res
.
next
())
{
for
(
int
i
=
1
;
i
<=
res
.
getMetaData
().
getColumnCount
();
i
++)
{
System
.
out
.
printf
(
"%d: %s\n"
,
i
,
res
.
getString
(
i
));
}
num
++;
}
res
.
close
();
assertEquals
(
4
,
num
);
}
catch
(
SQLException
e
)
{
assert
false
:
"error describe stable"
+
e
.
getMessage
();
}
}
// @Test
public
void
validCreateSql
()
{
String
sql
=
"create table t2 using "
+
stbName
+
" tags (\"beijing\")"
;
boolean
valid
=
((
TSDBConnection
)
connection
).
getConnection
().
validateCreateTableSql
(
sql
);
assertEquals
(
true
,
valid
);
}
@AfterClass
public
static
void
close
()
throws
Exception
{
if
(!
statement
.
isClosed
())
{
statement
.
executeUpdate
(
"drop database "
+
dbName
);
statement
.
close
();
connection
.
close
();
Thread
.
sleep
(
10
);
}
}
}
src/connector/jdbc/src/test/java/com/taosdata/jdbc/StatementTest.java
0 → 100644
浏览文件 @
e5294ee5
package
com.taosdata.jdbc
;
import
org.junit.AfterClass
;
import
org.junit.BeforeClass
;
import
org.junit.Test
;
import
java.sql.*
;
import
java.util.Properties
;
import
static
org
.
junit
.
Assert
.
assertEquals
;
import
static
org
.
junit
.
Assert
.
assertTrue
;
public
class
StatementTest
{
static
Connection
connection
=
null
;
static
Statement
statement
=
null
;
static
String
dbName
=
"test"
;
static
String
tName
=
"t0"
;
static
String
host
=
"localhost"
;
static
ResultSet
resSet
=
null
;
@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_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/"
+
"?user=root&password=taosdata"
,
properties
);
statement
=
connection
.
createStatement
();
statement
.
executeUpdate
(
"drop database if exists "
+
dbName
);
}
@Test
public
void
createTableAndQuery
()
throws
SQLException
{
long
ts
=
System
.
currentTimeMillis
();
statement
.
executeUpdate
(
"create database if not exists "
+
dbName
);
statement
.
executeUpdate
(
"create table if not exists "
+
dbName
+
"."
+
tName
+
"(ts timestamp, k1 int)"
);
statement
.
executeUpdate
(
"insert into "
+
dbName
+
"."
+
tName
+
" values ("
+
ts
+
", 1)"
);
statement
.
executeQuery
(
"select * from "
+
dbName
+
"."
+
tName
);
ResultSet
resultSet
=
statement
.
getResultSet
();
assertTrue
(
null
!=
resultSet
);
boolean
isClosed
=
statement
.
isClosed
();
assertEquals
(
false
,
isClosed
);
}
@Test
public
void
testUnsupport
()
{
// if(null == resSet) {
// return;
// }
TSDBStatement
tsdbStatement
=
(
TSDBStatement
)
statement
;
try
{
tsdbStatement
.
unwrap
(
null
);
}
catch
(
SQLException
e
)
{
}
try
{
tsdbStatement
.
isWrapperFor
(
null
);
}
catch
(
SQLException
e
)
{
}
try
{
tsdbStatement
.
getMaxFieldSize
();
}
catch
(
SQLException
e
)
{
}
try
{
tsdbStatement
.
setMaxFieldSize
(
0
);
}
catch
(
SQLException
e
)
{
}
try
{
tsdbStatement
.
setEscapeProcessing
(
true
);
}
catch
(
SQLException
e
)
{
}
try
{
tsdbStatement
.
cancel
();
}
catch
(
SQLException
e
)
{
}
try
{
tsdbStatement
.
getWarnings
();
}
catch
(
SQLException
e
)
{
}
try
{
tsdbStatement
.
clearWarnings
();
}
catch
(
SQLException
e
)
{
}
try
{
tsdbStatement
.
setCursorName
(
null
);
}
catch
(
SQLException
e
)
{
}
try
{
tsdbStatement
.
getMoreResults
();
}
catch
(
SQLException
e
)
{
}
try
{
tsdbStatement
.
setFetchDirection
(
0
);
}
catch
(
SQLException
e
)
{
}
try
{
tsdbStatement
.
getFetchDirection
();
}
catch
(
SQLException
e
)
{
}
try
{
tsdbStatement
.
getResultSetConcurrency
();
}
catch
(
SQLException
e
)
{
}
try
{
tsdbStatement
.
getResultSetType
();
}
catch
(
SQLException
e
)
{
}
try
{
tsdbStatement
.
getConnection
();
}
catch
(
SQLException
e
)
{
}
try
{
tsdbStatement
.
getMoreResults
();
}
catch
(
SQLException
e
)
{
}
try
{
tsdbStatement
.
getGeneratedKeys
();
}
catch
(
SQLException
e
)
{
}
try
{
tsdbStatement
.
executeUpdate
(
null
,
0
);
}
catch
(
SQLException
e
)
{
}
try
{
tsdbStatement
.
executeUpdate
(
null
,
new
int
[]{
0
});
}
catch
(
SQLException
e
)
{
}
try
{
tsdbStatement
.
executeUpdate
(
null
,
new
String
[]{
"str1"
,
"str2"
});
}
catch
(
SQLException
e
)
{
}
try
{
tsdbStatement
.
getResultSetHoldability
();
}
catch
(
SQLException
e
)
{
}
try
{
tsdbStatement
.
setPoolable
(
true
);
}
catch
(
SQLException
e
)
{
}
try
{
tsdbStatement
.
isPoolable
();
}
catch
(
SQLException
e
)
{
}
try
{
tsdbStatement
.
closeOnCompletion
();
}
catch
(
SQLException
e
)
{
}
try
{
tsdbStatement
.
isCloseOnCompletion
();
}
catch
(
SQLException
e
)
{
}
}
@AfterClass
public
static
void
close
()
throws
Exception
{
if
(!
statement
.
isClosed
())
{
statement
.
executeUpdate
(
"drop database "
+
dbName
);
statement
.
close
();
connection
.
close
();
Thread
.
sleep
(
10
);
}
}
}
src/connector/jdbc/src/test/java/com/taosdata/jdbc/SubscribeTest.java
0 → 100644
浏览文件 @
e5294ee5
package
com.taosdata.jdbc
;
import
org.junit.After
;
import
org.junit.Before
;
import
org.junit.Test
;
import
java.sql.Connection
;
import
java.sql.DriverManager
;
import
java.sql.SQLException
;
import
java.sql.Statement
;
import
java.util.Properties
;
import
static
org
.
junit
.
Assert
.
assertTrue
;
public
class
SubscribeTest
{
Connection
connection
=
null
;
Statement
statement
=
null
;
String
dbName
=
"test"
;
String
tName
=
"t0"
;
String
host
=
"localhost"
;
String
topic
=
"test"
;
@Before
public
void
createDatabase
()
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_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/"
+
"?user=root&password=taosdata"
,
properties
);
statement
=
connection
.
createStatement
();
statement
.
executeUpdate
(
"create database if not exists "
+
dbName
);
statement
.
executeUpdate
(
"create table if not exists "
+
dbName
+
"."
+
tName
+
" (ts timestamp, k int, v int)"
);
long
ts
=
System
.
currentTimeMillis
();
for
(
int
i
=
0
;
i
<
2
;
i
++)
{
ts
+=
i
;
statement
.
executeUpdate
(
"insert into \" + dbName + \".\" + tName + \" values ("
+
ts
+
", "
+
(
100
+
i
)
+
", "
+
i
+
")"
);
}
}
@Test
public
void
subscribe
()
throws
Exception
{
TSDBSubscribe
subscribe
=
null
;
long
subscribId
=
0
;
try
{
String
rawSql
=
"select * from "
+
dbName
+
"."
+
tName
+
";"
;
System
.
out
.
println
(
rawSql
);
subscribe
=
((
TSDBConnection
)
connection
).
createSubscribe
();
subscribId
=
subscribe
.
subscribe
(
topic
,
rawSql
,
false
,
1000
);
assertTrue
(
subscribId
>
0
);
int
a
=
0
;
while
(
true
)
{
Thread
.
sleep
(
900
);
TSDBResultSet
resSet
=
subscribe
.
consume
(
subscribId
);
while
(
resSet
.
next
())
{
for
(
int
i
=
1
;
i
<=
resSet
.
getMetaData
().
getColumnCount
();
i
++)
{
System
.
out
.
printf
(
i
+
": "
+
resSet
.
getString
(
i
)
+
"\t"
);
}
System
.
out
.
println
(
"\n======"
+
a
+
"=========="
);
}
resSet
.
close
();
a
++;
if
(
a
>=
2
)
{
break
;
}
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
finally
{
if
(
null
!=
subscribe
&&
0
!=
subscribId
)
{
subscribe
.
unsubscribe
(
subscribId
,
true
);
}
}
}
@After
public
void
close
()
throws
Exception
{
statement
.
executeQuery
(
"drop database "
+
dbName
);
statement
.
close
();
connection
.
close
();
Thread
.
sleep
(
10
);
}
}
\ No newline at end of file
src/kit/taosnetwork/client.c
浏览文件 @
e5294ee5
...
@@ -13,6 +13,7 @@
...
@@ -13,6 +13,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
*/
#include <argp.h>
#include <arpa/inet.h>
#include <arpa/inet.h>
#include <errno.h>
#include <errno.h>
#include <fcntl.h>
#include <fcntl.h>
...
@@ -34,6 +35,36 @@ typedef struct {
...
@@ -34,6 +35,36 @@ typedef struct {
char
*
host
[
15
];
char
*
host
[
15
];
}
info
;
}
info
;
typedef
struct
Arguments
{
char
*
host
;
uint16_t
port
;
uint16_t
max_port
;
}
SArguments
;
static
struct
argp_option
options
[]
=
{
{
0
,
'h'
,
"host"
,
0
,
"The host to connect to TDEngine. Default is localhost."
,
0
},
{
0
,
'p'
,
"port"
,
0
,
"The TCP or UDP port number to use for the connection. Default is 6020."
,
1
},
{
0
,
'm'
,
"max port"
,
0
,
"The max TCP or UDP port number to use for the connection. Default is 6050."
,
2
}};
static
error_t
parse_opt
(
int
key
,
char
*
arg
,
struct
argp_state
*
state
)
{
SArguments
*
arguments
=
state
->
input
;
switch
(
key
)
{
case
'h'
:
arguments
->
host
=
arg
;
break
;
case
'p'
:
arguments
->
port
=
atoi
(
arg
);
break
;
case
'm'
:
arguments
->
max_port
=
atoi
(
arg
);
break
;
}
return
0
;
}
static
struct
argp
argp
=
{
options
,
parse_opt
,
0
,
0
};
void
*
checkPort
(
void
*
sarg
)
{
void
*
checkPort
(
void
*
sarg
)
{
info
*
pinfo
=
(
info
*
)
sarg
;
info
*
pinfo
=
(
info
*
)
sarg
;
int
port
=
pinfo
->
port
;
int
port
=
pinfo
->
port
;
...
@@ -97,7 +128,7 @@ void *checkUPort(void *sarg) {
...
@@ -97,7 +128,7 @@ void *checkUPort(void *sarg) {
sprintf
(
sendbuf
,
"send msg port_%d by udp"
,
port
);
sprintf
(
sendbuf
,
"send msg port_%d by udp"
,
port
);
socklen_t
sin_size
=
sizeof
(
*
(
struct
sockaddr
*
)
&
serverAddr
);
socklen_t
sin_size
=
sizeof
(
*
(
struct
sockaddr
*
)
&
serverAddr
);
sendto
(
clientSocket
,
sendbuf
,
strlen
(
sendbuf
),
0
,
(
struct
sockaddr
*
)
&
serverAddr
,
(
int
)
sin_size
);
sendto
(
clientSocket
,
sendbuf
,
strlen
(
sendbuf
),
0
,
(
struct
sockaddr
*
)
&
serverAddr
,
(
int
)
sin_size
);
...
@@ -113,14 +144,19 @@ void *checkUPort(void *sarg) {
...
@@ -113,14 +144,19 @@ void *checkUPort(void *sarg) {
return
NULL
;
return
NULL
;
}
}
int
main
()
{
int
main
(
int
argc
,
char
*
argv
[])
{
int
port
=
6020
;
SArguments
arguments
=
{
"127.0.0.1"
,
6020
,
6050
};
char
*
host
=
"127.0.0.1"
;
argp_parse
(
&
argp
,
argc
,
argv
,
0
,
0
,
&
arguments
);
printf
(
"host: %s
\t
port: %d
\t
max_port: %d
\n
"
,
arguments
.
host
,
arguments
.
port
,
arguments
.
max_port
);
int
port
=
arguments
.
port
;
char
*
host
=
arguments
.
host
;
info
*
tinfo
=
malloc
(
sizeof
(
info
));
info
*
tinfo
=
malloc
(
sizeof
(
info
));
info
*
uinfo
=
malloc
(
sizeof
(
info
));
info
*
uinfo
=
malloc
(
sizeof
(
info
));
for
(
size_t
i
=
0
;
i
<
30
;
i
++
)
{
for
(;
port
<
arguments
.
max_port
;
port
++
)
{
port
++
;
printf
(
"For test: %s:%d
\n
"
,
host
,
port
);
printf
(
"For test: %s:%d
\n
"
,
host
,
port
);
*
tinfo
->
host
=
host
;
*
tinfo
->
host
=
host
;
...
...
src/kit/taosnetwork/server.c
浏览文件 @
e5294ee5
...
@@ -13,6 +13,7 @@
...
@@ -13,6 +13,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
*/
#include <argp.h>
#include <arpa/inet.h>
#include <arpa/inet.h>
#include <errno.h>
#include <errno.h>
#include <fcntl.h>
#include <fcntl.h>
...
@@ -34,6 +35,36 @@ typedef struct {
...
@@ -34,6 +35,36 @@ typedef struct {
int
type
;
// 0: tcp, 1: udo, default: 0
int
type
;
// 0: tcp, 1: udo, default: 0
}
info
;
}
info
;
typedef
struct
Arguments
{
char
*
host
;
uint16_t
port
;
uint16_t
max_port
;
}
SArguments
;
static
struct
argp_option
options
[]
=
{
{
0
,
'h'
,
"host"
,
0
,
"The host to connect to TDEngine. Default is localhost."
,
0
},
{
0
,
'p'
,
"port"
,
0
,
"The TCP or UDP port number to use for the connection. Default is 6020."
,
1
},
{
0
,
'm'
,
"max port"
,
0
,
"The max TCP or UDP port number to use for the connection. Default is 6050."
,
2
}};
static
error_t
parse_opt
(
int
key
,
char
*
arg
,
struct
argp_state
*
state
)
{
SArguments
*
arguments
=
state
->
input
;
switch
(
key
)
{
case
'h'
:
arguments
->
host
=
arg
;
break
;
case
'p'
:
arguments
->
port
=
atoi
(
arg
);
break
;
case
'm'
:
arguments
->
max_port
=
atoi
(
arg
);
break
;
}
return
0
;
}
static
struct
argp
argp
=
{
options
,
parse_opt
,
0
,
0
};
static
void
*
bindPort
(
void
*
sarg
)
{
static
void
*
bindPort
(
void
*
sarg
)
{
info
*
pinfo
=
(
info
*
)
sarg
;
info
*
pinfo
=
(
info
*
)
sarg
;
int
port
=
pinfo
->
port
;
int
port
=
pinfo
->
port
;
...
@@ -170,15 +201,21 @@ static void *bindUPort(void *sarg) {
...
@@ -170,15 +201,21 @@ static void *bindUPort(void *sarg) {
}
}
int
main
()
{
int
main
(
int
argc
,
char
*
argv
[])
{
int
port
=
6020
;
SArguments
arguments
=
{
"127.0.0.1"
,
6020
,
6050
};
pthread_t
*
pids
=
malloc
(
60
*
sizeof
(
pthread_t
));
argp_parse
(
&
argp
,
argc
,
argv
,
0
,
0
,
&
arguments
);
info
*
infos
=
malloc
(
30
*
sizeof
(
info
));
int
port
=
arguments
.
port
;
info
*
uinfos
=
malloc
(
30
*
sizeof
(
info
));
for
(
size_t
i
=
0
;
i
<
30
;
i
++
)
{
int
num
=
arguments
.
max_port
-
arguments
.
port
;
port
++
;
if
(
num
<
0
)
{
num
=
1
;
}
pthread_t
*
pids
=
malloc
(
2
*
num
*
sizeof
(
pthread_t
));
info
*
infos
=
malloc
(
num
*
sizeof
(
info
));
info
*
uinfos
=
malloc
(
num
*
sizeof
(
info
));
for
(
size_t
i
=
0
;
i
<
num
;
i
++
)
{
info
*
pinfo
=
infos
++
;
info
*
pinfo
=
infos
++
;
pinfo
->
port
=
port
;
pinfo
->
port
=
port
;
...
@@ -191,14 +228,15 @@ int main() {
...
@@ -191,14 +228,15 @@ int main() {
info
*
uinfo
=
uinfos
++
;
info
*
uinfo
=
uinfos
++
;
uinfo
->
port
=
port
;
uinfo
->
port
=
port
;
uinfo
->
type
=
1
;
uinfo
->
type
=
1
;
if
(
pthread_create
(
pids
+
30
+
i
,
NULL
,
bindUPort
,
uinfo
)
!=
0
)
//创建线程
port
++
;
if
(
pthread_create
(
pids
+
num
+
i
,
NULL
,
bindUPort
,
uinfo
)
!=
0
)
//创建线程
{
//创建线程失败
{
//创建线程失败
printf
(
"创建线程失败: %d.
\n
"
,
port
);
printf
(
"创建线程失败: %d.
\n
"
,
port
);
exit
(
0
);
exit
(
0
);
}
}
}
}
for
(
int
i
=
0
;
i
<
30
;
i
++
)
{
for
(
int
i
=
0
;
i
<
num
;
i
++
)
{
pthread_join
(
pids
[
i
],
NULL
);
pthread_join
(
pids
[
i
],
NULL
);
pthread_join
(
pids
[(
10
+
i
)],
NULL
);
pthread_join
(
pids
[(
num
+
i
)],
NULL
);
}
}
}
}
src/kit/taosnetwork/taosnetwork_client.c
已删除
100644 → 0
浏览文件 @
f26403d1
/*
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
*
* This program is free software: you can use, redistribute, and/or modify
* it under the terms of the GNU Affero General Public License, version 3
* or later ("AGPL"), as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include <netinet/in.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <unistd.h>
#define SERVER_PORT 8000
#define SIZE 200
int
main
()
{
struct
sockaddr_in
servaddr
,
cliaddr
;
socklen_t
cliaddr_len
;
int
client_sockfd
;
char
buf
[
SIZE
];
char
recvbuf
[
SIZE
];
int
i
,
n
,
flag
=
0
;
int
len
,
iDataNum
;
client_sockfd
=
socket
(
AF_INET
,
SOCK_STREAM
,
0
);
bzero
(
&
servaddr
,
sizeof
(
servaddr
));
servaddr
.
sin_family
=
AF_INET
;
servaddr
.
sin_addr
.
s_addr
=
htonl
(
INADDR_ANY
);
servaddr
.
sin_port
=
htons
(
SERVER_PORT
);
if
(
connect
(
client_sockfd
,
(
struct
sockaddr
*
)
&
servaddr
,
sizeof
(
servaddr
))
<
0
)
{
printf
(
"Connected error..
\n
"
);
return
0
;
}
printf
(
"Connected to server..
\n
"
);
/*循环的发送接收信息并打印接收信息(可以按需发送)--recv返回接收到的字节数,send返回发送的字节数*/
while
(
1
)
{
printf
(
"Enter string to send:"
);
scanf
(
"%s"
,
buf
);
if
(
!
strcmp
(
buf
,
"quit"
))
{
break
;
}
len
=
(
sizeof
buf
);
recvbuf
[
0
]
=
'\0'
;
iDataNum
=
recv
(
client_sockfd
,
recvbuf
,
SIZE
,
0
);
recvbuf
[
iDataNum
]
=
'\0'
;
printf
(
"%s
\n
"
,
recvbuf
);
}
return
0
;
}
src/kit/taosnetwork/taosnetwork_server.c
已删除
100644 → 0
浏览文件 @
f26403d1
/*
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
*
* This program is free software: you can use, redistribute, and/or modify
* it under the terms of the GNU Affero General Public License, version 3
* or later ("AGPL"), as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include <netinet/in.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <unistd.h>
#define SERVER_PORT 8000
#define SIZE 200
int
main
()
{
struct
sockaddr_in
servaddr
,
cliaddr
;
socklen_t
cliaddr_len
;
int
listenfd
,
connfd
;
char
buf
[
BUFSIZ
];
int
i
,
n
,
flag
=
0
;
listenfd
=
socket
(
AF_INET
,
SOCK_STREAM
,
0
);
bzero
(
&
servaddr
,
sizeof
(
servaddr
));
servaddr
.
sin_family
=
AF_INET
;
servaddr
.
sin_addr
.
s_addr
=
htonl
(
INADDR_ANY
);
servaddr
.
sin_port
=
htons
(
SERVER_PORT
);
bind
(
listenfd
,
(
struct
sockaddr
*
)
&
servaddr
,
sizeof
(
servaddr
));
listen
(
listenfd
,
20
);
printf
(
"Accepting connections..
\n
"
);
while
(
1
)
{
cliaddr_len
=
sizeof
(
cliaddr
);
connfd
=
accept
(
listenfd
,
(
struct
sockaddr
*
)
&
cliaddr
,
&
cliaddr_len
);
//如果得不到客户端发来的消息,将会被阻塞,一直等到消息到来
n
=
read
(
connfd
,
buf
,
SIZE
);
//如果n<=0,表示客户端已断开
while
(
1
)
{
if
(
n
!=
0
)
{
for
(
i
=
0
;
i
<
n
;
i
++
)
printf
(
"%c"
,
buf
[
i
]);
//输出客户端发来的信息
}
else
{
printf
(
"Client say close the connection..
\n
"
);
break
;
}
n
=
read
(
connfd
,
buf
,
SIZE
);
}
close
(
connfd
);
}
}
src/kit/taosnetwork/test_client.c
已删除
100644 → 0
浏览文件 @
f26403d1
#include <netinet/in.h>
#include <stdio.h>
#include <string.h>
#include <sys/socket.h>
#include <sys/types.h>
#define SERVER_PORT 8888
#define BUFF_LEN 512
#define SERVER_IP "172.0.5.182"
void
udp_msg_sender
(
int
fd
,
struct
sockaddr
*
dst
)
{}
/*
client:
socket-->sendto-->revcfrom-->close
*/
int
main
(
int
argc
,
char
*
argv
[])
{
int
client_fd
;
struct
sockaddr_in
ser_addr
;
client_fd
=
socket
(
AF_INET
,
SOCK_DGRAM
,
0
);
if
(
client_fd
<
0
)
{
printf
(
"create socket fail!
\n
"
);
return
-
1
;
}
memset
(
&
ser_addr
,
0
,
sizeof
(
ser_addr
));
ser_addr
.
sin_family
=
AF_INET
;
// ser_addr.sin_addr.s_addr = inet_addr(SERVER_IP);
ser_addr
.
sin_addr
.
s_addr
=
htonl
(
INADDR_ANY
);
//注意网络序转换
ser_addr
.
sin_port
=
htons
(
SERVER_PORT
);
//注意网络序转换
socklen_t
len
;
struct
sockaddr_in
src
;
while
(
1
)
{
char
buf
[
BUFF_LEN
]
=
"TEST UDP MSG!
\n
"
;
len
=
sizeof
(
*
(
struct
sockaddr
*
)
&
ser_addr
);
printf
(
"client:%s
\n
"
,
buf
);
//打印自己发送的信息
sendto
(
client_fd
,
buf
,
BUFF_LEN
,
0
,
(
struct
sockaddr
*
)
&
ser_addr
,
len
);
memset
(
buf
,
0
,
BUFF_LEN
);
recvfrom
(
client_fd
,
buf
,
BUFF_LEN
,
0
,
(
struct
sockaddr
*
)
&
src
,
&
len
);
//接收来自server的信息
printf
(
"server:%s
\n
"
,
buf
);
sleep
(
1
);
//一秒发送一次消息
}
close
(
client_fd
);
return
0
;
}
\ No newline at end of file
src/kit/taosnetwork/test_server.c
已删除
100644 → 0
浏览文件 @
f26403d1
#include <netinet/in.h>
#include <stdio.h>
#include <string.h>
#include <sys/socket.h>
#include <sys/types.h>
#define SERVER_PORT 8888
#define BUFF_LEN 1024
void
handle_udp_msg
(
int
fd
)
{
char
buf
[
BUFF_LEN
];
//接收缓冲区,1024字节
socklen_t
len
;
int
count
;
struct
sockaddr_in
clent_addr
;
// clent_addr用于记录发送方的地址信息
while
(
1
)
{
memset
(
buf
,
0
,
BUFF_LEN
);
len
=
sizeof
(
clent_addr
);
count
=
recvfrom
(
fd
,
buf
,
BUFF_LEN
,
0
,
(
struct
sockaddr
*
)
&
clent_addr
,
&
len
);
// recvfrom是拥塞函数,没有数据就一直拥塞
if
(
count
==
-
1
)
{
printf
(
"recieve data fail!
\n
"
);
return
;
}
printf
(
"client:%s
\n
"
,
buf
);
//打印client发过来的信息
memset
(
buf
,
0
,
BUFF_LEN
);
sprintf
(
buf
,
"I have recieved %d bytes data!
\n
"
,
count
);
//回复client
printf
(
"server:%s
\n
"
,
buf
);
//打印自己发送的信息给
sendto
(
fd
,
buf
,
BUFF_LEN
,
0
,
(
struct
sockaddr
*
)
&
clent_addr
,
len
);
//发送信息给client,注意使用了clent_addr结构体指针
}
}
/*
server:
socket-->bind-->recvfrom-->sendto-->close
*/
int
main
(
int
argc
,
char
*
argv
[])
{
int
server_fd
,
ret
;
struct
sockaddr_in
ser_addr
;
server_fd
=
socket
(
AF_INET
,
SOCK_DGRAM
,
0
);
// AF_INET:IPV4;SOCK_DGRAM:UDP
if
(
server_fd
<
0
)
{
printf
(
"create socket fail!
\n
"
);
return
-
1
;
}
memset
(
&
ser_addr
,
0
,
sizeof
(
ser_addr
));
ser_addr
.
sin_family
=
AF_INET
;
ser_addr
.
sin_addr
.
s_addr
=
htonl
(
INADDR_ANY
);
// IP地址,需要进行网络序转换,INADDR_ANY:本地地址
ser_addr
.
sin_port
=
htons
(
SERVER_PORT
);
//端口号,需要网络序转换
ret
=
bind
(
server_fd
,
(
struct
sockaddr
*
)
&
ser_addr
,
sizeof
(
ser_addr
));
if
(
ret
<
0
)
{
printf
(
"socket bind fail!
\n
"
);
return
-
1
;
}
handle_udp_msg
(
server_fd
);
//处理接收到的数据
close
(
server_fd
);
return
0
;
}
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录