Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
b86f44af
T
TDengine
项目概览
taosdata
/
TDengine
大约 2 年 前同步成功
通知
1192
Star
22018
Fork
4786
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
b86f44af
编写于
8月 14, 2021
作者:
C
Cary Xu
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'master' into hotfix/td-5765
上级
9bafb643
19aaf703
变更
80
展开全部
隐藏空白更改
内联
并排
Showing
80 changed file
with
2579 addition
and
833 deletion
+2579
-833
.drone.yml
.drone.yml
+16
-12
Jenkinsfile
Jenkinsfile
+58
-47
deps/MsvcLibX/src/iconv.c
deps/MsvcLibX/src/iconv.c
+4
-2
deps/MsvcLibX/src/main.c
deps/MsvcLibX/src/main.c
+6
-2
deps/MsvcLibX/src/realpath.c
deps/MsvcLibX/src/realpath.c
+12
-4
deps/TSZ
deps/TSZ
+1
-1
packaging/cfg/taos.cfg
packaging/cfg/taos.cfg
+3
-0
packaging/docker/dockerManifest.sh
packaging/docker/dockerManifest.sh
+3
-1
snap/snapcraft.yaml
snap/snapcraft.yaml
+2
-2
src/balance/src/bnScore.c
src/balance/src/bnScore.c
+11
-2
src/client/src/tscPrepare.c
src/client/src/tscPrepare.c
+3
-2
src/client/src/tscSQLParser.c
src/client/src/tscSQLParser.c
+15
-7
src/client/src/tscSql.c
src/client/src/tscSql.c
+3
-1
src/client/src/tscSubquery.c
src/client/src/tscSubquery.c
+6
-2
src/client/src/tscUtil.c
src/client/src/tscUtil.c
+9
-3
src/common/inc/tdataformat.h
src/common/inc/tdataformat.h
+6
-4
src/common/inc/tglobal.h
src/common/inc/tglobal.h
+1
-0
src/common/src/tdataformat.c
src/common/src/tdataformat.c
+3
-2
src/common/src/tglobal.c
src/common/src/tglobal.c
+16
-0
src/connector/jdbc/pom.xml
src/connector/jdbc/pom.xml
+0
-1
src/connector/jdbc/src/main/java/com/taosdata/jdbc/TSDBDriver.java
...ctor/jdbc/src/main/java/com/taosdata/jdbc/TSDBDriver.java
+7
-0
src/connector/jdbc/src/main/java/com/taosdata/jdbc/TSDBError.java
...ector/jdbc/src/main/java/com/taosdata/jdbc/TSDBError.java
+2
-0
src/connector/jdbc/src/main/java/com/taosdata/jdbc/TSDBErrorNumbers.java
...dbc/src/main/java/com/taosdata/jdbc/TSDBErrorNumbers.java
+5
-0
src/connector/jdbc/src/main/java/com/taosdata/jdbc/TSDBJNIConnector.java
...dbc/src/main/java/com/taosdata/jdbc/TSDBJNIConnector.java
+0
-1
src/connector/jdbc/src/main/java/com/taosdata/jdbc/rs/RestfulDriver.java
...dbc/src/main/java/com/taosdata/jdbc/rs/RestfulDriver.java
+8
-2
src/connector/jdbc/src/main/java/com/taosdata/jdbc/rs/RestfulStatement.java
.../src/main/java/com/taosdata/jdbc/rs/RestfulStatement.java
+26
-33
src/connector/jdbc/src/main/java/com/taosdata/jdbc/utils/SqlSyntaxValidator.java
...main/java/com/taosdata/jdbc/utils/SqlSyntaxValidator.java
+1
-14
src/connector/jdbc/src/test/java/com/taosdata/jdbc/SubscribeTest.java
...r/jdbc/src/test/java/com/taosdata/jdbc/SubscribeTest.java
+2
-0
src/connector/jdbc/src/test/java/com/taosdata/jdbc/cases/AuthenticationTest.java
...test/java/com/taosdata/jdbc/cases/AuthenticationTest.java
+44
-0
src/connector/jdbc/src/test/java/com/taosdata/jdbc/cases/BatchInsertTest.java
...rc/test/java/com/taosdata/jdbc/cases/BatchInsertTest.java
+2
-0
src/connector/jdbc/src/test/java/com/taosdata/jdbc/cases/ImportTest.java
...dbc/src/test/java/com/taosdata/jdbc/cases/ImportTest.java
+2
-0
src/connector/jdbc/src/test/java/com/taosdata/jdbc/cases/InsertSpecialCharacterJniTest.java
...om/taosdata/jdbc/cases/InsertSpecialCharacterJniTest.java
+37
-4
src/connector/jdbc/src/test/java/com/taosdata/jdbc/cases/InsertSpecialCharacterRestfulTest.java
...aosdata/jdbc/cases/InsertSpecialCharacterRestfulTest.java
+2
-4
src/connector/jdbc/src/test/java/com/taosdata/jdbc/cases/QueryDataTest.java
.../src/test/java/com/taosdata/jdbc/cases/QueryDataTest.java
+2
-0
src/connector/jdbc/src/test/java/com/taosdata/jdbc/cases/ResetQueryCacheTest.java
...est/java/com/taosdata/jdbc/cases/ResetQueryCacheTest.java
+33
-35
src/connector/jdbc/src/test/java/com/taosdata/jdbc/cases/SelectTest.java
...dbc/src/test/java/com/taosdata/jdbc/cases/SelectTest.java
+2
-0
src/connector/jdbc/src/test/java/com/taosdata/jdbc/cases/StableTest.java
...dbc/src/test/java/com/taosdata/jdbc/cases/StableTest.java
+2
-0
src/connector/jdbc/src/test/java/com/taosdata/jdbc/utils/SqlSyntaxValidatorTest.java
.../java/com/taosdata/jdbc/utils/SqlSyntaxValidatorTest.java
+0
-21
src/connector/nodejs/nodetaos/taosobjects.js
src/connector/nodejs/nodetaos/taosobjects.js
+2
-1
src/connector/nodejs/package.json
src/connector/nodejs/package.json
+1
-1
src/dnode/src/dnodeMain.c
src/dnode/src/dnodeMain.c
+2
-1
src/dnode/src/dnodeSystem.c
src/dnode/src/dnodeSystem.c
+2
-0
src/kit/shell/src/shellCheck.c
src/kit/shell/src/shellCheck.c
+3
-2
src/kit/taosdemo/taosdemo.c
src/kit/taosdemo/taosdemo.c
+1057
-536
src/kit/taospack/taospack.c
src/kit/taospack/taospack.c
+53
-4
src/mnode/src/mnodeTable.c
src/mnode/src/mnodeTable.c
+3
-2
src/os/src/detail/osMemory.c
src/os/src/detail/osMemory.c
+3
-2
src/os/src/windows/wGetline.c
src/os/src/windows/wGetline.c
+4
-2
src/plugins/http/src/httpUtil.c
src/plugins/http/src/httpUtil.c
+1
-1
src/query/inc/qUtil.h
src/query/inc/qUtil.h
+2
-2
src/query/src/qAggMain.c
src/query/src/qAggMain.c
+7
-4
src/query/src/qExecutor.c
src/query/src/qExecutor.c
+8
-5
src/query/src/qFill.c
src/query/src/qFill.c
+12
-0
src/query/src/qTsbuf.c
src/query/src/qTsbuf.c
+5
-2
src/query/src/qUtil.c
src/query/src/qUtil.c
+12
-0
src/tsdb/inc/tsdbFS.h
src/tsdb/inc/tsdbFS.h
+4
-1
src/tsdb/src/tsdbFS.c
src/tsdb/src/tsdbFS.c
+40
-1
src/tsdb/src/tsdbRead.c
src/tsdb/src/tsdbRead.c
+13
-0
src/util/inc/tcompare.h
src/util/inc/tcompare.h
+1
-1
src/util/inc/tconfig.h
src/util/inc/tconfig.h
+1
-0
src/util/src/tcompare.c
src/util/src/tcompare.c
+10
-9
tests/perftest-scripts/perftest-query.sh
tests/perftest-scripts/perftest-query.sh
+7
-0
tests/pytest/crash_gen/valgrind_taos.supp
tests/pytest/crash_gen/valgrind_taos.supp
+366
-0
tests/pytest/fulltest.sh
tests/pytest/fulltest.sh
+4
-1
tests/pytest/functions/function_interp.py
tests/pytest/functions/function_interp.py
+46
-0
tests/pytest/functions/showOfflineThresholdIs864000.py
tests/pytest/functions/showOfflineThresholdIs864000.py
+1
-1
tests/pytest/query/queryError.py
tests/pytest/query/queryError.py
+4
-0
tests/pytest/query/queryTbnameUpperLower.py
tests/pytest/query/queryTbnameUpperLower.py
+78
-0
tests/pytest/query/queryWildcardLength.py
tests/pytest/query/queryWildcardLength.py
+207
-0
tests/pytest/query/tbname.py
tests/pytest/query/tbname.py
+3
-0
tests/pytest/tools/taosdemoAllTest/NanoTestCase/taosdemoTestSupportNanoInsert.py
...demoAllTest/NanoTestCase/taosdemoTestSupportNanoInsert.py
+43
-30
tests/pytest/tools/taosdemoAllTest/taosdemoTestSupportNanoInsert.py
...st/tools/taosdemoAllTest/taosdemoTestSupportNanoInsert.py
+1
-1
tests/pytest/tools/taosdemoPerformance.py
tests/pytest/tools/taosdemoPerformance.py
+54
-11
tests/pytest/tools/taosdemoTestInterlace.py
tests/pytest/tools/taosdemoTestInterlace.py
+1
-1
tests/pytest/util/common.py
tests/pytest/util/common.py
+53
-0
tests/pytest/util/sql.py
tests/pytest/util/sql.py
+16
-0
tests/script/general/parser/fill.sim
tests/script/general/parser/fill.sim
+22
-1
tests/script/general/parser/function.sim
tests/script/general/parser/function.sim
+32
-0
tests/script/general/parser/interp.sim
tests/script/general/parser/interp.sim
+16
-1
tests/script/general/parser/tbnameIn_query.sim
tests/script/general/parser/tbnameIn_query.sim
+24
-0
未找到文件。
.drone.yml
浏览文件 @
b86f44af
...
@@ -15,7 +15,7 @@ steps:
...
@@ -15,7 +15,7 @@ steps:
-
mkdir debug
-
mkdir debug
-
cd debug
-
cd debug
-
cmake ..
-
cmake ..
-
make
-
make
-j4
trigger
:
trigger
:
event
:
event
:
-
pull_request
-
pull_request
...
@@ -23,6 +23,7 @@ steps:
...
@@ -23,6 +23,7 @@ steps:
branch
:
branch
:
-
develop
-
develop
-
master
-
master
-
2.0
---
---
kind
:
pipeline
kind
:
pipeline
name
:
test_arm64_bionic
name
:
test_arm64_bionic
...
@@ -39,7 +40,7 @@ steps:
...
@@ -39,7 +40,7 @@ steps:
-
mkdir debug
-
mkdir debug
-
cd debug
-
cd debug
-
cmake .. -DCPUTYPE=aarch64 > /dev/null
-
cmake .. -DCPUTYPE=aarch64 > /dev/null
-
make
-
make
-j4
trigger
:
trigger
:
event
:
event
:
-
pull_request
-
pull_request
...
@@ -66,7 +67,7 @@ steps:
...
@@ -66,7 +67,7 @@ steps:
-
mkdir debug
-
mkdir debug
-
cd debug
-
cd debug
-
cmake .. -DCPUTYPE=aarch64 > /dev/null
-
cmake .. -DCPUTYPE=aarch64 > /dev/null
-
make
-
make
-j4
trigger
:
trigger
:
event
:
event
:
-
pull_request
-
pull_request
...
@@ -91,7 +92,7 @@ steps:
...
@@ -91,7 +92,7 @@ steps:
-
mkdir debug
-
mkdir debug
-
cd debug
-
cd debug
-
cmake .. -DCPUTYPE=aarch64 > /dev/null
-
cmake .. -DCPUTYPE=aarch64 > /dev/null
-
make
-
make
-j4
trigger
:
trigger
:
event
:
event
:
-
pull_request
-
pull_request
...
@@ -116,7 +117,7 @@ steps:
...
@@ -116,7 +117,7 @@ steps:
-
mkdir debug
-
mkdir debug
-
cd debug
-
cd debug
-
cmake .. -DCPUTYPE=aarch64 > /dev/null
-
cmake .. -DCPUTYPE=aarch64 > /dev/null
-
make
-
make
-j4
trigger
:
trigger
:
event
:
event
:
-
pull_request
-
pull_request
...
@@ -142,7 +143,7 @@ steps:
...
@@ -142,7 +143,7 @@ steps:
-
mkdir debug
-
mkdir debug
-
cd debug
-
cd debug
-
cmake .. -DCPUTYPE=aarch32 > /dev/null
-
cmake .. -DCPUTYPE=aarch32 > /dev/null
-
make
-
make
-j4
trigger
:
trigger
:
event
:
event
:
-
pull_request
-
pull_request
...
@@ -150,6 +151,7 @@ steps:
...
@@ -150,6 +151,7 @@ steps:
branch
:
branch
:
-
develop
-
develop
-
master
-
master
-
2.0
---
---
kind
:
pipeline
kind
:
pipeline
name
:
build_trusty
name
:
build_trusty
...
@@ -168,7 +170,7 @@ steps:
...
@@ -168,7 +170,7 @@ steps:
-
mkdir debug
-
mkdir debug
-
cd debug
-
cd debug
-
cmake ..
-
cmake ..
-
make
-
make
-j4
trigger
:
trigger
:
event
:
event
:
-
pull_request
-
pull_request
...
@@ -176,6 +178,7 @@ steps:
...
@@ -176,6 +178,7 @@ steps:
branch
:
branch
:
-
develop
-
develop
-
master
-
master
-
2.0
---
---
kind
:
pipeline
kind
:
pipeline
name
:
build_xenial
name
:
build_xenial
...
@@ -193,7 +196,7 @@ steps:
...
@@ -193,7 +196,7 @@ steps:
-
mkdir debug
-
mkdir debug
-
cd debug
-
cd debug
-
cmake ..
-
cmake ..
-
make
-
make
-j4
trigger
:
trigger
:
event
:
event
:
-
pull_request
-
pull_request
...
@@ -201,7 +204,7 @@ steps:
...
@@ -201,7 +204,7 @@ steps:
branch
:
branch
:
-
develop
-
develop
-
master
-
master
-
2.0
---
---
kind
:
pipeline
kind
:
pipeline
name
:
build_bionic
name
:
build_bionic
...
@@ -218,7 +221,7 @@ steps:
...
@@ -218,7 +221,7 @@ steps:
-
mkdir debug
-
mkdir debug
-
cd debug
-
cd debug
-
cmake ..
-
cmake ..
-
make
-
make
-j4
trigger
:
trigger
:
event
:
event
:
-
pull_request
-
pull_request
...
@@ -226,6 +229,7 @@ steps:
...
@@ -226,6 +229,7 @@ steps:
branch
:
branch
:
-
develop
-
develop
-
master
-
master
-
2.0
---
---
kind
:
pipeline
kind
:
pipeline
name
:
build_centos7
name
:
build_centos7
...
@@ -241,7 +245,7 @@ steps:
...
@@ -241,7 +245,7 @@ steps:
-
mkdir debug
-
mkdir debug
-
cd debug
-
cd debug
-
cmake ..
-
cmake ..
-
make
-
make
-j4
trigger
:
trigger
:
event
:
event
:
-
pull_request
-
pull_request
...
@@ -249,4 +253,4 @@ steps:
...
@@ -249,4 +253,4 @@ steps:
branch
:
branch
:
-
develop
-
develop
-
master
-
master
-
2.0
\ No newline at end of file
Jenkinsfile
浏览文件 @
b86f44af
...
@@ -5,7 +5,7 @@ node {
...
@@ -5,7 +5,7 @@ node {
git
url:
'https://github.com/taosdata/TDengine.git'
git
url:
'https://github.com/taosdata/TDengine.git'
}
}
def
skip
stage
=
0
def
skip
build
=
0
def
abortPreviousBuilds
()
{
def
abortPreviousBuilds
()
{
def
currentJobName
=
env
.
JOB_NAME
def
currentJobName
=
env
.
JOB_NAME
...
@@ -33,8 +33,7 @@ def abort_previous(){
...
@@ -33,8 +33,7 @@ def abort_previous(){
milestone
(
buildNumber
)
milestone
(
buildNumber
)
}
}
def
pre_test
(){
def
pre_test
(){
sh
'hostname'
sh
'''
sh
'''
sudo rmtaos || echo "taosd has not installed"
sudo rmtaos || echo "taosd has not installed"
'''
'''
...
@@ -52,12 +51,18 @@ def pre_test(){
...
@@ -52,12 +51,18 @@ def pre_test(){
git checkout master
git checkout master
'''
'''
}
}
else
{
else
if
(
env
.
CHANGE_TARGET
==
'2.0'
)
{
sh
'''
sh
'''
cd ${WKC}
cd ${WKC}
git checkout
develop
git checkout
2.0
'''
'''
}
}
else
{
sh
'''
cd ${WKC}
git checkout develop
'''
}
}
}
sh
'''
sh
'''
cd ${WKC}
cd ${WKC}
...
@@ -75,7 +80,13 @@ def pre_test(){
...
@@ -75,7 +80,13 @@ def pre_test(){
git checkout master
git checkout master
'''
'''
}
}
else
{
else
if
(
env
.
CHANGE_TARGET
==
'2.0'
){
sh
'''
cd ${WK}
git checkout 2.0
'''
}
else
{
sh
'''
sh
'''
cd ${WK}
cd ${WK}
git checkout develop
git checkout develop
...
@@ -95,19 +106,17 @@ def pre_test(){
...
@@ -95,19 +106,17 @@ def pre_test(){
make > /dev/null
make > /dev/null
make install > /dev/null
make install > /dev/null
cd ${WKC}/tests
cd ${WKC}/tests
pip3 install ${WKC}/src/connector/python
pip3 install ${WKC}/src/connector/python
/
'''
'''
return
1
return
1
}
}
pipeline
{
pipeline
{
agent
none
agent
none
environment
{
environment
{
WK
=
'/var/lib/jenkins/workspace/TDinternal'
WK
=
'/var/lib/jenkins/workspace/TDinternal'
WKC
=
'/var/lib/jenkins/workspace/TDinternal/community'
WKC
=
'/var/lib/jenkins/workspace/TDinternal/community'
}
}
stages
{
stages
{
stage
(
'pre_build'
){
stage
(
'pre_build'
){
agent
{
label
'master'
}
agent
{
label
'master'
}
...
@@ -123,19 +132,22 @@ pipeline {
...
@@ -123,19 +132,22 @@ pipeline {
rm -rf ${WORKSPACE}.tes
rm -rf ${WORKSPACE}.tes
cp -r ${WORKSPACE} ${WORKSPACE}.tes
cp -r ${WORKSPACE} ${WORKSPACE}.tes
cd ${WORKSPACE}.tes
cd ${WORKSPACE}.tes
git fetch
'''
'''
script
{
script
{
if
(
env
.
CHANGE_TARGET
==
'master'
)
{
if
(
env
.
CHANGE_TARGET
==
'master'
)
{
sh
'''
sh
'''
git checkout master
git checkout master
git pull origin master
'''
'''
}
}
else
{
else
if
(
env
.
CHANGE_TARGET
==
'2.0'
){
sh
'''
git checkout 2.0
'''
}
else
{
sh
'''
sh
'''
git checkout develop
git checkout develop
git pull origin develop
'''
'''
}
}
}
}
...
@@ -143,32 +155,35 @@ pipeline {
...
@@ -143,32 +155,35 @@ pipeline {
git fetch origin +refs/pull/${CHANGE_ID}/merge
git fetch origin +refs/pull/${CHANGE_ID}/merge
git checkout -qf FETCH_HEAD
git checkout -qf FETCH_HEAD
'''
'''
script
{
script
{
env
.
skipstage
=
sh
(
script:
"cd ${WORKSPACE}.tes && git --no-pager diff --name-only FETCH_HEAD ${env.CHANGE_TARGET}|grep -v -E '.*md|//src//connector|Jenkinsfile|test-all.sh' || echo 0 "
,
returnStdout:
true
)
skipbuild
=
'2'
skipbuild
=
sh
(
script:
"git log -2 --pretty=%B | fgrep -ie '[skip ci]' -e '[ci skip]' && echo 1 || echo 2"
,
returnStdout:
true
)
println
skipbuild
}
}
println
env
.
skipstage
sh
'''
sh
'''
rm -rf ${WORKSPACE}.tes
rm -rf ${WORKSPACE}.tes
'''
'''
}
}
}
}
stage
(
'Parallel test stage'
)
{
stage
(
'Parallel test stage'
)
{
//only build pr
//only build pr
when
{
when
{
allOf
{
changeRequest
()
changeRequest
()
expression
{
expression
{
env
.
skipstage
!=
0
return
skipbuild
.
trim
()
==
'2'
}
}
}
}
}
parallel
{
parallel
{
stage
(
'python_1_s1'
)
{
stage
(
'python_1_s1'
)
{
agent
{
label
'p1'
}
agent
{
label
" slave1 || slave11 "
}
steps
{
steps
{
pre_test
()
pre_test
()
timeout
(
time:
4
5
,
unit:
'MINUTES'
){
timeout
(
time:
5
5
,
unit:
'MINUTES'
){
sh
'''
sh
'''
date
date
cd ${WKC}/tests
cd ${WKC}/tests
...
@@ -179,11 +194,11 @@ pipeline {
...
@@ -179,11 +194,11 @@ pipeline {
}
}
}
}
stage
(
'python_2_s5'
)
{
stage
(
'python_2_s5'
)
{
agent
{
label
'p2'
}
agent
{
label
" slave5 || slave15 "
}
steps
{
steps
{
pre_test
()
pre_test
()
timeout
(
time:
4
5
,
unit:
'MINUTES'
){
timeout
(
time:
5
5
,
unit:
'MINUTES'
){
sh
'''
sh
'''
date
date
cd ${WKC}/tests
cd ${WKC}/tests
...
@@ -193,9 +208,9 @@ pipeline {
...
@@ -193,9 +208,9 @@ pipeline {
}
}
}
}
stage
(
'python_3_s6'
)
{
stage
(
'python_3_s6'
)
{
agent
{
label
'p3'
}
agent
{
label
" slave6 || slave16 "
}
steps
{
steps
{
timeout
(
time:
4
5
,
unit:
'MINUTES'
){
timeout
(
time:
5
5
,
unit:
'MINUTES'
){
pre_test
()
pre_test
()
sh
'''
sh
'''
date
date
...
@@ -206,9 +221,9 @@ pipeline {
...
@@ -206,9 +221,9 @@ pipeline {
}
}
}
}
stage
(
'test_b1_s2'
)
{
stage
(
'test_b1_s2'
)
{
agent
{
label
'b1'
}
agent
{
label
" slave2 || slave12 "
}
steps
{
steps
{
timeout
(
time:
4
5
,
unit:
'MINUTES'
){
timeout
(
time:
5
5
,
unit:
'MINUTES'
){
pre_test
()
pre_test
()
sh
'''
sh
'''
cd ${WKC}/tests
cd ${WKC}/tests
...
@@ -217,9 +232,8 @@ pipeline {
...
@@ -217,9 +232,8 @@ pipeline {
}
}
}
}
}
}
stage
(
'test_crash_gen_s3'
)
{
stage
(
'test_crash_gen_s3'
)
{
agent
{
label
"
b2
"
}
agent
{
label
"
slave3 || slave13
"
}
steps
{
steps
{
pre_test
()
pre_test
()
...
@@ -245,20 +259,18 @@ pipeline {
...
@@ -245,20 +259,18 @@ pipeline {
./handle_taosd_val_log.sh
./handle_taosd_val_log.sh
'''
'''
}
}
timeout
(
time:
4
5
,
unit:
'MINUTES'
){
timeout
(
time:
5
5
,
unit:
'MINUTES'
){
sh
'''
sh
'''
date
date
cd ${WKC}/tests
cd ${WKC}/tests
./test-all.sh b2fq
./test-all.sh b2fq
date
date
'''
'''
}
}
}
}
}
}
stage
(
'test_valgrind_s4'
)
{
stage
(
'test_valgrind_s4'
)
{
agent
{
label
"
b3
"
}
agent
{
label
"
slave4 || slave14
"
}
steps
{
steps
{
pre_test
()
pre_test
()
...
@@ -269,7 +281,7 @@ pipeline {
...
@@ -269,7 +281,7 @@ pipeline {
./handle_val_log.sh
./handle_val_log.sh
'''
'''
}
}
timeout
(
time:
4
5
,
unit:
'MINUTES'
){
timeout
(
time:
5
5
,
unit:
'MINUTES'
){
sh
'''
sh
'''
date
date
cd ${WKC}/tests
cd ${WKC}/tests
...
@@ -284,9 +296,9 @@ pipeline {
...
@@ -284,9 +296,9 @@ pipeline {
}
}
}
}
stage
(
'test_b4_s7'
)
{
stage
(
'test_b4_s7'
)
{
agent
{
label
'b4'
}
agent
{
label
" slave7 || slave17 "
}
steps
{
steps
{
timeout
(
time:
4
5
,
unit:
'MINUTES'
){
timeout
(
time:
5
5
,
unit:
'MINUTES'
){
pre_test
()
pre_test
()
sh
'''
sh
'''
date
date
...
@@ -303,9 +315,9 @@ pipeline {
...
@@ -303,9 +315,9 @@ pipeline {
}
}
}
}
stage
(
'test_b5_s8'
)
{
stage
(
'test_b5_s8'
)
{
agent
{
label
'b5'
}
agent
{
label
" slave8 || slave18 "
}
steps
{
steps
{
timeout
(
time:
4
5
,
unit:
'MINUTES'
){
timeout
(
time:
5
5
,
unit:
'MINUTES'
){
pre_test
()
pre_test
()
sh
'''
sh
'''
date
date
...
@@ -316,9 +328,9 @@ pipeline {
...
@@ -316,9 +328,9 @@ pipeline {
}
}
}
}
stage
(
'test_b6_s9'
)
{
stage
(
'test_b6_s9'
)
{
agent
{
label
'b6'
}
agent
{
label
" slave9 || slave19 "
}
steps
{
steps
{
timeout
(
time:
4
5
,
unit:
'MINUTES'
){
timeout
(
time:
5
5
,
unit:
'MINUTES'
){
pre_test
()
pre_test
()
sh
'''
sh
'''
date
date
...
@@ -329,9 +341,9 @@ pipeline {
...
@@ -329,9 +341,9 @@ pipeline {
}
}
}
}
stage
(
'test_b7_s10'
)
{
stage
(
'test_b7_s10'
)
{
agent
{
label
'b7'
}
agent
{
label
" slave10 || slave20 "
}
steps
{
steps
{
timeout
(
time:
4
5
,
unit:
'MINUTES'
){
timeout
(
time:
5
5
,
unit:
'MINUTES'
){
pre_test
()
pre_test
()
sh
'''
sh
'''
date
date
...
@@ -421,6 +433,5 @@ pipeline {
...
@@ -421,6 +433,5 @@ pipeline {
from:
"support@taosdata.com"
from:
"support@taosdata.com"
)
)
}
}
}
}
}
}
\ No newline at end of file
deps/MsvcLibX/src/iconv.c
浏览文件 @
b86f44af
...
@@ -98,6 +98,7 @@ int ConvertString(char *buf, size_t nBytes, UINT cpFrom, UINT cpTo, LPCSTR lpDef
...
@@ -98,6 +98,7 @@ int ConvertString(char *buf, size_t nBytes, UINT cpFrom, UINT cpTo, LPCSTR lpDef
char
*
DupAndConvert
(
const
char
*
string
,
UINT
cpFrom
,
UINT
cpTo
,
LPCSTR
lpDefaultChar
)
{
char
*
DupAndConvert
(
const
char
*
string
,
UINT
cpFrom
,
UINT
cpTo
,
LPCSTR
lpDefaultChar
)
{
int
nBytes
;
int
nBytes
;
char
*
pBuf
;
char
*
pBuf
;
char
*
pBuf1
;
nBytes
=
4
*
((
int
)
lstrlen
(
string
)
+
1
);
/* Worst case for the size needed */
nBytes
=
4
*
((
int
)
lstrlen
(
string
)
+
1
);
/* Worst case for the size needed */
pBuf
=
(
char
*
)
malloc
(
nBytes
);
pBuf
=
(
char
*
)
malloc
(
nBytes
);
if
(
!
pBuf
)
{
if
(
!
pBuf
)
{
...
@@ -110,8 +111,9 @@ char *DupAndConvert(const char *string, UINT cpFrom, UINT cpTo, LPCSTR lpDefault
...
@@ -110,8 +111,9 @@ char *DupAndConvert(const char *string, UINT cpFrom, UINT cpTo, LPCSTR lpDefault
free
(
pBuf
);
free
(
pBuf
);
return
NULL
;
return
NULL
;
}
}
pBuf
=
realloc
(
pBuf
,
nBytes
+
1
);
pBuf1
=
realloc
(
pBuf
,
nBytes
+
1
);
return
pBuf
;
if
(
pBuf1
==
NULL
&&
pBuf
!=
NULL
)
free
(
pBuf
);
return
pBuf1
;
}
}
int
CountCharacters
(
const
char
*
string
,
UINT
cp
)
{
int
CountCharacters
(
const
char
*
string
,
UINT
cp
)
{
...
...
deps/MsvcLibX/src/main.c
浏览文件 @
b86f44af
...
@@ -68,6 +68,7 @@ int BreakArgLine(LPSTR pszCmdLine, char ***pppszArg) {
...
@@ -68,6 +68,7 @@ int BreakArgLine(LPSTR pszCmdLine, char ***pppszArg) {
int
iString
=
FALSE
;
/* TRUE = string mode; FALSE = non-string mode */
int
iString
=
FALSE
;
/* TRUE = string mode; FALSE = non-string mode */
int
nBackslash
=
0
;
int
nBackslash
=
0
;
char
**
ppszArg
;
char
**
ppszArg
;
char
**
ppszArg1
;
int
iArg
=
FALSE
;
/* TRUE = inside an argument; FALSE = between arguments */
int
iArg
=
FALSE
;
/* TRUE = inside an argument; FALSE = between arguments */
ppszArg
=
(
char
**
)
malloc
((
argc
+
1
)
*
sizeof
(
char
*
));
ppszArg
=
(
char
**
)
malloc
((
argc
+
1
)
*
sizeof
(
char
*
));
...
@@ -89,7 +90,10 @@ int BreakArgLine(LPSTR pszCmdLine, char ***pppszArg) {
...
@@ -89,7 +90,10 @@ int BreakArgLine(LPSTR pszCmdLine, char ***pppszArg) {
if
((
!
iArg
)
&&
(
c
!=
' '
)
&&
(
c
!=
'\t'
))
{
/* Beginning of a new argument */
if
((
!
iArg
)
&&
(
c
!=
' '
)
&&
(
c
!=
'\t'
))
{
/* Beginning of a new argument */
iArg
=
TRUE
;
iArg
=
TRUE
;
ppszArg
[
argc
++
]
=
pszCopy
+
j
;
ppszArg
[
argc
++
]
=
pszCopy
+
j
;
ppszArg
=
(
char
**
)
realloc
(
ppszArg
,
(
argc
+
1
)
*
sizeof
(
char
*
));
ppszArg1
=
(
char
**
)
realloc
(
ppszArg
,
(
argc
+
1
)
*
sizeof
(
char
*
));
if
(
ppszArg1
==
NULL
&&
ppszArg
!=
NULL
)
free
(
ppszArg
);
ppszArg
=
ppszArg1
;
if
(
!
ppszArg
)
return
-
1
;
if
(
!
ppszArg
)
return
-
1
;
pszCopy
[
j
]
=
c0
=
'\0'
;
pszCopy
[
j
]
=
c0
=
'\0'
;
}
}
...
@@ -212,7 +216,7 @@ int _initU(void) {
...
@@ -212,7 +216,7 @@ int _initU(void) {
fprintf
(
stderr
,
"Warning: Can't convert the argument line to UTF-8
\n
"
);
fprintf
(
stderr
,
"Warning: Can't convert the argument line to UTF-8
\n
"
);
_acmdln
[
0
]
=
'\0'
;
_acmdln
[
0
]
=
'\0'
;
}
}
realloc
(
_acmdln
,
n
+
1
);
/* Resize the memory block to fit the UTF-8 line */
//
realloc(_acmdln, n+1); /* Resize the memory block to fit the UTF-8 line */
/* Should not fail since we make it smaller */
/* Should not fail since we make it smaller */
/* Record the console code page, to allow converting the output accordingly */
/* Record the console code page, to allow converting the output accordingly */
...
...
deps/MsvcLibX/src/realpath.c
浏览文件 @
b86f44af
...
@@ -196,6 +196,7 @@ not_compact_enough:
...
@@ -196,6 +196,7 @@ not_compact_enough:
/* Normally defined in stdlib.h. Output buf must contain PATH_MAX bytes */
/* Normally defined in stdlib.h. Output buf must contain PATH_MAX bytes */
char
*
realpath
(
const
char
*
path
,
char
*
outbuf
)
{
char
*
realpath
(
const
char
*
path
,
char
*
outbuf
)
{
char
*
pOutbuf
=
outbuf
;
char
*
pOutbuf
=
outbuf
;
char
*
pOutbuf1
;
int
iErr
;
int
iErr
;
const
char
*
pc
;
const
char
*
pc
;
...
@@ -242,8 +243,11 @@ realpath_failed:
...
@@ -242,8 +243,11 @@ realpath_failed:
return
NULL
;
return
NULL
;
}
}
if
(
!
outbuf
)
pOutbuf
=
realloc
(
pOutbuf
,
strlen
(
pOutbuf
)
+
1
);
if
(
!
outbuf
)
{
return
pOutbuf
;
pOutbuf1
=
realloc
(
pOutbuf
,
strlen
(
pOutbuf
)
+
1
);
if
(
pOutbuf1
==
NULL
&&
pOutbuf
)
free
(
pOutbuf
);
}
return
pOutbuf1
;
}
}
#endif
#endif
...
@@ -517,6 +521,7 @@ int ResolveLinksA(const char *path, char *buf, size_t bufsize) {
...
@@ -517,6 +521,7 @@ int ResolveLinksA(const char *path, char *buf, size_t bufsize) {
/* Normally defined in stdlib.h. Output buf must contain PATH_MAX bytes */
/* Normally defined in stdlib.h. Output buf must contain PATH_MAX bytes */
char
*
realpathU
(
const
char
*
path
,
char
*
outbuf
)
{
char
*
realpathU
(
const
char
*
path
,
char
*
outbuf
)
{
char
*
pOutbuf
=
outbuf
;
char
*
pOutbuf
=
outbuf
;
char
*
pOutbuf1
;
char
*
pPath1
=
NULL
;
char
*
pPath1
=
NULL
;
char
*
pPath2
=
NULL
;
char
*
pPath2
=
NULL
;
int
iErr
;
int
iErr
;
...
@@ -590,10 +595,13 @@ realpathU_failed:
...
@@ -590,10 +595,13 @@ realpathU_failed:
}
}
DEBUG_LEAVE
((
"return 0x%p; //
\"
%s
\"\n
"
,
pOutbuf
,
pOutbuf
));
DEBUG_LEAVE
((
"return 0x%p; //
\"
%s
\"\n
"
,
pOutbuf
,
pOutbuf
));
if
(
!
outbuf
)
pOutbuf
=
realloc
(
pOutbuf
,
strlen
(
pOutbuf
)
+
1
);
if
(
!
outbuf
)
{
pOutbuf1
=
realloc
(
pOutbuf
,
strlen
(
pOutbuf
)
+
1
);
if
(
pOutbuf1
==
NULL
&&
pOutbuf
)
free
(
pOutbuf
);
}
free
(
pPath1
);
free
(
pPath1
);
free
(
pPath2
);
free
(
pPath2
);
return
pOutbuf
;
return
pOutbuf
1
;
}
}
#endif
/* defined(_WIN32) */
#endif
/* defined(_WIN32) */
...
...
TSZ
@
ceda5bf9
比较
0ca5b15a
...
ceda5bf9
Subproject commit
0ca5b15a8eac40327dd737be52c926fa5675712c
Subproject commit
ceda5bf9fcd7836509ac97dcc0056b3f1dd48cc5
packaging/cfg/taos.cfg
浏览文件 @
b86f44af
...
@@ -144,6 +144,9 @@ keepColumnName 1
...
@@ -144,6 +144,9 @@ keepColumnName 1
# max length of an SQL
# max length of an SQL
# maxSQLLength 65480
# maxSQLLength 65480
# max length of WildCards
# maxWildCardsLength 100
# the maximum number of records allowed for super table time sorting
# the maximum number of records allowed for super table time sorting
# maxNumOfOrderedRes 100000
# maxNumOfOrderedRes 100000
...
...
packaging/docker/dockerManifest.sh
浏览文件 @
b86f44af
...
@@ -44,7 +44,8 @@ echo "version=${version}"
...
@@ -44,7 +44,8 @@ echo "version=${version}"
#docker manifest rm tdengine/tdengine
#docker manifest rm tdengine/tdengine
#docker manifest rm tdengine/tdengine:${version}
#docker manifest rm tdengine/tdengine:${version}
if
[
"
$verType
"
==
"beta"
]
;
then
if
[
"
$verType
"
==
"beta"
]
;
then
docker manifest
rm
tdengine/tdengine:latest
docker manifest inspect tdengine/tdengine-beta:latest
docker manifest
rm
tdengine/tdengine-beta:latest
docker manifest create
-a
tdengine/tdengine-beta:
${
version
}
tdengine/tdengine-amd64-beta:
${
version
}
tdengine/tdengine-aarch64-beta:
${
version
}
tdengine/tdengine-aarch32-beta:
${
version
}
docker manifest create
-a
tdengine/tdengine-beta:
${
version
}
tdengine/tdengine-amd64-beta:
${
version
}
tdengine/tdengine-aarch64-beta:
${
version
}
tdengine/tdengine-aarch32-beta:
${
version
}
docker manifest create
-a
tdengine/tdengine-beta:latest tdengine/tdengine-amd64-beta:latest tdengine/tdengine-aarch64-beta:latest tdengine/tdengine-aarch32-beta:latest
docker manifest create
-a
tdengine/tdengine-beta:latest tdengine/tdengine-amd64-beta:latest tdengine/tdengine-aarch64-beta:latest tdengine/tdengine-aarch32-beta:latest
docker login
-u
tdengine
-p
${
passWord
}
#replace the docker registry username and password
docker login
-u
tdengine
-p
${
passWord
}
#replace the docker registry username and password
...
@@ -52,6 +53,7 @@ if [ "$verType" == "beta" ]; then
...
@@ -52,6 +53,7 @@ if [ "$verType" == "beta" ]; then
docker manifest push tdengine/tdengine-beta:
${
version
}
docker manifest push tdengine/tdengine-beta:
${
version
}
elif
[
"
$verType
"
==
"stable"
]
;
then
elif
[
"
$verType
"
==
"stable"
]
;
then
docker manifest inspect tdengine/tdengine:latest
docker manifest
rm
tdengine/tdengine:latest
docker manifest
rm
tdengine/tdengine:latest
docker manifest create
-a
tdengine/tdengine:
${
version
}
tdengine/tdengine-amd64:
${
version
}
tdengine/tdengine-aarch64:
${
version
}
tdengine/tdengine-aarch32:
${
version
}
docker manifest create
-a
tdengine/tdengine:
${
version
}
tdengine/tdengine-amd64:
${
version
}
tdengine/tdengine-aarch64:
${
version
}
tdengine/tdengine-aarch32:
${
version
}
docker manifest create
-a
tdengine/tdengine:latest tdengine/tdengine-amd64:latest tdengine/tdengine-aarch64:latest tdengine/tdengine-aarch32:latest
docker manifest create
-a
tdengine/tdengine:latest tdengine/tdengine-amd64:latest tdengine/tdengine-aarch64:latest tdengine/tdengine-aarch32:latest
...
...
snap/snapcraft.yaml
浏览文件 @
b86f44af
name
:
tdengine
name
:
tdengine
base
:
core18
base
:
core18
version
:
'
2.1.
5
.0'
version
:
'
2.1.
6
.0'
icon
:
snap/gui/t-dengine.svg
icon
:
snap/gui/t-dengine.svg
summary
:
an open-source big data platform designed and optimized for IoT.
summary
:
an open-source big data platform designed and optimized for IoT.
description
:
|
description
:
|
...
@@ -72,7 +72,7 @@ parts:
...
@@ -72,7 +72,7 @@ parts:
-
usr/bin/taosd
-
usr/bin/taosd
-
usr/bin/taos
-
usr/bin/taos
-
usr/bin/taosdemo
-
usr/bin/taosdemo
-
usr/lib/libtaos.so.2.1.
5
.0
-
usr/lib/libtaos.so.2.1.
6
.0
-
usr/lib/libtaos.so.1
-
usr/lib/libtaos.so.1
-
usr/lib/libtaos.so
-
usr/lib/libtaos.so
...
...
src/balance/src/bnScore.c
浏览文件 @
b86f44af
...
@@ -116,8 +116,17 @@ void bnCleanupDnodes() {
...
@@ -116,8 +116,17 @@ void bnCleanupDnodes() {
static
void
bnCheckDnodesSize
(
int32_t
dnodesNum
)
{
static
void
bnCheckDnodesSize
(
int32_t
dnodesNum
)
{
if
(
tsBnDnodes
.
maxSize
<=
dnodesNum
)
{
if
(
tsBnDnodes
.
maxSize
<=
dnodesNum
)
{
tsBnDnodes
.
maxSize
=
dnodesNum
*
2
;
int32_t
maxSize
=
dnodesNum
*
2
;
tsBnDnodes
.
list
=
realloc
(
tsBnDnodes
.
list
,
tsBnDnodes
.
maxSize
*
sizeof
(
SDnodeObj
*
));
SDnodeObj
**
list1
=
NULL
;
int32_t
retry
=
0
;
while
(
list1
==
NULL
&&
retry
++
<
3
)
{
list1
=
realloc
(
tsBnDnodes
.
list
,
maxSize
*
sizeof
(
SDnodeObj
*
));
}
if
(
list1
)
{
tsBnDnodes
.
list
=
list1
;
tsBnDnodes
.
maxSize
=
maxSize
;
}
}
}
}
}
...
...
src/client/src/tscPrepare.c
浏览文件 @
b86f44af
...
@@ -1527,8 +1527,9 @@ int taos_stmt_prepare(TAOS_STMT* stmt, const char* sql, unsigned long length) {
...
@@ -1527,8 +1527,9 @@ int taos_stmt_prepare(TAOS_STMT* stmt, const char* sql, unsigned long length) {
pCmd
->
insertParam
.
insertType
=
TSDB_QUERY_TYPE_STMT_INSERT
;
pCmd
->
insertParam
.
insertType
=
TSDB_QUERY_TYPE_STMT_INSERT
;
pCmd
->
insertParam
.
objectId
=
pSql
->
self
;
pCmd
->
insertParam
.
objectId
=
pSql
->
self
;
pSql
->
sqlstr
=
realloc
(
pSql
->
sqlstr
,
sqlLen
+
1
);
char
*
sqlstr
=
realloc
(
pSql
->
sqlstr
,
sqlLen
+
1
);
if
(
sqlstr
==
NULL
&&
pSql
->
sqlstr
)
free
(
pSql
->
sqlstr
);
pSql
->
sqlstr
=
sqlstr
;
if
(
pSql
->
sqlstr
==
NULL
)
{
if
(
pSql
->
sqlstr
==
NULL
)
{
tscError
(
"%p failed to malloc sql string buffer"
,
pSql
);
tscError
(
"%p failed to malloc sql string buffer"
,
pSql
);
STMT_RET
(
TSDB_CODE_TSC_OUT_OF_MEMORY
);
STMT_RET
(
TSDB_CODE_TSC_OUT_OF_MEMORY
);
...
...
src/client/src/tscSQLParser.c
浏览文件 @
b86f44af
...
@@ -3218,7 +3218,7 @@ int32_t setShowInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) {
...
@@ -3218,7 +3218,7 @@ int32_t setShowInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) {
pCmd
->
command
=
TSDB_SQL_SHOW
;
pCmd
->
command
=
TSDB_SQL_SHOW
;
const
char
*
msg1
=
"invalid name"
;
const
char
*
msg1
=
"invalid name"
;
const
char
*
msg2
=
"
pattern filter string too long
"
;
const
char
*
msg2
=
"
wildcard string should be less than %d characters
"
;
const
char
*
msg3
=
"database name too long"
;
const
char
*
msg3
=
"database name too long"
;
const
char
*
msg4
=
"invalid ip address"
;
const
char
*
msg4
=
"invalid ip address"
;
const
char
*
msg5
=
"database name is empty"
;
const
char
*
msg5
=
"database name is empty"
;
...
@@ -3262,8 +3262,10 @@ int32_t setShowInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) {
...
@@ -3262,8 +3262,10 @@ int32_t setShowInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) {
return
invalidOperationMsg
(
tscGetErrorMsgPayload
(
pCmd
),
msg6
);
return
invalidOperationMsg
(
tscGetErrorMsgPayload
(
pCmd
),
msg6
);
}
}
if
(
!
tscValidateTableNameLength
(
pCmd
->
payloadLen
))
{
if
(
pPattern
->
n
>
tsMaxWildCardsLen
){
return
invalidOperationMsg
(
tscGetErrorMsgPayload
(
pCmd
),
msg2
);
char
tmp
[
64
]
=
{
0
};
sprintf
(
tmp
,
msg2
,
tsMaxWildCardsLen
);
return
invalidOperationMsg
(
tscGetErrorMsgPayload
(
pCmd
),
tmp
);
}
}
}
}
}
else
if
(
showType
==
TSDB_MGMT_TABLE_VNODES
)
{
}
else
if
(
showType
==
TSDB_MGMT_TABLE_VNODES
)
{
...
@@ -4253,11 +4255,15 @@ static bool isValidExpr(tSqlExpr* pLeft, tSqlExpr* pRight, int32_t optr) {
...
@@ -4253,11 +4255,15 @@ static bool isValidExpr(tSqlExpr* pLeft, tSqlExpr* pRight, int32_t optr) {
if
(
pRight
==
NULL
)
{
if
(
pRight
==
NULL
)
{
return
true
;
return
true
;
}
}
if
(
pLeft
->
tokenId
>=
TK_BOOL
&&
pLeft
->
tokenId
<=
TK_BINARY
&&
pRight
->
tokenId
>=
TK_BOOL
&&
pRight
->
tokenId
<=
TK_BINARY
)
{
if
(
pLeft
->
tokenId
>=
TK_BOOL
&&
pLeft
->
tokenId
<=
TK_BINARY
&&
pRight
->
tokenId
>=
TK_BOOL
&&
pRight
->
tokenId
<=
TK_BINARY
)
{
return
false
;
return
false
;
}
}
if
(
pLeft
->
tokenId
>=
TK_BOOL
&&
pLeft
->
tokenId
<=
TK_BINARY
&&
(
optr
==
TK_NOTNULL
||
optr
==
TK_ISNULL
))
{
return
false
;
}
return
true
;
return
true
;
}
}
...
@@ -4390,15 +4396,17 @@ static int32_t validateNullExpr(tSqlExpr* pExpr, char* msgBuf) {
...
@@ -4390,15 +4396,17 @@ static int32_t validateNullExpr(tSqlExpr* pExpr, char* msgBuf) {
// check for like expression
// check for like expression
static
int32_t
validateLikeExpr
(
tSqlExpr
*
pExpr
,
STableMeta
*
pTableMeta
,
int32_t
index
,
char
*
msgBuf
)
{
static
int32_t
validateLikeExpr
(
tSqlExpr
*
pExpr
,
STableMeta
*
pTableMeta
,
int32_t
index
,
char
*
msgBuf
)
{
const
char
*
msg1
=
"wildcard string should be less than
20
characters"
;
const
char
*
msg1
=
"wildcard string should be less than
%d
characters"
;
const
char
*
msg2
=
"illegal column name"
;
const
char
*
msg2
=
"illegal column name"
;
tSqlExpr
*
pLeft
=
pExpr
->
pLeft
;
tSqlExpr
*
pLeft
=
pExpr
->
pLeft
;
tSqlExpr
*
pRight
=
pExpr
->
pRight
;
tSqlExpr
*
pRight
=
pExpr
->
pRight
;
if
(
pExpr
->
tokenId
==
TK_LIKE
)
{
if
(
pExpr
->
tokenId
==
TK_LIKE
)
{
if
(
pRight
->
value
.
nLen
>
TSDB_PATTERN_STRING_MAX_LEN
)
{
if
(
pRight
->
value
.
nLen
>
tsMaxWildCardsLen
)
{
return
invalidOperationMsg
(
msgBuf
,
msg1
);
char
tmp
[
64
]
=
{
0
};
sprintf
(
tmp
,
msg1
,
tsMaxWildCardsLen
);
return
invalidOperationMsg
(
msgBuf
,
tmp
);
}
}
SSchema
*
pSchema
=
tscGetTableSchema
(
pTableMeta
);
SSchema
*
pSchema
=
tscGetTableSchema
(
pTableMeta
);
...
...
src/client/src/tscSql.c
浏览文件 @
b86f44af
...
@@ -887,7 +887,9 @@ int taos_validate_sql(TAOS *taos, const char *sql) {
...
@@ -887,7 +887,9 @@ int taos_validate_sql(TAOS *taos, const char *sql) {
return
TSDB_CODE_TSC_EXCEED_SQL_LIMIT
;
return
TSDB_CODE_TSC_EXCEED_SQL_LIMIT
;
}
}
pSql
->
sqlstr
=
realloc
(
pSql
->
sqlstr
,
sqlLen
+
1
);
char
*
sqlstr
=
realloc
(
pSql
->
sqlstr
,
sqlLen
+
1
);
if
(
sqlstr
==
NULL
&&
pSql
->
sqlstr
)
free
(
pSql
->
sqlstr
);
pSql
->
sqlstr
=
sqlstr
;
if
(
pSql
->
sqlstr
==
NULL
)
{
if
(
pSql
->
sqlstr
==
NULL
)
{
tscError
(
"0x%"
PRIx64
" failed to malloc sql string buffer"
,
pSql
->
self
);
tscError
(
"0x%"
PRIx64
" failed to malloc sql string buffer"
,
pSql
->
self
);
tfree
(
pSql
);
tfree
(
pSql
);
...
...
src/client/src/tscSubquery.c
浏览文件 @
b86f44af
...
@@ -2395,8 +2395,12 @@ int32_t tscHandleFirstRoundStableQuery(SSqlObj *pSql) {
...
@@ -2395,8 +2395,12 @@ int32_t tscHandleFirstRoundStableQuery(SSqlObj *pSql) {
SColumn
*
x
=
taosArrayGetP
(
pNewQueryInfo
->
colList
,
index1
);
SColumn
*
x
=
taosArrayGetP
(
pNewQueryInfo
->
colList
,
index1
);
tscColumnCopy
(
x
,
pCol
);
tscColumnCopy
(
x
,
pCol
);
}
else
{
}
else
{
SColumn
*
p
=
tscColumnClone
(
pCol
);
SSchema
ss
=
{.
type
=
(
uint8_t
)
pCol
->
info
.
type
,
.
bytes
=
pCol
->
info
.
bytes
,
.
colId
=
(
int16_t
)
pCol
->
columnIndex
};
taosArrayPush
(
pNewQueryInfo
->
colList
,
&
p
);
tscColumnListInsert
(
pNewQueryInfo
->
colList
,
pCol
->
columnIndex
,
pCol
->
tableUid
,
&
ss
);
int32_t
ti
=
tscColumnExists
(
pNewQueryInfo
->
colList
,
pCol
->
columnIndex
,
pCol
->
tableUid
);
assert
(
ti
>=
0
);
SColumn
*
x
=
taosArrayGetP
(
pNewQueryInfo
->
colList
,
ti
);
tscColumnCopy
(
x
,
pCol
);
}
}
}
}
}
}
...
...
src/client/src/tscUtil.c
浏览文件 @
b86f44af
...
@@ -625,8 +625,10 @@ static void setResRawPtrImpl(SSqlRes* pRes, SInternalField* pInfo, int32_t i, bo
...
@@ -625,8 +625,10 @@ static void setResRawPtrImpl(SSqlRes* pRes, SInternalField* pInfo, int32_t i, bo
}
else
if
(
convertNchar
&&
pInfo
->
field
.
type
==
TSDB_DATA_TYPE_NCHAR
)
{
}
else
if
(
convertNchar
&&
pInfo
->
field
.
type
==
TSDB_DATA_TYPE_NCHAR
)
{
// convert unicode to native code in a temporary buffer extra one byte for terminated symbol
// convert unicode to native code in a temporary buffer extra one byte for terminated symbol
pRes
->
buffer
[
i
]
=
realloc
(
pRes
->
buffer
[
i
],
pInfo
->
field
.
bytes
*
pRes
->
numOfRows
);
char
*
buffer
=
realloc
(
pRes
->
buffer
[
i
],
pInfo
->
field
.
bytes
*
pRes
->
numOfRows
);
if
(
buffer
==
NULL
)
return
;
pRes
->
buffer
[
i
]
=
buffer
;
// string terminated char for binary data
// string terminated char for binary data
memset
(
pRes
->
buffer
[
i
],
0
,
pInfo
->
field
.
bytes
*
pRes
->
numOfRows
);
memset
(
pRes
->
buffer
[
i
],
0
,
pInfo
->
field
.
bytes
*
pRes
->
numOfRows
);
...
@@ -4364,6 +4366,7 @@ int32_t tscCreateTableMetaFromSTableMeta(STableMeta** ppChild, const char* name,
...
@@ -4364,6 +4366,7 @@ int32_t tscCreateTableMetaFromSTableMeta(STableMeta** ppChild, const char* name,
STableMeta
*
p
=
NULL
;
STableMeta
*
p
=
NULL
;
size_t
sz
=
0
;
size_t
sz
=
0
;
STableMeta
*
pChild
=
*
ppChild
;
STableMeta
*
pChild
=
*
ppChild
;
STableMeta
*
pChild1
;
taosHashGetCloneExt
(
tscTableMetaMap
,
pChild
->
sTableName
,
strnlen
(
pChild
->
sTableName
,
TSDB_TABLE_FNAME_LEN
),
NULL
,
(
void
**
)
&
p
,
&
sz
);
taosHashGetCloneExt
(
tscTableMetaMap
,
pChild
->
sTableName
,
strnlen
(
pChild
->
sTableName
,
TSDB_TABLE_FNAME_LEN
),
NULL
,
(
void
**
)
&
p
,
&
sz
);
...
@@ -4374,7 +4377,10 @@ int32_t tscCreateTableMetaFromSTableMeta(STableMeta** ppChild, const char* name,
...
@@ -4374,7 +4377,10 @@ int32_t tscCreateTableMetaFromSTableMeta(STableMeta** ppChild, const char* name,
int32_t
totalBytes
=
(
p
->
tableInfo
.
numOfColumns
+
p
->
tableInfo
.
numOfTags
)
*
sizeof
(
SSchema
);
int32_t
totalBytes
=
(
p
->
tableInfo
.
numOfColumns
+
p
->
tableInfo
.
numOfTags
)
*
sizeof
(
SSchema
);
int32_t
tableMetaSize
=
sizeof
(
STableMeta
)
+
totalBytes
;
int32_t
tableMetaSize
=
sizeof
(
STableMeta
)
+
totalBytes
;
if
(
*
tableMetaCapacity
<
tableMetaSize
)
{
if
(
*
tableMetaCapacity
<
tableMetaSize
)
{
pChild
=
realloc
(
pChild
,
tableMetaSize
);
pChild1
=
realloc
(
pChild
,
tableMetaSize
);
if
(
pChild1
==
NULL
)
return
-
1
;
pChild
=
pChild1
;
*
tableMetaCapacity
=
(
size_t
)
tableMetaSize
;
*
tableMetaCapacity
=
(
size_t
)
tableMetaSize
;
}
}
...
...
src/common/inc/tdataformat.h
浏览文件 @
b86f44af
...
@@ -547,8 +547,9 @@ SKVRow tdGetKVRowFromBuilder(SKVRowBuilder *pBuilder);
...
@@ -547,8 +547,9 @@ SKVRow tdGetKVRowFromBuilder(SKVRowBuilder *pBuilder);
static
FORCE_INLINE
int
tdAddColToKVRow
(
SKVRowBuilder
*
pBuilder
,
int16_t
colId
,
int8_t
type
,
void
*
value
)
{
static
FORCE_INLINE
int
tdAddColToKVRow
(
SKVRowBuilder
*
pBuilder
,
int16_t
colId
,
int8_t
type
,
void
*
value
)
{
if
(
pBuilder
->
nCols
>=
pBuilder
->
tCols
)
{
if
(
pBuilder
->
nCols
>=
pBuilder
->
tCols
)
{
pBuilder
->
tCols
*=
2
;
pBuilder
->
tCols
*=
2
;
pBuilder
->
pColIdx
=
(
SColIdx
*
)
realloc
((
void
*
)(
pBuilder
->
pColIdx
),
sizeof
(
SColIdx
)
*
pBuilder
->
tCols
);
SColIdx
*
pColIdx
=
(
SColIdx
*
)
realloc
((
void
*
)(
pBuilder
->
pColIdx
),
sizeof
(
SColIdx
)
*
pBuilder
->
tCols
);
if
(
pBuilder
->
pColIdx
==
NULL
)
return
-
1
;
if
(
pColIdx
==
NULL
)
return
-
1
;
pBuilder
->
pColIdx
=
pColIdx
;
}
}
pBuilder
->
pColIdx
[
pBuilder
->
nCols
].
colId
=
colId
;
pBuilder
->
pColIdx
[
pBuilder
->
nCols
].
colId
=
colId
;
...
@@ -561,8 +562,9 @@ static FORCE_INLINE int tdAddColToKVRow(SKVRowBuilder *pBuilder, int16_t colId,
...
@@ -561,8 +562,9 @@ static FORCE_INLINE int tdAddColToKVRow(SKVRowBuilder *pBuilder, int16_t colId,
while
(
tlen
>
pBuilder
->
alloc
-
pBuilder
->
size
)
{
while
(
tlen
>
pBuilder
->
alloc
-
pBuilder
->
size
)
{
pBuilder
->
alloc
*=
2
;
pBuilder
->
alloc
*=
2
;
}
}
pBuilder
->
buf
=
realloc
(
pBuilder
->
buf
,
pBuilder
->
alloc
);
void
*
buf
=
realloc
(
pBuilder
->
buf
,
pBuilder
->
alloc
);
if
(
pBuilder
->
buf
==
NULL
)
return
-
1
;
if
(
buf
==
NULL
)
return
-
1
;
pBuilder
->
buf
=
buf
;
}
}
memcpy
(
POINTER_SHIFT
(
pBuilder
->
buf
,
pBuilder
->
size
),
value
,
tlen
);
memcpy
(
POINTER_SHIFT
(
pBuilder
->
buf
,
pBuilder
->
size
),
value
,
tlen
);
...
...
src/common/inc/tglobal.h
浏览文件 @
b86f44af
...
@@ -70,6 +70,7 @@ extern int8_t tsKeepOriginalColumnName;
...
@@ -70,6 +70,7 @@ extern int8_t tsKeepOriginalColumnName;
// client
// client
extern
int32_t
tsMaxSQLStringLen
;
extern
int32_t
tsMaxSQLStringLen
;
extern
int32_t
tsMaxWildCardsLen
;
extern
int8_t
tsTscEnableRecordSql
;
extern
int8_t
tsTscEnableRecordSql
;
extern
int32_t
tsMaxNumOfOrderedResults
;
extern
int32_t
tsMaxNumOfOrderedResults
;
extern
int32_t
tsMinSlidingTime
;
extern
int32_t
tsMinSlidingTime
;
...
...
src/common/src/tdataformat.c
浏览文件 @
b86f44af
...
@@ -138,8 +138,9 @@ int tdAddColToSchema(STSchemaBuilder *pBuilder, int8_t type, int16_t colId, int1
...
@@ -138,8 +138,9 @@ int tdAddColToSchema(STSchemaBuilder *pBuilder, int8_t type, int16_t colId, int1
if
(
pBuilder
->
nCols
>=
pBuilder
->
tCols
)
{
if
(
pBuilder
->
nCols
>=
pBuilder
->
tCols
)
{
pBuilder
->
tCols
*=
2
;
pBuilder
->
tCols
*=
2
;
pBuilder
->
columns
=
(
STColumn
*
)
realloc
(
pBuilder
->
columns
,
sizeof
(
STColumn
)
*
pBuilder
->
tCols
);
STColumn
*
columns
=
(
STColumn
*
)
realloc
(
pBuilder
->
columns
,
sizeof
(
STColumn
)
*
pBuilder
->
tCols
);
if
(
pBuilder
->
columns
==
NULL
)
return
-
1
;
if
(
columns
==
NULL
)
return
-
1
;
pBuilder
->
columns
=
columns
;
}
}
STColumn
*
pCol
=
&
(
pBuilder
->
columns
[
pBuilder
->
nCols
]);
STColumn
*
pCol
=
&
(
pBuilder
->
columns
[
pBuilder
->
nCols
]);
...
...
src/common/src/tglobal.c
浏览文件 @
b86f44af
...
@@ -25,6 +25,10 @@
...
@@ -25,6 +25,10 @@
#include "tutil.h"
#include "tutil.h"
#include "tlocale.h"
#include "tlocale.h"
#include "ttimezone.h"
#include "ttimezone.h"
#include "tcompare.h"
// TSDB
bool
tsdbForceKeepFile
=
false
;
// cluster
// cluster
char
tsFirst
[
TSDB_EP_LEN
]
=
{
0
};
char
tsFirst
[
TSDB_EP_LEN
]
=
{
0
};
...
@@ -75,6 +79,7 @@ int32_t tsCompressMsgSize = -1;
...
@@ -75,6 +79,7 @@ int32_t tsCompressMsgSize = -1;
// client
// client
int32_t
tsMaxSQLStringLen
=
TSDB_MAX_ALLOWED_SQL_LEN
;
int32_t
tsMaxSQLStringLen
=
TSDB_MAX_ALLOWED_SQL_LEN
;
int32_t
tsMaxWildCardsLen
=
TSDB_PATTERN_STRING_MAX_LEN
;
int8_t
tsTscEnableRecordSql
=
0
;
int8_t
tsTscEnableRecordSql
=
0
;
// the maximum number of results for projection query on super table that are returned from
// the maximum number of results for projection query on super table that are returned from
...
@@ -984,6 +989,16 @@ static void doInitGlobalConfig(void) {
...
@@ -984,6 +989,16 @@ static void doInitGlobalConfig(void) {
cfg
.
unitType
=
TAOS_CFG_UTYPE_BYTE
;
cfg
.
unitType
=
TAOS_CFG_UTYPE_BYTE
;
taosInitConfigOption
(
cfg
);
taosInitConfigOption
(
cfg
);
cfg
.
option
=
"maxWildCardsLength"
;
cfg
.
ptr
=
&
tsMaxWildCardsLen
;
cfg
.
valType
=
TAOS_CFG_VTYPE_INT32
;
cfg
.
cfgType
=
TSDB_CFG_CTYPE_B_CONFIG
|
TSDB_CFG_CTYPE_B_CLIENT
|
TSDB_CFG_CTYPE_B_SHOW
;
cfg
.
minValue
=
0
;
cfg
.
maxValue
=
TSDB_MAX_FIELD_LEN
;
cfg
.
ptrLength
=
0
;
cfg
.
unitType
=
TAOS_CFG_UTYPE_BYTE
;
taosInitConfigOption
(
cfg
);
cfg
.
option
=
"maxNumOfOrderedRes"
;
cfg
.
option
=
"maxNumOfOrderedRes"
;
cfg
.
ptr
=
&
tsMaxNumOfOrderedResults
;
cfg
.
ptr
=
&
tsMaxNumOfOrderedResults
;
cfg
.
valType
=
TAOS_CFG_VTYPE_INT32
;
cfg
.
valType
=
TAOS_CFG_VTYPE_INT32
;
...
@@ -1531,6 +1546,7 @@ static void doInitGlobalConfig(void) {
...
@@ -1531,6 +1546,7 @@ static void doInitGlobalConfig(void) {
cfg
.
unitType
=
TAOS_CFG_UTYPE_NONE
;
cfg
.
unitType
=
TAOS_CFG_UTYPE_NONE
;
taosInitConfigOption
(
cfg
);
taosInitConfigOption
(
cfg
);
assert
(
tsGlobalConfigNum
<=
TSDB_CFG_MAX_NUM
);
#ifdef TD_TSZ
#ifdef TD_TSZ
// lossy compress
// lossy compress
cfg
.
option
=
"lossyColumns"
;
cfg
.
option
=
"lossyColumns"
;
...
...
src/connector/jdbc/pom.xml
浏览文件 @
b86f44af
...
@@ -113,7 +113,6 @@
...
@@ -113,7 +113,6 @@
</includes>
</includes>
<excludes>
<excludes>
<exclude>
**/AppMemoryLeakTest.java
</exclude>
<exclude>
**/AppMemoryLeakTest.java
</exclude>
<exclude>
**/AuthenticationTest.java
</exclude>
<exclude>
**/ConnectMultiTaosdByRestfulWithDifferentTokenTest.java
</exclude>
<exclude>
**/ConnectMultiTaosdByRestfulWithDifferentTokenTest.java
</exclude>
<exclude>
**/DatetimeBefore1970Test.java
</exclude>
<exclude>
**/DatetimeBefore1970Test.java
</exclude>
<exclude>
**/FailOverTest.java
</exclude>
<exclude>
**/FailOverTest.java
</exclude>
...
...
src/connector/jdbc/src/main/java/com/taosdata/jdbc/TSDBDriver.java
浏览文件 @
b86f44af
...
@@ -14,6 +14,8 @@
...
@@ -14,6 +14,8 @@
*****************************************************************************/
*****************************************************************************/
package
com.taosdata.jdbc
;
package
com.taosdata.jdbc
;
import
java.net.URLEncoder
;
import
java.nio.charset.StandardCharsets
;
import
java.sql.*
;
import
java.sql.*
;
import
java.util.*
;
import
java.util.*
;
import
java.util.logging.Logger
;
import
java.util.logging.Logger
;
...
@@ -127,6 +129,11 @@ public class TSDBDriver extends AbstractDriver {
...
@@ -127,6 +129,11 @@ public class TSDBDriver extends AbstractDriver {
return
null
;
return
null
;
}
}
if
(!
props
.
containsKey
(
TSDBDriver
.
PROPERTY_KEY_USER
))
throw
TSDBError
.
createSQLException
(
TSDBErrorNumbers
.
ERROR_USER_IS_REQUIRED
);
if
(!
props
.
containsKey
(
TSDBDriver
.
PROPERTY_KEY_PASSWORD
))
throw
TSDBError
.
createSQLException
(
TSDBErrorNumbers
.
ERROR_PASSWORD_IS_REQUIRED
);
try
{
try
{
TSDBJNIConnector
.
init
((
String
)
props
.
get
(
PROPERTY_KEY_CONFIG_DIR
),
(
String
)
props
.
get
(
PROPERTY_KEY_LOCALE
),
TSDBJNIConnector
.
init
((
String
)
props
.
get
(
PROPERTY_KEY_CONFIG_DIR
),
(
String
)
props
.
get
(
PROPERTY_KEY_LOCALE
),
(
String
)
props
.
get
(
PROPERTY_KEY_CHARSET
),
(
String
)
props
.
get
(
PROPERTY_KEY_TIME_ZONE
));
(
String
)
props
.
get
(
PROPERTY_KEY_CHARSET
),
(
String
)
props
.
get
(
PROPERTY_KEY_TIME_ZONE
));
...
...
src/connector/jdbc/src/main/java/com/taosdata/jdbc/TSDBError.java
浏览文件 @
b86f44af
...
@@ -33,6 +33,8 @@ public class TSDBError {
...
@@ -33,6 +33,8 @@ public class TSDBError {
TSDBErrorMap
.
put
(
TSDBErrorNumbers
.
ERROR_NUMERIC_VALUE_OUT_OF_RANGE
,
"numeric value out of range"
);
TSDBErrorMap
.
put
(
TSDBErrorNumbers
.
ERROR_NUMERIC_VALUE_OUT_OF_RANGE
,
"numeric value out of range"
);
TSDBErrorMap
.
put
(
TSDBErrorNumbers
.
ERROR_UNKNOWN_TAOS_TYPE
,
"unknown taos type in tdengine"
);
TSDBErrorMap
.
put
(
TSDBErrorNumbers
.
ERROR_UNKNOWN_TAOS_TYPE
,
"unknown taos type in tdengine"
);
TSDBErrorMap
.
put
(
TSDBErrorNumbers
.
ERROR_UNKNOWN_TIMESTAMP_PRECISION
,
"unknown timestamp precision"
);
TSDBErrorMap
.
put
(
TSDBErrorNumbers
.
ERROR_UNKNOWN_TIMESTAMP_PRECISION
,
"unknown timestamp precision"
);
TSDBErrorMap
.
put
(
TSDBErrorNumbers
.
ERROR_USER_IS_REQUIRED
,
"user is required"
);
TSDBErrorMap
.
put
(
TSDBErrorNumbers
.
ERROR_PASSWORD_IS_REQUIRED
,
"password is required"
);
TSDBErrorMap
.
put
(
TSDBErrorNumbers
.
ERROR_UNKNOWN
,
"unknown error"
);
TSDBErrorMap
.
put
(
TSDBErrorNumbers
.
ERROR_UNKNOWN
,
"unknown error"
);
...
...
src/connector/jdbc/src/main/java/com/taosdata/jdbc/TSDBErrorNumbers.java
浏览文件 @
b86f44af
...
@@ -29,6 +29,9 @@ public class TSDBErrorNumbers {
...
@@ -29,6 +29,9 @@ public class TSDBErrorNumbers {
public
static
final
int
ERROR_UNKNOWN_TIMESTAMP_PRECISION
=
0x2316
;
// unknown timestamp precision
public
static
final
int
ERROR_UNKNOWN_TIMESTAMP_PRECISION
=
0x2316
;
// unknown timestamp precision
public
static
final
int
ERROR_RESTFul_Client_Protocol_Exception
=
0x2317
;
public
static
final
int
ERROR_RESTFul_Client_Protocol_Exception
=
0x2317
;
public
static
final
int
ERROR_RESTFul_Client_IOException
=
0x2318
;
public
static
final
int
ERROR_RESTFul_Client_IOException
=
0x2318
;
public
static
final
int
ERROR_USER_IS_REQUIRED
=
0x2319
;
// user is required
public
static
final
int
ERROR_PASSWORD_IS_REQUIRED
=
0x231a
;
// password is required
public
static
final
int
ERROR_UNKNOWN
=
0x2350
;
//unknown error
public
static
final
int
ERROR_UNKNOWN
=
0x2350
;
//unknown error
...
@@ -67,6 +70,8 @@ public class TSDBErrorNumbers {
...
@@ -67,6 +70,8 @@ public class TSDBErrorNumbers {
errorNumbers
.
add
(
ERROR_UNKNOWN_TAOS_TYPE
);
errorNumbers
.
add
(
ERROR_UNKNOWN_TAOS_TYPE
);
errorNumbers
.
add
(
ERROR_UNKNOWN_TIMESTAMP_PRECISION
);
errorNumbers
.
add
(
ERROR_UNKNOWN_TIMESTAMP_PRECISION
);
errorNumbers
.
add
(
ERROR_RESTFul_Client_IOException
);
errorNumbers
.
add
(
ERROR_RESTFul_Client_IOException
);
errorNumbers
.
add
(
ERROR_USER_IS_REQUIRED
);
errorNumbers
.
add
(
ERROR_PASSWORD_IS_REQUIRED
);
errorNumbers
.
add
(
ERROR_RESTFul_Client_Protocol_Exception
);
errorNumbers
.
add
(
ERROR_RESTFul_Client_Protocol_Exception
);
...
...
src/connector/jdbc/src/main/java/com/taosdata/jdbc/TSDBJNIConnector.java
浏览文件 @
b86f44af
...
@@ -36,7 +36,6 @@ public class TSDBJNIConnector {
...
@@ -36,7 +36,6 @@ public class TSDBJNIConnector {
static
{
static
{
System
.
loadLibrary
(
"taos"
);
System
.
loadLibrary
(
"taos"
);
System
.
out
.
println
(
"java.library.path:"
+
System
.
getProperty
(
"java.library.path"
));
}
}
public
boolean
isClosed
()
{
public
boolean
isClosed
()
{
...
...
src/connector/jdbc/src/main/java/com/taosdata/jdbc/rs/RestfulDriver.java
浏览文件 @
b86f44af
...
@@ -7,6 +7,7 @@ import com.taosdata.jdbc.utils.HttpClientPoolUtil;
...
@@ -7,6 +7,7 @@ import com.taosdata.jdbc.utils.HttpClientPoolUtil;
import
java.io.UnsupportedEncodingException
;
import
java.io.UnsupportedEncodingException
;
import
java.net.URLEncoder
;
import
java.net.URLEncoder
;
import
java.nio.charset.StandardCharsets
;
import
java.sql.*
;
import
java.sql.*
;
import
java.util.Properties
;
import
java.util.Properties
;
import
java.util.logging.Logger
;
import
java.util.logging.Logger
;
...
@@ -40,8 +41,13 @@ public class RestfulDriver extends AbstractDriver {
...
@@ -40,8 +41,13 @@ public class RestfulDriver extends AbstractDriver {
String
loginUrl
=
"http://"
+
host
+
":"
+
port
+
"/rest/login/"
+
props
.
getProperty
(
TSDBDriver
.
PROPERTY_KEY_USER
)
+
"/"
+
props
.
getProperty
(
TSDBDriver
.
PROPERTY_KEY_PASSWORD
)
+
""
;
String
loginUrl
=
"http://"
+
host
+
":"
+
port
+
"/rest/login/"
+
props
.
getProperty
(
TSDBDriver
.
PROPERTY_KEY_USER
)
+
"/"
+
props
.
getProperty
(
TSDBDriver
.
PROPERTY_KEY_PASSWORD
)
+
""
;
try
{
try
{
String
user
=
URLEncoder
.
encode
(
props
.
getProperty
(
TSDBDriver
.
PROPERTY_KEY_USER
),
"UTF-8"
);
if
(!
props
.
containsKey
(
TSDBDriver
.
PROPERTY_KEY_USER
))
String
password
=
URLEncoder
.
encode
(
props
.
getProperty
(
TSDBDriver
.
PROPERTY_KEY_PASSWORD
),
"UTF-8"
);
throw
TSDBError
.
createSQLException
(
TSDBErrorNumbers
.
ERROR_USER_IS_REQUIRED
);
if
(!
props
.
containsKey
(
TSDBDriver
.
PROPERTY_KEY_PASSWORD
))
throw
TSDBError
.
createSQLException
(
TSDBErrorNumbers
.
ERROR_PASSWORD_IS_REQUIRED
);
String
user
=
URLEncoder
.
encode
(
props
.
getProperty
(
TSDBDriver
.
PROPERTY_KEY_USER
),
StandardCharsets
.
UTF_8
.
displayName
());
String
password
=
URLEncoder
.
encode
(
props
.
getProperty
(
TSDBDriver
.
PROPERTY_KEY_PASSWORD
),
StandardCharsets
.
UTF_8
.
displayName
());
loginUrl
=
"http://"
+
props
.
getProperty
(
TSDBDriver
.
PROPERTY_KEY_HOST
)
+
":"
+
props
.
getProperty
(
TSDBDriver
.
PROPERTY_KEY_PORT
)
+
"/rest/login/"
+
user
+
"/"
+
password
+
""
;
loginUrl
=
"http://"
+
props
.
getProperty
(
TSDBDriver
.
PROPERTY_KEY_HOST
)
+
":"
+
props
.
getProperty
(
TSDBDriver
.
PROPERTY_KEY_PORT
)
+
"/rest/login/"
+
user
+
"/"
+
password
+
""
;
}
catch
(
UnsupportedEncodingException
e
)
{
}
catch
(
UnsupportedEncodingException
e
)
{
e
.
printStackTrace
();
e
.
printStackTrace
();
...
...
src/connector/jdbc/src/main/java/com/taosdata/jdbc/rs/RestfulStatement.java
浏览文件 @
b86f44af
...
@@ -7,6 +7,7 @@ import com.taosdata.jdbc.AbstractStatement;
...
@@ -7,6 +7,7 @@ import com.taosdata.jdbc.AbstractStatement;
import
com.taosdata.jdbc.TSDBDriver
;
import
com.taosdata.jdbc.TSDBDriver
;
import
com.taosdata.jdbc.TSDBError
;
import
com.taosdata.jdbc.TSDBError
;
import
com.taosdata.jdbc.TSDBErrorNumbers
;
import
com.taosdata.jdbc.TSDBErrorNumbers
;
import
com.taosdata.jdbc.enums.TimestampFormat
;
import
com.taosdata.jdbc.utils.HttpClientPoolUtil
;
import
com.taosdata.jdbc.utils.HttpClientPoolUtil
;
import
com.taosdata.jdbc.utils.SqlSyntaxValidator
;
import
com.taosdata.jdbc.utils.SqlSyntaxValidator
;
...
@@ -45,9 +46,7 @@ public class RestfulStatement extends AbstractStatement {
...
@@ -45,9 +46,7 @@ public class RestfulStatement extends AbstractStatement {
if
(!
SqlSyntaxValidator
.
isValidForExecuteUpdate
(
sql
))
if
(!
SqlSyntaxValidator
.
isValidForExecuteUpdate
(
sql
))
throw
TSDBError
.
createSQLException
(
TSDBErrorNumbers
.
ERROR_INVALID_FOR_EXECUTE_UPDATE
,
"not a valid sql for executeUpdate: "
+
sql
);
throw
TSDBError
.
createSQLException
(
TSDBErrorNumbers
.
ERROR_INVALID_FOR_EXECUTE_UPDATE
,
"not a valid sql for executeUpdate: "
+
sql
);
final
String
url
=
"http://"
+
conn
.
getHost
()
+
":"
+
conn
.
getPort
()
+
"/rest/sql"
;
return
executeOneUpdate
(
sql
);
return
executeOneUpdate
(
url
,
sql
);
}
}
@Override
@Override
...
@@ -62,34 +61,25 @@ public class RestfulStatement extends AbstractStatement {
...
@@ -62,34 +61,25 @@ public class RestfulStatement extends AbstractStatement {
public
boolean
execute
(
String
sql
)
throws
SQLException
{
public
boolean
execute
(
String
sql
)
throws
SQLException
{
if
(
isClosed
())
if
(
isClosed
())
throw
TSDBError
.
createSQLException
(
TSDBErrorNumbers
.
ERROR_STATEMENT_CLOSED
);
throw
TSDBError
.
createSQLException
(
TSDBErrorNumbers
.
ERROR_STATEMENT_CLOSED
);
if
(!
SqlSyntaxValidator
.
isValidForExecute
(
sql
))
throw
TSDBError
.
createSQLException
(
TSDBErrorNumbers
.
ERROR_INVALID_FOR_EXECUTE
,
"not a valid sql for execute: "
+
sql
);
//如果执行了use操作应该将当前Statement的catalog设置为新的database
//如果执行了use操作应该将当前Statement的catalog设置为新的database
boolean
result
=
true
;
boolean
result
=
true
;
String
url
=
"http://"
+
conn
.
getHost
()
+
":"
+
conn
.
getPort
()
+
"/rest/sql"
;
if
(
conn
.
getClientInfo
(
TSDBDriver
.
PROPERTY_KEY_TIMESTAMP_FORMAT
).
equals
(
"TIMESTAMP"
))
{
url
=
"http://"
+
conn
.
getHost
()
+
":"
+
conn
.
getPort
()
+
"/rest/sqlt"
;
}
if
(
conn
.
getClientInfo
(
TSDBDriver
.
PROPERTY_KEY_TIMESTAMP_FORMAT
).
equals
(
"UTC"
))
{
url
=
"http://"
+
conn
.
getHost
()
+
":"
+
conn
.
getPort
()
+
"/rest/sqlutc"
;
}
if
(
SqlSyntaxValidator
.
isUseSql
(
sql
))
{
if
(
SqlSyntaxValidator
.
isUseSql
(
sql
))
{
HttpClientPoolUtil
.
execute
(
url
,
sql
,
this
.
conn
.
getToken
());
HttpClientPoolUtil
.
execute
(
getUrl
()
,
sql
,
this
.
conn
.
getToken
());
this
.
database
=
sql
.
trim
().
replace
(
"use"
,
""
).
trim
();
this
.
database
=
sql
.
trim
().
replace
(
"use"
,
""
).
trim
();
this
.
conn
.
setCatalog
(
this
.
database
);
this
.
conn
.
setCatalog
(
this
.
database
);
result
=
false
;
result
=
false
;
}
else
if
(
SqlSyntaxValidator
.
isDatabaseUnspecifiedQuery
(
sql
))
{
}
else
if
(
SqlSyntaxValidator
.
isDatabaseUnspecifiedQuery
(
sql
))
{
executeOneQuery
(
sql
);
executeOneQuery
(
sql
);
}
else
if
(
SqlSyntaxValidator
.
isDatabaseUnspecifiedUpdate
(
sql
))
{
}
else
if
(
SqlSyntaxValidator
.
isDatabaseUnspecifiedUpdate
(
sql
))
{
executeOneUpdate
(
url
,
sql
);
executeOneUpdate
(
sql
);
result
=
false
;
result
=
false
;
}
else
{
}
else
{
if
(
SqlSyntaxValidator
.
isValidForExecuteQuery
(
sql
))
{
if
(
SqlSyntaxValidator
.
isValidForExecuteQuery
(
sql
))
{
executeQuery
(
sql
);
execute
One
Query
(
sql
);
}
else
{
}
else
{
executeUpdate
(
sql
);
execute
One
Update
(
sql
);
result
=
false
;
result
=
false
;
}
}
}
}
...
@@ -97,19 +87,25 @@ public class RestfulStatement extends AbstractStatement {
...
@@ -97,19 +87,25 @@ public class RestfulStatement extends AbstractStatement {
return
result
;
return
result
;
}
}
private
ResultSet
executeOneQuery
(
String
sql
)
throws
SQLException
{
private
String
getUrl
()
throws
SQLException
{
if
(!
SqlSyntaxValidator
.
isValidForExecuteQuery
(
sql
))
TimestampFormat
timestampFormat
=
TimestampFormat
.
valueOf
(
conn
.
getClientInfo
(
TSDBDriver
.
PROPERTY_KEY_TIMESTAMP_FORMAT
).
trim
().
toUpperCase
());
throw
TSDBError
.
createSQLException
(
TSDBErrorNumbers
.
ERROR_INVALID_FOR_EXECUTE_QUERY
,
"not a valid sql for executeQuery: "
+
sql
);
String
url
;
switch
(
timestampFormat
)
{
case
TIMESTAMP:
url
=
"http://"
+
conn
.
getHost
()
+
":"
+
conn
.
getPort
()
+
"/rest/sqlt"
;
break
;
case
UTC:
url
=
"http://"
+
conn
.
getHost
()
+
":"
+
conn
.
getPort
()
+
"/rest/sqlutc"
;
break
;
default
:
url
=
"http://"
+
conn
.
getHost
()
+
":"
+
conn
.
getPort
()
+
"/rest/sql"
;
}
return
url
;
}
private
ResultSet
executeOneQuery
(
String
sql
)
throws
SQLException
{
// row data
// row data
String
url
=
"http://"
+
conn
.
getHost
()
+
":"
+
conn
.
getPort
()
+
"/rest/sql"
;
String
result
=
HttpClientPoolUtil
.
execute
(
getUrl
(),
sql
,
this
.
conn
.
getToken
());
String
timestampFormat
=
conn
.
getClientInfo
(
TSDBDriver
.
PROPERTY_KEY_TIMESTAMP_FORMAT
);
if
(
"TIMESTAMP"
.
equalsIgnoreCase
(
timestampFormat
))
url
=
"http://"
+
conn
.
getHost
()
+
":"
+
conn
.
getPort
()
+
"/rest/sqlt"
;
if
(
"UTC"
.
equalsIgnoreCase
(
timestampFormat
))
url
=
"http://"
+
conn
.
getHost
()
+
":"
+
conn
.
getPort
()
+
"/rest/sqlutc"
;
String
result
=
HttpClientPoolUtil
.
execute
(
url
,
sql
,
this
.
conn
.
getToken
());
JSONObject
resultJson
=
JSON
.
parseObject
(
result
);
JSONObject
resultJson
=
JSON
.
parseObject
(
result
);
if
(
resultJson
.
getString
(
"status"
).
equals
(
"error"
))
{
if
(
resultJson
.
getString
(
"status"
).
equals
(
"error"
))
{
throw
TSDBError
.
createSQLException
(
resultJson
.
getInteger
(
"code"
),
resultJson
.
getString
(
"desc"
));
throw
TSDBError
.
createSQLException
(
resultJson
.
getInteger
(
"code"
),
resultJson
.
getString
(
"desc"
));
...
@@ -119,11 +115,8 @@ public class RestfulStatement extends AbstractStatement {
...
@@ -119,11 +115,8 @@ public class RestfulStatement extends AbstractStatement {
return
resultSet
;
return
resultSet
;
}
}
private
int
executeOneUpdate
(
String
url
,
String
sql
)
throws
SQLException
{
private
int
executeOneUpdate
(
String
sql
)
throws
SQLException
{
if
(!
SqlSyntaxValidator
.
isValidForExecuteUpdate
(
sql
))
String
result
=
HttpClientPoolUtil
.
execute
(
getUrl
(),
sql
,
this
.
conn
.
getToken
());
throw
TSDBError
.
createSQLException
(
TSDBErrorNumbers
.
ERROR_INVALID_FOR_EXECUTE_UPDATE
,
"not a valid sql for executeUpdate: "
+
sql
);
String
result
=
HttpClientPoolUtil
.
execute
(
url
,
sql
,
this
.
conn
.
getToken
());
JSONObject
jsonObject
=
JSON
.
parseObject
(
result
);
JSONObject
jsonObject
=
JSON
.
parseObject
(
result
);
if
(
jsonObject
.
getString
(
"status"
).
equals
(
"error"
))
{
if
(
jsonObject
.
getString
(
"status"
).
equals
(
"error"
))
{
throw
TSDBError
.
createSQLException
(
jsonObject
.
getInteger
(
"code"
),
jsonObject
.
getString
(
"desc"
));
throw
TSDBError
.
createSQLException
(
jsonObject
.
getInteger
(
"code"
),
jsonObject
.
getString
(
"desc"
));
...
@@ -134,7 +127,7 @@ public class RestfulStatement extends AbstractStatement {
...
@@ -134,7 +127,7 @@ public class RestfulStatement extends AbstractStatement {
}
}
private
int
getAffectedRows
(
JSONObject
jsonObject
)
throws
SQLException
{
private
int
getAffectedRows
(
JSONObject
jsonObject
)
throws
SQLException
{
// create ... SQLs should return 0 , and Restful result
is
this:
// create ... SQLs should return 0 , and Restful result
like
this:
// {"status": "succ", "head": ["affected_rows"], "data": [[0]], "rows": 1}
// {"status": "succ", "head": ["affected_rows"], "data": [[0]], "rows": 1}
JSONArray
head
=
jsonObject
.
getJSONArray
(
"head"
);
JSONArray
head
=
jsonObject
.
getJSONArray
(
"head"
);
if
(
head
.
size
()
!=
1
||
!
"affected_rows"
.
equals
(
head
.
getString
(
0
)))
if
(
head
.
size
()
!=
1
||
!
"affected_rows"
.
equals
(
head
.
getString
(
0
)))
...
...
src/connector/jdbc/src/main/java/com/taosdata/jdbc/utils/SqlSyntaxValidator.java
浏览文件 @
b86f44af
...
@@ -16,8 +16,7 @@ package com.taosdata.jdbc.utils;
...
@@ -16,8 +16,7 @@ package com.taosdata.jdbc.utils;
public
class
SqlSyntaxValidator
{
public
class
SqlSyntaxValidator
{
private
static
final
String
[]
SQL
=
{
"select"
,
"insert"
,
"import"
,
"create"
,
"use"
,
"alter"
,
"drop"
,
"set"
,
"show"
,
"describe"
,
"reset"
};
private
static
final
String
[]
updateSQL
=
{
"insert"
,
"import"
,
"create"
,
"use"
,
"alter"
,
"drop"
,
"set"
,
"reset"
};
private
static
final
String
[]
updateSQL
=
{
"insert"
,
"import"
,
"create"
,
"use"
,
"alter"
,
"drop"
,
"set"
};
private
static
final
String
[]
querySQL
=
{
"select"
,
"show"
,
"describe"
};
private
static
final
String
[]
querySQL
=
{
"select"
,
"show"
,
"describe"
};
private
static
final
String
[]
databaseUnspecifiedShow
=
{
"databases"
,
"dnodes"
,
"mnodes"
,
"variables"
};
private
static
final
String
[]
databaseUnspecifiedShow
=
{
"databases"
,
"dnodes"
,
"mnodes"
,
"variables"
};
...
@@ -38,14 +37,6 @@ public class SqlSyntaxValidator {
...
@@ -38,14 +37,6 @@ public class SqlSyntaxValidator {
return
false
;
return
false
;
}
}
public
static
boolean
isValidForExecute
(
String
sql
)
{
for
(
String
prefix
:
SQL
)
{
if
(
sql
.
trim
().
toLowerCase
().
startsWith
(
prefix
))
return
true
;
}
return
false
;
}
public
static
boolean
isDatabaseUnspecifiedQuery
(
String
sql
)
{
public
static
boolean
isDatabaseUnspecifiedQuery
(
String
sql
)
{
for
(
String
databaseObj
:
databaseUnspecifiedShow
)
{
for
(
String
databaseObj
:
databaseUnspecifiedShow
)
{
if
(
sql
.
trim
().
toLowerCase
().
matches
(
"show\\s+"
+
databaseObj
+
".*"
))
if
(
sql
.
trim
().
toLowerCase
().
matches
(
"show\\s+"
+
databaseObj
+
".*"
))
...
@@ -63,9 +54,5 @@ public class SqlSyntaxValidator {
...
@@ -63,9 +54,5 @@ public class SqlSyntaxValidator {
return
sql
.
trim
().
toLowerCase
().
startsWith
(
"use"
);
return
sql
.
trim
().
toLowerCase
().
startsWith
(
"use"
);
}
}
public
static
boolean
isSelectSql
(
String
sql
)
{
return
sql
.
trim
().
toLowerCase
().
startsWith
(
"select"
);
}
}
}
src/connector/jdbc/src/test/java/com/taosdata/jdbc/SubscribeTest.java
浏览文件 @
b86f44af
...
@@ -69,6 +69,8 @@ public class SubscribeTest {
...
@@ -69,6 +69,8 @@ public class SubscribeTest {
@Before
@Before
public
void
createDatabase
()
throws
SQLException
{
public
void
createDatabase
()
throws
SQLException
{
Properties
properties
=
new
Properties
();
Properties
properties
=
new
Properties
();
properties
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_USER
,
"root"
);
properties
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_PASSWORD
,
"taosdata"
);
properties
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_CHARSET
,
"UTF-8"
);
properties
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_CHARSET
,
"UTF-8"
);
properties
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_LOCALE
,
"en_US.UTF-8"
);
properties
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_LOCALE
,
"en_US.UTF-8"
);
properties
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_TIME_ZONE
,
"UTC-8"
);
properties
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_TIME_ZONE
,
"UTC-8"
);
...
...
src/connector/jdbc/src/test/java/com/taosdata/jdbc/cases/AuthenticationTest.java
浏览文件 @
b86f44af
package
com.taosdata.jdbc.cases
;
package
com.taosdata.jdbc.cases
;
import
com.taosdata.jdbc.TSDBErrorNumbers
;
import
org.junit.Assert
;
import
org.junit.Before
;
import
org.junit.Before
;
import
org.junit.Ignore
;
import
org.junit.Test
;
import
org.junit.Test
;
import
java.sql.*
;
import
java.sql.*
;
...
@@ -12,6 +15,47 @@ public class AuthenticationTest {
...
@@ -12,6 +15,47 @@ public class AuthenticationTest {
private
static
final
String
password
=
"taos?data"
;
private
static
final
String
password
=
"taos?data"
;
private
Connection
conn
;
private
Connection
conn
;
@Test
public
void
connectWithoutUserByJni
()
{
try
{
DriverManager
.
getConnection
(
"jdbc:TAOS://"
+
host
+
":0/?"
);
}
catch
(
SQLException
e
)
{
Assert
.
assertEquals
(
TSDBErrorNumbers
.
ERROR_USER_IS_REQUIRED
,
e
.
getErrorCode
());
Assert
.
assertEquals
(
"ERROR (2319): user is required"
,
e
.
getMessage
());
}
}
@Test
public
void
connectWithoutUserByRestful
()
{
try
{
DriverManager
.
getConnection
(
"jdbc:TAOS-RS://"
+
host
+
":6041/?"
);
}
catch
(
SQLException
e
)
{
Assert
.
assertEquals
(
TSDBErrorNumbers
.
ERROR_USER_IS_REQUIRED
,
e
.
getErrorCode
());
Assert
.
assertEquals
(
"ERROR (2319): user is required"
,
e
.
getMessage
());
}
}
@Test
public
void
connectWithoutPasswordByJni
()
{
try
{
DriverManager
.
getConnection
(
"jdbc:TAOS://"
+
host
+
":0/?user=root"
);
}
catch
(
SQLException
e
)
{
Assert
.
assertEquals
(
TSDBErrorNumbers
.
ERROR_PASSWORD_IS_REQUIRED
,
e
.
getErrorCode
());
Assert
.
assertEquals
(
"ERROR (231a): password is required"
,
e
.
getMessage
());
}
}
@Test
public
void
connectWithoutPasswordByRestful
()
{
try
{
DriverManager
.
getConnection
(
"jdbc:TAOS-RS://"
+
host
+
":6041/?user=root"
);
}
catch
(
SQLException
e
)
{
Assert
.
assertEquals
(
TSDBErrorNumbers
.
ERROR_PASSWORD_IS_REQUIRED
,
e
.
getErrorCode
());
Assert
.
assertEquals
(
"ERROR (231a): password is required"
,
e
.
getMessage
());
}
}
@Ignore
@Test
@Test
public
void
test
()
{
public
void
test
()
{
// change password
// change password
...
...
src/connector/jdbc/src/test/java/com/taosdata/jdbc/cases/BatchInsertTest.java
浏览文件 @
b86f44af
...
@@ -29,6 +29,8 @@ public class BatchInsertTest {
...
@@ -29,6 +29,8 @@ public class BatchInsertTest {
public
void
before
()
{
public
void
before
()
{
try
{
try
{
Properties
properties
=
new
Properties
();
Properties
properties
=
new
Properties
();
properties
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_USER
,
"root"
);
properties
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_PASSWORD
,
"taosdata"
);
properties
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_CHARSET
,
"UTF-8"
);
properties
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_CHARSET
,
"UTF-8"
);
properties
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_LOCALE
,
"en_US.UTF-8"
);
properties
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_LOCALE
,
"en_US.UTF-8"
);
properties
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_TIME_ZONE
,
"UTC-8"
);
properties
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_TIME_ZONE
,
"UTC-8"
);
...
...
src/connector/jdbc/src/test/java/com/taosdata/jdbc/cases/ImportTest.java
浏览文件 @
b86f44af
...
@@ -21,6 +21,8 @@ public class ImportTest {
...
@@ -21,6 +21,8 @@ public class ImportTest {
public
static
void
before
()
{
public
static
void
before
()
{
try
{
try
{
Properties
properties
=
new
Properties
();
Properties
properties
=
new
Properties
();
properties
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_USER
,
"root"
);
properties
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_PASSWORD
,
"taosdata"
);
properties
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_CHARSET
,
"UTF-8"
);
properties
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_CHARSET
,
"UTF-8"
);
properties
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_LOCALE
,
"en_US.UTF-8"
);
properties
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_LOCALE
,
"en_US.UTF-8"
);
properties
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_TIME_ZONE
,
"UTC-8"
);
properties
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_TIME_ZONE
,
"UTC-8"
);
...
...
src/connector/jdbc/src/test/java/com/taosdata/jdbc/cases/InsertSpecialCharacterJniTest.java
浏览文件 @
b86f44af
...
@@ -270,6 +270,41 @@ public class InsertSpecialCharacterJniTest {
...
@@ -270,6 +270,41 @@ public class InsertSpecialCharacterJniTest {
}
}
}
}
@Ignore
@Test
public
void
testSingleQuotaEscape
()
throws
SQLException
{
final
long
now
=
System
.
currentTimeMillis
();
final
String
sql
=
"insert into t? using ? tags(?) values(?, ?, ?) t? using "
+
tbname2
+
" tags(?) values(?,?,?) "
;
try
(
PreparedStatement
pstmt
=
conn
.
prepareStatement
(
sql
))
{
// t1
pstmt
.
setInt
(
1
,
1
);
pstmt
.
setString
(
2
,
tbname2
);
pstmt
.
setString
(
3
,
special_character_str_5
);
pstmt
.
setTimestamp
(
4
,
new
Timestamp
(
now
));
pstmt
.
setBytes
(
5
,
special_character_str_5
.
getBytes
());
// t2
pstmt
.
setInt
(
7
,
2
);
pstmt
.
setString
(
8
,
special_character_str_5
);
pstmt
.
setTimestamp
(
9
,
new
Timestamp
(
now
));
pstmt
.
setString
(
11
,
special_character_str_5
);
int
ret
=
pstmt
.
executeUpdate
();
Assert
.
assertEquals
(
2
,
ret
);
}
String
query
=
"select * from ?.t? where ? < ? and ts >= ? and f1 is not null"
;
try
(
PreparedStatement
pstmt
=
conn
.
prepareStatement
(
query
))
{
pstmt
.
setString
(
1
,
dbName
);
pstmt
.
setInt
(
2
,
1
);
pstmt
.
setString
(
3
,
"ts"
);
pstmt
.
setTimestamp
(
4
,
new
Timestamp
(
System
.
currentTimeMillis
()));
pstmt
.
setTimestamp
(
5
,
new
Timestamp
(
0
));
ResultSet
rs
=
pstmt
.
executeQuery
();
Assert
.
assertNotNull
(
rs
);
}
}
@Test
@Test
public
void
testCase10
()
throws
SQLException
{
public
void
testCase10
()
throws
SQLException
{
final
long
now
=
System
.
currentTimeMillis
();
final
long
now
=
System
.
currentTimeMillis
();
...
@@ -293,13 +328,12 @@ public class InsertSpecialCharacterJniTest {
...
@@ -293,13 +328,12 @@ public class InsertSpecialCharacterJniTest {
Assert
.
assertEquals
(
2
,
ret
);
Assert
.
assertEquals
(
2
,
ret
);
}
}
//query t1
//query t1
String
query
=
"select * from ?.t? where ts < ? and ts >= ? and
?
is not null"
;
String
query
=
"select * from ?.t? where ts < ? and ts >= ? and
f1
is not null"
;
try
(
PreparedStatement
pstmt
=
conn
.
prepareStatement
(
query
))
{
try
(
PreparedStatement
pstmt
=
conn
.
prepareStatement
(
query
))
{
pstmt
.
setString
(
1
,
dbName
);
pstmt
.
setString
(
1
,
dbName
);
pstmt
.
setInt
(
2
,
1
);
pstmt
.
setInt
(
2
,
1
);
pstmt
.
setTimestamp
(
3
,
new
Timestamp
(
System
.
currentTimeMillis
()));
pstmt
.
setTimestamp
(
3
,
new
Timestamp
(
System
.
currentTimeMillis
()));
pstmt
.
setTimestamp
(
4
,
new
Timestamp
(
0
));
pstmt
.
setTimestamp
(
4
,
new
Timestamp
(
0
));
pstmt
.
setString
(
5
,
"f1"
);
ResultSet
rs
=
pstmt
.
executeQuery
();
ResultSet
rs
=
pstmt
.
executeQuery
();
rs
.
next
();
rs
.
next
();
...
@@ -311,12 +345,11 @@ public class InsertSpecialCharacterJniTest {
...
@@ -311,12 +345,11 @@ public class InsertSpecialCharacterJniTest {
Assert
.
assertNull
(
f2
);
Assert
.
assertNull
(
f2
);
}
}
// query t2
// query t2
query
=
"select * from t? where ts < ? and ts >= ? and
?
is not null"
;
query
=
"select * from t? where ts < ? and ts >= ? and
f2
is not null"
;
try
(
PreparedStatement
pstmt
=
conn
.
prepareStatement
(
query
))
{
try
(
PreparedStatement
pstmt
=
conn
.
prepareStatement
(
query
))
{
pstmt
.
setInt
(
1
,
2
);
pstmt
.
setInt
(
1
,
2
);
pstmt
.
setTimestamp
(
2
,
new
Timestamp
(
System
.
currentTimeMillis
()));
pstmt
.
setTimestamp
(
2
,
new
Timestamp
(
System
.
currentTimeMillis
()));
pstmt
.
setTimestamp
(
3
,
new
Timestamp
(
0
));
pstmt
.
setTimestamp
(
3
,
new
Timestamp
(
0
));
pstmt
.
setString
(
4
,
"f2"
);
ResultSet
rs
=
pstmt
.
executeQuery
();
ResultSet
rs
=
pstmt
.
executeQuery
();
rs
.
next
();
rs
.
next
();
...
...
src/connector/jdbc/src/test/java/com/taosdata/jdbc/cases/InsertSpecialCharacterRestfulTest.java
浏览文件 @
b86f44af
...
@@ -293,13 +293,12 @@ public class InsertSpecialCharacterRestfulTest {
...
@@ -293,13 +293,12 @@ public class InsertSpecialCharacterRestfulTest {
Assert
.
assertEquals
(
2
,
ret
);
Assert
.
assertEquals
(
2
,
ret
);
}
}
//query t1
//query t1
String
query
=
"select * from ?.t? where ts < ? and ts >= ? and
?
is not null"
;
String
query
=
"select * from ?.t? where ts < ? and ts >= ? and
f1
is not null"
;
try
(
PreparedStatement
pstmt
=
conn
.
prepareStatement
(
query
))
{
try
(
PreparedStatement
pstmt
=
conn
.
prepareStatement
(
query
))
{
pstmt
.
setString
(
1
,
dbName
);
pstmt
.
setString
(
1
,
dbName
);
pstmt
.
setInt
(
2
,
1
);
pstmt
.
setInt
(
2
,
1
);
pstmt
.
setTimestamp
(
3
,
new
Timestamp
(
System
.
currentTimeMillis
()));
pstmt
.
setTimestamp
(
3
,
new
Timestamp
(
System
.
currentTimeMillis
()));
pstmt
.
setTimestamp
(
4
,
new
Timestamp
(
0
));
pstmt
.
setTimestamp
(
4
,
new
Timestamp
(
0
));
pstmt
.
setString
(
5
,
"f1"
);
ResultSet
rs
=
pstmt
.
executeQuery
();
ResultSet
rs
=
pstmt
.
executeQuery
();
rs
.
next
();
rs
.
next
();
...
@@ -311,12 +310,11 @@ public class InsertSpecialCharacterRestfulTest {
...
@@ -311,12 +310,11 @@ public class InsertSpecialCharacterRestfulTest {
Assert
.
assertNull
(
f2
);
Assert
.
assertNull
(
f2
);
}
}
// query t2
// query t2
query
=
"select * from t? where ts < ? and ts >= ? and
?
is not null"
;
query
=
"select * from t? where ts < ? and ts >= ? and
f2
is not null"
;
try
(
PreparedStatement
pstmt
=
conn
.
prepareStatement
(
query
))
{
try
(
PreparedStatement
pstmt
=
conn
.
prepareStatement
(
query
))
{
pstmt
.
setInt
(
1
,
2
);
pstmt
.
setInt
(
1
,
2
);
pstmt
.
setTimestamp
(
2
,
new
Timestamp
(
System
.
currentTimeMillis
()));
pstmt
.
setTimestamp
(
2
,
new
Timestamp
(
System
.
currentTimeMillis
()));
pstmt
.
setTimestamp
(
3
,
new
Timestamp
(
0
));
pstmt
.
setTimestamp
(
3
,
new
Timestamp
(
0
));
pstmt
.
setString
(
4
,
"f2"
);
ResultSet
rs
=
pstmt
.
executeQuery
();
ResultSet
rs
=
pstmt
.
executeQuery
();
rs
.
next
();
rs
.
next
();
...
...
src/connector/jdbc/src/test/java/com/taosdata/jdbc/cases/QueryDataTest.java
浏览文件 @
b86f44af
...
@@ -22,6 +22,8 @@ public class QueryDataTest {
...
@@ -22,6 +22,8 @@ public class QueryDataTest {
public
void
createDatabase
()
{
public
void
createDatabase
()
{
try
{
try
{
Properties
properties
=
new
Properties
();
Properties
properties
=
new
Properties
();
properties
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_USER
,
"root"
);
properties
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_PASSWORD
,
"taosdata"
);
properties
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_CHARSET
,
"UTF-8"
);
properties
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_CHARSET
,
"UTF-8"
);
properties
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_LOCALE
,
"en_US.UTF-8"
);
properties
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_LOCALE
,
"en_US.UTF-8"
);
properties
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_TIME_ZONE
,
"UTC-8"
);
properties
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_TIME_ZONE
,
"UTC-8"
);
...
...
src/connector/jdbc/src/test/java/com/taosdata/jdbc/cases/ResetQueryCacheTest.java
浏览文件 @
b86f44af
package
com.taosdata.jdbc.cases
;
package
com.taosdata.jdbc.cases
;
import
com.taosdata.jdbc.TSDBDriver
;
import
org.junit.After
;
import
org.junit.Before
;
import
org.junit.Test
;
import
org.junit.Test
;
import
java.sql.*
;
import
java.sql.Connection
;
import
java.util.Properties
;
import
java.sql.DriverManager
;
import
java.sql.SQLException
;
import
java.sql.Statement
;
import
static
org
.
junit
.
Assert
.
assertEquals
;
import
static
org
.
junit
.
Assert
.
assertEquals
;
import
static
org
.
junit
.
Assert
.
assertFalse
;
public
class
ResetQueryCacheTest
{
public
class
ResetQueryCacheTest
{
static
Connection
connection
;
@Test
static
Statement
statement
;
public
void
jni
()
throws
SQLException
{
static
String
host
=
"127.0.0.1"
;
// given
Connection
connection
=
DriverManager
.
getConnection
(
"jdbc:TAOS://127.0.0.1:0/?user=root&password=taosdata&timezone=UTC-8&charset=UTF-8&locale=en_US.UTF-8"
);
@Before
Statement
statement
=
connection
.
createStatement
();
public
void
init
()
{
try
{
// when
Properties
properties
=
new
Properties
();
boolean
execute
=
statement
.
execute
(
"reset query cache"
);
properties
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_CHARSET
,
"UTF-8"
);
properties
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_LOCALE
,
"en_US.UTF-8"
);
// then
properties
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_TIME_ZONE
,
"UTC-8"
);
assertFalse
(
execute
);
connection
=
DriverManager
.
getConnection
(
"jdbc:TAOS://"
+
host
+
":0/"
,
properties
);
assertEquals
(
0
,
statement
.
getUpdateCount
());
statement
=
connection
.
createStatement
();
}
catch
(
SQLException
e
)
{
statement
.
close
();
return
;
connection
.
close
();
}
}
}
@Test
@Test
public
void
testResetQueryCache
()
throws
SQLException
{
public
void
restful
()
throws
SQLException
{
String
resetSql
=
"reset query cache"
;
// given
statement
.
execute
(
resetSql
);
Connection
connection
=
DriverManager
.
getConnection
(
"jdbc:TAOS-RS://127.0.0.1:6041/?user=root&password=taosdata&timezone=UTC-8&charset=UTF-8&locale=en_US.UTF-8"
);
}
Statement
statement
=
connection
.
createStatement
();
// when
boolean
execute
=
statement
.
execute
(
"reset query cache"
);
// then
assertFalse
(
execute
);
assertEquals
(
0
,
statement
.
getUpdateCount
());
@After
statement
.
close
();
public
void
close
()
{
connection
.
close
();
try
{
if
(
statement
!=
null
)
statement
.
close
();
if
(
connection
!=
null
)
connection
.
close
();
}
catch
(
SQLException
e
)
{
e
.
printStackTrace
();
}
}
}
}
}
\ No newline at end of file
src/connector/jdbc/src/test/java/com/taosdata/jdbc/cases/SelectTest.java
浏览文件 @
b86f44af
...
@@ -20,6 +20,8 @@ public class SelectTest {
...
@@ -20,6 +20,8 @@ public class SelectTest {
public
void
createDatabaseAndTable
()
{
public
void
createDatabaseAndTable
()
{
try
{
try
{
Properties
properties
=
new
Properties
();
Properties
properties
=
new
Properties
();
properties
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_USER
,
"root"
);
properties
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_PASSWORD
,
"taosdata"
);
properties
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_CHARSET
,
"UTF-8"
);
properties
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_CHARSET
,
"UTF-8"
);
properties
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_LOCALE
,
"en_US.UTF-8"
);
properties
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_LOCALE
,
"en_US.UTF-8"
);
properties
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_TIME_ZONE
,
"UTC-8"
);
properties
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_TIME_ZONE
,
"UTC-8"
);
...
...
src/connector/jdbc/src/test/java/com/taosdata/jdbc/cases/StableTest.java
浏览文件 @
b86f44af
...
@@ -24,6 +24,8 @@ public class StableTest {
...
@@ -24,6 +24,8 @@ public class StableTest {
public
static
void
createDatabase
()
{
public
static
void
createDatabase
()
{
try
{
try
{
Properties
properties
=
new
Properties
();
Properties
properties
=
new
Properties
();
properties
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_USER
,
"root"
);
properties
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_PASSWORD
,
"taosdata"
);
properties
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_CHARSET
,
"UTF-8"
);
properties
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_CHARSET
,
"UTF-8"
);
properties
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_LOCALE
,
"en_US.UTF-8"
);
properties
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_LOCALE
,
"en_US.UTF-8"
);
properties
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_TIME_ZONE
,
"UTC-8"
);
properties
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_TIME_ZONE
,
"UTC-8"
);
...
...
src/connector/jdbc/src/test/java/com/taosdata/jdbc/utils/SqlSyntaxValidatorTest.java
已删除
100644 → 0
浏览文件 @
9bafb643
package
com.taosdata.jdbc.utils
;
import
org.junit.Assert
;
import
org.junit.Test
;
public
class
SqlSyntaxValidatorTest
{
@Test
public
void
isSelectSQL
()
{
Assert
.
assertTrue
(
SqlSyntaxValidator
.
isSelectSql
(
"select * from test.weather"
));
Assert
.
assertTrue
(
SqlSyntaxValidator
.
isSelectSql
(
" select * from test.weather"
));
Assert
.
assertTrue
(
SqlSyntaxValidator
.
isSelectSql
(
" select * from test.weather "
));
Assert
.
assertFalse
(
SqlSyntaxValidator
.
isSelectSql
(
"insert into test.weather values(now, 1.1, 2)"
));
}
@Test
public
void
isUseSQL
()
{
Assert
.
assertTrue
(
SqlSyntaxValidator
.
isUseSql
(
"use database test"
));
}
}
\ No newline at end of file
src/connector/nodejs/nodetaos/taosobjects.js
浏览文件 @
b86f44af
...
@@ -47,7 +47,8 @@ class TaosTimestamp extends Date {
...
@@ -47,7 +47,8 @@ class TaosTimestamp extends Date {
super
(
Math
.
floor
(
date
/
1000
));
super
(
Math
.
floor
(
date
/
1000
));
this
.
precisionExtras
=
date
%
1000
;
this
.
precisionExtras
=
date
%
1000
;
}
else
if
(
precision
===
2
)
{
}
else
if
(
precision
===
2
)
{
super
(
parseInt
(
date
/
1000000
));
// use BigInt to fix: 1623254400999999999 / 1000000 = 1623254401000 which not expected
super
(
parseInt
(
BigInt
(
date
)
/
1000000
n
));
// use BigInt to fix: 1625801548423914405 % 1000000 = 914496 which not expected (914405)
// use BigInt to fix: 1625801548423914405 % 1000000 = 914496 which not expected (914405)
this
.
precisionExtras
=
parseInt
(
BigInt
(
date
)
%
1000000
n
);
this
.
precisionExtras
=
parseInt
(
BigInt
(
date
)
%
1000000
n
);
}
else
{
}
else
{
...
...
src/connector/nodejs/package.json
浏览文件 @
b86f44af
{
{
"name"
:
"td2.0-connector"
,
"name"
:
"td2.0-connector"
,
"version"
:
"2.0.
9
"
,
"version"
:
"2.0.
10
"
,
"description"
:
"A Node.js connector for TDengine."
,
"description"
:
"A Node.js connector for TDengine."
,
"main"
:
"tdengine.js"
,
"main"
:
"tdengine.js"
,
"directories"
:
{
"directories"
:
{
...
...
src/dnode/src/dnodeMain.c
浏览文件 @
b86f44af
...
@@ -166,7 +166,6 @@ int32_t dnodeInitSystem() {
...
@@ -166,7 +166,6 @@ int32_t dnodeInitSystem() {
taosInitGlobalCfg
();
taosInitGlobalCfg
();
taosReadGlobalLogCfg
();
taosReadGlobalLogCfg
();
taosSetCoreDump
();
taosSetCoreDump
();
taosInitNotes
();
dnodeInitTmr
();
dnodeInitTmr
();
if
(
dnodeCreateDir
(
tsLogDir
)
<
0
)
{
if
(
dnodeCreateDir
(
tsLogDir
)
<
0
)
{
...
@@ -188,6 +187,8 @@ int32_t dnodeInitSystem() {
...
@@ -188,6 +187,8 @@ int32_t dnodeInitSystem() {
dInfo
(
"start to initialize TDengine"
);
dInfo
(
"start to initialize TDengine"
);
taosInitNotes
();
if
(
dnodeInitComponents
()
!=
0
)
{
if
(
dnodeInitComponents
()
!=
0
)
{
return
-
1
;
return
-
1
;
}
}
...
...
src/dnode/src/dnodeSystem.c
浏览文件 @
b86f44af
...
@@ -42,6 +42,8 @@ int32_t main(int32_t argc, char *argv[]) {
...
@@ -42,6 +42,8 @@ int32_t main(int32_t argc, char *argv[]) {
}
}
}
else
if
(
strcmp
(
argv
[
i
],
"-C"
)
==
0
)
{
}
else
if
(
strcmp
(
argv
[
i
],
"-C"
)
==
0
)
{
dump_config
=
1
;
dump_config
=
1
;
}
else
if
(
strcmp
(
argv
[
i
],
"--force-keep-file"
)
==
0
)
{
tsdbForceKeepFile
=
true
;
}
else
if
(
strcmp
(
argv
[
i
],
"--compact-mnode-wal"
)
==
0
)
{
}
else
if
(
strcmp
(
argv
[
i
],
"--compact-mnode-wal"
)
==
0
)
{
tsCompactMnodeWal
=
1
;
tsCompactMnodeWal
=
1
;
}
else
if
(
strcmp
(
argv
[
i
],
"-V"
)
==
0
)
{
}
else
if
(
strcmp
(
argv
[
i
],
"-V"
)
==
0
)
{
...
...
src/kit/shell/src/shellCheck.c
浏览文件 @
b86f44af
...
@@ -72,12 +72,13 @@ static int32_t shellShowTables(TAOS *con, char *db) {
...
@@ -72,12 +72,13 @@ static int32_t shellShowTables(TAOS *con, char *db) {
int32_t
tbIndex
=
tbNum
++
;
int32_t
tbIndex
=
tbNum
++
;
if
(
tbMallocNum
<
tbNum
)
{
if
(
tbMallocNum
<
tbNum
)
{
tbMallocNum
=
(
tbMallocNum
*
2
+
1
);
tbMallocNum
=
(
tbMallocNum
*
2
+
1
);
tbNames
=
realloc
(
tbNames
,
tbMallocNum
*
sizeof
(
char
*
));
char
**
tbNames1
=
realloc
(
tbNames
,
tbMallocNum
*
sizeof
(
char
*
));
if
(
tbNames
==
NULL
)
{
if
(
tbNames
1
==
NULL
)
{
fprintf
(
stdout
,
"failed to malloc tablenames, num:%d
\n
"
,
tbMallocNum
);
fprintf
(
stdout
,
"failed to malloc tablenames, num:%d
\n
"
,
tbMallocNum
);
code
=
TSDB_CODE_TSC_OUT_OF_MEMORY
;
code
=
TSDB_CODE_TSC_OUT_OF_MEMORY
;
break
;
break
;
}
}
tbNames
=
tbNames1
;
}
}
tbNames
[
tbIndex
]
=
malloc
(
TSDB_TABLE_NAME_LEN
);
tbNames
[
tbIndex
]
=
malloc
(
TSDB_TABLE_NAME_LEN
);
...
...
src/kit/taosdemo/taosdemo.c
浏览文件 @
b86f44af
此差异已折叠。
点击以展开。
src/kit/taospack/taospack.c
浏览文件 @
b86f44af
...
@@ -18,6 +18,7 @@
...
@@ -18,6 +18,7 @@
#include <stdio.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdlib.h>
#if defined(WINDOWS)
#if defined(WINDOWS)
int
main
(
int
argc
,
char
*
argv
[])
{
int
main
(
int
argc
,
char
*
argv
[])
{
printf
(
"welcome to use taospack tools v1.3 for windows.
\n
"
);
printf
(
"welcome to use taospack tools v1.3 for windows.
\n
"
);
...
@@ -148,7 +149,10 @@ float* read_float(const char* inFile, int* pcount){
...
@@ -148,7 +149,10 @@ float* read_float(const char* inFile, int* pcount){
//printf(" buff=%s float=%.50f \n ", buf, floats[fi]);
//printf(" buff=%s float=%.50f \n ", buf, floats[fi]);
if
(
++
fi
==
malloc_cnt
)
{
if
(
++
fi
==
malloc_cnt
)
{
malloc_cnt
+=
100000
;
malloc_cnt
+=
100000
;
floats
=
realloc
(
floats
,
malloc_cnt
*
sizeof
(
float
));
float
*
floats1
=
realloc
(
floats
,
malloc_cnt
*
sizeof
(
float
));
if
(
floats1
==
NULL
)
break
;
floats
=
floats1
;
}
}
memset
(
buf
,
0
,
sizeof
(
buf
));
memset
(
buf
,
0
,
sizeof
(
buf
));
}
}
...
@@ -601,7 +605,6 @@ void test_threadsafe_double(int thread_count){
...
@@ -601,7 +605,6 @@ void test_threadsafe_double(int thread_count){
}
}
void
unitTestFloat
()
{
void
unitTestFloat
()
{
float
ft1
[]
=
{
1
.
11
,
2
.
22
,
3
.
333
};
float
ft1
[]
=
{
1
.
11
,
2
.
22
,
3
.
333
};
...
@@ -662,7 +665,50 @@ void unitTestFloat() {
...
@@ -662,7 +665,50 @@ void unitTestFloat() {
free
(
ft2
);
free
(
ft2
);
free
(
buff
);
free
(
buff
);
free
(
output
);
free
(
output
);
}
void
leakFloat
()
{
int
cnt
=
sizeof
(
g_ft1
)
/
sizeof
(
float
);
float
*
floats
=
g_ft1
;
int
algorithm
=
2
;
// compress
const
char
*
input
=
(
const
char
*
)
floats
;
int
input_len
=
cnt
*
sizeof
(
float
);
int
output_len
=
input_len
+
1024
;
char
*
output
=
(
char
*
)
malloc
(
output_len
);
char
*
buff
=
(
char
*
)
malloc
(
input_len
);
int
buff_len
=
input_len
;
int
ret_len
=
0
;
ret_len
=
tsCompressFloatLossy
(
input
,
input_len
,
cnt
,
output
,
output_len
,
algorithm
,
buff
,
buff_len
);
if
(
ret_len
==
0
)
{
printf
(
" compress float error.
\n
"
);
free
(
buff
);
free
(
output
);
return
;
}
float
*
ft2
=
(
float
*
)
malloc
(
input_len
);
ret_len
=
tsDecompressFloatLossy
(
output
,
ret_len
,
cnt
,
(
char
*
)
ft2
,
input_len
,
algorithm
,
buff
,
buff_len
);
if
(
ret_len
==
0
)
{
printf
(
" decompress float error.
\n
"
);
}
free
(
ft2
);
free
(
buff
);
free
(
output
);
}
void
leakTest
(){
for
(
int
i
=
0
;
i
<
90000000000000
;
i
++
){
if
(
i
%
10000
==
0
)
printf
(
" ---------- %d ----------------
\n
"
,
i
);
leakFloat
();
}
}
}
#define DB_CNT 500
#define DB_CNT 500
...
@@ -689,7 +735,7 @@ extern char Compressor [];
...
@@ -689,7 +735,7 @@ extern char Compressor [];
// ----------------- main ----------------------
// ----------------- main ----------------------
//
//
int
main
(
int
argc
,
char
*
argv
[])
{
int
main
(
int
argc
,
char
*
argv
[])
{
printf
(
"welcome to use taospack tools v1.
3
\n
"
);
printf
(
"welcome to use taospack tools v1.
6
\n
"
);
//printf(" sizeof(int)=%d\n", (int)sizeof(int));
//printf(" sizeof(int)=%d\n", (int)sizeof(int));
//printf(" sizeof(long)=%d\n", (int)sizeof(long));
//printf(" sizeof(long)=%d\n", (int)sizeof(long));
...
@@ -753,6 +799,9 @@ int main(int argc, char *argv[]) {
...
@@ -753,6 +799,9 @@ int main(int argc, char *argv[]) {
if
(
strcmp
(
argv
[
1
],
"-mem"
)
==
0
)
{
if
(
strcmp
(
argv
[
1
],
"-mem"
)
==
0
)
{
memTest
();
memTest
();
}
}
else
if
(
strcmp
(
argv
[
1
],
"-leak"
)
==
0
)
{
leakTest
();
}
}
}
else
{
else
{
unitTestFloat
();
unitTestFloat
();
...
...
src/mnode/src/mnodeTable.c
浏览文件 @
b86f44af
...
@@ -2921,10 +2921,11 @@ static SMultiTableMeta* ensureMsgBufferSpace(SMultiTableMeta *pMultiMeta, SArray
...
@@ -2921,10 +2921,11 @@ static SMultiTableMeta* ensureMsgBufferSpace(SMultiTableMeta *pMultiMeta, SArray
(
*
totalMallocLen
)
*=
2
;
(
*
totalMallocLen
)
*=
2
;
}
}
pMultiMeta
=
realloc
(
pMultiMeta
,
*
totalMallocLen
);
SMultiTableMeta
*
pMultiMeta1
=
realloc
(
pMultiMeta
,
*
totalMallocLen
);
if
(
pMultiMeta
==
NULL
)
{
if
(
pMultiMeta
1
==
NULL
)
{
return
NULL
;
return
NULL
;
}
}
pMultiMeta
=
pMultiMeta1
;
}
}
return
pMultiMeta
;
return
pMultiMeta
;
...
...
src/os/src/detail/osMemory.c
浏览文件 @
b86f44af
...
@@ -504,8 +504,9 @@ void * taosTRealloc(void *ptr, size_t size) {
...
@@ -504,8 +504,9 @@ void * taosTRealloc(void *ptr, size_t size) {
void
*
tptr
=
(
void
*
)((
char
*
)
ptr
-
sizeof
(
size_t
));
void
*
tptr
=
(
void
*
)((
char
*
)
ptr
-
sizeof
(
size_t
));
size_t
tsize
=
size
+
sizeof
(
size_t
);
size_t
tsize
=
size
+
sizeof
(
size_t
);
tptr
=
realloc
(
tptr
,
tsize
);
void
*
tptr1
=
realloc
(
tptr
,
tsize
);
if
(
tptr
==
NULL
)
return
NULL
;
if
(
tptr1
==
NULL
)
return
NULL
;
tptr
=
tptr1
;
*
(
size_t
*
)
tptr
=
size
;
*
(
size_t
*
)
tptr
=
size
;
...
...
src/os/src/windows/wGetline.c
浏览文件 @
b86f44af
...
@@ -81,11 +81,13 @@ int32_t getstr(char **lineptr, size_t *n, FILE *stream, char terminator, int32_t
...
@@ -81,11 +81,13 @@ int32_t getstr(char **lineptr, size_t *n, FILE *stream, char terminator, int32_t
*
n
+=
MIN_CHUNK
;
*
n
+=
MIN_CHUNK
;
nchars_avail
=
(
int32_t
)(
*
n
+
*
lineptr
-
read_pos
);
nchars_avail
=
(
int32_t
)(
*
n
+
*
lineptr
-
read_pos
);
*
lineptr
=
realloc
(
*
lineptr
,
*
n
);
char
*
lineptr1
=
realloc
(
*
lineptr
,
*
n
);
if
(
!
*
lineptr
)
{
if
(
!
lineptr1
)
{
errno
=
ENOMEM
;
errno
=
ENOMEM
;
return
-
1
;
return
-
1
;
}
}
*
lineptr
=
lineptr1
;
read_pos
=
*
n
-
nchars_avail
+
*
lineptr
;
read_pos
=
*
n
-
nchars_avail
+
*
lineptr
;
assert
((
*
lineptr
+
*
n
)
==
(
read_pos
+
nchars_avail
));
assert
((
*
lineptr
+
*
n
)
==
(
read_pos
+
nchars_avail
));
}
}
...
...
src/plugins/http/src/httpUtil.c
浏览文件 @
b86f44af
...
@@ -188,7 +188,7 @@ bool httpMallocMultiCmds(HttpContext *pContext, int32_t cmdSize, int32_t bufferS
...
@@ -188,7 +188,7 @@ bool httpMallocMultiCmds(HttpContext *pContext, int32_t cmdSize, int32_t bufferS
bool
httpReMallocMultiCmdsSize
(
HttpContext
*
pContext
,
int32_t
cmdSize
)
{
bool
httpReMallocMultiCmdsSize
(
HttpContext
*
pContext
,
int32_t
cmdSize
)
{
HttpSqlCmds
*
multiCmds
=
pContext
->
multiCmds
;
HttpSqlCmds
*
multiCmds
=
pContext
->
multiCmds
;
if
(
cmdSize
<=
0
&&
cmdSize
>
HTTP_MAX_CMD_SIZE
)
{
if
(
cmdSize
<=
0
||
cmdSize
>
HTTP_MAX_CMD_SIZE
)
{
httpError
(
"context:%p, fd:%d, user:%s, mulitcmd size:%d large then %d"
,
pContext
,
pContext
->
fd
,
pContext
->
user
,
httpError
(
"context:%p, fd:%d, user:%s, mulitcmd size:%d large then %d"
,
pContext
,
pContext
->
fd
,
pContext
->
user
,
cmdSize
,
HTTP_MAX_CMD_SIZE
);
cmdSize
,
HTTP_MAX_CMD_SIZE
);
return
false
;
return
false
;
...
...
src/query/inc/qUtil.h
浏览文件 @
b86f44af
...
@@ -39,7 +39,6 @@
...
@@ -39,7 +39,6 @@
#define GET_QID(_r) (((SQInfo*)((_r)->qinfo))->qId)
#define GET_QID(_r) (((SQInfo*)((_r)->qinfo))->qId)
#define curTimeWindowIndex(_winres) ((_winres)->curIndex)
#define curTimeWindowIndex(_winres) ((_winres)->curIndex)
#define GET_ROW_PARAM_FOR_MULTIOUTPUT(_q, tbq, sq) (((tbq) && (!(sq)))? (_q)->pExpr1[1].base.param[0].i64:1)
int32_t
getOutputInterResultBufSize
(
SQueryAttr
*
pQueryAttr
);
int32_t
getOutputInterResultBufSize
(
SQueryAttr
*
pQueryAttr
);
...
@@ -60,6 +59,7 @@ SResultRowCellInfo* getResultCell(const SResultRow* pRow, int32_t index, int32_t
...
@@ -60,6 +59,7 @@ SResultRowCellInfo* getResultCell(const SResultRow* pRow, int32_t index, int32_t
void
*
destroyQueryFuncExpr
(
SExprInfo
*
pExprInfo
,
int32_t
numOfExpr
);
void
*
destroyQueryFuncExpr
(
SExprInfo
*
pExprInfo
,
int32_t
numOfExpr
);
void
*
freeColumnInfo
(
SColumnInfo
*
pColumnInfo
,
int32_t
numOfCols
);
void
*
freeColumnInfo
(
SColumnInfo
*
pColumnInfo
,
int32_t
numOfCols
);
int32_t
getRowNumForMultioutput
(
SQueryAttr
*
pQueryAttr
,
bool
topBottomQuery
,
bool
stable
);
static
FORCE_INLINE
SResultRow
*
getResultRow
(
SResultRowInfo
*
pResultRowInfo
,
int32_t
slot
)
{
static
FORCE_INLINE
SResultRow
*
getResultRow
(
SResultRowInfo
*
pResultRowInfo
,
int32_t
slot
)
{
assert
(
pResultRowInfo
!=
NULL
&&
slot
>=
0
&&
slot
<
pResultRowInfo
->
size
);
assert
(
pResultRowInfo
!=
NULL
&&
slot
>=
0
&&
slot
<
pResultRowInfo
->
size
);
...
@@ -70,7 +70,7 @@ static FORCE_INLINE char* getPosInResultPage(SQueryAttr* pQueryAttr, tFilePage*
...
@@ -70,7 +70,7 @@ static FORCE_INLINE char* getPosInResultPage(SQueryAttr* pQueryAttr, tFilePage*
int32_t
offset
)
{
int32_t
offset
)
{
assert
(
rowOffset
>=
0
&&
pQueryAttr
!=
NULL
);
assert
(
rowOffset
>=
0
&&
pQueryAttr
!=
NULL
);
int32_t
numOfRows
=
(
int32_t
)
GET_ROW_PARAM_FOR_MULTIOUTPUT
(
pQueryAttr
,
pQueryAttr
->
topBotQuery
,
pQueryAttr
->
stableQuery
);
int32_t
numOfRows
=
(
int32_t
)
getRowNumForMultioutput
(
pQueryAttr
,
pQueryAttr
->
topBotQuery
,
pQueryAttr
->
stableQuery
);
return
((
char
*
)
page
->
data
)
+
rowOffset
+
offset
*
numOfRows
;
return
((
char
*
)
page
->
data
)
+
rowOffset
+
offset
*
numOfRows
;
}
}
...
...
src/query/src/qAggMain.c
浏览文件 @
b86f44af
...
@@ -4062,12 +4062,15 @@ static void mergeTableBlockDist(SResultRowCellInfo* pResInfo, const STableBlockD
...
@@ -4062,12 +4062,15 @@ static void mergeTableBlockDist(SResultRowCellInfo* pResInfo, const STableBlockD
pDist
->
maxRows
=
pSrc
->
maxRows
;
pDist
->
maxRows
=
pSrc
->
maxRows
;
pDist
->
minRows
=
pSrc
->
minRows
;
pDist
->
minRows
=
pSrc
->
minRows
;
int32_t
numSteps
=
tsMaxRowsInFileBlock
/
TSDB_BLOCK_DIST_STEP_ROWS
;
int32_t
maxSteps
=
TSDB_MAX_MAX_ROW_FBLOCK
/
TSDB_BLOCK_DIST_STEP_ROWS
;
pDist
->
dataBlockInfos
=
taosArrayInit
(
numSteps
,
sizeof
(
SFileBlockInfo
));
if
(
TSDB_MAX_MAX_ROW_FBLOCK
%
TSDB_BLOCK_DIST_STEP_ROWS
!=
0
)
{
taosArraySetSize
(
pDist
->
dataBlockInfos
,
numSteps
);
++
maxSteps
;
}
pDist
->
dataBlockInfos
=
taosArrayInit
(
maxSteps
,
sizeof
(
SFileBlockInfo
));
taosArraySetSize
(
pDist
->
dataBlockInfos
,
maxSteps
);
}
}
size_t
steps
=
taosArrayGetSize
(
p
Dist
->
dataBlockInfos
);
size_t
steps
=
taosArrayGetSize
(
p
Src
->
dataBlockInfos
);
for
(
int32_t
i
=
0
;
i
<
steps
;
++
i
)
{
for
(
int32_t
i
=
0
;
i
<
steps
;
++
i
)
{
int32_t
srcNumBlocks
=
((
SFileBlockInfo
*
)
taosArrayGet
(
pSrc
->
dataBlockInfos
,
i
))
->
numBlocksOfStep
;
int32_t
srcNumBlocks
=
((
SFileBlockInfo
*
)
taosArrayGet
(
pSrc
->
dataBlockInfos
,
i
))
->
numBlocksOfStep
;
SFileBlockInfo
*
blockInfo
=
(
SFileBlockInfo
*
)
taosArrayGet
(
pDist
->
dataBlockInfos
,
i
);
SFileBlockInfo
*
blockInfo
=
(
SFileBlockInfo
*
)
taosArrayGet
(
pDist
->
dataBlockInfos
,
i
);
...
...
src/query/src/qExecutor.c
浏览文件 @
b86f44af
...
@@ -2706,7 +2706,7 @@ static void getIntermediateBufInfo(SQueryRuntimeEnv* pRuntimeEnv, int32_t* ps, i
...
@@ -2706,7 +2706,7 @@ static void getIntermediateBufInfo(SQueryRuntimeEnv* pRuntimeEnv, int32_t* ps, i
SQueryAttr
*
pQueryAttr
=
pRuntimeEnv
->
pQueryAttr
;
SQueryAttr
*
pQueryAttr
=
pRuntimeEnv
->
pQueryAttr
;
int32_t
MIN_ROWS_PER_PAGE
=
4
;
int32_t
MIN_ROWS_PER_PAGE
=
4
;
*
rowsize
=
(
int32_t
)(
pQueryAttr
->
resultRowSize
*
GET_ROW_PARAM_FOR_MULTIOUTPUT
(
pQueryAttr
,
pQueryAttr
->
topBotQuery
,
pQueryAttr
->
stableQuery
));
*
rowsize
=
(
int32_t
)(
pQueryAttr
->
resultRowSize
*
getRowNumForMultioutput
(
pQueryAttr
,
pQueryAttr
->
topBotQuery
,
pQueryAttr
->
stableQuery
));
int32_t
overhead
=
sizeof
(
tFilePage
);
int32_t
overhead
=
sizeof
(
tFilePage
);
// one page contains at least two rows
// one page contains at least two rows
...
@@ -3630,7 +3630,7 @@ void updateOutputBuf(SOptrBasicInfo* pBInfo, int32_t *bufCapacity, int32_t numOf
...
@@ -3630,7 +3630,7 @@ void updateOutputBuf(SOptrBasicInfo* pBInfo, int32_t *bufCapacity, int32_t numOf
// re-estabilish output buffer pointer.
// re-estabilish output buffer pointer.
int32_t
functionId
=
pBInfo
->
pCtx
[
i
].
functionId
;
int32_t
functionId
=
pBInfo
->
pCtx
[
i
].
functionId
;
if
(
functionId
==
TSDB_FUNC_TOP
||
functionId
==
TSDB_FUNC_BOTTOM
||
functionId
==
TSDB_FUNC_DIFF
||
functionId
==
TSDB_FUNC_DERIVATIVE
)
{
if
(
functionId
==
TSDB_FUNC_TOP
||
functionId
==
TSDB_FUNC_BOTTOM
||
functionId
==
TSDB_FUNC_DIFF
||
functionId
==
TSDB_FUNC_DERIVATIVE
)
{
pBInfo
->
pCtx
[
i
].
ptsOutputBuf
=
pBInfo
->
pCtx
[
0
].
pOutput
;
pBInfo
->
pCtx
[
i
].
ptsOutputBuf
=
pBInfo
->
pCtx
[
i
-
1
].
pOutput
;
}
}
}
}
}
}
...
@@ -5024,6 +5024,9 @@ static SSDataBlock* doBlockInfoScan(void* param, bool* newgroup) {
...
@@ -5024,6 +5024,9 @@ static SSDataBlock* doBlockInfoScan(void* param, bool* newgroup) {
tableBlockDist
.
numOfTables
=
(
int32_t
)
pOperator
->
pRuntimeEnv
->
tableqinfoGroupInfo
.
numOfTables
;
tableBlockDist
.
numOfTables
=
(
int32_t
)
pOperator
->
pRuntimeEnv
->
tableqinfoGroupInfo
.
numOfTables
;
int32_t
numRowSteps
=
tsMaxRowsInFileBlock
/
TSDB_BLOCK_DIST_STEP_ROWS
;
int32_t
numRowSteps
=
tsMaxRowsInFileBlock
/
TSDB_BLOCK_DIST_STEP_ROWS
;
if
(
tsMaxRowsInFileBlock
%
TSDB_BLOCK_DIST_STEP_ROWS
!=
0
)
{
++
numRowSteps
;
}
tableBlockDist
.
dataBlockInfos
=
taosArrayInit
(
numRowSteps
,
sizeof
(
SFileBlockInfo
));
tableBlockDist
.
dataBlockInfos
=
taosArrayInit
(
numRowSteps
,
sizeof
(
SFileBlockInfo
));
taosArraySetSize
(
tableBlockDist
.
dataBlockInfos
,
numRowSteps
);
taosArraySetSize
(
tableBlockDist
.
dataBlockInfos
,
numRowSteps
);
tableBlockDist
.
maxRows
=
INT_MIN
;
tableBlockDist
.
maxRows
=
INT_MIN
;
...
@@ -5298,7 +5301,7 @@ SOperatorInfo* createGlobalAggregateOperatorInfo(SQueryRuntimeEnv* pRuntimeEnv,
...
@@ -5298,7 +5301,7 @@ SOperatorInfo* createGlobalAggregateOperatorInfo(SQueryRuntimeEnv* pRuntimeEnv,
SMultiwayMergeInfo
*
pInfo
=
calloc
(
1
,
sizeof
(
SMultiwayMergeInfo
));
SMultiwayMergeInfo
*
pInfo
=
calloc
(
1
,
sizeof
(
SMultiwayMergeInfo
));
pInfo
->
resultRowFactor
=
pInfo
->
resultRowFactor
=
(
int32_t
)(
GET_ROW_PARAM_FOR_MULTIOUTPUT
(
pRuntimeEnv
->
pQueryAttr
,
pRuntimeEnv
->
pQueryAttr
->
topBotQuery
,
false
));
(
int32_t
)(
getRowNumForMultioutput
(
pRuntimeEnv
->
pQueryAttr
,
pRuntimeEnv
->
pQueryAttr
->
topBotQuery
,
false
));
pRuntimeEnv
->
scanFlag
=
MERGE_STAGE
;
// TODO init when creating pCtx
pRuntimeEnv
->
scanFlag
=
MERGE_STAGE
;
// TODO init when creating pCtx
...
@@ -6327,7 +6330,7 @@ SOperatorInfo* createAggregateOperatorInfo(SQueryRuntimeEnv* pRuntimeEnv, SOpera
...
@@ -6327,7 +6330,7 @@ SOperatorInfo* createAggregateOperatorInfo(SQueryRuntimeEnv* pRuntimeEnv, SOpera
SAggOperatorInfo
*
pInfo
=
calloc
(
1
,
sizeof
(
SAggOperatorInfo
));
SAggOperatorInfo
*
pInfo
=
calloc
(
1
,
sizeof
(
SAggOperatorInfo
));
SQueryAttr
*
pQueryAttr
=
pRuntimeEnv
->
pQueryAttr
;
SQueryAttr
*
pQueryAttr
=
pRuntimeEnv
->
pQueryAttr
;
int32_t
numOfRows
=
(
int32_t
)(
GET_ROW_PARAM_FOR_MULTIOUTPUT
(
pQueryAttr
,
pQueryAttr
->
topBotQuery
,
pQueryAttr
->
stableQuery
));
int32_t
numOfRows
=
(
int32_t
)(
getRowNumForMultioutput
(
pQueryAttr
,
pQueryAttr
->
topBotQuery
,
pQueryAttr
->
stableQuery
));
pInfo
->
binfo
.
pRes
=
createOutputBuf
(
pExpr
,
numOfOutput
,
numOfRows
);
pInfo
->
binfo
.
pRes
=
createOutputBuf
(
pExpr
,
numOfOutput
,
numOfRows
);
pInfo
->
binfo
.
pCtx
=
createSQLFunctionCtx
(
pRuntimeEnv
,
pExpr
,
numOfOutput
,
&
pInfo
->
binfo
.
rowCellInfoOffset
);
pInfo
->
binfo
.
pCtx
=
createSQLFunctionCtx
(
pRuntimeEnv
,
pExpr
,
numOfOutput
,
&
pInfo
->
binfo
.
rowCellInfoOffset
);
...
@@ -6701,7 +6704,7 @@ SOperatorInfo* createGroupbyOperatorInfo(SQueryRuntimeEnv* pRuntimeEnv, SOperato
...
@@ -6701,7 +6704,7 @@ SOperatorInfo* createGroupbyOperatorInfo(SQueryRuntimeEnv* pRuntimeEnv, SOperato
SQueryAttr
*
pQueryAttr
=
pRuntimeEnv
->
pQueryAttr
;
SQueryAttr
*
pQueryAttr
=
pRuntimeEnv
->
pQueryAttr
;
pQueryAttr
->
resultRowSize
=
(
pQueryAttr
->
resultRowSize
*
pQueryAttr
->
resultRowSize
=
(
pQueryAttr
->
resultRowSize
*
(
int32_t
)(
GET_ROW_PARAM_FOR_MULTIOUTPUT
(
pQueryAttr
,
pQueryAttr
->
topBotQuery
,
pQueryAttr
->
stableQuery
)));
(
int32_t
)(
getRowNumForMultioutput
(
pQueryAttr
,
pQueryAttr
->
topBotQuery
,
pQueryAttr
->
stableQuery
)));
pInfo
->
binfo
.
pRes
=
createOutputBuf
(
pExpr
,
numOfOutput
,
pRuntimeEnv
->
resultInfo
.
capacity
);
pInfo
->
binfo
.
pRes
=
createOutputBuf
(
pExpr
,
numOfOutput
,
pRuntimeEnv
->
resultInfo
.
capacity
);
initResultRowInfo
(
&
pInfo
->
binfo
.
resultRowInfo
,
8
,
TSDB_DATA_TYPE_INT
);
initResultRowInfo
(
&
pInfo
->
binfo
.
resultRowInfo
,
8
,
TSDB_DATA_TYPE_INT
);
...
...
src/query/src/qFill.c
浏览文件 @
b86f44af
...
@@ -206,6 +206,12 @@ static int32_t fillResultImpl(SFillInfo* pFillInfo, void** data, int32_t outputR
...
@@ -206,6 +206,12 @@ static int32_t fillResultImpl(SFillInfo* pFillInfo, void** data, int32_t outputR
}
else
{
}
else
{
assert
(
pFillInfo
->
currentKey
==
ts
);
assert
(
pFillInfo
->
currentKey
==
ts
);
initBeforeAfterDataBuf
(
pFillInfo
,
prev
);
initBeforeAfterDataBuf
(
pFillInfo
,
prev
);
if
(
pFillInfo
->
type
==
TSDB_FILL_NEXT
&&
(
pFillInfo
->
index
+
1
)
<
pFillInfo
->
numOfRows
)
{
initBeforeAfterDataBuf
(
pFillInfo
,
next
);
++
pFillInfo
->
index
;
copyCurrentRowIntoBuf
(
pFillInfo
,
srcData
,
*
next
);
--
pFillInfo
->
index
;
}
// assign rows to dst buffer
// assign rows to dst buffer
for
(
int32_t
i
=
0
;
i
<
pFillInfo
->
numOfCols
;
++
i
)
{
for
(
int32_t
i
=
0
;
i
<
pFillInfo
->
numOfCols
;
++
i
)
{
...
@@ -227,6 +233,12 @@ static int32_t fillResultImpl(SFillInfo* pFillInfo, void** data, int32_t outputR
...
@@ -227,6 +233,12 @@ static int32_t fillResultImpl(SFillInfo* pFillInfo, void** data, int32_t outputR
}
else
if
(
pFillInfo
->
type
==
TSDB_FILL_LINEAR
)
{
}
else
if
(
pFillInfo
->
type
==
TSDB_FILL_LINEAR
)
{
assignVal
(
output
,
src
,
pCol
->
col
.
bytes
,
pCol
->
col
.
type
);
assignVal
(
output
,
src
,
pCol
->
col
.
bytes
,
pCol
->
col
.
type
);
memcpy
(
*
prev
+
pCol
->
col
.
offset
,
src
,
pCol
->
col
.
bytes
);
memcpy
(
*
prev
+
pCol
->
col
.
offset
,
src
,
pCol
->
col
.
bytes
);
}
else
if
(
pFillInfo
->
type
==
TSDB_FILL_NEXT
)
{
if
(
*
next
)
{
assignVal
(
output
,
*
next
+
pCol
->
col
.
offset
,
pCol
->
col
.
bytes
,
pCol
->
col
.
type
);
}
else
{
setNull
(
output
,
pCol
->
col
.
type
,
pCol
->
col
.
bytes
);
}
}
else
{
}
else
{
assignVal
(
output
,
(
char
*
)
&
pCol
->
fillVal
.
i
,
pCol
->
col
.
bytes
,
pCol
->
col
.
type
);
assignVal
(
output
,
(
char
*
)
&
pCol
->
fillVal
.
i
,
pCol
->
col
.
bytes
,
pCol
->
col
.
type
);
}
}
...
...
src/query/src/qTsbuf.c
浏览文件 @
b86f44af
...
@@ -223,8 +223,11 @@ static STSGroupBlockInfoEx* addOneGroupInfo(STSBuf* pTSBuf, int32_t id) {
...
@@ -223,8 +223,11 @@ static STSGroupBlockInfoEx* addOneGroupInfo(STSBuf* pTSBuf, int32_t id) {
static
void
shrinkBuffer
(
STSList
*
ptsData
)
{
static
void
shrinkBuffer
(
STSList
*
ptsData
)
{
// shrink tmp buffer size if it consumes too many memory compared to the pre-defined size
// shrink tmp buffer size if it consumes too many memory compared to the pre-defined size
if
(
ptsData
->
allocSize
>=
ptsData
->
threshold
*
2
)
{
if
(
ptsData
->
allocSize
>=
ptsData
->
threshold
*
2
)
{
ptsData
->
rawBuf
=
realloc
(
ptsData
->
rawBuf
,
MEM_BUF_SIZE
);
char
*
rawBuf
=
realloc
(
ptsData
->
rawBuf
,
MEM_BUF_SIZE
);
ptsData
->
allocSize
=
MEM_BUF_SIZE
;
if
(
rawBuf
)
{
ptsData
->
rawBuf
=
rawBuf
;
ptsData
->
allocSize
=
MEM_BUF_SIZE
;
}
}
}
}
}
...
...
src/query/src/qUtil.c
浏览文件 @
b86f44af
...
@@ -30,6 +30,18 @@ typedef struct SCompSupporter {
...
@@ -30,6 +30,18 @@ typedef struct SCompSupporter {
int32_t
order
;
int32_t
order
;
}
SCompSupporter
;
}
SCompSupporter
;
int32_t
getRowNumForMultioutput
(
SQueryAttr
*
pQueryAttr
,
bool
topBottomQuery
,
bool
stable
)
{
if
(
pQueryAttr
&&
(
!
stable
))
{
for
(
int16_t
i
=
0
;
i
<
pQueryAttr
->
numOfOutput
;
++
i
)
{
if
(
pQueryAttr
->
pExpr1
[
i
].
base
.
functionId
==
TSDB_FUNC_TOP
||
pQueryAttr
->
pExpr1
[
i
].
base
.
functionId
==
TSDB_FUNC_BOTTOM
)
{
return
(
int32_t
)
pQueryAttr
->
pExpr1
[
i
].
base
.
param
[
0
].
i64
;
}
}
}
return
1
;
}
int32_t
getOutputInterResultBufSize
(
SQueryAttr
*
pQueryAttr
)
{
int32_t
getOutputInterResultBufSize
(
SQueryAttr
*
pQueryAttr
)
{
int32_t
size
=
0
;
int32_t
size
=
0
;
...
...
src/tsdb/inc/tsdbFS.h
浏览文件 @
b86f44af
...
@@ -18,6 +18,9 @@
...
@@ -18,6 +18,9 @@
#define TSDB_FS_VERSION 0
#define TSDB_FS_VERSION 0
// ================== TSDB global config
extern
bool
tsdbForceKeepFile
;
// ================== CURRENT file header info
// ================== CURRENT file header info
typedef
struct
{
typedef
struct
{
uint32_t
version
;
// Current file system version (relating to code)
uint32_t
version
;
// Current file system version (relating to code)
...
@@ -109,4 +112,4 @@ static FORCE_INLINE int tsdbUnLockFS(STsdbFS* pFs) {
...
@@ -109,4 +112,4 @@ static FORCE_INLINE int tsdbUnLockFS(STsdbFS* pFs) {
return
0
;
return
0
;
}
}
#endif
/* _TD_TSDB_FS_H_ */
#endif
/* _TD_TSDB_FS_H_ */
\ No newline at end of file
src/tsdb/src/tsdbFS.c
浏览文件 @
b86f44af
...
@@ -37,6 +37,7 @@ static void tsdbScanAndTryFixDFilesHeader(STsdbRepo *pRepo, int32_t *nExpired);
...
@@ -37,6 +37,7 @@ static void tsdbScanAndTryFixDFilesHeader(STsdbRepo *pRepo, int32_t *nExpired);
static
int
tsdbProcessExpiredFS
(
STsdbRepo
*
pRepo
);
static
int
tsdbProcessExpiredFS
(
STsdbRepo
*
pRepo
);
static
int
tsdbCreateMeta
(
STsdbRepo
*
pRepo
);
static
int
tsdbCreateMeta
(
STsdbRepo
*
pRepo
);
// For backward compatibility
// ================== CURRENT file header info
// ================== CURRENT file header info
static
int
tsdbEncodeFSHeader
(
void
**
buf
,
SFSHeader
*
pHeader
)
{
static
int
tsdbEncodeFSHeader
(
void
**
buf
,
SFSHeader
*
pHeader
)
{
int
tlen
=
0
;
int
tlen
=
0
;
...
@@ -1048,6 +1049,26 @@ static int tsdbRestoreMeta(STsdbRepo *pRepo) {
...
@@ -1048,6 +1049,26 @@ static int tsdbRestoreMeta(STsdbRepo *pRepo) {
return
-
1
;
return
-
1
;
}
}
if
(
tsdbForceKeepFile
)
{
struct
stat
tfstat
;
// Get real file size
if
(
fstat
(
pfs
->
cstatus
->
pmf
->
fd
,
&
tfstat
)
<
0
)
{
terrno
=
TAOS_SYSTEM_ERROR
(
errno
);
tsdbCloseMFile
(
pfs
->
cstatus
->
pmf
);
tfsClosedir
(
tdir
);
regfree
(
&
regex
);
return
-
1
;
}
if
(
pfs
->
cstatus
->
pmf
->
info
.
size
!=
tfstat
.
st_size
)
{
int64_t
tfsize
=
pfs
->
cstatus
->
pmf
->
info
.
size
;
pfs
->
cstatus
->
pmf
->
info
.
size
=
tfstat
.
st_size
;
tsdbInfo
(
"vgId:%d file %s header size is changed from %"
PRId64
" to %"
PRId64
,
REPO_ID
(
pRepo
),
TSDB_FILE_FULL_NAME
(
pfs
->
cstatus
->
pmf
),
tfsize
,
pfs
->
cstatus
->
pmf
->
info
.
size
);
}
}
tsdbCloseMFile
(
pfs
->
cstatus
->
pmf
);
tsdbCloseMFile
(
pfs
->
cstatus
->
pmf
);
}
}
}
else
if
(
code
==
REG_NOMATCH
)
{
}
else
if
(
code
==
REG_NOMATCH
)
{
...
@@ -1212,6 +1233,24 @@ static int tsdbRestoreDFileSet(STsdbRepo *pRepo) {
...
@@ -1212,6 +1233,24 @@ static int tsdbRestoreDFileSet(STsdbRepo *pRepo) {
return
-
1
;
return
-
1
;
}
}
if
(
tsdbForceKeepFile
)
{
struct
stat
tfstat
;
// Get real file size
if
(
fstat
(
pDFile
->
fd
,
&
tfstat
)
<
0
)
{
terrno
=
TAOS_SYSTEM_ERROR
(
errno
);
taosArrayDestroy
(
fArray
);
return
-
1
;
}
if
(
pDFile
->
info
.
size
!=
tfstat
.
st_size
)
{
int64_t
tfsize
=
pDFile
->
info
.
size
;
pDFile
->
info
.
size
=
tfstat
.
st_size
;
tsdbInfo
(
"vgId:%d file %s header size is changed from %"
PRId64
" to %"
PRId64
,
REPO_ID
(
pRepo
),
TSDB_FILE_FULL_NAME
(
pDFile
),
tfsize
,
pDFile
->
info
.
size
);
}
}
tsdbCloseDFile
(
pDFile
);
tsdbCloseDFile
(
pDFile
);
index
++
;
index
++
;
}
}
...
@@ -1314,4 +1353,4 @@ static void tsdbScanAndTryFixDFilesHeader(STsdbRepo *pRepo, int32_t *nExpired) {
...
@@ -1314,4 +1353,4 @@ static void tsdbScanAndTryFixDFilesHeader(STsdbRepo *pRepo, int32_t *nExpired) {
tsdbCloseDFileSet
(
&
fset
);
tsdbCloseDFileSet
(
&
fset
);
}
}
}
}
\ No newline at end of file
src/tsdb/src/tsdbRead.c
浏览文件 @
b86f44af
...
@@ -691,6 +691,18 @@ static STableGroupInfo* trimTableGroup(STimeWindow* window, STableGroupInfo* pGr
...
@@ -691,6 +691,18 @@ static STableGroupInfo* trimTableGroup(STimeWindow* window, STableGroupInfo* pGr
TsdbQueryHandleT
tsdbQueryRowsInExternalWindow
(
STsdbRepo
*
tsdb
,
STsdbQueryCond
*
pCond
,
STableGroupInfo
*
groupList
,
uint64_t
qId
,
SMemRef
*
pRef
)
{
TsdbQueryHandleT
tsdbQueryRowsInExternalWindow
(
STsdbRepo
*
tsdb
,
STsdbQueryCond
*
pCond
,
STableGroupInfo
*
groupList
,
uint64_t
qId
,
SMemRef
*
pRef
)
{
STableGroupInfo
*
pNew
=
trimTableGroup
(
&
pCond
->
twindow
,
groupList
);
STableGroupInfo
*
pNew
=
trimTableGroup
(
&
pCond
->
twindow
,
groupList
);
if
(
pNew
->
numOfTables
==
0
)
{
tsdbDebug
(
"update query time range to invalidate time window"
);
assert
(
taosArrayGetSize
(
pNew
->
pGroupList
)
==
0
);
bool
asc
=
ASCENDING_TRAVERSE
(
pCond
->
order
);
if
(
asc
)
{
pCond
->
twindow
.
ekey
=
pCond
->
twindow
.
skey
-
1
;
}
else
{
pCond
->
twindow
.
skey
=
pCond
->
twindow
.
ekey
-
1
;
}
}
STsdbQueryHandle
*
pQueryHandle
=
(
STsdbQueryHandle
*
)
tsdbQueryTables
(
tsdb
,
pCond
,
pNew
,
qId
,
pRef
);
STsdbQueryHandle
*
pQueryHandle
=
(
STsdbQueryHandle
*
)
tsdbQueryTables
(
tsdb
,
pCond
,
pNew
,
qId
,
pRef
);
pQueryHandle
->
loadExternalRow
=
true
;
pQueryHandle
->
loadExternalRow
=
true
;
pQueryHandle
->
currentLoadExternalRows
=
true
;
pQueryHandle
->
currentLoadExternalRows
=
true
;
...
@@ -3468,6 +3480,7 @@ void filterPrepare(void* expr, void* param) {
...
@@ -3468,6 +3480,7 @@ void filterPrepare(void* expr, void* param) {
SArray
*
arr
=
(
SArray
*
)(
pCond
->
arr
);
SArray
*
arr
=
(
SArray
*
)(
pCond
->
arr
);
for
(
size_t
i
=
0
;
i
<
taosArrayGetSize
(
arr
);
i
++
)
{
for
(
size_t
i
=
0
;
i
<
taosArrayGetSize
(
arr
);
i
++
)
{
char
*
p
=
taosArrayGetP
(
arr
,
i
);
char
*
p
=
taosArrayGetP
(
arr
,
i
);
strtolower
(
varDataVal
(
p
),
varDataVal
(
p
));
taosHashPut
(
pObj
,
varDataVal
(
p
),
varDataLen
(
p
),
&
dummy
,
sizeof
(
dummy
));
taosHashPut
(
pObj
,
varDataVal
(
p
),
varDataLen
(
p
),
&
dummy
,
sizeof
(
dummy
));
}
}
}
else
{
}
else
{
...
...
src/util/inc/tcompare.h
浏览文件 @
b86f44af
...
@@ -25,7 +25,7 @@ extern "C" {
...
@@ -25,7 +25,7 @@ extern "C" {
#define TSDB_PATTERN_MATCH 0
#define TSDB_PATTERN_MATCH 0
#define TSDB_PATTERN_NOMATCH 1
#define TSDB_PATTERN_NOMATCH 1
#define TSDB_PATTERN_NOWILDCARDMATCH 2
#define TSDB_PATTERN_NOWILDCARDMATCH 2
#define TSDB_PATTERN_STRING_MAX_LEN
2
0
#define TSDB_PATTERN_STRING_MAX_LEN
10
0
#define FLT_COMPAR_TOL_FACTOR 4
#define FLT_COMPAR_TOL_FACTOR 4
#define FLT_EQUAL(_x, _y) (fabs((_x) - (_y)) <= (FLT_COMPAR_TOL_FACTOR * FLT_EPSILON))
#define FLT_EQUAL(_x, _y) (fabs((_x) - (_y)) <= (FLT_COMPAR_TOL_FACTOR * FLT_EPSILON))
...
...
src/util/inc/tconfig.h
浏览文件 @
b86f44af
...
@@ -81,6 +81,7 @@ typedef struct {
...
@@ -81,6 +81,7 @@ typedef struct {
extern
SGlobalCfg
tsGlobalConfig
[];
extern
SGlobalCfg
tsGlobalConfig
[];
extern
int32_t
tsGlobalConfigNum
;
extern
int32_t
tsGlobalConfigNum
;
extern
char
*
tsCfgStatusStr
[];
extern
char
*
tsCfgStatusStr
[];
extern
bool
tsdbForceKeepFile
;
void
taosReadGlobalLogCfg
();
void
taosReadGlobalLogCfg
();
bool
taosReadGlobalCfg
();
bool
taosReadGlobalCfg
();
...
...
src/util/src/tcompare.c
浏览文件 @
b86f44af
...
@@ -264,18 +264,19 @@ int WCSPatternMatch(const wchar_t *patterStr, const wchar_t *str, size_t size, c
...
@@ -264,18 +264,19 @@ int WCSPatternMatch(const wchar_t *patterStr, const wchar_t *str, size_t size, c
static
int32_t
compareStrPatternComp
(
const
void
*
pLeft
,
const
void
*
pRight
)
{
static
int32_t
compareStrPatternComp
(
const
void
*
pLeft
,
const
void
*
pRight
)
{
SPatternCompareInfo
pInfo
=
{
'%'
,
'_'
};
SPatternCompareInfo
pInfo
=
{
'%'
,
'_'
};
char
pattern
[
128
]
=
{
0
};
assert
(
varDataLen
(
pRight
)
<=
TSDB_MAX_FIELD_LEN
);
char
*
pattern
=
calloc
(
varDataLen
(
pRight
)
+
1
,
sizeof
(
char
));
memcpy
(
pattern
,
varDataVal
(
pRight
),
varDataLen
(
pRight
));
memcpy
(
pattern
,
varDataVal
(
pRight
),
varDataLen
(
pRight
));
assert
(
varDataLen
(
pRight
)
<
128
);
size_t
sz
=
varDataLen
(
pLeft
);
size_t
sz
=
varDataLen
(
pLeft
);
char
*
buf
=
malloc
(
sz
+
1
);
char
*
buf
=
malloc
(
sz
+
1
);
memcpy
(
buf
,
varDataVal
(
pLeft
),
sz
);
memcpy
(
buf
,
varDataVal
(
pLeft
),
sz
);
buf
[
sz
]
=
0
;
buf
[
sz
]
=
0
;
int32_t
ret
=
patternMatch
(
pattern
,
buf
,
sz
,
&
pInfo
);
int32_t
ret
=
patternMatch
(
pattern
,
buf
,
sz
,
&
pInfo
);
free
(
buf
);
free
(
buf
);
free
(
pattern
);
return
(
ret
==
TSDB_PATTERN_MATCH
)
?
0
:
1
;
return
(
ret
==
TSDB_PATTERN_MATCH
)
?
0
:
1
;
}
}
...
@@ -297,13 +298,13 @@ static int32_t compareFindItemInSet(const void *pLeft, const void* pRight) {
...
@@ -297,13 +298,13 @@ static int32_t compareFindItemInSet(const void *pLeft, const void* pRight) {
static
int32_t
compareWStrPatternComp
(
const
void
*
pLeft
,
const
void
*
pRight
)
{
static
int32_t
compareWStrPatternComp
(
const
void
*
pLeft
,
const
void
*
pRight
)
{
SPatternCompareInfo
pInfo
=
{
'%'
,
'_'
};
SPatternCompareInfo
pInfo
=
{
'%'
,
'_'
};
wchar_t
pattern
[
128
]
=
{
0
}
;
assert
(
varDataLen
(
pRight
)
<=
TSDB_MAX_FIELD_LEN
*
TSDB_NCHAR_SIZE
)
;
assert
(
TSDB_PATTERN_STRING_MAX_LEN
<
128
);
wchar_t
*
pattern
=
calloc
(
varDataLen
(
pRight
)
+
1
,
sizeof
(
wchar_t
)
);
memcpy
(
pattern
,
varDataVal
(
pRight
),
varDataLen
(
pRight
));
memcpy
(
pattern
,
varDataVal
(
pRight
),
varDataLen
(
pRight
));
assert
(
varDataLen
(
pRight
)
<
128
);
int32_t
ret
=
WCSPatternMatch
(
pattern
,
varDataVal
(
pLeft
),
varDataLen
(
pLeft
)
/
TSDB_NCHAR_SIZE
,
&
pInfo
);
int32_t
ret
=
WCSPatternMatch
(
pattern
,
varDataVal
(
pLeft
),
varDataLen
(
pLeft
)
/
TSDB_NCHAR_SIZE
,
&
pInfo
);
free
(
pattern
);
return
(
ret
==
TSDB_PATTERN_MATCH
)
?
0
:
1
;
return
(
ret
==
TSDB_PATTERN_MATCH
)
?
0
:
1
;
}
}
...
...
tests/perftest-scripts/perftest-query.sh
浏览文件 @
b86f44af
...
@@ -101,7 +101,14 @@ function runQueryPerfTest {
...
@@ -101,7 +101,14 @@ function runQueryPerfTest {
python3 insert/insertFromCSVPerformance.py
-c
$LOCAL_COMMIT
-b
$branch
-T
$type
|
tee
-a
$PERFORMANCE_TEST_REPORT
python3 insert/insertFromCSVPerformance.py
-c
$LOCAL_COMMIT
-b
$branch
-T
$type
|
tee
-a
$PERFORMANCE_TEST_REPORT
echo
"=========== taosdemo performance: 4 int columns, 10000 tables, 100000 recoreds per table ==========="
|
tee
-a
$PERFORMANCE_TEST_REPORT
python3 tools/taosdemoPerformance.py
-c
$LOCAL_COMMIT
-b
$branch
-T
$type
|
tee
-a
$PERFORMANCE_TEST_REPORT
python3 tools/taosdemoPerformance.py
-c
$LOCAL_COMMIT
-b
$branch
-T
$type
|
tee
-a
$PERFORMANCE_TEST_REPORT
echo
"=========== taosdemo performance: 400 int columns, 400 double columns, 200 binary(128) columns, 10000 tables, 1000 recoreds per table ==========="
|
tee
-a
$PERFORMANCE_TEST_REPORT
python3 tools/taosdemoPerformance.py
-c
$LOCAL_COMMIT
-b
$branch
-T
$type
-i
400
-D
400
-B
200
-t
10000
-r
100 |
tee
-a
$PERFORMANCE_TEST_REPORT
echo
"=========== taosdemo performance: 1900 int columns, 1900 double columns, 200 binary(128) columns, 10000 tables, 1000 recoreds per table ==========="
|
tee
-a
$PERFORMANCE_TEST_REPORT
python3 tools/taosdemoPerformance.py
-c
$LOCAL_COMMIT
-b
$branch
-T
$type
-i
1900
-D
1900
-B
200
-t
10000
-r
100 |
tee
-a
$PERFORMANCE_TEST_REPORT
}
}
...
...
tests/pytest/crash_gen/valgrind_taos.supp
浏览文件 @
b86f44af
此差异已折叠。
点击以展开。
tests/pytest/fulltest.sh
浏览文件 @
b86f44af
...
@@ -339,6 +339,7 @@ python3 ./test.py -f functions/function_twa.py -r 1
...
@@ -339,6 +339,7 @@ python3 ./test.py -f functions/function_twa.py -r 1
python3 ./test.py
-f
functions/function_twa_test2.py
python3 ./test.py
-f
functions/function_twa_test2.py
python3 ./test.py
-f
functions/function_stddev_td2555.py
python3 ./test.py
-f
functions/function_stddev_td2555.py
python3 ./test.py
-f
functions/showOfflineThresholdIs864000.py
python3 ./test.py
-f
functions/showOfflineThresholdIs864000.py
python3 ./test.py
-f
functions/function_interp.py
python3 ./test.py
-f
insert/metadataUpdate.py
python3 ./test.py
-f
insert/metadataUpdate.py
python3 ./test.py
-f
query/last_cache.py
python3 ./test.py
-f
query/last_cache.py
python3 ./test.py
-f
query/last_row_cache.py
python3 ./test.py
-f
query/last_row_cache.py
...
@@ -381,7 +382,9 @@ python3 ./test.py -f query/querySession.py
...
@@ -381,7 +382,9 @@ python3 ./test.py -f query/querySession.py
python3 test.py
-f
alter/alter_create_exception.py
python3 test.py
-f
alter/alter_create_exception.py
python3 ./test.py
-f
insert/flushwhiledrop.py
python3 ./test.py
-f
insert/flushwhiledrop.py
python3 ./test.py
-f
insert/schemalessInsert.py
python3 ./test.py
-f
insert/schemalessInsert.py
python3 ./test.py
-f
alter/alterColMultiTimes.py
python3 ./test.py
-f
alter/alterColMultiTimes.py
python3 ./test.py
-f
query/queryWildcardLength.py
python3 ./test.py
-f
query/queryTbnameUpperLower.py
#======================p4-end===============
#======================p4-end===============
...
...
tests/pytest/functions/function_interp.py
0 → 100644
浏览文件 @
b86f44af
###################################################################
# Copyright (c) 2016 by TAOS Technologies, Inc.
# All rights reserved.
#
# This file is proprietary and confidential to TAOS Technologies.
# No part of this file may be reproduced, stored, transmitted,
# disclosed or used in any form or by any means other than as
# expressly provided by the written permission from Jianhui Tao
#
###################################################################
# -*- coding: utf-8 -*-
import
sys
import
taos
from
util.log
import
*
from
util.cases
import
*
from
util.sql
import
*
import
numpy
as
np
class
TDTestCase
:
def
init
(
self
,
conn
,
logSql
):
tdLog
.
debug
(
"start to execute %s"
%
__file__
)
tdSql
.
init
(
conn
.
cursor
())
self
.
rowNum
=
10
self
.
ts
=
1537146000000
def
run
(
self
):
tdSql
.
prepare
()
tdSql
.
execute
(
"create table t(ts timestamp, k int)"
)
tdSql
.
execute
(
"insert into t values('2021-1-1 1:1:1', 12);"
)
tdSql
.
query
(
"select interp(*) from t where ts='2021-1-1 1:1:1'"
)
tdSql
.
checkRows
(
1
)
tdSql
.
checkData
(
0
,
1
,
12
)
tdSql
.
error
(
"select interp(*) from t where ts >'2021-1-1 1:1:1' and ts < now interval(1s) fill(next)"
)
def
stop
(
self
):
tdSql
.
close
()
tdLog
.
success
(
"%s successfully executed"
%
__file__
)
tdCases
.
addWindows
(
__file__
,
TDTestCase
())
tdCases
.
addLinux
(
__file__
,
TDTestCase
())
tests/pytest/functions/showOfflineThresholdIs864000.py
浏览文件 @
b86f44af
...
@@ -25,7 +25,7 @@ class TDTestCase:
...
@@ -25,7 +25,7 @@ class TDTestCase:
def
run
(
self
):
def
run
(
self
):
tdSql
.
query
(
"show variables"
)
tdSql
.
query
(
"show variables"
)
tdSql
.
checkData
(
5
3
,
1
,
864000
)
tdSql
.
checkData
(
5
4
,
1
,
864000
)
def
stop
(
self
):
def
stop
(
self
):
tdSql
.
close
()
tdSql
.
close
()
...
...
tests/pytest/query/queryError.py
浏览文件 @
b86f44af
...
@@ -65,6 +65,10 @@ class TDTestCase:
...
@@ -65,6 +65,10 @@ class TDTestCase:
# TD-2208
# TD-2208
tdSql
.
error
(
"select diff(tagtype),top(tagtype,1) from dev_001"
)
tdSql
.
error
(
"select diff(tagtype),top(tagtype,1) from dev_001"
)
# TD-6006
tdSql
.
error
(
"select * from dev_001 where 'name' is not null"
)
tdSql
.
error
(
"select * from dev_001 where
\"
name
\"
= 'first'"
)
def
stop
(
self
):
def
stop
(
self
):
tdSql
.
close
()
tdSql
.
close
()
tdLog
.
success
(
"%s successfully executed"
%
__file__
)
tdLog
.
success
(
"%s successfully executed"
%
__file__
)
...
...
tests/pytest/query/queryTbnameUpperLower.py
0 → 100644
浏览文件 @
b86f44af
###################################################################
# Copyright (c) 2016 by TAOS Technologies, Inc.
# All rights reserved.
#
# This file is proprietary and confidential to TAOS Technologies.
# No part of this file may be reproduced, stored, transmitted,
# disclosed or used in any form or by any means other than as
# expressly provided by the written permission from Jianhui Tao
#
###################################################################
# -*- coding: utf-8 -*-
from
util.log
import
tdLog
from
util.cases
import
tdCases
from
util.sql
import
tdSql
from
util.common
import
tdCom
class
TDTestCase
:
def
init
(
self
,
conn
,
logSql
):
tdLog
.
debug
(
"start to execute %s"
%
__file__
)
tdSql
.
init
(
conn
.
cursor
(),
logSql
)
def
checkStbWhereIn
(
self
):
'''
where in ---> upper lower mixed
'''
tdCom
.
cleanTb
()
table_name
=
tdCom
.
getLongName
(
8
,
"letters_mixed"
)
table_name_sub
=
f
'
{
table_name
}
_sub'
tb_name_lower
=
table_name_sub
.
lower
()
tb_name_upper
=
table_name_sub
.
upper
()
## create stb and tb
tdSql
.
execute
(
f
'CREATE TABLE
{
table_name
}
(ts timestamp, id int, bi1 binary(20)) tags (si1 binary(20))'
)
tdSql
.
execute
(
f
'create table
{
table_name_sub
}
1 using
{
table_name
}
tags ("
{
table_name_sub
}
1")'
)
tdSql
.
execute
(
f
'create table
{
tb_name_lower
}
2 using
{
table_name
}
tags ("
{
tb_name_lower
}
2")'
)
tdSql
.
execute
(
f
'create table
{
tb_name_upper
}
3 using
{
table_name
}
tags ("
{
tb_name_upper
}
3")'
)
## insert values
tdSql
.
execute
(
f
'insert into
{
table_name_sub
}
1 values (now-1s, 1, "
{
table_name_sub
}
1")'
)
tdSql
.
execute
(
f
'insert into
{
tb_name_lower
}
2 values (now-2s, 2, "
{
tb_name_lower
}
21")'
)
tdSql
.
execute
(
f
'insert into
{
tb_name_lower
}
2 values (now-3s, 3, "
{
tb_name_lower
}
22")'
)
tdSql
.
execute
(
f
'insert into
{
tb_name_upper
}
3 values (now-4s, 4, "
{
tb_name_upper
}
31")'
)
tdSql
.
execute
(
f
'insert into
{
tb_name_upper
}
3 values (now-5s, 5, "
{
tb_name_upper
}
32")'
)
tdSql
.
execute
(
f
'insert into
{
tb_name_upper
}
3 values (now-6s, 6, "
{
tb_name_upper
}
33")'
)
## query where tbname in single
tdSql
.
query
(
f
'select * from
{
table_name
}
where tbname in ("
{
table_name_sub
}
1")'
)
tdSql
.
checkRows
(
1
)
tdSql
.
query
(
f
'select * from
{
table_name
}
where tbname in ("
{
table_name_sub
.
upper
()
}
1")'
)
tdSql
.
checkRows
(
1
)
tdSql
.
query
(
f
'select * from
{
table_name
}
where tbname in ("
{
table_name_sub
.
lower
()
}
1")'
)
tdSql
.
checkRows
(
1
)
tdSql
.
query
(
f
'select * from
{
table_name
}
where tbname in ("
{
tb_name_lower
}
2")'
)
tdSql
.
checkRows
(
2
)
tdSql
.
query
(
f
'select * from
{
table_name
}
where tbname in ("
{
tb_name_lower
.
upper
()
}
2")'
)
tdSql
.
checkRows
(
2
)
tdSql
.
query
(
f
'select * from
{
table_name
}
where tbname in ("
{
tb_name_upper
}
3")'
)
tdSql
.
checkRows
(
3
)
tdSql
.
query
(
f
'select * from
{
table_name
}
where tbname in ("
{
tb_name_upper
.
lower
()
}
3")'
)
tdSql
.
checkRows
(
3
)
## query where tbname in multi
tdSql
.
query
(
f
'select * from
{
table_name
}
where id=5 and tbname in ("
{
table_name_sub
}
1", "
{
tb_name_lower
.
upper
()
}
2", "
{
tb_name_upper
.
lower
()
}
3")'
)
tdSql
.
checkRows
(
1
)
tdSql
.
query
(
f
'select * from
{
table_name
}
where tbname in ("
{
table_name_sub
}
1", "
{
tb_name_lower
.
upper
()
}
2", "
{
tb_name_upper
.
lower
()
}
3")'
)
tdSql
.
checkRows
(
6
)
def
run
(
self
):
tdSql
.
prepare
()
self
.
checkStbWhereIn
()
def
stop
(
self
):
tdSql
.
close
()
tdLog
.
success
(
"%s successfully executed"
%
__file__
)
tdCases
.
addWindows
(
__file__
,
TDTestCase
())
tdCases
.
addLinux
(
__file__
,
TDTestCase
())
\ No newline at end of file
tests/pytest/query/queryWildcardLength.py
0 → 100644
浏览文件 @
b86f44af
此差异已折叠。
点击以展开。
tests/pytest/query/tbname.py
浏览文件 @
b86f44af
...
@@ -53,6 +53,9 @@ class TDTestCase:
...
@@ -53,6 +53,9 @@ class TDTestCase:
"select * from cars where id=0 and tbname in ('carzero', 'cartwo')"
)
"select * from cars where id=0 and tbname in ('carzero', 'cartwo')"
)
tdSql
.
checkRows
(
1
)
tdSql
.
checkRows
(
1
)
tdSql
.
query
(
"select * from cars where tbname in ('carZero', 'CARONE')"
)
tdSql
.
checkRows
(
2
)
"""
"""
tdSql.query("select * from cars where tbname like 'car%'")
tdSql.query("select * from cars where tbname like 'car%'")
tdSql.checkRows(2)
tdSql.checkRows(2)
...
...
tests/pytest/tools/taosdemoAllTest/NanoTestCase/taosdemoTestSupportNanoInsert.py
浏览文件 @
b86f44af
此差异已折叠。
点击以展开。
tests/pytest/tools/taosdemoAllTest/taosdemoTestSupportNanoInsert.py
浏览文件 @
b86f44af
...
@@ -120,7 +120,7 @@ class TDTestCase:
...
@@ -120,7 +120,7 @@ class TDTestCase:
os
.
system
(
"rm -rf tools/taosdemoAllTest/taosdemoTestSupportNano*.py.sql"
)
os
.
system
(
"rm -rf tools/taosdemoAllTest/taosdemoTestSupportNano*.py.sql"
)
# taosdemo test insert with command and parameter , detals show taosdemo --help
# taosdemo test insert with command and parameter , detals show taosdemo --help
os
.
system
(
"%staosdemo -u root -
P taosdata -p
6030 -a 1 -m pre -n 10 -T 20 -t 60 -o res.txt -y "
%
binPath
)
os
.
system
(
"%staosdemo -u root -
ptaosdata -P
6030 -a 1 -m pre -n 10 -T 20 -t 60 -o res.txt -y "
%
binPath
)
tdSql
.
query
(
"select count(*) from test.meters"
)
tdSql
.
query
(
"select count(*) from test.meters"
)
tdSql
.
checkData
(
0
,
0
,
600
)
tdSql
.
checkData
(
0
,
0
,
600
)
# check taosdemo -s
# check taosdemo -s
...
...
tests/pytest/tools/taosdemoPerformance.py
浏览文件 @
b86f44af
此差异已折叠。
点击以展开。
tests/pytest/tools/taosdemoTestInterlace.py
浏览文件 @
b86f44af
...
@@ -49,7 +49,7 @@ class TDTestCase:
...
@@ -49,7 +49,7 @@ class TDTestCase:
else
:
else
:
tdLog
.
info
(
"taosd found in %s"
%
buildPath
)
tdLog
.
info
(
"taosd found in %s"
%
buildPath
)
binPath
=
buildPath
+
"/build/bin/"
binPath
=
buildPath
+
"/build/bin/"
taosdemoCmd
=
"%staosdemo -f tools/insert-interlace.json -
pp
2>&1 | grep sleep | wc -l"
%
binPath
taosdemoCmd
=
"%staosdemo -f tools/insert-interlace.json -
PP
2>&1 | grep sleep | wc -l"
%
binPath
sleepTimes
=
subprocess
.
check_output
(
sleepTimes
=
subprocess
.
check_output
(
taosdemoCmd
,
shell
=
True
).
decode
(
"utf-8"
)
taosdemoCmd
,
shell
=
True
).
decode
(
"utf-8"
)
print
(
"sleep times: %d"
%
int
(
sleepTimes
))
print
(
"sleep times: %d"
%
int
(
sleepTimes
))
...
...
tests/pytest/util/common.py
0 → 100644
浏览文件 @
b86f44af
此差异已折叠。
点击以展开。
tests/pytest/util/sql.py
浏览文件 @
b86f44af
此差异已折叠。
点击以展开。
tests/script/general/parser/fill.sim
浏览文件 @
b86f44af
此差异已折叠。
点击以展开。
tests/script/general/parser/function.sim
浏览文件 @
b86f44af
此差异已折叠。
点击以展开。
tests/script/general/parser/interp.sim
浏览文件 @
b86f44af
此差异已折叠。
点击以展开。
tests/script/general/parser/tbnameIn_query.sim
浏览文件 @
b86f44af
此差异已折叠。
点击以展开。
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录