Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
慢慢CG
TDengine
提交
0d3d2a90
T
TDengine
项目概览
慢慢CG
/
TDengine
与 Fork 源项目一致
Fork自
taosdata / TDengine
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
0d3d2a90
编写于
6月 19, 2020
作者:
H
Hongze Cheng
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'develop' into feature/2.0tsdb
上级
cbb70cc5
59b30ceb
变更
63
展开全部
隐藏空白更改
内联
并排
Showing
63 changed file
with
2711 addition
and
972 deletion
+2711
-972
packaging/cfg/taos.cfg
packaging/cfg/taos.cfg
+110
-105
src/client/src/TSDBJNIConnector.c
src/client/src/TSDBJNIConnector.c
+8
-10
src/client/src/tscLocalMerge.c
src/client/src/tscLocalMerge.c
+10
-10
src/client/src/tscSQLParser.c
src/client/src/tscSQLParser.c
+1
-1
src/client/src/tscServer.c
src/client/src/tscServer.c
+0
-1
src/client/src/tscSql.c
src/client/src/tscSql.c
+5
-1
src/client/src/tscSubquery.c
src/client/src/tscSubquery.c
+7
-8
src/common/inc/tglobal.h
src/common/inc/tglobal.h
+0
-4
src/common/src/tglobal.c
src/common/src/tglobal.c
+0
-35
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/cq/test/cqtest.c
src/cq/test/cqtest.c
+2
-2
src/inc/taosdef.h
src/inc/taosdef.h
+3
-0
src/kit/shell/src/shellEngine.c
src/kit/shell/src/shellEngine.c
+27
-20
src/kit/shell/src/shellMain.c
src/kit/shell/src/shellMain.c
+0
-9
src/kit/taosdemo/taosdemo.c
src/kit/taosdemo/taosdemo.c
+1
-1
src/kit/taosdump/taosdump.c
src/kit/taosdump/taosdump.c
+19
-14
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/mnode/inc/mnodeDef.h
src/mnode/inc/mnodeDef.h
+55
-37
src/mnode/src/mnodeAcct.c
src/mnode/src/mnodeAcct.c
+5
-3
src/mnode/src/mnodeDb.c
src/mnode/src/mnodeDb.c
+6
-6
src/mnode/src/mnodeDnode.c
src/mnode/src/mnodeDnode.c
+7
-7
src/mnode/src/mnodeMnode.c
src/mnode/src/mnodeMnode.c
+3
-1
src/mnode/src/mnodeProfile.c
src/mnode/src/mnodeProfile.c
+6
-6
src/mnode/src/mnodeUser.c
src/mnode/src/mnodeUser.c
+11
-11
src/plugins/monitor/src/monitorMain.c
src/plugins/monitor/src/monitorMain.c
+2
-2
src/query/inc/qextbuffer.h
src/query/inc/qextbuffer.h
+1
-1
src/query/src/qextbuffer.c
src/query/src/qextbuffer.c
+7
-8
src/util/src/tlog.c
src/util/src/tlog.c
+2
-2
tests/test-all.sh
tests/test-all.sh
+53
-19
tests/test/c/importOneRow.c
tests/test/c/importOneRow.c
+1
-1
tests/test/c/importPerTable.c
tests/test/c/importPerTable.c
+2
-2
tests/test/c/insertPerRow.c
tests/test/c/insertPerRow.c
+2
-2
tests/test/c/insertPerTable.c
tests/test/c/insertPerTable.c
+2
-2
tests/tsim/src/simExe.c
tests/tsim/src/simExe.c
+3
-3
未找到文件。
packaging/cfg/taos.cfg
浏览文件 @
0d3d2a90
...
@@ -6,10 +6,22 @@
...
@@ -6,10 +6,22 @@
########################################################
########################################################
# first full-qualified domain name (FQDN) for TDengine system
# first full-qualified domain name (FQDN) for TDengine system
# first
127.0.0.1
# first
hostname1:6030
# second full-qualified domain name (FQDN) for TDengine system, for cluster edition only
# second full-qualified domain name (FQDN) for TDengine system, for cluster edition only
# second 127.0.0.1
# second cluster_hostname2:6030
# the arbitrator's full-qualified domain name (FQDN) for TDengine system, for cluster edition only
# arbitrator arbitrator_hostname:6030
# the full-qualified domain name (FQDN) of dnode
# fqdn hostname:6030
# port for MNode connect to Client, default udp[6030-6055] tcp[6030]
# serverPort 6030
# http service port, default tcp[6020]
# httpPort 6020
# set socket type ("udp" and "tcp")
# set socket type ("udp" and "tcp")
# the server and client should have the same socket type. Otherwise, connect will fail
# the server and client should have the same socket type. Otherwise, connect will fail
...
@@ -30,42 +42,38 @@
...
@@ -30,42 +42,38 @@
# log file's directory
# log file's directory
# logDir /var/log/taos
# logDir /var/log/taos
#
http service port, default tcp[6020]
#
number of management nodes in the system
#
httpPort 6020
#
numOfMnodes 3
#
port for MNode connect to Client, default udp[6030-6055] tcp[6030]
#
optional roles for dnode. 0 - any, 1 - mnode, 2 - dnode
#
serverPort 603
0
#
alternativeRole
0
# number of threads per CPU core
# number of threads per CPU core
# numOfThreadsPerCore 1
# numOfThreadsPerCore 1
.0
# number of vnodes per core in DNode
# number of vnodes per core in DNode
# numOfVnodesPerCore 8
# numOfVnodesPerCore 8
# the ratio of threads responsible for querying in the total thread
# ratioOfQueryThreads 0.5
# number of total vnodes in DNode
# number of total vnodes in DNode
# numOfTotalVnodes 0
# numOfTotalVnodes 0
# max number of tables per vnode
# max number of tables per vnode
# maxtablesPerVnode 1000
# maxtablesPerVnode 1000
#
cache block size
#
interval of check load balance when the management node is in normal operation
#
cache 16384
#
balanceInterval 300
# row of records in file block
# interval of DNode report status to MNode, unit is Second, for cluster version only
# minRows 100
# statusInterval 1
# maxRows 4096
#
number of cache blocks per vnode
#
interval of Shell send HB to MNode, unit is Second
#
blocks 2
#
shellActivityTimer 3
# interval of system monitor
# interval of system monitor
# monitorInterval 60
# monitorInterval 30
# the compressed rpc message, option:
# -1 (no compression)
# 0 (all message compressed),
# > 0 (rpc message body which larger than this value will be compressed)
# compressMsgSize -1
# RPC re-try timer, millisecond
# RPC re-try timer, millisecond
# rpcTimer 300
# rpcTimer 300
...
@@ -73,38 +81,20 @@
...
@@ -73,38 +81,20 @@
# RPC maximum time for ack, seconds
# RPC maximum time for ack, seconds
# rpcMaxTime 600
# rpcMaxTime 600
# commit interval,unit is second
# ctime 3600
# interval of DNode report status to MNode, unit is Second, for cluster version only
# statusInterval 1
# interval of Shell send HB to MNode, unit is Second
# shellActivityTimer 3
# interval of DNode send HB to DNode, unit is Second, for cluster version only
# vnodePeerHBTimer 1
# interval of MNode send HB to MNode, unit is Second, for cluster version only
# mgmtPeerHBTimer 1
# duration of to keep tableMeta kept in Cache, seconds
# duration of to keep tableMeta kept in Cache, seconds
# tableMetaKeepTimer 7200
# tableMetaKeepTimer 7200
# max number of users
# Minimum sliding window time
# maxUsers 1000
# minSlidingTime 10
# max number of databases
# maxDbs 1000
#
max number of tables
#
Time window minimum
# m
axTables 65000
0
# m
inIntervalTime 1
0
# max
number of Dnodes, for cluster version only
# max
length of an SQL
# max
Dnodes 100
0
# max
SQLLength 6538
0
#
Max number of VGroups, for cluster version only
#
Support the maximum number of records allowed for super table time sorting
# max
VGroups 1
000
# max
NumOfOrderedRes 100
000
# system locale
# system locale
# locale en_US.UTF-8
# locale en_US.UTF-8
...
@@ -121,6 +111,24 @@
...
@@ -121,6 +111,24 @@
# enable/disable async log
# enable/disable async log
# asyncLog 1
# asyncLog 1
# the compressed rpc message, option:
# -1 (no compression)
# 0 (all message compressed),
# > 0 (rpc message body which larger than this value will be compressed)
# compressMsgSize -1
# cache block size (Mbyte)
# cache 16
# number of cache blocks per vnode
# blocks 4
# min row of records in file block
# minRows 100
# max row of records in file block
# maxRows 4096
# enable/disable compression
# enable/disable compression
# comp 1
# comp 1
...
@@ -131,31 +139,25 @@
...
@@ -131,31 +139,25 @@
# keep 3650
# keep 3650
# number of replications, for cluster version only
# number of replications, for cluster version only
# replica
tions
1
# replica
1
#
client default database(database should be created)
#
max number of connections from client for dnode
#
defaultDB
#
maxShellConns 5000
#
client default usernam
e
#
max numerber of connections to one databas
e
#
defaultUser root
#
maxConnections 5000
#
client default password
#
Stop writing logs when the disk size of the log folder is less than this value
#
defaultPass taosdata
#
minimalLogDirGB 0.1
#
max number of connections from client for mgmt nod
e
#
Stop writing temporary files when the disk size of the log folder is less than this valu
e
# m
axShellConns 2000
# m
inimalTmpDirGB 0.1
# max numerber of meter Connections
# Stop writing data when the disk size of the log folder is less than this value
# maxMeterConnections 10000
# minimalDataDirGB 0.1
# max connection to management node
# maxMgmtConnections 2000
# max connection to Vnode
# maxVnodeConnections 10000
# mnode take into account while balance, for cluster version only
# mnode take into account while balance, for cluster version only
# mnodeEqualVnodeNum
4
# mnodeEqualVnodeNum 4
# number of seconds allowed for a dnode to be offline, for cluster version only
# number of seconds allowed for a dnode to be offline, for cluster version only
# offlineThreshold 864000
# offlineThreshold 864000
...
@@ -170,10 +172,10 @@
...
@@ -170,10 +172,10 @@
# mqtt 0
# mqtt 0
# mqtt uri
# mqtt uri
# mqttBrokerAddress mqtt://username:password@hostname:1883/taos/
# mqttBrokerAddress
mqtt://username:password@hostname:1883/taos/
# mqtt client name
# mqtt client name
# mqttBrokerClientId taos_mqtt
# mqttBrokerClientId
taos_mqtt
# maximum number of rows returned by the restful interface
# maximum number of rows returned by the restful interface
# restfulRowLimit 10240
# restfulRowLimit 10240
...
@@ -181,41 +183,17 @@
...
@@ -181,41 +183,17 @@
# number of threads used to process http requests
# number of threads used to process http requests
# httpMaxThreads 2
# httpMaxThreads 2
#
pre-allocated number of http sessions
#
The minimum time to wait before the first stream execution
#
httpCacheSessions 1
00
#
maxFirstStreamCompDelay 100
00
#
whether to enable HTTP compression transmission
#
Retry wait time benchmark
#
httpEnableCompress
0
#
retryStreamCompDelay 1
0
# the delayed time for launching each continuous query. 10% of the whole computing time window by default.
# the delayed time for launching each continuous query. 10% of the whole computing time window by default.
# streamCompDelayRatio 0.1
# streamCompDelayRatio 0.1
# the max allowed delayed time for launching continuous query. 20ms by default
# the max allowed delayed time for launching continuous query. 20ms by default
# tsMaxStreamComputDelay 20000
# maxStreamCompDelay 20000
# whether the telegraf table name contains the number of tags and the number of fields
# telegrafUseFieldNum 0
# enable table names generated by telegraf can be configured
# use /etc/taos/taos.telegraf.cfg as the configuration file, such as
# {
# "metrics": [
# {
# "name" : "system",
# "tbname" : "system_uptime",
# "fields": [
# "uptime"
# ]
# },
# {
# "name": "system",
# "tbname" : "system_uptime_format",
# "fields": [
# "uptime_format"
# ]
# }
# ]
# }
# The following parameter is used to limit the maximum number of lines in log files.
# The following parameter is used to limit the maximum number of lines in log files.
# max number of rows per log filters
# max number of rows per log filters
...
@@ -226,35 +204,62 @@
...
@@ -226,35 +204,62 @@
# 131: output warning and error,135: output info, warning and error to log.
# 131: output warning and error,135: output info, warning and error to log.
# 199: output debug, info, warning and error to both screen and file
# 199: output debug, info, warning and error to both screen and file
# debug flag for basic utils
# debugFlag 131
# debug flag for meta management messages
# debug flag for meta management messages
# mDebugFlag 135
# mDebugFlag 135
# debug flag for dnode messages
# debug flag for dnode messages
# dDebugFlag 131
# dDebugFlag 131
# debug flag for TDengine SDB
# sDebugFlag 135
# debug flag for TDengine SDB
# debug flag for TDengine SDB
# sdbDebugFlag 135
# sdbDebugFlag 135
# debug flag for RPC
# debug flag for RPC
# rpcDebugFlag 131
# rpcDebugFlag 131
# debug flag for
basic utils
# debug flag for
TAOS TIMER
#
debugFlag
131
#
tmrDebugFlag
131
# debug flag for TDengine client
# debug flag for TDengine client
# cDebugFlag 131
# cDebugFlag 131
# debug flag for query
# debug flag for JNI
# qDebugflag 131
# jniDebugflag 131
# debug flag for ODBC
# odbcDebugflag 131
# debug flag for storage
# uDebugflag 131
# debug flag for http server
# debug flag for http server
# httpDebugFlag 131
# httpDebugFlag 131
# debug flag for system monitor
# debug flag for mqtt
# mqttDebugFlag 131
# debug flag for monitor
# monitorDebugFlag 131
# monitorDebugFlag 131
#
debug flag for mqtt client
#
debug flag for query
#
mqttDebugFlag
131
#
qDebugflag
131
# debug flag for TAOS TIMER
# debug flag for http server
# tmrDebugFlag 131
# tsdbDebugFlag 131
# Record the SQL through restful interface
# httpEnableRecordSql 0
# Record the SQL in taos client
# tscEnableRecordSql 0
# if generate core file when service crash
# enableCoreFile 1
# The maximum display width of binary and nchar fields in the shell. The parts exceeding this limit will be hidden
# maxBinaryDisplayWidth 30
\ No newline at end of file
src/client/src/TSDBJNIConnector.c
浏览文件 @
0d3d2a90
...
@@ -227,12 +227,10 @@ JNIEXPORT jlong JNICALL Java_com_taosdata_jdbc_TSDBJNIConnector_connectImp(JNIEn
...
@@ -227,12 +227,10 @@ JNIEXPORT jlong JNICALL Java_com_taosdata_jdbc_TSDBJNIConnector_connectImp(JNIEn
}
}
if
(
user
==
NULL
)
{
if
(
user
==
NULL
)
{
jniTrace
(
"jobj:%p, user is null, use tsDefaultUser"
,
jobj
);
jniTrace
(
"jobj:%p, user is null, use default user %s"
,
jobj
,
TSDB_DEFAULT_USER
);
user
=
tsDefaultUser
;
}
}
if
(
pass
==
NULL
)
{
if
(
pass
==
NULL
)
{
jniTrace
(
"jobj:%p, pass is null, use tsDefaultPass"
,
jobj
);
jniTrace
(
"jobj:%p, pass is null, use default password"
,
jobj
);
pass
=
tsDefaultPass
;
}
}
/*
/*
...
@@ -252,8 +250,8 @@ JNIEXPORT jlong JNICALL Java_com_taosdata_jdbc_TSDBJNIConnector_connectImp(JNIEn
...
@@ -252,8 +250,8 @@ JNIEXPORT jlong JNICALL Java_com_taosdata_jdbc_TSDBJNIConnector_connectImp(JNIEn
if
(
host
!=
NULL
)
(
*
env
)
->
ReleaseStringUTFChars
(
env
,
jhost
,
host
);
if
(
host
!=
NULL
)
(
*
env
)
->
ReleaseStringUTFChars
(
env
,
jhost
,
host
);
if
(
dbname
!=
NULL
)
(
*
env
)
->
ReleaseStringUTFChars
(
env
,
jdbName
,
dbname
);
if
(
dbname
!=
NULL
)
(
*
env
)
->
ReleaseStringUTFChars
(
env
,
jdbName
,
dbname
);
if
(
user
!=
NULL
&&
user
!=
tsDefaultUser
)
(
*
env
)
->
ReleaseStringUTFChars
(
env
,
juser
,
user
);
if
(
user
!=
NULL
)
(
*
env
)
->
ReleaseStringUTFChars
(
env
,
juser
,
user
);
if
(
pass
!=
NULL
&&
pass
!=
tsDefaultPass
)
(
*
env
)
->
ReleaseStringUTFChars
(
env
,
jpass
,
pass
);
if
(
pass
!=
NULL
)
(
*
env
)
->
ReleaseStringUTFChars
(
env
,
jpass
,
pass
);
return
ret
;
return
ret
;
}
}
...
@@ -344,7 +342,7 @@ JNIEXPORT jlong JNICALL Java_com_taosdata_jdbc_TSDBJNIConnector_getResultSetImp(
...
@@ -344,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
{
...
@@ -385,7 +383,7 @@ JNIEXPORT jint JNICALL Java_com_taosdata_jdbc_TSDBJNIConnector_getAffectedRowsIm
...
@@ -385,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
;
}
}
...
@@ -411,10 +409,10 @@ JNIEXPORT jint JNICALL Java_com_taosdata_jdbc_TSDBJNIConnector_getSchemaMetaData
...
@@ -411,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/client/src/tscLocalMerge.c
浏览文件 @
0d3d2a90
...
@@ -413,13 +413,13 @@ static int32_t tscFlushTmpBufferImpl(tExtMemBuffer *pMemoryBuf, tOrderDescriptor
...
@@ -413,13 +413,13 @@ static int32_t tscFlushTmpBufferImpl(tExtMemBuffer *pMemoryBuf, tOrderDescriptor
}
}
int32_t
tscFlushTmpBuffer
(
tExtMemBuffer
*
pMemoryBuf
,
tOrderDescriptor
*
pDesc
,
tFilePage
*
pPage
,
int32_t
orderType
)
{
int32_t
tscFlushTmpBuffer
(
tExtMemBuffer
*
pMemoryBuf
,
tOrderDescriptor
*
pDesc
,
tFilePage
*
pPage
,
int32_t
orderType
)
{
int32_t
ret
=
tscFlushTmpBufferImpl
(
pMemoryBuf
,
pDesc
,
pPage
,
orderType
)
;
int32_t
ret
=
0
;
if
(
ret
!=
0
)
{
if
(
(
ret
=
tscFlushTmpBufferImpl
(
pMemoryBuf
,
pDesc
,
pPage
,
orderType
))
!=
0
)
{
return
-
1
;
return
ret
;
}
}
if
(
!
tExtMemBufferFlush
(
pMemoryBuf
)
)
{
if
(
(
ret
=
tExtMemBufferFlush
(
pMemoryBuf
))
!=
0
)
{
return
-
1
;
return
ret
;
}
}
return
0
;
return
0
;
...
@@ -440,9 +440,9 @@ int32_t saveToBuffer(tExtMemBuffer *pMemoryBuf, tOrderDescriptor *pDesc, tFilePa
...
@@ -440,9 +440,9 @@ int32_t saveToBuffer(tExtMemBuffer *pMemoryBuf, tOrderDescriptor *pDesc, tFilePa
// current buffer is full, need to flushed to disk
// current buffer is full, need to flushed to disk
assert
(
pPage
->
num
==
pModel
->
capacity
);
assert
(
pPage
->
num
==
pModel
->
capacity
);
int32_t
ret
=
tscFlushTmpBuffer
(
pMemoryBuf
,
pDesc
,
pPage
,
orderType
);
int32_t
code
=
tscFlushTmpBuffer
(
pMemoryBuf
,
pDesc
,
pPage
,
orderType
);
if
(
ret
!=
0
)
{
if
(
code
!=
0
)
{
return
-
1
;
return
code
;
}
}
int32_t
remain
=
numOfRows
-
numOfRemainEntries
;
int32_t
remain
=
numOfRows
-
numOfRemainEntries
;
...
@@ -458,8 +458,8 @@ int32_t saveToBuffer(tExtMemBuffer *pMemoryBuf, tOrderDescriptor *pDesc, tFilePa
...
@@ -458,8 +458,8 @@ int32_t saveToBuffer(tExtMemBuffer *pMemoryBuf, tOrderDescriptor *pDesc, tFilePa
tColModelAppend
(
pModel
,
pPage
,
data
,
numOfRows
-
remain
,
numOfWriteElems
,
numOfRows
);
tColModelAppend
(
pModel
,
pPage
,
data
,
numOfRows
-
remain
,
numOfWriteElems
,
numOfRows
);
if
(
pPage
->
num
==
pModel
->
capacity
)
{
if
(
pPage
->
num
==
pModel
->
capacity
)
{
if
(
tscFlushTmpBuffer
(
pMemoryBuf
,
pDesc
,
pPage
,
orderType
)
!=
TSDB_CODE_SUCCESS
)
{
if
(
(
code
=
tscFlushTmpBuffer
(
pMemoryBuf
,
pDesc
,
pPage
,
orderType
)
)
!=
TSDB_CODE_SUCCESS
)
{
return
-
1
;
return
code
;
}
}
}
else
{
}
else
{
pPage
->
num
=
numOfWriteElems
;
pPage
->
num
=
numOfWriteElems
;
...
...
src/client/src/tscSQLParser.c
浏览文件 @
0d3d2a90
...
@@ -2622,7 +2622,7 @@ static int32_t doExtractColumnFilterInfo(SQueryInfo* pQueryInfo, SColumnFilterIn
...
@@ -2622,7 +2622,7 @@ static int32_t doExtractColumnFilterInfo(SQueryInfo* pQueryInfo, SColumnFilterIn
tVariantDump
(
&
pRight
->
val
,
(
char
*
)
&
pColumnFilter
->
upperBndd
,
colType
,
false
);
tVariantDump
(
&
pRight
->
val
,
(
char
*
)
&
pColumnFilter
->
upperBndd
,
colType
,
false
);
}
else
{
// TK_GT,TK_GE,TK_EQ,TK_NE are based on the pColumn->lowerBndd
}
else
{
// TK_GT,TK_GE,TK_EQ,TK_NE are based on the pColumn->lowerBndd
if
(
colType
==
TSDB_DATA_TYPE_BINARY
)
{
if
(
colType
==
TSDB_DATA_TYPE_BINARY
)
{
pColumnFilter
->
pz
=
(
int64_t
)
calloc
(
1
,
pRight
->
val
.
nLen
+
1
);
pColumnFilter
->
pz
=
(
int64_t
)
calloc
(
1
,
pRight
->
val
.
nLen
+
TSDB_NCHAR_SIZE
);
pColumnFilter
->
len
=
pRight
->
val
.
nLen
;
pColumnFilter
->
len
=
pRight
->
val
.
nLen
;
tVariantDump
(
&
pRight
->
val
,
(
char
*
)
pColumnFilter
->
pz
,
colType
,
false
);
tVariantDump
(
&
pRight
->
val
,
(
char
*
)
pColumnFilter
->
pz
,
colType
,
false
);
...
...
src/client/src/tscServer.c
浏览文件 @
0d3d2a90
...
@@ -412,7 +412,6 @@ void tscKillSTableQuery(SSqlObj *pSql) {
...
@@ -412,7 +412,6 @@ void tscKillSTableQuery(SSqlObj *pSql) {
for
(
int
i
=
0
;
i
<
pSql
->
numOfSubs
;
++
i
)
{
for
(
int
i
=
0
;
i
<
pSql
->
numOfSubs
;
++
i
)
{
SSqlObj
*
pSub
=
pSql
->
pSubs
[
i
];
SSqlObj
*
pSub
=
pSql
->
pSubs
[
i
];
if
(
pSub
==
NULL
)
{
if
(
pSub
==
NULL
)
{
continue
;
continue
;
}
}
...
...
src/client/src/tscSql.c
浏览文件 @
0d3d2a90
...
@@ -147,6 +147,8 @@ static void syncConnCallback(void *param, TAOS_RES *tres, int code) {
...
@@ -147,6 +147,8 @@ static void syncConnCallback(void *param, TAOS_RES *tres, int code) {
TAOS
*
taos_connect
(
const
char
*
ip
,
const
char
*
user
,
const
char
*
pass
,
const
char
*
db
,
uint16_t
port
)
{
TAOS
*
taos_connect
(
const
char
*
ip
,
const
char
*
user
,
const
char
*
pass
,
const
char
*
db
,
uint16_t
port
)
{
tscTrace
(
"try to create a connection to %s:%u, user:%s db:%s"
,
ip
,
port
,
user
,
db
);
tscTrace
(
"try to create a connection to %s:%u, user:%s db:%s"
,
ip
,
port
,
user
,
db
);
if
(
user
==
NULL
)
user
=
TSDB_DEFAULT_USER
;
if
(
pass
==
NULL
)
pass
=
TSDB_DEFAULT_PASS
;
STscObj
*
pObj
=
NULL
;
STscObj
*
pObj
=
NULL
;
SSqlObj
*
pSql
=
taosConnectImpl
(
ip
,
user
,
pass
,
db
,
port
,
syncConnCallback
,
NULL
,
(
void
**
)
&
pObj
);
SSqlObj
*
pSql
=
taosConnectImpl
(
ip
,
user
,
pass
,
db
,
port
,
syncConnCallback
,
NULL
,
(
void
**
)
&
pObj
);
...
@@ -607,7 +609,9 @@ int* taos_fetch_lengths(TAOS_RES *res) {
...
@@ -607,7 +609,9 @@ int* taos_fetch_lengths(TAOS_RES *res) {
char
*
taos_get_client_info
()
{
return
version
;
}
char
*
taos_get_client_info
()
{
return
version
;
}
void
taos_stop_query
(
TAOS_RES
*
res
)
{
void
taos_stop_query
(
TAOS_RES
*
res
)
{
if
(
res
==
NULL
)
return
;
if
(
res
==
NULL
)
{
return
;
}
SSqlObj
*
pSql
=
(
SSqlObj
*
)
res
;
SSqlObj
*
pSql
=
(
SSqlObj
*
)
res
;
SSqlCmd
*
pCmd
=
&
pSql
->
cmd
;
SSqlCmd
*
pCmd
=
&
pSql
->
cmd
;
...
...
src/client/src/tscSubquery.c
浏览文件 @
0d3d2a90
...
@@ -1492,7 +1492,7 @@ static void tscAbortFurtherRetryRetrieval(SRetrieveSupport *trsupport, TAOS_RES
...
@@ -1492,7 +1492,7 @@ static void tscAbortFurtherRetryRetrieval(SRetrieveSupport *trsupport, TAOS_RES
tscError
(
"sub:%p failed to flush data to disk:reason:%s"
,
tres
,
lpMsgBuf
);
tscError
(
"sub:%p failed to flush data to disk:reason:%s"
,
tres
,
lpMsgBuf
);
LocalFree
(
lpMsgBuf
);
LocalFree
(
lpMsgBuf
);
#else
#else
tscError
(
"sub:%p failed to flush data to disk
:reason:%s"
,
tres
,
strerror
(
errno
));
tscError
(
"sub:%p failed to flush data to disk
, reason:%s"
,
tres
,
tstrerror
(
code
));
#endif
#endif
SSqlObj
*
pParentSql
=
trsupport
->
pParentSqlObj
;
SSqlObj
*
pParentSql
=
trsupport
->
pParentSqlObj
;
...
@@ -1501,7 +1501,6 @@ static void tscAbortFurtherRetryRetrieval(SRetrieveSupport *trsupport, TAOS_RES
...
@@ -1501,7 +1501,6 @@ static void tscAbortFurtherRetryRetrieval(SRetrieveSupport *trsupport, TAOS_RES
trsupport
->
numOfRetry
=
MAX_NUM_OF_SUBQUERY_RETRY
;
trsupport
->
numOfRetry
=
MAX_NUM_OF_SUBQUERY_RETRY
;
pthread_mutex_unlock
(
&
trsupport
->
queryMutex
);
pthread_mutex_unlock
(
&
trsupport
->
queryMutex
);
tscHandleSubqueryError
(
trsupport
,
tres
,
pParentSql
->
res
.
code
);
tscHandleSubqueryError
(
trsupport
,
tres
,
pParentSql
->
res
.
code
);
}
}
...
@@ -1630,10 +1629,9 @@ static void tscAllDataRetrievedFromDnode(SRetrieveSupport *trsupport, SSqlObj* p
...
@@ -1630,10 +1629,9 @@ static void tscAllDataRetrievedFromDnode(SRetrieveSupport *trsupport, SSqlObj* p
// each result for a vnode is ordered as an independant list,
// each result for a vnode is ordered as an independant list,
// then used as an input of loser tree for disk-based merge routine
// then used as an input of loser tree for disk-based merge routine
int32_t
ret
=
tscFlushTmpBuffer
(
trsupport
->
pExtMemBuffer
[
idx
],
pDesc
,
trsupport
->
localBuffer
,
int32_t
code
=
tscFlushTmpBuffer
(
trsupport
->
pExtMemBuffer
[
idx
],
pDesc
,
trsupport
->
localBuffer
,
pQueryInfo
->
groupbyExpr
.
orderType
);
pQueryInfo
->
groupbyExpr
.
orderType
);
if
(
code
!=
0
)
{
// set no disk space error info, and abort retry
if
(
ret
!=
0
)
{
// set no disk space error info, and abort retry
return
tscAbortFurtherRetryRetrieval
(
trsupport
,
pSql
,
code
);
return
tscAbortFurtherRetryRetrieval
(
trsupport
,
pSql
,
TSDB_CODE_TSC_NO_DISKSPACE
);
}
}
int32_t
remain
=
-
1
;
int32_t
remain
=
-
1
;
...
@@ -1704,7 +1702,7 @@ static void tscRetrieveFromDnodeCallBack(void *param, TAOS_RES *tres, int numOfR
...
@@ -1704,7 +1702,7 @@ static void tscRetrieveFromDnodeCallBack(void *param, TAOS_RES *tres, int numOfR
tscTrace
(
"%p sub:%p retrieve numOfRows:%"
PRId64
" totalNumOfRows:%"
PRIu64
" from ip:%s, orderOfSub:%d"
,
pPObj
,
pSql
,
tscTrace
(
"%p sub:%p retrieve numOfRows:%"
PRId64
" totalNumOfRows:%"
PRIu64
" from ip:%s, orderOfSub:%d"
,
pPObj
,
pSql
,
pRes
->
numOfRows
,
pState
->
numOfRetrievedRows
,
pSql
->
ipList
.
fqdn
[
pSql
->
ipList
.
inUse
],
idx
);
pRes
->
numOfRows
,
pState
->
numOfRetrievedRows
,
pSql
->
ipList
.
fqdn
[
pSql
->
ipList
.
inUse
],
idx
);
if
(
num
>
tsMaxNumOfOrderedResults
&&
tscIsProjectionQueryOnSTable
(
pQueryInfo
,
0
))
{
if
(
num
>
tsMaxNumOfOrderedResults
&&
tscIsProjectionQueryOnSTable
(
pQueryInfo
,
0
))
{
tscError
(
"%p sub:%p num of OrderedRes is too many, max allowed:%"
PRId32
" , current:%"
PRId64
,
tscError
(
"%p sub:%p num of OrderedRes is too many, max allowed:%"
PRId32
" , current:%"
PRId64
,
pPObj
,
pSql
,
tsMaxNumOfOrderedResults
,
num
);
pPObj
,
pSql
,
tsMaxNumOfOrderedResults
,
num
);
...
@@ -1729,7 +1727,7 @@ static void tscRetrieveFromDnodeCallBack(void *param, TAOS_RES *tres, int numOfR
...
@@ -1729,7 +1727,7 @@ static void tscRetrieveFromDnodeCallBack(void *param, TAOS_RES *tres, int numOfR
int32_t
ret
=
saveToBuffer
(
trsupport
->
pExtMemBuffer
[
idx
],
pDesc
,
trsupport
->
localBuffer
,
pRes
->
data
,
int32_t
ret
=
saveToBuffer
(
trsupport
->
pExtMemBuffer
[
idx
],
pDesc
,
trsupport
->
localBuffer
,
pRes
->
data
,
pRes
->
numOfRows
,
pQueryInfo
->
groupbyExpr
.
orderType
);
pRes
->
numOfRows
,
pQueryInfo
->
groupbyExpr
.
orderType
);
if
(
ret
<
0
)
{
// set no disk space error info, and abort retry
if
(
ret
!=
0
)
{
// set no disk space error info, and abort retry
tscAbortFurtherRetryRetrieval
(
trsupport
,
tres
,
TSDB_CODE_TSC_NO_DISKSPACE
);
tscAbortFurtherRetryRetrieval
(
trsupport
,
tres
,
TSDB_CODE_TSC_NO_DISKSPACE
);
pthread_mutex_unlock
(
&
trsupport
->
queryMutex
);
pthread_mutex_unlock
(
&
trsupport
->
queryMutex
);
...
@@ -1988,6 +1986,7 @@ void tscBuildResFromSubqueries(SSqlObj *pSql) {
...
@@ -1988,6 +1986,7 @@ void tscBuildResFromSubqueries(SSqlObj *pSql) {
SColumnIndex
*
pIndex
=
&
pRes
->
pColumnIndex
[
i
];
SColumnIndex
*
pIndex
=
&
pRes
->
pColumnIndex
[
i
];
SSqlRes
*
pRes1
=
&
pSql
->
pSubs
[
pIndex
->
tableIndex
]
->
res
;
SSqlRes
*
pRes1
=
&
pSql
->
pSubs
[
pIndex
->
tableIndex
]
->
res
;
pRes
->
tsrow
[
i
]
=
pRes1
->
tsrow
[
pIndex
->
columnIndex
];
pRes
->
tsrow
[
i
]
=
pRes1
->
tsrow
[
pIndex
->
columnIndex
];
pRes
->
length
[
i
]
=
pRes1
->
length
[
pIndex
->
columnIndex
];
}
}
pRes
->
numOfClauseTotal
++
;
pRes
->
numOfClauseTotal
++
;
...
...
src/common/inc/tglobal.h
浏览文件 @
0d3d2a90
...
@@ -92,10 +92,6 @@ extern int32_t tsNumOfMnodes;
...
@@ -92,10 +92,6 @@ extern int32_t tsNumOfMnodes;
extern
int32_t
tsMaxShellConns
;
extern
int32_t
tsMaxShellConns
;
extern
int32_t
tsMaxTables
;
extern
int32_t
tsMaxTables
;
extern
char
tsDefaultDB
[];
extern
char
tsDefaultUser
[];
extern
char
tsDefaultPass
[];
extern
char
tsMqttBrokerAddress
[];
extern
char
tsMqttBrokerAddress
[];
extern
char
tsMqttBrokerClientId
[];
extern
char
tsMqttBrokerClientId
[];
...
...
src/common/src/tglobal.c
浏览文件 @
0d3d2a90
...
@@ -109,10 +109,6 @@ int32_t tsReplications = TSDB_DEFAULT_REPLICA_NUM;
...
@@ -109,10 +109,6 @@ int32_t tsReplications = TSDB_DEFAULT_REPLICA_NUM;
int16_t
tsAffectedRowsMod
=
0
;
int16_t
tsAffectedRowsMod
=
0
;
int32_t
tsNumOfMnodes
=
3
;
int32_t
tsNumOfMnodes
=
3
;
int32_t
tsMaxShellConns
=
5000
;
int32_t
tsMaxShellConns
=
5000
;
char
tsDefaultDB
[
TSDB_DB_NAME_LEN
]
=
{
0
};
char
tsDefaultUser
[
64
]
=
"root"
;
char
tsDefaultPass
[
64
]
=
"taosdata"
;
int32_t
tsMaxConnections
=
5000
;
int32_t
tsMaxConnections
=
5000
;
int32_t
tsBalanceInterval
=
300
;
// seconds
int32_t
tsBalanceInterval
=
300
;
// seconds
...
@@ -713,37 +709,6 @@ static void doInitGlobalConfig() {
...
@@ -713,37 +709,6 @@ static void doInitGlobalConfig() {
cfg
.
unitType
=
TAOS_CFG_UTYPE_NONE
;
cfg
.
unitType
=
TAOS_CFG_UTYPE_NONE
;
taosInitConfigOption
(
cfg
);
taosInitConfigOption
(
cfg
);
// login configs
cfg
.
option
=
"defaultDB"
;
cfg
.
ptr
=
tsDefaultDB
;
cfg
.
valType
=
TAOS_CFG_VTYPE_STRING
;
cfg
.
cfgType
=
TSDB_CFG_CTYPE_B_CONFIG
|
TSDB_CFG_CTYPE_B_CLIENT
;
cfg
.
minValue
=
0
;
cfg
.
maxValue
=
0
;
cfg
.
ptrLength
=
TSDB_DB_NAME_LEN
-
1
;
cfg
.
unitType
=
TAOS_CFG_UTYPE_NONE
;
taosInitConfigOption
(
cfg
);
cfg
.
option
=
"defaultUser"
;
cfg
.
ptr
=
tsDefaultUser
;
cfg
.
valType
=
TAOS_CFG_VTYPE_STRING
;
cfg
.
cfgType
=
TSDB_CFG_CTYPE_B_CONFIG
|
TSDB_CFG_CTYPE_B_CLIENT
;
cfg
.
minValue
=
0
;
cfg
.
maxValue
=
0
;
cfg
.
ptrLength
=
TSDB_USER_LEN
-
1
;
cfg
.
unitType
=
TAOS_CFG_UTYPE_NONE
;
taosInitConfigOption
(
cfg
);
cfg
.
option
=
"defaultPass"
;
cfg
.
ptr
=
tsDefaultPass
;
cfg
.
valType
=
TAOS_CFG_VTYPE_STRING
;
cfg
.
cfgType
=
TSDB_CFG_CTYPE_B_CONFIG
|
TSDB_CFG_CTYPE_B_CLIENT
|
TSDB_CFG_CTYPE_B_NOT_PRINT
;
cfg
.
minValue
=
0
;
cfg
.
maxValue
=
0
;
cfg
.
ptrLength
=
TSDB_PASSWORD_LEN
-
1
;
cfg
.
unitType
=
TAOS_CFG_UTYPE_NONE
;
taosInitConfigOption
(
cfg
);
cfg
.
option
=
"mqttBrokerAddress"
;
cfg
.
option
=
"mqttBrokerAddress"
;
cfg
.
ptr
=
tsMqttBrokerAddress
;
cfg
.
ptr
=
tsMqttBrokerAddress
;
cfg
.
valType
=
TAOS_CFG_VTYPE_STRING
;
cfg
.
valType
=
TAOS_CFG_VTYPE_STRING
;
...
...
src/connector/jdbc/.classpath
0 → 100644
浏览文件 @
0d3d2a90
<?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
浏览文件 @
0d3d2a90
<?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
浏览文件 @
cbb70cc5
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
浏览文件 @
cbb70cc5
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
浏览文件 @
cbb70cc5
activeProfiles=
eclipse.preferences.version=1
resolveWorkspaceProjects=true
version=1
src/connector/jdbc/pom.xml
浏览文件 @
0d3d2a90
<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
浏览文件 @
0d3d2a90
...
@@ -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
浏览文件 @
cbb70cc5
/***************************************************************************
* 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
浏览文件 @
0d3d2a90
...
@@ -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
浏览文件 @
0d3d2a90
...
@@ -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
浏览文件 @
0d3d2a90
...
@@ -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
浏览文件 @
0d3d2a90
...
@@ -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
浏览文件 @
0d3d2a90
...
@@ -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
浏览文件 @
0d3d2a90
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
浏览文件 @
0d3d2a90
...
@@ -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
浏览文件 @
0d3d2a90
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
浏览文件 @
0d3d2a90
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
浏览文件 @
0d3d2a90
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
浏览文件 @
0d3d2a90
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
浏览文件 @
0d3d2a90
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
浏览文件 @
0d3d2a90
此差异已折叠。
点击以展开。
src/connector/jdbc/src/test/java/com/taosdata/jdbc/SelectTest.java
0 → 100644
浏览文件 @
0d3d2a90
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
浏览文件 @
0d3d2a90
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
浏览文件 @
0d3d2a90
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
浏览文件 @
0d3d2a90
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/cq/test/cqtest.c
浏览文件 @
0d3d2a90
...
@@ -48,8 +48,8 @@ int main(int argc, char *argv[]) {
...
@@ -48,8 +48,8 @@ int main(int argc, char *argv[]) {
taosInitLog
(
"cq.log"
,
100000
,
10
);
taosInitLog
(
"cq.log"
,
100000
,
10
);
SCqCfg
cqCfg
;
SCqCfg
cqCfg
;
strcpy
(
cqCfg
.
user
,
"root"
);
strcpy
(
cqCfg
.
user
,
TSDB_DEFAULT_USER
);
strcpy
(
cqCfg
.
pass
,
"taosdata"
);
strcpy
(
cqCfg
.
pass
,
TSDB_DEFAULT_PASS
);
cqCfg
.
vgId
=
2
;
cqCfg
.
vgId
=
2
;
cqCfg
.
cqWrite
=
writeToQueue
;
cqCfg
.
cqWrite
=
writeToQueue
;
...
...
src/inc/taosdef.h
浏览文件 @
0d3d2a90
...
@@ -83,6 +83,9 @@ extern const int32_t TYPE_BYTES[11];
...
@@ -83,6 +83,9 @@ extern const int32_t TYPE_BYTES[11];
#define TSDB_DATA_NULL_STR "NULL"
#define TSDB_DATA_NULL_STR "NULL"
#define TSDB_DATA_NULL_STR_L "null"
#define TSDB_DATA_NULL_STR_L "null"
#define TSDB_DEFAULT_USER "root"
#define TSDB_DEFAULT_PASS "taosdata"
#define TSDB_TRUE 1
#define TSDB_TRUE 1
#define TSDB_FALSE 0
#define TSDB_FALSE 0
#define TSDB_OK 0
#define TSDB_OK 0
...
...
src/kit/shell/src/shellEngine.c
浏览文件 @
0d3d2a90
...
@@ -56,11 +56,11 @@ TAOS *shellInit(SShellArguments *args) {
...
@@ -56,11 +56,11 @@ TAOS *shellInit(SShellArguments *args) {
if
(
args
->
is_use_passwd
)
{
if
(
args
->
is_use_passwd
)
{
if
(
args
->
password
==
NULL
)
args
->
password
=
getpass
(
"Enter password: "
);
if
(
args
->
password
==
NULL
)
args
->
password
=
getpass
(
"Enter password: "
);
}
else
{
}
else
{
args
->
password
=
tsDefaultPass
;
args
->
password
=
TSDB_DEFAULT_PASS
;
}
}
if
(
args
->
user
==
NULL
)
{
if
(
args
->
user
==
NULL
)
{
args
->
user
=
tsDefaultUser
;
args
->
user
=
TSDB_DEFAULT_USER
;
}
}
taos_init
();
taos_init
();
...
@@ -276,6 +276,8 @@ void shellRunCommandOnServer(TAOS *con, char command[]) {
...
@@ -276,6 +276,8 @@ void shellRunCommandOnServer(TAOS *con, char command[]) {
st
=
taosGetTimestampUs
();
st
=
taosGetTimestampUs
();
TAOS_RES
*
pSql
=
taos_query
(
con
,
command
);
TAOS_RES
*
pSql
=
taos_query
(
con
,
command
);
result
=
pSql
;
// set it into the global variable
if
(
taos_errno
(
pSql
))
{
if
(
taos_errno
(
pSql
))
{
taos_error
(
pSql
);
taos_error
(
pSql
);
return
;
return
;
...
@@ -284,7 +286,8 @@ void shellRunCommandOnServer(TAOS *con, char command[]) {
...
@@ -284,7 +286,8 @@ void shellRunCommandOnServer(TAOS *con, char command[]) {
if
(
regex_match
(
command
,
"^
\\
s*use
\\
s+[a-zA-Z0-9_]+
\\
s*;
\\
s*$"
,
REG_EXTENDED
|
REG_ICASE
))
{
if
(
regex_match
(
command
,
"^
\\
s*use
\\
s+[a-zA-Z0-9_]+
\\
s*;
\\
s*$"
,
REG_EXTENDED
|
REG_ICASE
))
{
fprintf
(
stdout
,
"Database changed.
\n\n
"
);
fprintf
(
stdout
,
"Database changed.
\n\n
"
);
fflush
(
stdout
);
fflush
(
stdout
);
result
=
NULL
;
taos_free_result
(
pSql
);
taos_free_result
(
pSql
);
return
;
return
;
}
}
...
@@ -294,6 +297,7 @@ void shellRunCommandOnServer(TAOS *con, char command[]) {
...
@@ -294,6 +297,7 @@ void shellRunCommandOnServer(TAOS *con, char command[]) {
int
error_no
=
0
;
int
error_no
=
0
;
int
numOfRows
=
shellDumpResult
(
pSql
,
fname
,
&
error_no
,
printMode
);
int
numOfRows
=
shellDumpResult
(
pSql
,
fname
,
&
error_no
,
printMode
);
if
(
numOfRows
<
0
)
{
if
(
numOfRows
<
0
)
{
result
=
NULL
;
taos_free_result
(
pSql
);
taos_free_result
(
pSql
);
return
;
return
;
}
}
...
@@ -315,7 +319,8 @@ void shellRunCommandOnServer(TAOS *con, char command[]) {
...
@@ -315,7 +319,8 @@ void shellRunCommandOnServer(TAOS *con, char command[]) {
if
(
fname
!=
NULL
)
{
if
(
fname
!=
NULL
)
{
wordfree
(
&
full_path
);
wordfree
(
&
full_path
);
}
}
result
=
NULL
;
taos_free_result
(
pSql
);
taos_free_result
(
pSql
);
}
}
...
@@ -419,8 +424,8 @@ static void dumpFieldToFile(FILE* fp, const char* val, TAOS_FIELD* field, int32_
...
@@ -419,8 +424,8 @@ static void dumpFieldToFile(FILE* fp, const char* val, TAOS_FIELD* field, int32_
}
}
}
}
static
int
dumpResultToFile
(
const
char
*
fname
,
TAOS_RES
*
result
)
{
static
int
dumpResultToFile
(
const
char
*
fname
,
TAOS_RES
*
tres
)
{
TAOS_ROW
row
=
taos_fetch_row
(
result
);
TAOS_ROW
row
=
taos_fetch_row
(
tres
);
if
(
row
==
NULL
)
{
if
(
row
==
NULL
)
{
return
0
;
return
0
;
}
}
...
@@ -441,9 +446,9 @@ static int dumpResultToFile(const char* fname, TAOS_RES* result) {
...
@@ -441,9 +446,9 @@ static int dumpResultToFile(const char* fname, TAOS_RES* result) {
wordfree
(
&
full_path
);
wordfree
(
&
full_path
);
int
num_fields
=
taos_num_fields
(
result
);
int
num_fields
=
taos_num_fields
(
tres
);
TAOS_FIELD
*
fields
=
taos_fetch_fields
(
result
);
TAOS_FIELD
*
fields
=
taos_fetch_fields
(
tres
);
int
precision
=
taos_result_precision
(
result
);
int
precision
=
taos_result_precision
(
tres
);
for
(
int
col
=
0
;
col
<
num_fields
;
col
++
)
{
for
(
int
col
=
0
;
col
<
num_fields
;
col
++
)
{
if
(
col
>
0
)
{
if
(
col
>
0
)
{
...
@@ -455,7 +460,7 @@ static int dumpResultToFile(const char* fname, TAOS_RES* result) {
...
@@ -455,7 +460,7 @@ static int dumpResultToFile(const char* fname, TAOS_RES* result) {
int
numOfRows
=
0
;
int
numOfRows
=
0
;
do
{
do
{
int32_t
*
length
=
taos_fetch_lengths
(
result
);
int32_t
*
length
=
taos_fetch_lengths
(
tres
);
for
(
int
i
=
0
;
i
<
num_fields
;
i
++
)
{
for
(
int
i
=
0
;
i
<
num_fields
;
i
++
)
{
if
(
i
>
0
)
{
if
(
i
>
0
)
{
fputc
(
','
,
fp
);
fputc
(
','
,
fp
);
...
@@ -465,10 +470,13 @@ static int dumpResultToFile(const char* fname, TAOS_RES* result) {
...
@@ -465,10 +470,13 @@ static int dumpResultToFile(const char* fname, TAOS_RES* result) {
fputc
(
'\n'
,
fp
);
fputc
(
'\n'
,
fp
);
numOfRows
++
;
numOfRows
++
;
row
=
taos_fetch_row
(
result
);
row
=
taos_fetch_row
(
tres
);
}
while
(
row
!=
NULL
);
}
while
(
row
!=
NULL
);
result
=
NULL
;
taos_free_result
(
tres
);
fclose
(
fp
);
fclose
(
fp
);
return
numOfRows
;
return
numOfRows
;
}
}
...
@@ -769,8 +777,7 @@ void write_history() {
...
@@ -769,8 +777,7 @@ void write_history() {
void
taos_error
(
TAOS_RES
*
tres
)
{
void
taos_error
(
TAOS_RES
*
tres
)
{
fprintf
(
stderr
,
"
\n
DB error: %s
\n
"
,
taos_errstr
(
tres
));
fprintf
(
stderr
,
"
\n
DB error: %s
\n
"
,
taos_errstr
(
tres
));
result
=
NULL
;
/* free local resouce: allocated memory/metric-meta refcnt */
taos_free_result
(
tres
);
taos_free_result
(
tres
);
}
}
...
@@ -845,9 +852,9 @@ void shellGetGrantInfo(void *con) {
...
@@ -845,9 +852,9 @@ void shellGetGrantInfo(void *con) {
char
sql
[]
=
"show grants"
;
char
sql
[]
=
"show grants"
;
result
=
taos_query
(
con
,
sql
);
TAOS_RES
*
tres
=
taos_query
(
con
,
sql
);
int
code
=
taos_errno
(
result
);
int
code
=
taos_errno
(
tres
);
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
if
(
code
==
TSDB_CODE_COM_OPS_NOT_SUPPORT
)
{
if
(
code
==
TSDB_CODE_COM_OPS_NOT_SUPPORT
)
{
fprintf
(
stdout
,
"Server is Community Edition, version is %s
\n\n
"
,
taos_get_server_info
(
con
));
fprintf
(
stdout
,
"Server is Community Edition, version is %s
\n\n
"
,
taos_get_server_info
(
con
));
...
@@ -857,18 +864,18 @@ void shellGetGrantInfo(void *con) {
...
@@ -857,18 +864,18 @@ void shellGetGrantInfo(void *con) {
return
;
return
;
}
}
int
num_fields
=
taos_field_count
(
result
);
int
num_fields
=
taos_field_count
(
tres
);
if
(
num_fields
==
0
)
{
if
(
num_fields
==
0
)
{
fprintf
(
stderr
,
"
\n
Invalid grant information.
\n
"
);
fprintf
(
stderr
,
"
\n
Invalid grant information.
\n
"
);
exit
(
0
);
exit
(
0
);
}
else
{
}
else
{
if
(
result
==
NULL
)
{
if
(
tres
==
NULL
)
{
fprintf
(
stderr
,
"
\n
Grant information is null.
\n
"
);
fprintf
(
stderr
,
"
\n
Grant information is null.
\n
"
);
exit
(
0
);
exit
(
0
);
}
}
TAOS_FIELD
*
fields
=
taos_fetch_fields
(
result
);
TAOS_FIELD
*
fields
=
taos_fetch_fields
(
tres
);
TAOS_ROW
row
=
taos_fetch_row
(
result
);
TAOS_ROW
row
=
taos_fetch_row
(
tres
);
if
(
row
==
NULL
)
{
if
(
row
==
NULL
)
{
fprintf
(
stderr
,
"
\n
Failed to get grant information from server. Abort.
\n
"
);
fprintf
(
stderr
,
"
\n
Failed to get grant information from server. Abort.
\n
"
);
exit
(
0
);
exit
(
0
);
...
@@ -888,8 +895,8 @@ void shellGetGrantInfo(void *con) {
...
@@ -888,8 +895,8 @@ void shellGetGrantInfo(void *con) {
fprintf
(
stdout
,
"Server is Enterprise %s Edition, version is %s and will expire at %s.
\n
"
,
serverVersion
,
taos_get_server_info
(
con
),
expiretime
);
fprintf
(
stdout
,
"Server is Enterprise %s Edition, version is %s and will expire at %s.
\n
"
,
serverVersion
,
taos_get_server_info
(
con
),
expiretime
);
}
}
taos_free_result
(
result
);
result
=
NULL
;
result
=
NULL
;
taos_free_result
(
tres
);
}
}
fprintf
(
stdout
,
"
\n
"
);
fprintf
(
stdout
,
"
\n
"
);
...
...
src/kit/shell/src/shellMain.c
浏览文件 @
0d3d2a90
...
@@ -15,7 +15,6 @@
...
@@ -15,7 +15,6 @@
#include "os.h"
#include "os.h"
#include "shell.h"
#include "shell.h"
#include "tsclient.h"
pthread_t
pid
;
pthread_t
pid
;
...
@@ -23,14 +22,6 @@ pthread_t pid;
...
@@ -23,14 +22,6 @@ pthread_t pid;
void
interruptHandler
(
int
signum
)
{
void
interruptHandler
(
int
signum
)
{
#ifdef LINUX
#ifdef LINUX
taos_stop_query
(
result
);
taos_stop_query
(
result
);
if
(
result
!=
NULL
)
{
/*
* we need to free result in async model, in order to avoid free
* results while the master thread is waiting for server response.
*/
tscQueueAsyncFreeResult
(
result
);
}
result
=
NULL
;
result
=
NULL
;
#else
#else
printf
(
"
\n
Receive ctrl+c or other signal, quit shell.
\n
"
);
printf
(
"
\n
Receive ctrl+c or other signal, quit shell.
\n
"
);
...
...
src/kit/taosdemo/taosdemo.c
浏览文件 @
0d3d2a90
...
@@ -306,7 +306,7 @@ double getCurrentTime();
...
@@ -306,7 +306,7 @@ double getCurrentTime();
void
callBack
(
void
*
param
,
TAOS_RES
*
res
,
int
code
);
void
callBack
(
void
*
param
,
TAOS_RES
*
res
,
int
code
);
int
main
(
int
argc
,
char
*
argv
[])
{
int
main
(
int
argc
,
char
*
argv
[])
{
SDemoArguments
arguments
=
{
NULL
,
// host
SDemoArguments
arguments
=
{
NULL
,
// host
0
,
// port
0
,
// port
"root"
,
// user
"root"
,
// user
"taosdata"
,
// password
"taosdata"
,
// password
...
...
src/kit/taosdump/taosdump.c
浏览文件 @
0d3d2a90
...
@@ -34,6 +34,8 @@
...
@@ -34,6 +34,8 @@
#include "taosdef.h"
#include "taosdef.h"
#include "tutil.h"
#include "tutil.h"
#include "tglobal.h"
#define COMMAND_SIZE 65536
#define COMMAND_SIZE 65536
#define DEFAULT_DUMP_FILE "taosdump.sql"
#define DEFAULT_DUMP_FILE "taosdump.sql"
...
@@ -293,7 +295,6 @@ static error_t parse_opt(int key, char *arg, struct argp_state *state) {
...
@@ -293,7 +295,6 @@ static error_t parse_opt(int key, char *arg, struct argp_state *state) {
static
struct
argp
argp
=
{
options
,
parse_opt
,
args_doc
,
doc
};
static
struct
argp
argp
=
{
options
,
parse_opt
,
args_doc
,
doc
};
TAOS
*
taos
=
NULL
;
TAOS
*
taos
=
NULL
;
TAOS_RES
*
result
=
NULL
;
char
*
command
=
NULL
;
char
*
command
=
NULL
;
char
*
lcommand
=
NULL
;
char
*
lcommand
=
NULL
;
char
*
buffer
=
NULL
;
char
*
buffer
=
NULL
;
...
@@ -324,7 +325,7 @@ void taosFreeDbInfos();
...
@@ -324,7 +325,7 @@ void taosFreeDbInfos();
int
main
(
int
argc
,
char
*
argv
[])
{
int
main
(
int
argc
,
char
*
argv
[])
{
SDumpArguments
arguments
=
{
SDumpArguments
arguments
=
{
// connection option
// connection option
NULL
,
"root"
,
"taosdata"
,
0
,
NULL
,
TSDB_DEFAULT_USER
,
TSDB_DEFAULT_PASS
,
0
,
// output file
// output file
DEFAULT_DUMP_FILE
,
DEFAULT_DUMP_FILE
,
NULL
,
DEFAULT_DUMP_FILE
,
DEFAULT_DUMP_FILE
,
NULL
,
// dump unit option
// dump unit option
...
@@ -463,10 +464,10 @@ int taosDumpOut(SDumpArguments *arguments) {
...
@@ -463,10 +464,10 @@ int taosDumpOut(SDumpArguments *arguments) {
taosDumpCharset
(
fp
);
taosDumpCharset
(
fp
);
sprintf
(
command
,
"show databases"
);
sprintf
(
command
,
"show databases"
);
result
=
taos_query
(
taos
,
command
);
TAOS_RES
*
result
=
taos_query
(
taos
,
command
);
int32_t
code
=
taos_errno
(
result
);
int32_t
code
=
taos_errno
(
result
);
if
(
code
!=
0
)
{
if
(
code
!=
0
)
{
fprintf
(
stderr
,
"failed to run command: %s, reason: %s
\n
"
,
command
,
taos_errstr
(
taos
));
fprintf
(
stderr
,
"failed to run command: %s, reason: %s
\n
"
,
command
,
taos_errstr
(
result
));
taos_free_result
(
result
);
taos_free_result
(
result
);
goto
_exit_failure
;
goto
_exit_failure
;
}
}
...
@@ -502,7 +503,7 @@ int taosDumpOut(SDumpArguments *arguments) {
...
@@ -502,7 +503,7 @@ int taosDumpOut(SDumpArguments *arguments) {
}
}
strncpy
(
dbInfos
[
count
]
->
name
,
(
char
*
)
row
[
TSDB_SHOW_DB_NAME_INDEX
],
fields
[
TSDB_SHOW_DB_NAME_INDEX
].
bytes
);
strncpy
(
dbInfos
[
count
]
->
name
,
(
char
*
)
row
[
TSDB_SHOW_DB_NAME_INDEX
],
fields
[
TSDB_SHOW_DB_NAME_INDEX
].
bytes
);
if
(
strcmp
(
arguments
->
user
,
"root"
)
==
0
)
{
if
(
strcmp
(
arguments
->
user
,
TSDB_DEFAULT_USER
)
==
0
)
{
dbInfos
[
count
]
->
replica
=
(
int
)(
*
((
int16_t
*
)
row
[
TSDB_SHOW_DB_REPLICA_INDEX
]));
dbInfos
[
count
]
->
replica
=
(
int
)(
*
((
int16_t
*
)
row
[
TSDB_SHOW_DB_REPLICA_INDEX
]));
dbInfos
[
count
]
->
days
=
(
int
)(
*
((
int16_t
*
)
row
[
TSDB_SHOW_DB_DAYS_INDEX
]));
dbInfos
[
count
]
->
days
=
(
int
)(
*
((
int16_t
*
)
row
[
TSDB_SHOW_DB_DAYS_INDEX
]));
dbInfos
[
count
]
->
keep
=
*
((
int
*
)
row
[
TSDB_SHOW_DB_KEEP_INDEX
]);
dbInfos
[
count
]
->
keep
=
*
((
int
*
)
row
[
TSDB_SHOW_DB_KEEP_INDEX
]);
...
@@ -613,7 +614,7 @@ int taosDumpDb(SDbInfo *dbInfo, SDumpArguments *arguments, FILE *fp) {
...
@@ -613,7 +614,7 @@ int taosDumpDb(SDbInfo *dbInfo, SDumpArguments *arguments, FILE *fp) {
fprintf
(
fp
,
"USE %s
\n\n
"
,
dbInfo
->
name
);
fprintf
(
fp
,
"USE %s
\n\n
"
,
dbInfo
->
name
);
sprintf
(
command
,
"show tables"
);
sprintf
(
command
,
"show tables"
);
result
=
taos_query
(
taos
,
command
);
TAOS_RES
*
result
=
taos_query
(
taos
,
command
);
int32_t
code
=
taos_errno
(
result
);
int32_t
code
=
taos_errno
(
result
);
if
(
code
!=
0
)
{
if
(
code
!=
0
)
{
fprintf
(
stderr
,
"failed to run command %s, error: %s
\n
"
,
command
,
taos_errstr
(
result
));
fprintf
(
stderr
,
"failed to run command %s, error: %s
\n
"
,
command
,
taos_errstr
(
result
));
...
@@ -717,7 +718,7 @@ void taosDumpCreateMTableClause(STableDef *tableDes, char *metric, int numOfCols
...
@@ -717,7 +718,7 @@ void taosDumpCreateMTableClause(STableDef *tableDes, char *metric, int numOfCols
sprintf
(
command
,
"select %s from %s limit 1"
,
tableDes
->
cols
[
counter
].
field
,
tableDes
->
name
);
sprintf
(
command
,
"select %s from %s limit 1"
,
tableDes
->
cols
[
counter
].
field
,
tableDes
->
name
);
result
=
taos_query
(
taos
,
command
);
TAOS_RES
*
result
=
taos_query
(
taos
,
command
);
int32_t
code
=
taos_errno
(
result
);
int32_t
code
=
taos_errno
(
result
);
if
(
code
!=
0
)
{
if
(
code
!=
0
)
{
fprintf
(
stderr
,
"failed to run command %s, error: %s
\n
"
,
command
,
taos_errstr
(
result
));
fprintf
(
stderr
,
"failed to run command %s, error: %s
\n
"
,
command
,
taos_errstr
(
result
));
...
@@ -795,7 +796,7 @@ int taosGetTableDes(char *table, STableDef *tableDes) {
...
@@ -795,7 +796,7 @@ int taosGetTableDes(char *table, STableDef *tableDes) {
sprintf
(
command
,
"describe %s"
,
table
);
sprintf
(
command
,
"describe %s"
,
table
);
result
=
taos_query
(
taos
,
command
);
TAOS_RES
*
result
=
taos_query
(
taos
,
command
);
int32_t
code
=
taos_errno
(
result
);
int32_t
code
=
taos_errno
(
result
);
if
(
code
!=
0
)
{
if
(
code
!=
0
)
{
fprintf
(
stderr
,
"failed to run command %s, error: %s
\n
"
,
command
,
taos_errstr
(
result
));
fprintf
(
stderr
,
"failed to run command %s, error: %s
\n
"
,
command
,
taos_errstr
(
result
));
...
@@ -875,7 +876,7 @@ int32_t taosDumpMetric(char *metric, SDumpArguments *arguments, FILE *fp) {
...
@@ -875,7 +876,7 @@ int32_t taosDumpMetric(char *metric, SDumpArguments *arguments, FILE *fp) {
tstrncpy
(
tableRecord
.
metric
,
metric
,
TSDB_TABLE_NAME_LEN
);
tstrncpy
(
tableRecord
.
metric
,
metric
,
TSDB_TABLE_NAME_LEN
);
sprintf
(
command
,
"select tbname from %s"
,
metric
);
sprintf
(
command
,
"select tbname from %s"
,
metric
);
result
=
taos_query
(
taos
,
command
);
TAOS_RES
*
result
=
taos_query
(
taos
,
command
);
int32_t
code
=
taos_errno
(
result
);
int32_t
code
=
taos_errno
(
result
);
if
(
code
!=
0
)
{
if
(
code
!=
0
)
{
fprintf
(
stderr
,
"failed to run command %s, error: %s
\n
"
,
command
,
taos_errstr
(
result
));
fprintf
(
stderr
,
"failed to run command %s, error: %s
\n
"
,
command
,
taos_errstr
(
result
));
...
@@ -928,7 +929,7 @@ int taosDumpTableData(FILE *fp, char *tbname, SDumpArguments *arguments) {
...
@@ -928,7 +929,7 @@ int taosDumpTableData(FILE *fp, char *tbname, SDumpArguments *arguments) {
sprintf
(
command
,
"select * from %s where _c0 >= %"
PRId64
" and _c0 <= %"
PRId64
" order by _c0 asc"
,
tbname
,
arguments
->
start_time
,
sprintf
(
command
,
"select * from %s where _c0 >= %"
PRId64
" and _c0 <= %"
PRId64
" order by _c0 asc"
,
tbname
,
arguments
->
start_time
,
arguments
->
end_time
);
arguments
->
end_time
);
result
=
taos_query
(
taos
,
command
);
TAOS_RES
*
result
=
taos_query
(
taos
,
command
);
int32_t
code
=
taos_errno
(
result
);
int32_t
code
=
taos_errno
(
result
);
if
(
code
!=
0
)
{
if
(
code
!=
0
)
{
fprintf
(
stderr
,
"failed to run command %s, reason: %s
\n
"
,
command
,
taos_errstr
(
result
));
fprintf
(
stderr
,
"failed to run command %s, reason: %s
\n
"
,
command
,
taos_errstr
(
result
));
...
@@ -1177,9 +1178,13 @@ int taosDumpIn(SDumpArguments *arguments) {
...
@@ -1177,9 +1178,13 @@ int taosDumpIn(SDumpArguments *arguments) {
tcommand
=
command
;
tcommand
=
command
;
}
}
taosReplaceCtrlChar
(
tcommand
);
taosReplaceCtrlChar
(
tcommand
);
if
(
taos_query
(
taos
,
tcommand
)
==
NULL
)
TAOS_RES
*
result
=
taos_query
(
taos
,
tcommand
);
if
(
taos_errno
(
result
)
!=
0
){
fprintf
(
stderr
,
"linenu: %"
PRId64
" failed to run command %s reason:%s
\n
continue...
\n
"
,
linenu
,
command
,
fprintf
(
stderr
,
"linenu: %"
PRId64
" failed to run command %s reason:%s
\n
continue...
\n
"
,
linenu
,
command
,
taos_errstr
(
taos
));
taos_errstr
(
result
));
taos_free_result
(
result
);
}
pstr
=
command
;
pstr
=
command
;
pstr
[
0
]
=
'\0'
;
pstr
[
0
]
=
'\0'
;
...
@@ -1225,12 +1230,12 @@ int taosDumpIn(SDumpArguments *arguments) {
...
@@ -1225,12 +1230,12 @@ int taosDumpIn(SDumpArguments *arguments) {
tcommand
=
command
;
tcommand
=
command
;
}
}
taosReplaceCtrlChar
(
tcommand
);
taosReplaceCtrlChar
(
tcommand
);
result
=
taos_query
(
taos
,
tcommand
);
TAOS_RES
*
result
=
taos_query
(
taos
,
tcommand
);
int32_t
code
=
taos_errno
(
result
);
int32_t
code
=
taos_errno
(
result
);
if
(
code
!=
0
)
if
(
code
!=
0
)
{
{
fprintf
(
stderr
,
"linenu:%"
PRId64
" failed to run command %s reason: %s
\n
continue...
\n
"
,
linenu
,
command
,
fprintf
(
stderr
,
"linenu:%"
PRId64
" failed to run command %s reason: %s
\n
continue...
\n
"
,
linenu
,
command
,
taos_errstr
(
taos
));
taos_errstr
(
result
));
}
}
taos_free_result
(
result
);
taos_free_result
(
result
);
}
}
...
...
src/kit/taosnetwork/client.c
浏览文件 @
0d3d2a90
...
@@ -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
浏览文件 @
0d3d2a90
...
@@ -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
浏览文件 @
cbb70cc5
/*
* 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
浏览文件 @
cbb70cc5
/*
* 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
浏览文件 @
cbb70cc5
#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
浏览文件 @
cbb70cc5
#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
src/mnode/inc/mnodeDef.h
浏览文件 @
0d3d2a90
...
@@ -29,21 +29,28 @@ struct SAcctObj;
...
@@ -29,21 +29,28 @@ struct SAcctObj;
struct
SUserObj
;
struct
SUserObj
;
struct
SMnodeObj
;
struct
SMnodeObj
;
/*
struct define notes:
1. The first field must be the xxxxId field or name field , e.g. 'int32_t dnodeId', 'int32_t mnodeId', 'char name[]', 'char user[]', ...
2. From the dnodeId field to the updataEnd field, these information will be falled disc;
3. The fields behind the updataEnd field can be changed;
*/
typedef
struct
SDnodeObj
{
typedef
struct
SDnodeObj
{
int32_t
dnodeId
;
int32_t
dnodeId
;
uint16_t
dnodePort
;
char
dnodeFqdn
[
TSDB_FQDN_LEN
];
char
dnodeEp
[
TSDB_EP_LEN
];
int64_t
createdTime
;
uint32_t
lastAccess
;
int32_t
openVnodes
;
int32_t
openVnodes
;
int64_t
createdTime
;
int32_t
totalVnodes
;
// from dnode status msg, config information
int32_t
totalVnodes
;
// from dnode status msg, config information
int32_t
customScore
;
// config by user
int32_t
customScore
;
// config by user
uint32_t
lastAccess
;
uint16_t
numOfCores
;
// from dnode status msg
uint16_t
numOfCores
;
// from dnode status msg
uint16_t
dnodePort
;
char
dnodeFqdn
[
TSDB_FQDN_LEN
];
char
dnodeEp
[
TSDB_EP_LEN
];
int8_t
alternativeRole
;
// from dnode status msg, 0-any, 1-mgmt, 2-dnode
int8_t
alternativeRole
;
// from dnode status msg, 0-any, 1-mgmt, 2-dnode
int8_t
status
;
// set in balance function
int8_t
status
;
// set in balance function
int8_t
isMgmt
;
int8_t
isMgmt
;
int8_t
reserved
[
15
];
int8_t
reserved
0
[
14
];
int8_t
updateEnd
[
1
];
int8_t
updateEnd
[
1
];
int32_t
refCount
;
int32_t
refCount
;
uint32_t
moduleStatus
;
uint32_t
moduleStatus
;
...
@@ -54,15 +61,18 @@ typedef struct SDnodeObj {
...
@@ -54,15 +61,18 @@ typedef struct SDnodeObj {
int16_t
cpuAvgUsage
;
// calc from sys.cpu
int16_t
cpuAvgUsage
;
// calc from sys.cpu
int16_t
memoryAvgUsage
;
// calc from sys.mem
int16_t
memoryAvgUsage
;
// calc from sys.mem
int16_t
bandwidthUsage
;
// calc from sys.band
int16_t
bandwidthUsage
;
// calc from sys.band
int8_t
reserved1
[
2
];
}
SDnodeObj
;
}
SDnodeObj
;
typedef
struct
SMnodeObj
{
typedef
struct
SMnodeObj
{
int32_t
mnodeId
;
int32_t
mnodeId
;
int8_t
reserved0
[
4
];
int64_t
createdTime
;
int64_t
createdTime
;
int8_t
reserved
[
14
];
int8_t
reserved
1
[
7
];
int8_t
updateEnd
[
1
];
int8_t
updateEnd
[
1
];
int32_t
refCount
;
int32_t
refCount
;
int8_t
role
;
int8_t
role
;
int8_t
reserved2
[
3
];
}
SMnodeObj
;
}
SMnodeObj
;
typedef
struct
STableObj
{
typedef
struct
STableObj
{
...
@@ -71,34 +81,37 @@ typedef struct STableObj {
...
@@ -71,34 +81,37 @@ typedef struct STableObj {
}
STableObj
;
}
STableObj
;
typedef
struct
SSuperTableObj
{
typedef
struct
SSuperTableObj
{
STableObj
info
;
STableObj
info
;
int8_t
reserved0
[
3
];
// for fill struct STableObj to 4byte align
int32_t
sversion
;
uint64_t
uid
;
uint64_t
uid
;
int64_t
createdTime
;
int64_t
createdTime
;
int32_t
sversion
;
int32_t
tversion
;
int32_t
tversion
;
int32_t
numOfColumns
;
int32_t
numOfColumns
;
int32_t
numOfTags
;
int32_t
numOfTags
;
int8_t
reserved
[
15
];
int8_t
reserved
1
[
3
];
int8_t
updateEnd
[
1
];
int8_t
updateEnd
[
1
];
int32_t
refCount
;
int32_t
refCount
;
int32_t
numOfTables
;
int32_t
numOfTables
;
int16_t
nextColId
;
SSchema
*
schema
;
SSchema
*
schema
;
void
*
vgHash
;
void
*
vgHash
;
int16_t
nextColId
;
int8_t
reserved2
[
6
];
}
SSuperTableObj
;
}
SSuperTableObj
;
typedef
struct
{
typedef
struct
{
STableObj
info
;
STableObj
info
;
int8_t
reserved0
[
3
];
// for fill struct STableObj to 4byte align
int32_t
sversion
;
//used by normal table
uint64_t
uid
;
uint64_t
uid
;
uint64_t
suid
;
int64_t
createdTime
;
int64_t
createdTime
;
int32_t
sversion
;
//used by normal table
int32_t
numOfColumns
;
//used by normal table
int32_t
numOfColumns
;
//used by normal table
int32_t
sid
;
int32_t
sid
;
int32_t
vgId
;
int32_t
vgId
;
uint64_t
suid
;
int32_t
sqlLen
;
int32_t
sqlLen
;
int8_t
reserved
[
1
];
int8_t
updateEnd
[
1
];
int8_t
updateEnd
[
1
];
int8_t
reserved1
[
1
];
int16_t
nextColId
;
//used by normal table
int16_t
nextColId
;
//used by normal table
int32_t
refCount
;
int32_t
refCount
;
char
*
sql
;
//used by normal table
char
*
sql
;
//used by normal table
...
@@ -115,23 +128,24 @@ typedef struct {
...
@@ -115,23 +128,24 @@ typedef struct {
typedef
struct
SVgObj
{
typedef
struct
SVgObj
{
uint32_t
vgId
;
uint32_t
vgId
;
char
dbName
[
TSDB_DB_NAME_LEN
];
int64_t
createdTime
;
SVnodeGid
vnodeGid
[
TSDB_MAX_REPLICA
];
int32_t
numOfVnodes
;
int32_t
numOfVnodes
;
int64_t
createdTime
;
int32_t
lbDnodeId
;
int32_t
lbDnodeId
;
int32_t
lbTime
;
int32_t
lbTime
;
char
dbName
[
TSDB_DB_NAME_LEN
];
int8_t
inUse
;
int8_t
inUse
;
int8_t
accessState
;
int8_t
accessState
;
int8_t
reserved
[
12
];
int8_t
reserved0
[
5
];
SVnodeGid
vnodeGid
[
TSDB_MAX_REPLICA
];
int8_t
reserved1
[
7
];
int8_t
updateEnd
[
1
];
int8_t
updateEnd
[
1
];
int32_t
refCount
;
int32_t
refCount
;
struct
SVgObj
*
prev
,
*
next
;
struct
SDbObj
*
pDb
;
int32_t
numOfTables
;
int32_t
numOfTables
;
int64_t
totalStorage
;
int64_t
totalStorage
;
int64_t
compStorage
;
int64_t
compStorage
;
int64_t
pointsWritten
;
int64_t
pointsWritten
;
struct
SVgObj
*
prev
,
*
next
;
struct
SDbObj
*
pDb
;
void
*
idPool
;
void
*
idPool
;
SChildTableObj
**
tableList
;
SChildTableObj
**
tableList
;
}
SVgObj
;
}
SVgObj
;
...
@@ -151,17 +165,18 @@ typedef struct {
...
@@ -151,17 +165,18 @@ typedef struct {
int8_t
compression
;
int8_t
compression
;
int8_t
walLevel
;
int8_t
walLevel
;
int8_t
replications
;
int8_t
replications
;
int8_t
reserved
[
1
6
];
int8_t
reserved
[
1
2
];
}
SDbCfg
;
}
SDbCfg
;
typedef
struct
SDbObj
{
typedef
struct
SDbObj
{
char
name
[
TSDB_ACCT_LEN
+
TSDB_DB_NAME_LEN
];
char
name
[
TSDB_ACCT_LEN
+
TSDB_DB_NAME_LEN
];
int8_t
reserved0
[
4
];
char
acct
[
TSDB_USER_LEN
];
char
acct
[
TSDB_USER_LEN
];
int64_t
createdTime
;
int64_t
createdTime
;
int32_t
cfgVersion
;
int32_t
cfgVersion
;
SDbCfg
cfg
;
SDbCfg
cfg
;
int8_t
status
;
int8_t
status
;
int8_t
reserved
[
14
];
int8_t
reserved
1
[
14
];
int8_t
updateEnd
[
1
];
int8_t
updateEnd
[
1
];
int32_t
refCount
;
int32_t
refCount
;
int32_t
numOfVgroups
;
int32_t
numOfVgroups
;
...
@@ -186,13 +201,6 @@ typedef struct SUserObj {
...
@@ -186,13 +201,6 @@ typedef struct SUserObj {
}
SUserObj
;
}
SUserObj
;
typedef
struct
{
typedef
struct
{
int32_t
numOfUsers
;
int32_t
numOfDbs
;
int32_t
numOfTimeSeries
;
int32_t
numOfPointsPerSecond
;
int32_t
numOfConns
;
int32_t
numOfQueries
;
int32_t
numOfStreams
;
int64_t
totalStorage
;
// Total storage wrtten from this account
int64_t
totalStorage
;
// Total storage wrtten from this account
int64_t
compStorage
;
// Compressed storage on disk
int64_t
compStorage
;
// Compressed storage on disk
int64_t
queryTime
;
int64_t
queryTime
;
...
@@ -200,34 +208,44 @@ typedef struct {
...
@@ -200,34 +208,44 @@ typedef struct {
int64_t
inblound
;
int64_t
inblound
;
int64_t
outbound
;
int64_t
outbound
;
int64_t
sKey
;
int64_t
sKey
;
int32_t
numOfUsers
;
int32_t
numOfDbs
;
int32_t
numOfTimeSeries
;
int32_t
numOfPointsPerSecond
;
int32_t
numOfConns
;
int32_t
numOfQueries
;
int32_t
numOfStreams
;
int8_t
accessState
;
// Checked by mgmt heartbeat message
int8_t
accessState
;
// Checked by mgmt heartbeat message
int8_t
reserved
[
3
];
}
SAcctInfo
;
}
SAcctInfo
;
typedef
struct
SAcctObj
{
typedef
struct
SAcctObj
{
char
user
[
TSDB_USER_LEN
];
char
user
[
TSDB_USER_LEN
];
char
pass
[
TSDB_KEY_LEN
];
char
pass
[
TSDB_KEY_LEN
];
SAcctCfg
cfg
;
SAcctCfg
cfg
;
int32_t
acctId
;
int64_t
createdTime
;
int64_t
createdTime
;
int32_t
acctId
;
int8_t
status
;
int8_t
status
;
int8_t
reserved
[
14
];
int8_t
reserved
0
[
10
];
int8_t
updateEnd
[
1
];
int8_t
updateEnd
[
1
];
int32_t
refCount
;
SAcctInfo
acctInfo
;
SAcctInfo
acctInfo
;
int32_t
refCount
;
int8_t
reserved1
[
4
];
pthread_mutex_t
mutex
;
pthread_mutex_t
mutex
;
}
SAcctObj
;
}
SAcctObj
;
typedef
struct
{
typedef
struct
{
int8_t
type
;
int32_t
index
;
char
db
[
TSDB_DB_NAME_LEN
];
char
db
[
TSDB_DB_NAME_LEN
];
void
*
pIter
;
int8_t
type
;
int16_t
numOfColumns
;
int16_t
numOfColumns
;
int32_t
index
;
int32_t
rowSize
;
int32_t
rowSize
;
int32_t
numOfRows
;
int32_t
numOfRows
;
int32_t
numOfReads
;
void
*
pIter
;
int16_t
offset
[
TSDB_MAX_COLUMNS
];
int16_t
offset
[
TSDB_MAX_COLUMNS
];
int16_t
bytes
[
TSDB_MAX_COLUMNS
];
int16_t
bytes
[
TSDB_MAX_COLUMNS
];
int32_t
numOfReads
;
int8_t
reserved0
[
2
];
uint16_t
payloadLen
;
uint16_t
payloadLen
;
char
payload
[];
char
payload
[];
}
SShowObj
;
}
SShowObj
;
...
...
src/mnode/src/mnodeAcct.c
浏览文件 @
0d3d2a90
...
@@ -25,6 +25,8 @@
...
@@ -25,6 +25,8 @@
#include "mnodeSdb.h"
#include "mnodeSdb.h"
#include "mnodeUser.h"
#include "mnodeUser.h"
#include "tglobal.h"
void
*
tsAcctSdb
=
NULL
;
void
*
tsAcctSdb
=
NULL
;
static
int32_t
tsAcctUpdateSize
;
static
int32_t
tsAcctUpdateSize
;
static
int32_t
mnodeCreateRootAcct
();
static
int32_t
mnodeCreateRootAcct
();
...
@@ -174,8 +176,8 @@ static int32_t mnodeCreateRootAcct() {
...
@@ -174,8 +176,8 @@ static int32_t mnodeCreateRootAcct() {
SAcctObj
*
pAcct
=
malloc
(
sizeof
(
SAcctObj
));
SAcctObj
*
pAcct
=
malloc
(
sizeof
(
SAcctObj
));
memset
(
pAcct
,
0
,
sizeof
(
SAcctObj
));
memset
(
pAcct
,
0
,
sizeof
(
SAcctObj
));
strcpy
(
pAcct
->
user
,
"root"
);
strcpy
(
pAcct
->
user
,
TSDB_DEFAULT_USER
);
taosEncryptPass
((
uint8_t
*
)
"taosdata"
,
strlen
(
"taosdata"
),
pAcct
->
pass
);
taosEncryptPass
((
uint8_t
*
)
TSDB_DEFAULT_PASS
,
strlen
(
TSDB_DEFAULT_PASS
),
pAcct
->
pass
);
pAcct
->
cfg
=
(
SAcctCfg
){
pAcct
->
cfg
=
(
SAcctCfg
){
.
maxUsers
=
10
,
.
maxUsers
=
10
,
.
maxDbs
=
64
,
.
maxDbs
=
64
,
...
@@ -207,4 +209,4 @@ int32_t acctInit() { return TSDB_CODE_SUCCESS; }
...
@@ -207,4 +209,4 @@ int32_t acctInit() { return TSDB_CODE_SUCCESS; }
void
acctCleanUp
()
{}
void
acctCleanUp
()
{}
int32_t
acctCheck
(
void
*
pAcct
,
EAcctGrantType
type
)
{
return
TSDB_CODE_SUCCESS
;
}
int32_t
acctCheck
(
void
*
pAcct
,
EAcctGrantType
type
)
{
return
TSDB_CODE_SUCCESS
;
}
#endif
#endif
\ No newline at end of file
src/mnode/src/mnodeDb.c
浏览文件 @
0d3d2a90
...
@@ -478,7 +478,7 @@ static int32_t mnodeGetDbMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pConn
...
@@ -478,7 +478,7 @@ static int32_t mnodeGetDbMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pConn
cols
++
;
cols
++
;
#ifndef __CLOUD_VERSION__
#ifndef __CLOUD_VERSION__
if
(
strcmp
(
pUser
->
user
,
"root"
)
==
0
)
{
if
(
strcmp
(
pUser
->
user
,
TSDB_DEFAULT_USER
)
==
0
)
{
#endif
#endif
pShow
->
bytes
[
cols
]
=
4
;
pShow
->
bytes
[
cols
]
=
4
;
pSchema
[
cols
].
type
=
TSDB_DATA_TYPE_INT
;
pSchema
[
cols
].
type
=
TSDB_DATA_TYPE_INT
;
...
@@ -490,7 +490,7 @@ static int32_t mnodeGetDbMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pConn
...
@@ -490,7 +490,7 @@ static int32_t mnodeGetDbMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pConn
#endif
#endif
#ifndef __CLOUD_VERSION__
#ifndef __CLOUD_VERSION__
if
(
strcmp
(
pUser
->
user
,
"root"
)
==
0
)
{
if
(
strcmp
(
pUser
->
user
,
TSDB_DEFAULT_USER
)
==
0
)
{
#endif
#endif
pShow
->
bytes
[
cols
]
=
2
;
pShow
->
bytes
[
cols
]
=
2
;
pSchema
[
cols
].
type
=
TSDB_DATA_TYPE_SMALLINT
;
pSchema
[
cols
].
type
=
TSDB_DATA_TYPE_SMALLINT
;
...
@@ -514,7 +514,7 @@ static int32_t mnodeGetDbMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pConn
...
@@ -514,7 +514,7 @@ static int32_t mnodeGetDbMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pConn
cols
++
;
cols
++
;
#ifndef __CLOUD_VERSION__
#ifndef __CLOUD_VERSION__
if
(
strcmp
(
pUser
->
user
,
"root"
)
==
0
)
{
if
(
strcmp
(
pUser
->
user
,
TSDB_DEFAULT_USER
)
==
0
)
{
#endif
#endif
pShow
->
bytes
[
cols
]
=
4
;
pShow
->
bytes
[
cols
]
=
4
;
pSchema
[
cols
].
type
=
TSDB_DATA_TYPE_INT
;
pSchema
[
cols
].
type
=
TSDB_DATA_TYPE_INT
;
...
@@ -628,7 +628,7 @@ static int32_t mnodeRetrieveDbs(SShowObj *pShow, char *data, int32_t rows, void
...
@@ -628,7 +628,7 @@ static int32_t mnodeRetrieveDbs(SShowObj *pShow, char *data, int32_t rows, void
cols
++
;
cols
++
;
#ifndef __CLOUD_VERSION__
#ifndef __CLOUD_VERSION__
if
(
strcmp
(
pUser
->
user
,
"root"
)
==
0
)
{
if
(
strcmp
(
pUser
->
user
,
TSDB_DEFAULT_USER
)
==
0
)
{
#endif
#endif
pWrite
=
data
+
pShow
->
offset
[
cols
]
*
rows
+
pShow
->
bytes
[
cols
]
*
numOfRows
;
pWrite
=
data
+
pShow
->
offset
[
cols
]
*
rows
+
pShow
->
bytes
[
cols
]
*
numOfRows
;
*
(
int32_t
*
)
pWrite
=
pDb
->
numOfVgroups
;
*
(
int32_t
*
)
pWrite
=
pDb
->
numOfVgroups
;
...
@@ -638,7 +638,7 @@ static int32_t mnodeRetrieveDbs(SShowObj *pShow, char *data, int32_t rows, void
...
@@ -638,7 +638,7 @@ static int32_t mnodeRetrieveDbs(SShowObj *pShow, char *data, int32_t rows, void
#endif
#endif
#ifndef __CLOUD_VERSION__
#ifndef __CLOUD_VERSION__
if
(
strcmp
(
pUser
->
user
,
"root"
)
==
0
)
{
if
(
strcmp
(
pUser
->
user
,
TSDB_DEFAULT_USER
)
==
0
)
{
#endif
#endif
pWrite
=
data
+
pShow
->
offset
[
cols
]
*
rows
+
pShow
->
bytes
[
cols
]
*
numOfRows
;
pWrite
=
data
+
pShow
->
offset
[
cols
]
*
rows
+
pShow
->
bytes
[
cols
]
*
numOfRows
;
*
(
int16_t
*
)
pWrite
=
pDb
->
cfg
.
replications
;
*
(
int16_t
*
)
pWrite
=
pDb
->
cfg
.
replications
;
...
@@ -659,7 +659,7 @@ static int32_t mnodeRetrieveDbs(SShowObj *pShow, char *data, int32_t rows, void
...
@@ -659,7 +659,7 @@ static int32_t mnodeRetrieveDbs(SShowObj *pShow, char *data, int32_t rows, void
cols
++
;
cols
++
;
#ifndef __CLOUD_VERSION__
#ifndef __CLOUD_VERSION__
if
(
strcmp
(
pUser
->
user
,
"root"
)
==
0
)
{
if
(
strcmp
(
pUser
->
user
,
TSDB_DEFAULT_USER
)
==
0
)
{
#endif
#endif
pWrite
=
data
+
pShow
->
offset
[
cols
]
*
rows
+
pShow
->
bytes
[
cols
]
*
numOfRows
;
pWrite
=
data
+
pShow
->
offset
[
cols
]
*
rows
+
pShow
->
bytes
[
cols
]
*
numOfRows
;
*
(
int32_t
*
)
pWrite
=
pDb
->
cfg
.
maxTables
;
// table num can be created should minus 1
*
(
int32_t
*
)
pWrite
=
pDb
->
cfg
.
maxTables
;
// table num can be created should minus 1
...
...
src/mnode/src/mnodeDnode.c
浏览文件 @
0d3d2a90
...
@@ -254,7 +254,7 @@ static int32_t mnodeProcessCfgDnodeMsg(SMnodeMsg *pMsg) {
...
@@ -254,7 +254,7 @@ static int32_t mnodeProcessCfgDnodeMsg(SMnodeMsg *pMsg) {
// TODO temporary disabled for compiling: strcpy(pCmCfgDnode->ep, pCmCfgDnode->ep);
// TODO temporary disabled for compiling: strcpy(pCmCfgDnode->ep, pCmCfgDnode->ep);
}
}
if
(
strcmp
(
pMsg
->
pUser
->
user
,
"root"
)
!=
0
)
{
if
(
strcmp
(
pMsg
->
pUser
->
user
,
TSDB_DEFAULT_USER
)
!=
0
)
{
return
TSDB_CODE_MND_NO_RIGHTS
;
return
TSDB_CODE_MND_NO_RIGHTS
;
}
}
...
@@ -480,7 +480,7 @@ static int32_t mnodeDropDnodeByEp(char *ep, SMnodeMsg *pMsg) {
...
@@ -480,7 +480,7 @@ static int32_t mnodeDropDnodeByEp(char *ep, SMnodeMsg *pMsg) {
static
int32_t
mnodeProcessCreateDnodeMsg
(
SMnodeMsg
*
pMsg
)
{
static
int32_t
mnodeProcessCreateDnodeMsg
(
SMnodeMsg
*
pMsg
)
{
SCMCreateDnodeMsg
*
pCreate
=
pMsg
->
rpcMsg
.
pCont
;
SCMCreateDnodeMsg
*
pCreate
=
pMsg
->
rpcMsg
.
pCont
;
if
(
strcmp
(
pMsg
->
pUser
->
user
,
"root"
)
!=
0
)
{
if
(
strcmp
(
pMsg
->
pUser
->
user
,
TSDB_DEFAULT_USER
)
!=
0
)
{
return
TSDB_CODE_MND_NO_RIGHTS
;
return
TSDB_CODE_MND_NO_RIGHTS
;
}
else
{
}
else
{
return
mnodeCreateDnode
(
pCreate
->
ep
,
pMsg
);
return
mnodeCreateDnode
(
pCreate
->
ep
,
pMsg
);
...
@@ -490,7 +490,7 @@ static int32_t mnodeProcessCreateDnodeMsg(SMnodeMsg *pMsg) {
...
@@ -490,7 +490,7 @@ static int32_t mnodeProcessCreateDnodeMsg(SMnodeMsg *pMsg) {
static
int32_t
mnodeProcessDropDnodeMsg
(
SMnodeMsg
*
pMsg
)
{
static
int32_t
mnodeProcessDropDnodeMsg
(
SMnodeMsg
*
pMsg
)
{
SCMDropDnodeMsg
*
pDrop
=
pMsg
->
rpcMsg
.
pCont
;
SCMDropDnodeMsg
*
pDrop
=
pMsg
->
rpcMsg
.
pCont
;
if
(
strcmp
(
pMsg
->
pUser
->
user
,
"root"
)
!=
0
)
{
if
(
strcmp
(
pMsg
->
pUser
->
user
,
TSDB_DEFAULT_USER
)
!=
0
)
{
return
TSDB_CODE_MND_NO_RIGHTS
;
return
TSDB_CODE_MND_NO_RIGHTS
;
}
else
{
}
else
{
return
mnodeDropDnodeByEp
(
pDrop
->
ep
,
pMsg
);
return
mnodeDropDnodeByEp
(
pDrop
->
ep
,
pMsg
);
...
@@ -501,7 +501,7 @@ static int32_t mnodeGetDnodeMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pC
...
@@ -501,7 +501,7 @@ static int32_t mnodeGetDnodeMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pC
SUserObj
*
pUser
=
mnodeGetUserFromConn
(
pConn
);
SUserObj
*
pUser
=
mnodeGetUserFromConn
(
pConn
);
if
(
pUser
==
NULL
)
return
0
;
if
(
pUser
==
NULL
)
return
0
;
if
(
strcmp
(
pUser
->
pAcct
->
user
,
"root"
)
!=
0
)
{
if
(
strcmp
(
pUser
->
pAcct
->
user
,
TSDB_DEFAULT_USER
)
!=
0
)
{
mnodeDecUserRef
(
pUser
);
mnodeDecUserRef
(
pUser
);
return
TSDB_CODE_MND_NO_RIGHTS
;
return
TSDB_CODE_MND_NO_RIGHTS
;
}
}
...
@@ -630,7 +630,7 @@ static int32_t mnodeGetModuleMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *p
...
@@ -630,7 +630,7 @@ static int32_t mnodeGetModuleMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *p
SUserObj
*
pUser
=
mnodeGetUserFromConn
(
pConn
);
SUserObj
*
pUser
=
mnodeGetUserFromConn
(
pConn
);
if
(
pUser
==
NULL
)
return
0
;
if
(
pUser
==
NULL
)
return
0
;
if
(
strcmp
(
pUser
->
user
,
"root"
)
!=
0
)
{
if
(
strcmp
(
pUser
->
user
,
TSDB_DEFAULT_USER
)
!=
0
)
{
mnodeDecUserRef
(
pUser
);
mnodeDecUserRef
(
pUser
);
return
TSDB_CODE_MND_NO_RIGHTS
;
return
TSDB_CODE_MND_NO_RIGHTS
;
}
}
...
@@ -740,7 +740,7 @@ static int32_t mnodeGetConfigMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *p
...
@@ -740,7 +740,7 @@ static int32_t mnodeGetConfigMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *p
SUserObj
*
pUser
=
mnodeGetUserFromConn
(
pConn
);
SUserObj
*
pUser
=
mnodeGetUserFromConn
(
pConn
);
if
(
pUser
==
NULL
)
return
0
;
if
(
pUser
==
NULL
)
return
0
;
if
(
strcmp
(
pUser
->
user
,
"root"
)
!=
0
)
{
if
(
strcmp
(
pUser
->
user
,
TSDB_DEFAULT_USER
)
!=
0
)
{
mnodeDecUserRef
(
pUser
);
mnodeDecUserRef
(
pUser
);
return
TSDB_CODE_MND_NO_RIGHTS
;
return
TSDB_CODE_MND_NO_RIGHTS
;
}
}
...
@@ -827,7 +827,7 @@ static int32_t mnodeGetVnodeMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pC
...
@@ -827,7 +827,7 @@ static int32_t mnodeGetVnodeMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pC
SUserObj
*
pUser
=
mnodeGetUserFromConn
(
pConn
);
SUserObj
*
pUser
=
mnodeGetUserFromConn
(
pConn
);
if
(
pUser
==
NULL
)
return
0
;
if
(
pUser
==
NULL
)
return
0
;
if
(
strcmp
(
pUser
->
user
,
"root"
)
!=
0
)
{
if
(
strcmp
(
pUser
->
user
,
TSDB_DEFAULT_USER
)
!=
0
)
{
mnodeDecUserRef
(
pUser
);
mnodeDecUserRef
(
pUser
);
return
TSDB_CODE_MND_NO_RIGHTS
;
return
TSDB_CODE_MND_NO_RIGHTS
;
}
}
...
...
src/mnode/src/mnodeMnode.c
浏览文件 @
0d3d2a90
...
@@ -31,6 +31,8 @@
...
@@ -31,6 +31,8 @@
#include "mnodeShow.h"
#include "mnodeShow.h"
#include "mnodeUser.h"
#include "mnodeUser.h"
#include "tglobal.h"
static
void
*
tsMnodeSdb
=
NULL
;
static
void
*
tsMnodeSdb
=
NULL
;
static
int32_t
tsMnodeUpdateSize
=
0
;
static
int32_t
tsMnodeUpdateSize
=
0
;
static
SRpcIpSet
tsMnodeIpSetForShell
;
static
SRpcIpSet
tsMnodeIpSetForShell
;
...
@@ -333,7 +335,7 @@ static int32_t mnodeGetMnodeMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pC
...
@@ -333,7 +335,7 @@ static int32_t mnodeGetMnodeMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pC
SUserObj
*
pUser
=
mnodeGetUserFromConn
(
pConn
);
SUserObj
*
pUser
=
mnodeGetUserFromConn
(
pConn
);
if
(
pUser
==
NULL
)
return
0
;
if
(
pUser
==
NULL
)
return
0
;
if
(
strcmp
(
pUser
->
pAcct
->
user
,
"root"
)
!=
0
)
{
if
(
strcmp
(
pUser
->
pAcct
->
user
,
TSDB_DEFAULT_USER
)
!=
0
)
{
mnodeDecUserRef
(
pUser
);
mnodeDecUserRef
(
pUser
);
return
TSDB_CODE_MND_NO_RIGHTS
;
return
TSDB_CODE_MND_NO_RIGHTS
;
}
}
...
...
src/mnode/src/mnodeProfile.c
浏览文件 @
0d3d2a90
...
@@ -169,7 +169,7 @@ static void *mnodeGetNextConn(SHashMutableIterator *pIter, SConnObj **pConn) {
...
@@ -169,7 +169,7 @@ static void *mnodeGetNextConn(SHashMutableIterator *pIter, SConnObj **pConn) {
static
int32_t
mnodeGetConnsMeta
(
STableMetaMsg
*
pMeta
,
SShowObj
*
pShow
,
void
*
pConn
)
{
static
int32_t
mnodeGetConnsMeta
(
STableMetaMsg
*
pMeta
,
SShowObj
*
pShow
,
void
*
pConn
)
{
SUserObj
*
pUser
=
mnodeGetUserFromConn
(
pConn
);
SUserObj
*
pUser
=
mnodeGetUserFromConn
(
pConn
);
if
(
pUser
==
NULL
)
return
0
;
if
(
pUser
==
NULL
)
return
0
;
if
(
strcmp
(
pUser
->
user
,
"root"
)
!=
0
)
return
TSDB_CODE_MND_NO_RIGHTS
;
if
(
strcmp
(
pUser
->
user
,
TSDB_DEFAULT_USER
)
!=
0
)
return
TSDB_CODE_MND_NO_RIGHTS
;
int32_t
cols
=
0
;
int32_t
cols
=
0
;
SSchema
*
pSchema
=
pMeta
->
schema
;
SSchema
*
pSchema
=
pMeta
->
schema
;
...
@@ -294,7 +294,7 @@ int32_t mnodeSaveQueryStreamList(SConnObj *pConn, SCMHeartBeatMsg *pHBMsg) {
...
@@ -294,7 +294,7 @@ int32_t mnodeSaveQueryStreamList(SConnObj *pConn, SCMHeartBeatMsg *pHBMsg) {
static
int32_t
mnodeGetQueryMeta
(
STableMetaMsg
*
pMeta
,
SShowObj
*
pShow
,
void
*
pConn
)
{
static
int32_t
mnodeGetQueryMeta
(
STableMetaMsg
*
pMeta
,
SShowObj
*
pShow
,
void
*
pConn
)
{
SUserObj
*
pUser
=
mnodeGetUserFromConn
(
pConn
);
SUserObj
*
pUser
=
mnodeGetUserFromConn
(
pConn
);
if
(
pUser
==
NULL
)
return
0
;
if
(
pUser
==
NULL
)
return
0
;
if
(
strcmp
(
pUser
->
user
,
"root"
)
!=
0
)
return
TSDB_CODE_MND_NO_RIGHTS
;
if
(
strcmp
(
pUser
->
user
,
TSDB_DEFAULT_USER
)
!=
0
)
return
TSDB_CODE_MND_NO_RIGHTS
;
int32_t
cols
=
0
;
int32_t
cols
=
0
;
SSchema
*
pSchema
=
pMeta
->
schema
;
SSchema
*
pSchema
=
pMeta
->
schema
;
...
@@ -403,7 +403,7 @@ static int32_t mnodeRetrieveQueries(SShowObj *pShow, char *data, int32_t rows, v
...
@@ -403,7 +403,7 @@ static int32_t mnodeRetrieveQueries(SShowObj *pShow, char *data, int32_t rows, v
static
int32_t
mnodeGetStreamMeta
(
STableMetaMsg
*
pMeta
,
SShowObj
*
pShow
,
void
*
pConn
)
{
static
int32_t
mnodeGetStreamMeta
(
STableMetaMsg
*
pMeta
,
SShowObj
*
pShow
,
void
*
pConn
)
{
SUserObj
*
pUser
=
mnodeGetUserFromConn
(
pConn
);
SUserObj
*
pUser
=
mnodeGetUserFromConn
(
pConn
);
if
(
pUser
==
NULL
)
return
0
;
if
(
pUser
==
NULL
)
return
0
;
if
(
strcmp
(
pUser
->
user
,
"root"
)
!=
0
)
return
TSDB_CODE_MND_NO_RIGHTS
;
if
(
strcmp
(
pUser
->
user
,
TSDB_DEFAULT_USER
)
!=
0
)
return
TSDB_CODE_MND_NO_RIGHTS
;
int32_t
cols
=
0
;
int32_t
cols
=
0
;
SSchema
*
pSchema
=
pMeta
->
schema
;
SSchema
*
pSchema
=
pMeta
->
schema
;
...
@@ -531,7 +531,7 @@ static int32_t mnodeRetrieveStreams(SShowObj *pShow, char *data, int32_t rows, v
...
@@ -531,7 +531,7 @@ static int32_t mnodeRetrieveStreams(SShowObj *pShow, char *data, int32_t rows, v
static
int32_t
mnodeProcessKillQueryMsg
(
SMnodeMsg
*
pMsg
)
{
static
int32_t
mnodeProcessKillQueryMsg
(
SMnodeMsg
*
pMsg
)
{
SUserObj
*
pUser
=
pMsg
->
pUser
;
SUserObj
*
pUser
=
pMsg
->
pUser
;
if
(
strcmp
(
pUser
->
user
,
"root"
)
!=
0
)
return
TSDB_CODE_MND_NO_RIGHTS
;
if
(
strcmp
(
pUser
->
user
,
TSDB_DEFAULT_USER
)
!=
0
)
return
TSDB_CODE_MND_NO_RIGHTS
;
SCMKillQueryMsg
*
pKill
=
pMsg
->
rpcMsg
.
pCont
;
SCMKillQueryMsg
*
pKill
=
pMsg
->
rpcMsg
.
pCont
;
mPrint
(
"kill query msg is received, queryId:%s"
,
pKill
->
queryId
);
mPrint
(
"kill query msg is received, queryId:%s"
,
pKill
->
queryId
);
...
@@ -561,7 +561,7 @@ static int32_t mnodeProcessKillQueryMsg(SMnodeMsg *pMsg) {
...
@@ -561,7 +561,7 @@ static int32_t mnodeProcessKillQueryMsg(SMnodeMsg *pMsg) {
static
int32_t
mnodeProcessKillStreamMsg
(
SMnodeMsg
*
pMsg
)
{
static
int32_t
mnodeProcessKillStreamMsg
(
SMnodeMsg
*
pMsg
)
{
SUserObj
*
pUser
=
pMsg
->
pUser
;
SUserObj
*
pUser
=
pMsg
->
pUser
;
if
(
strcmp
(
pUser
->
user
,
"root"
)
!=
0
)
return
TSDB_CODE_MND_NO_RIGHTS
;
if
(
strcmp
(
pUser
->
user
,
TSDB_DEFAULT_USER
)
!=
0
)
return
TSDB_CODE_MND_NO_RIGHTS
;
SCMKillQueryMsg
*
pKill
=
pMsg
->
rpcMsg
.
pCont
;
SCMKillQueryMsg
*
pKill
=
pMsg
->
rpcMsg
.
pCont
;
mPrint
(
"kill stream msg is received, streamId:%s"
,
pKill
->
queryId
);
mPrint
(
"kill stream msg is received, streamId:%s"
,
pKill
->
queryId
);
...
@@ -591,7 +591,7 @@ static int32_t mnodeProcessKillStreamMsg(SMnodeMsg *pMsg) {
...
@@ -591,7 +591,7 @@ static int32_t mnodeProcessKillStreamMsg(SMnodeMsg *pMsg) {
static
int32_t
mnodeProcessKillConnectionMsg
(
SMnodeMsg
*
pMsg
)
{
static
int32_t
mnodeProcessKillConnectionMsg
(
SMnodeMsg
*
pMsg
)
{
SUserObj
*
pUser
=
pMsg
->
pUser
;
SUserObj
*
pUser
=
pMsg
->
pUser
;
if
(
strcmp
(
pUser
->
user
,
"root"
)
!=
0
)
return
TSDB_CODE_MND_NO_RIGHTS
;
if
(
strcmp
(
pUser
->
user
,
TSDB_DEFAULT_USER
)
!=
0
)
return
TSDB_CODE_MND_NO_RIGHTS
;
SCMKillConnMsg
*
pKill
=
pMsg
->
rpcMsg
.
pCont
;
SCMKillConnMsg
*
pKill
=
pMsg
->
rpcMsg
.
pCont
;
SConnObj
*
pConn
=
taosCacheAcquireByName
(
tsMnodeConnCache
,
pKill
->
queryId
);
SConnObj
*
pConn
=
taosCacheAcquireByName
(
tsMnodeConnCache
,
pKill
->
queryId
);
...
...
src/mnode/src/mnodeUser.c
浏览文件 @
0d3d2a90
...
@@ -105,10 +105,10 @@ static int32_t mnodeUserActionRestored() {
...
@@ -105,10 +105,10 @@ static int32_t mnodeUserActionRestored() {
int32_t
numOfRows
=
sdbGetNumOfRows
(
tsUserSdb
);
int32_t
numOfRows
=
sdbGetNumOfRows
(
tsUserSdb
);
if
(
numOfRows
<=
0
&&
dnodeIsFirstDeploy
())
{
if
(
numOfRows
<=
0
&&
dnodeIsFirstDeploy
())
{
mPrint
(
"dnode first deploy, create root user"
);
mPrint
(
"dnode first deploy, create root user"
);
SAcctObj
*
pAcct
=
mnodeGetAcct
(
"root"
);
SAcctObj
*
pAcct
=
mnodeGetAcct
(
TSDB_DEFAULT_USER
);
mnodeCreateUser
(
pAcct
,
"root"
,
"taosdata"
,
NULL
);
mnodeCreateUser
(
pAcct
,
TSDB_DEFAULT_USER
,
TSDB_DEFAULT_PASS
,
NULL
);
mnodeCreateUser
(
pAcct
,
"monitor"
,
tsInternalPass
,
NULL
);
mnodeCreateUser
(
pAcct
,
"monitor"
,
tsInternalPass
,
NULL
);
mnodeCreateUser
(
pAcct
,
"_
root"
,
tsInternalPass
,
NULL
);
mnodeCreateUser
(
pAcct
,
"_
"
TSDB_DEFAULT_USER
,
tsInternalPass
,
NULL
);
mnodeDecAcctRef
(
pAcct
);
mnodeDecAcctRef
(
pAcct
);
}
}
...
@@ -222,7 +222,7 @@ int32_t mnodeCreateUser(SAcctObj *pAcct, char *name, char *pass, void *pMsg) {
...
@@ -222,7 +222,7 @@ int32_t mnodeCreateUser(SAcctObj *pAcct, char *name, char *pass, void *pMsg) {
pUser
->
createdTime
=
taosGetTimestampMs
();
pUser
->
createdTime
=
taosGetTimestampMs
();
pUser
->
superAuth
=
0
;
pUser
->
superAuth
=
0
;
pUser
->
writeAuth
=
1
;
pUser
->
writeAuth
=
1
;
if
(
strcmp
(
pUser
->
user
,
"root"
)
==
0
||
strcmp
(
pUser
->
user
,
pUser
->
acct
)
==
0
)
{
if
(
strcmp
(
pUser
->
user
,
TSDB_DEFAULT_USER
)
==
0
||
strcmp
(
pUser
->
user
,
pUser
->
acct
)
==
0
)
{
pUser
->
superAuth
=
1
;
pUser
->
superAuth
=
1
;
}
}
...
@@ -404,12 +404,12 @@ static int32_t mnodeProcessAlterUserMsg(SMnodeMsg *pMsg) {
...
@@ -404,12 +404,12 @@ static int32_t mnodeProcessAlterUserMsg(SMnodeMsg *pMsg) {
if
((
pAlter
->
flag
&
TSDB_ALTER_USER_PASSWD
)
!=
0
)
{
if
((
pAlter
->
flag
&
TSDB_ALTER_USER_PASSWD
)
!=
0
)
{
bool
hasRight
=
false
;
bool
hasRight
=
false
;
if
(
strcmp
(
pOperUser
->
user
,
"root"
)
==
0
)
{
if
(
strcmp
(
pOperUser
->
user
,
TSDB_DEFAULT_USER
)
==
0
)
{
hasRight
=
true
;
hasRight
=
true
;
}
else
if
(
strcmp
(
pUser
->
user
,
pOperUser
->
user
)
==
0
)
{
}
else
if
(
strcmp
(
pUser
->
user
,
pOperUser
->
user
)
==
0
)
{
hasRight
=
true
;
hasRight
=
true
;
}
else
if
(
pOperUser
->
superAuth
)
{
}
else
if
(
pOperUser
->
superAuth
)
{
if
(
strcmp
(
pUser
->
user
,
"root"
)
==
0
)
{
if
(
strcmp
(
pUser
->
user
,
TSDB_DEFAULT_USER
)
==
0
)
{
hasRight
=
false
;
hasRight
=
false
;
}
else
if
(
strcmp
(
pOperUser
->
acct
,
pUser
->
acct
)
!=
0
)
{
}
else
if
(
strcmp
(
pOperUser
->
acct
,
pUser
->
acct
)
!=
0
)
{
hasRight
=
false
;
hasRight
=
false
;
...
@@ -429,16 +429,16 @@ static int32_t mnodeProcessAlterUserMsg(SMnodeMsg *pMsg) {
...
@@ -429,16 +429,16 @@ static int32_t mnodeProcessAlterUserMsg(SMnodeMsg *pMsg) {
}
else
if
((
pAlter
->
flag
&
TSDB_ALTER_USER_PRIVILEGES
)
!=
0
)
{
}
else
if
((
pAlter
->
flag
&
TSDB_ALTER_USER_PRIVILEGES
)
!=
0
)
{
bool
hasRight
=
false
;
bool
hasRight
=
false
;
if
(
strcmp
(
pUser
->
user
,
"root"
)
==
0
)
{
if
(
strcmp
(
pUser
->
user
,
TSDB_DEFAULT_USER
)
==
0
)
{
hasRight
=
false
;
hasRight
=
false
;
}
else
if
(
strcmp
(
pUser
->
user
,
pUser
->
acct
)
==
0
)
{
}
else
if
(
strcmp
(
pUser
->
user
,
pUser
->
acct
)
==
0
)
{
hasRight
=
false
;
hasRight
=
false
;
}
else
if
(
strcmp
(
pOperUser
->
user
,
"root"
)
==
0
)
{
}
else
if
(
strcmp
(
pOperUser
->
user
,
TSDB_DEFAULT_USER
)
==
0
)
{
hasRight
=
true
;
hasRight
=
true
;
}
else
if
(
strcmp
(
pUser
->
user
,
pOperUser
->
user
)
==
0
)
{
}
else
if
(
strcmp
(
pUser
->
user
,
pOperUser
->
user
)
==
0
)
{
hasRight
=
false
;
hasRight
=
false
;
}
else
if
(
pOperUser
->
superAuth
)
{
}
else
if
(
pOperUser
->
superAuth
)
{
if
(
strcmp
(
pUser
->
user
,
"root"
)
==
0
)
{
if
(
strcmp
(
pUser
->
user
,
TSDB_DEFAULT_USER
)
==
0
)
{
hasRight
=
false
;
hasRight
=
false
;
}
else
if
(
strcmp
(
pOperUser
->
acct
,
pUser
->
acct
)
!=
0
)
{
}
else
if
(
strcmp
(
pOperUser
->
acct
,
pUser
->
acct
)
!=
0
)
{
hasRight
=
false
;
hasRight
=
false
;
...
@@ -492,9 +492,9 @@ static int32_t mnodeProcessDropUserMsg(SMnodeMsg *pMsg) {
...
@@ -492,9 +492,9 @@ static int32_t mnodeProcessDropUserMsg(SMnodeMsg *pMsg) {
}
}
bool
hasRight
=
false
;
bool
hasRight
=
false
;
if
(
strcmp
(
pUser
->
user
,
"root"
)
==
0
)
{
if
(
strcmp
(
pUser
->
user
,
TSDB_DEFAULT_USER
)
==
0
)
{
hasRight
=
false
;
hasRight
=
false
;
}
else
if
(
strcmp
(
pOperUser
->
user
,
"root"
)
==
0
)
{
}
else
if
(
strcmp
(
pOperUser
->
user
,
TSDB_DEFAULT_USER
)
==
0
)
{
hasRight
=
true
;
hasRight
=
true
;
}
else
if
(
strcmp
(
pUser
->
user
,
pOperUser
->
user
)
==
0
)
{
}
else
if
(
strcmp
(
pUser
->
user
,
pOperUser
->
user
)
==
0
)
{
hasRight
=
false
;
hasRight
=
false
;
...
...
src/plugins/monitor/src/monitorMain.c
浏览文件 @
0d3d2a90
...
@@ -177,8 +177,8 @@ static void dnodeBuildMonitorSql(char *sql, int32_t cmd) {
...
@@ -177,8 +177,8 @@ static void dnodeBuildMonitorSql(char *sql, int32_t cmd) {
") tags (acctId binary(%d))"
,
") tags (acctId binary(%d))"
,
tsMonitorDbName
,
TSDB_USER_LEN
);
tsMonitorDbName
,
TSDB_USER_LEN
);
}
else
if
(
cmd
==
MONITOR_CMD_CREATE_TB_ACCT_ROOT
)
{
}
else
if
(
cmd
==
MONITOR_CMD_CREATE_TB_ACCT_ROOT
)
{
snprintf
(
sql
,
SQL_LENGTH
,
"create table if not exists %s.acct_%s using %s.acct tags('%s')"
,
tsMonitorDbName
,
"root"
,
snprintf
(
sql
,
SQL_LENGTH
,
"create table if not exists %s.acct_%s using %s.acct tags('%s')"
,
tsMonitorDbName
,
TSDB_DEFAULT_USER
,
tsMonitorDbName
,
"root"
);
tsMonitorDbName
,
TSDB_DEFAULT_USER
);
}
else
if
(
cmd
==
MONITOR_CMD_CREATE_TB_SLOWQUERY
)
{
}
else
if
(
cmd
==
MONITOR_CMD_CREATE_TB_SLOWQUERY
)
{
snprintf
(
sql
,
SQL_LENGTH
,
snprintf
(
sql
,
SQL_LENGTH
,
"create table if not exists %s.slowquery(ts timestamp, username "
"create table if not exists %s.slowquery(ts timestamp, username "
...
...
src/query/inc/qextbuffer.h
浏览文件 @
0d3d2a90
...
@@ -149,7 +149,7 @@ int16_t tExtMemBufferPut(tExtMemBuffer *pMemBuffer, void *data, int32_t numOfRow
...
@@ -149,7 +149,7 @@ int16_t tExtMemBufferPut(tExtMemBuffer *pMemBuffer, void *data, int32_t numOfRow
* @param pMemBuffer
* @param pMemBuffer
* @return
* @return
*/
*/
bool
tExtMemBufferFlush
(
tExtMemBuffer
*
pMemBuffer
);
int32_t
tExtMemBufferFlush
(
tExtMemBuffer
*
pMemBuffer
);
/**
/**
*
*
...
...
src/query/src/qextbuffer.c
浏览文件 @
0d3d2a90
...
@@ -245,30 +245,29 @@ static void tExtMemBufferClearFlushoutInfo(tExtMemBuffer *pMemBuffer) {
...
@@ -245,30 +245,29 @@ static void tExtMemBufferClearFlushoutInfo(tExtMemBuffer *pMemBuffer) {
memset
(
pFileMeta
->
flushoutData
.
pFlushoutInfo
,
0
,
sizeof
(
tFlushoutInfo
)
*
pFileMeta
->
flushoutData
.
nAllocSize
);
memset
(
pFileMeta
->
flushoutData
.
pFlushoutInfo
,
0
,
sizeof
(
tFlushoutInfo
)
*
pFileMeta
->
flushoutData
.
nAllocSize
);
}
}
bool
tExtMemBufferFlush
(
tExtMemBuffer
*
pMemBuffer
)
{
int32_t
tExtMemBufferFlush
(
tExtMemBuffer
*
pMemBuffer
)
{
int32_t
ret
=
0
;
if
(
pMemBuffer
->
numOfTotalElems
==
0
)
{
if
(
pMemBuffer
->
numOfTotalElems
==
0
)
{
return
true
;
return
ret
;
}
}
if
(
pMemBuffer
->
file
==
NULL
)
{
if
(
pMemBuffer
->
file
==
NULL
)
{
if
((
pMemBuffer
->
file
=
fopen
(
pMemBuffer
->
path
,
"wb+"
))
==
NULL
)
{
if
((
pMemBuffer
->
file
=
fopen
(
pMemBuffer
->
path
,
"wb+"
))
==
NULL
)
{
return
false
;
ret
=
TAOS_SYSTEM_ERROR
(
errno
);
return
ret
;
}
}
}
}
/* all data has been flushed to disk, ignore flush operation */
/* all data has been flushed to disk, ignore flush operation */
if
(
pMemBuffer
->
numOfElemsInBuffer
==
0
)
{
if
(
pMemBuffer
->
numOfElemsInBuffer
==
0
)
{
return
true
;
return
ret
;
}
}
bool
ret
=
true
;
tFilePagesItem
*
first
=
pMemBuffer
->
pHead
;
tFilePagesItem
*
first
=
pMemBuffer
->
pHead
;
while
(
first
!=
NULL
)
{
while
(
first
!=
NULL
)
{
size_t
retVal
=
fwrite
((
char
*
)
&
(
first
->
item
),
pMemBuffer
->
pageSize
,
1
,
pMemBuffer
->
file
);
size_t
retVal
=
fwrite
((
char
*
)
&
(
first
->
item
),
pMemBuffer
->
pageSize
,
1
,
pMemBuffer
->
file
);
if
(
retVal
<=
0
)
{
// failed to write to buffer, may be not enough space
if
(
retVal
<=
0
)
{
// failed to write to buffer, may be not enough space
ret
=
false
;
ret
=
TAOS_SYSTEM_ERROR
(
errno
)
;
}
}
pMemBuffer
->
fileMeta
.
numOfElemsInFile
+=
first
->
item
.
num
;
pMemBuffer
->
fileMeta
.
numOfElemsInFile
+=
first
->
item
.
num
;
...
...
src/util/src/tlog.c
浏览文件 @
0d3d2a90
...
@@ -327,7 +327,7 @@ void taosPrintLog(const char *flags, int32_t dflag, const char *format, ...) {
...
@@ -327,7 +327,7 @@ void taosPrintLog(const char *flags, int32_t dflag, const char *format, ...) {
curTime
=
timeSecs
.
tv_sec
;
curTime
=
timeSecs
.
tv_sec
;
ptm
=
localtime_r
(
&
curTime
,
&
Tm
);
ptm
=
localtime_r
(
&
curTime
,
&
Tm
);
len
=
sprintf
(
buffer
,
"%02d/%02d %02d:%02d:%02d.%06d 0x%"
PRI
d
64
" "
,
ptm
->
tm_mon
+
1
,
ptm
->
tm_mday
,
ptm
->
tm_hour
,
len
=
sprintf
(
buffer
,
"%02d/%02d %02d:%02d:%02d.%06d 0x%"
PRI
x
64
" "
,
ptm
->
tm_mon
+
1
,
ptm
->
tm_mday
,
ptm
->
tm_hour
,
ptm
->
tm_min
,
ptm
->
tm_sec
,
(
int32_t
)
timeSecs
.
tv_usec
,
taosGetPthreadId
());
ptm
->
tm_min
,
ptm
->
tm_sec
,
(
int32_t
)
timeSecs
.
tv_usec
,
taosGetPthreadId
());
len
+=
sprintf
(
buffer
+
len
,
"%s"
,
flags
);
len
+=
sprintf
(
buffer
+
len
,
"%s"
,
flags
);
...
@@ -414,7 +414,7 @@ void taosPrintLongString(const char *flags, int32_t dflag, const char *format, .
...
@@ -414,7 +414,7 @@ void taosPrintLongString(const char *flags, int32_t dflag, const char *format, .
curTime
=
timeSecs
.
tv_sec
;
curTime
=
timeSecs
.
tv_sec
;
ptm
=
localtime_r
(
&
curTime
,
&
Tm
);
ptm
=
localtime_r
(
&
curTime
,
&
Tm
);
len
=
sprintf
(
buffer
,
"%02d/%02d %02d:%02d:%02d.%06d 0x%"
PRI
d
64
" "
,
ptm
->
tm_mon
+
1
,
ptm
->
tm_mday
,
ptm
->
tm_hour
,
len
=
sprintf
(
buffer
,
"%02d/%02d %02d:%02d:%02d.%06d 0x%"
PRI
x
64
" "
,
ptm
->
tm_mon
+
1
,
ptm
->
tm_mday
,
ptm
->
tm_hour
,
ptm
->
tm_min
,
ptm
->
tm_sec
,
(
int32_t
)
timeSecs
.
tv_usec
,
taosGetPthreadId
());
ptm
->
tm_min
,
ptm
->
tm_sec
,
(
int32_t
)
timeSecs
.
tv_usec
,
taosGetPthreadId
());
len
+=
sprintf
(
buffer
+
len
,
"%s"
,
flags
);
len
+=
sprintf
(
buffer
+
len
,
"%s"
,
flags
);
...
...
tests/test-all.sh
浏览文件 @
0d3d2a90
#!/bin/bash
#!/bin/bash
# Color setting
RED
=
'\033[0;31m'
GREEN
=
'\033[1;32m'
GREEN_DARK
=
'\033[0;32m'
GREEN_UNDERLINE
=
'\033[4;32m'
NC
=
'\033[0m'
function
runSimCaseOneByOne
{
function
runSimCaseOneByOne
{
while
read
-r
line
;
do
while
read
-r
line
;
do
if
[[
$line
=
~ ^run.
*
]]
;
then
if
[[
$line
=
~ ^run.
*
]]
;
then
case
=
`
echo
$line
|
awk
'{print $2}'
`
case
=
`
echo
$line
|
awk
'{print $NF}'
`
./test.sh
-f
$case
2>&1
|
grep
'success\|failed\|fault'
|
grep
-v
'default'
|
tee
-a
out.log
start_time
=
`
date
+%s
`
./test.sh
-f
$case
>
/dev/null 2>&1
&&
\
echo
-e
"
${
GREEN
}
$case
success
${
NC
}
"
|
tee
-a
out.log
||
\
echo
-e
"
${
RED
}
$case
failed
${
NC
}
"
|
tee
-a
out.log
end_time
=
`
date
+%s
`
echo
execution
time
of
$case
was
`
expr
$end_time
-
$start_time
`
s.
|
tee
-a
out.log
fi
fi
done
<
$1
done
<
$1
}
}
...
@@ -12,27 +24,29 @@ function runSimCaseOneByOne {
...
@@ -12,27 +24,29 @@ function runSimCaseOneByOne {
function
runPyCaseOneByOne
{
function
runPyCaseOneByOne
{
while
read
-r
line
;
do
while
read
-r
line
;
do
if
[[
$line
=
~ ^python.
*
]]
;
then
if
[[
$line
=
~ ^python.
*
]]
;
then
$line
2>&1
|
grep
'successfully executed\|failed\|fault'
|
grep
-v
'default'
|
tee
-a
pytest-out.log
if
[[
$line
!=
*
sleep
*
]]
;
then
case
=
`
echo
$line
|awk
'{print $NF}'
`
start_time
=
`
date
+%s
`
$line
>
/dev/null 2>&1
&&
\
echo
-e
"
${
GREEN
}
$case
success
${
NC
}
"
|
tee
-a
pytest-out.log
||
\
echo
-e
"
${
RED
}
$case
failed
${
NC
}
"
|
tee
-a
pytest-out.log
end_time
=
`
date
+%s
`
echo
execution
time
of
$case
was
`
expr
$end_time
-
$start_time
`
s.
|
tee
-a
pytest-out.log
else
$line
>
/dev/null 2>&1
fi
fi
fi
done
<
$1
done
<
$1
}
}
# Color setting
RED
=
'\033[0;31m'
GREEN
=
'\033[1;32m'
GREEN_DARK
=
'\033[0;32m'
GREEN_UNDERLINE
=
'\033[4;32m'
NC
=
'\033[0m'
totalFailed
=
0
totalFailed
=
0
totalPyFailed
=
0
totalPyFailed
=
0
tests_dir
=
`
pwd
`
current_dir
=
`
pwd
`
if
[
"
$2
"
!=
"python"
]
;
then
if
[
"
$2
"
!=
"python"
]
;
then
echo
"### run TSIM test case ###"
echo
"### run TSIM test case ###"
cd
$
current
_dir
/script
cd
$
tests
_dir
/script
[
-f
out.log
]
&&
rm
-f
out.log
[
-f
out.log
]
&&
rm
-f
out.log
if
[
"
$1
"
==
"cron"
]
;
then
if
[
"
$1
"
==
"cron"
]
;
then
...
@@ -53,13 +67,13 @@ if [ "$2" != "python" ]; then
...
@@ -53,13 +67,13 @@ if [ "$2" != "python" ]; then
totalSuccess
=
`
expr
$totalSuccess
-
$totalBasic
`
totalSuccess
=
`
expr
$totalSuccess
-
$totalBasic
`
fi
fi
echo
-e
"
${
GREEN
}
### Total
$totalSuccess
TSIM case(s) succeed! ###
${
NC
}
"
echo
-e
"
\n
${
GREEN
}
### Total
$totalSuccess
TSIM case(s) succeed! ###
${
NC
}
"
totalFailed
=
`
grep
'failed\|fault'
out.log |
wc
-l
`
totalFailed
=
`
grep
'failed\|fault'
out.log |
wc
-l
`
# echo -e "${RED} ### Total $totalFailed TSIM case(s) failed! ### ${NC}"
# echo -e "${RED} ### Total $totalFailed TSIM case(s) failed! ### ${NC}"
if
[
"
$totalFailed
"
-ne
"0"
]
;
then
if
[
"
$totalFailed
"
-ne
"0"
]
;
then
echo
-e
"
${
RED
}
### Total
$totalFailed
TSIM case(s) failed! ###
${
NC
}
"
echo
-e
"
\n
${
RED
}
### Total
$totalFailed
TSIM case(s) failed! ###
${
NC
}
"
# exit $totalFailed
# exit $totalFailed
fi
fi
...
@@ -67,7 +81,27 @@ fi
...
@@ -67,7 +81,27 @@ fi
if
[
"
$2
"
!=
"sim"
]
;
then
if
[
"
$2
"
!=
"sim"
]
;
then
echo
"### run Python test case ###"
echo
"### run Python test case ###"
cd
$current_dir
/pytest
cd
$tests_dir
IN_TDINTERNAL
=
"community"
if
[[
"
$tests_dir
"
==
*
"
$IN_TDINTERNAL
"
*
]]
;
then
cd
../..
else
cd
../
fi
TOP_DIR
=
`
pwd
`
TAOSLIB_DIR
=
`
find
.
-name
"libtaos.so"
|grep
-w
lib|head
-n1
`
if
[[
"
$TAOSLIB_DIR
"
==
*
"
$IN_TDINTERNAL
"
*
]]
;
then
LIB_DIR
=
`
find
.
-name
"libtaos.so"
|grep
-w
lib|head
-n1
|cut
-d
'/'
--fields
=
2,3,4,5
`
else
LIB_DIR
=
`
find
.
-name
"libtaos.so"
|grep
-w
lib|head
-n1
|cut
-d
'/'
--fields
=
2,3,4
`
fi
export
LD_LIBRARY_PATH
=
$TOP_DIR
/
$LIB_DIR
:
$LD_LIBRARY_PATH
cd
$tests_dir
/pytest
[
-f
pytest-out.log
]
&&
rm
-f
pytest-out.log
[
-f
pytest-out.log
]
&&
rm
-f
pytest-out.log
...
@@ -81,15 +115,15 @@ if [ "$2" != "sim" ]; then
...
@@ -81,15 +115,15 @@ if [ "$2" != "sim" ]; then
echo
"### run Python smoke test ###"
echo
"### run Python smoke test ###"
runPyCaseOneByOne smoketest.sh
runPyCaseOneByOne smoketest.sh
fi
fi
totalPySuccess
=
`
grep
'success
fully executed
'
pytest-out.log |
wc
-l
`
totalPySuccess
=
`
grep
'success'
pytest-out.log |
wc
-l
`
if
[
"
$totalPySuccess
"
-gt
"0"
]
;
then
if
[
"
$totalPySuccess
"
-gt
"0"
]
;
then
echo
-e
"
${
GREEN
}
### Total
$totalPySuccess
python case(s) succeed! ###
${
NC
}
"
echo
-e
"
\n
${
GREEN
}
### Total
$totalPySuccess
python case(s) succeed! ###
${
NC
}
"
fi
fi
totalPyFailed
=
`
grep
'failed\|fault'
pytest-out.log |
wc
-l
`
totalPyFailed
=
`
grep
'failed\|fault'
pytest-out.log |
wc
-l
`
if
[
"
$totalPyFailed
"
-ne
"0"
]
;
then
if
[
"
$totalPyFailed
"
-ne
"0"
]
;
then
echo
-e
"
${
RED
}
### Total
$totalPyFailed
python case(s) failed! ###
${
NC
}
"
echo
-e
"
\n
${
RED
}
### Total
$totalPyFailed
python case(s) failed! ###
${
NC
}
"
# exit $totalPyFailed
# exit $totalPyFailed
fi
fi
fi
fi
...
...
tests/test/c/importOneRow.c
浏览文件 @
0d3d2a90
...
@@ -109,7 +109,7 @@ void* taos_execute(void *param) {
...
@@ -109,7 +109,7 @@ void* taos_execute(void *param) {
taosGetFqdnPortFromEp
(
tsFirst
,
fqdn
,
&
port
);
taosGetFqdnPortFromEp
(
tsFirst
,
fqdn
,
&
port
);
void
*
taos
=
taos_connect
(
fqdn
,
tsDefaultUser
,
tsDefaultPass
,
NULL
,
port
);
void
*
taos
=
taos_connect
(
fqdn
,
"root"
,
"taosdata"
,
NULL
,
port
);
if
(
taos
==
NULL
)
taos_error
(
taos
);
if
(
taos
==
NULL
)
taos_error
(
taos
);
char
sql
[
1024
]
=
{
0
};
char
sql
[
1024
]
=
{
0
};
...
...
tests/test/c/importPerTable.c
浏览文件 @
0d3d2a90
...
@@ -73,7 +73,7 @@ void createDbAndTable() {
...
@@ -73,7 +73,7 @@ void createDbAndTable() {
taosGetFqdnPortFromEp
(
tsFirst
,
fqdn
,
&
port
);
taosGetFqdnPortFromEp
(
tsFirst
,
fqdn
,
&
port
);
con
=
taos_connect
(
fqdn
,
tsDefaultUser
,
tsDefaultPass
,
NULL
,
port
);
con
=
taos_connect
(
fqdn
,
"root"
,
"taosdata"
,
NULL
,
port
);
if
(
con
==
NULL
)
{
if
(
con
==
NULL
)
{
pError
(
"failed to connect to DB, reason:%s"
,
taos_errstr
(
con
));
pError
(
"failed to connect to DB, reason:%s"
,
taos_errstr
(
con
));
exit
(
1
);
exit
(
1
);
...
@@ -200,7 +200,7 @@ void *syncTest(void *param) {
...
@@ -200,7 +200,7 @@ void *syncTest(void *param) {
taosGetFqdnPortFromEp
(
tsFirst
,
fqdn
,
&
port
);
taosGetFqdnPortFromEp
(
tsFirst
,
fqdn
,
&
port
);
con
=
taos_connect
(
fqdn
,
tsDefaultUser
,
tsDefaultPass
,
NULL
,
port
);
con
=
taos_connect
(
fqdn
,
"root"
,
"taosdata"
,
NULL
,
port
);
if
(
con
==
NULL
)
{
if
(
con
==
NULL
)
{
pError
(
"index:%d, failed to connect to DB, reason:%s"
,
pInfo
->
threadIndex
,
taos_errstr
(
con
));
pError
(
"index:%d, failed to connect to DB, reason:%s"
,
pInfo
->
threadIndex
,
taos_errstr
(
con
));
exit
(
1
);
exit
(
1
);
...
...
tests/test/c/insertPerRow.c
浏览文件 @
0d3d2a90
...
@@ -71,7 +71,7 @@ void createDbAndTable() {
...
@@ -71,7 +71,7 @@ void createDbAndTable() {
char
fqdn
[
TSDB_FQDN_LEN
];
char
fqdn
[
TSDB_FQDN_LEN
];
uint16_t
port
;
uint16_t
port
;
taosGetFqdnPortFromEp
(
tsFirst
,
fqdn
,
&
port
);
taosGetFqdnPortFromEp
(
tsFirst
,
fqdn
,
&
port
);
con
=
taos_connect
(
fqdn
,
tsDefaultUser
,
tsDefaultPass
,
NULL
,
port
);
con
=
taos_connect
(
fqdn
,
"root"
,
"taosdata"
,
NULL
,
port
);
if
(
con
==
NULL
)
{
if
(
con
==
NULL
)
{
pError
(
"failed to connect to DB, reason:%s"
,
taos_errstr
(
con
));
pError
(
"failed to connect to DB, reason:%s"
,
taos_errstr
(
con
));
exit
(
1
);
exit
(
1
);
...
@@ -184,7 +184,7 @@ void *syncTest(void *param) {
...
@@ -184,7 +184,7 @@ void *syncTest(void *param) {
uint16_t
port
;
uint16_t
port
;
taosGetFqdnPortFromEp
(
tsFirst
,
fqdn
,
&
port
);
taosGetFqdnPortFromEp
(
tsFirst
,
fqdn
,
&
port
);
con
=
taos_connect
(
fqdn
,
tsDefaultUser
,
tsDefaultPass
,
NULL
,
port
);
con
=
taos_connect
(
fqdn
,
"root"
,
"taosdata"
,
NULL
,
port
);
if
(
con
==
NULL
)
{
if
(
con
==
NULL
)
{
pError
(
"index:%d, failed to connect to DB, reason:%s"
,
pInfo
->
threadIndex
,
taos_errstr
(
con
));
pError
(
"index:%d, failed to connect to DB, reason:%s"
,
pInfo
->
threadIndex
,
taos_errstr
(
con
));
exit
(
1
);
exit
(
1
);
...
...
tests/test/c/insertPerTable.c
浏览文件 @
0d3d2a90
...
@@ -74,7 +74,7 @@ void createDbAndTable() {
...
@@ -74,7 +74,7 @@ void createDbAndTable() {
taosGetFqdnPortFromEp
(
tsFirst
,
fqdn
,
&
port
);
taosGetFqdnPortFromEp
(
tsFirst
,
fqdn
,
&
port
);
con
=
taos_connect
(
fqdn
,
tsDefaultUser
,
tsDefaultPass
,
NULL
,
port
);
con
=
taos_connect
(
fqdn
,
"root"
,
"taosdata"
,
NULL
,
port
);
if
(
con
==
NULL
)
{
if
(
con
==
NULL
)
{
pError
(
"failed to connect to DB, reason:%s"
,
taos_errstr
(
con
));
pError
(
"failed to connect to DB, reason:%s"
,
taos_errstr
(
con
));
exit
(
1
);
exit
(
1
);
...
@@ -222,7 +222,7 @@ void *syncTest(void *param) {
...
@@ -222,7 +222,7 @@ void *syncTest(void *param) {
taosGetFqdnPortFromEp
(
tsFirst
,
fqdn
,
&
port
);
taosGetFqdnPortFromEp
(
tsFirst
,
fqdn
,
&
port
);
con
=
taos_connect
(
fqdn
,
tsDefaultUser
,
tsDefaultPass
,
NULL
,
port
);
con
=
taos_connect
(
fqdn
,
"root"
,
"taosdata"
,
NULL
,
port
);
if
(
con
==
NULL
)
{
if
(
con
==
NULL
)
{
pError
(
"index:%d, failed to connect to DB, reason:%s"
,
pInfo
->
threadIndex
,
taos_errstr
(
con
));
pError
(
"index:%d, failed to connect to DB, reason:%s"
,
pInfo
->
threadIndex
,
taos_errstr
(
con
));
exit
(
1
);
exit
(
1
);
...
...
tests/tsim/src/simExe.c
浏览文件 @
0d3d2a90
...
@@ -612,7 +612,7 @@ bool simCreateNativeConnect(SScript *script, char *user, char *pass) {
...
@@ -612,7 +612,7 @@ bool simCreateNativeConnect(SScript *script, char *user, char *pass) {
}
}
bool
simCreateTaosdConnect
(
SScript
*
script
,
char
*
rest
)
{
bool
simCreateTaosdConnect
(
SScript
*
script
,
char
*
rest
)
{
char
*
user
=
tsDefaultUser
;
char
*
user
=
TSDB_DEFAULT_USER
;
char
*
token
;
char
*
token
;
int
tokenLen
;
int
tokenLen
;
rest
=
paGetToken
(
rest
,
&
token
,
&
tokenLen
);
rest
=
paGetToken
(
rest
,
&
token
,
&
tokenLen
);
...
@@ -622,9 +622,9 @@ bool simCreateTaosdConnect(SScript *script, char *rest) {
...
@@ -622,9 +622,9 @@ bool simCreateTaosdConnect(SScript *script, char *rest) {
}
}
if
(
simAsyncQuery
)
{
if
(
simAsyncQuery
)
{
return
simCreateRestFulConnect
(
script
,
user
,
tsDefaultPass
);
return
simCreateRestFulConnect
(
script
,
user
,
TSDB_DEFAULT_PASS
);
}
else
{
}
else
{
return
simCreateNativeConnect
(
script
,
user
,
tsDefaultPass
);
return
simCreateNativeConnect
(
script
,
user
,
TSDB_DEFAULT_PASS
);
}
}
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录