Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
慢慢CG
TDengine
提交
a561016f
T
TDengine
项目概览
慢慢CG
/
TDengine
与 Fork 源项目一致
Fork自
taosdata / TDengine
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
a561016f
编写于
6月 16, 2020
作者:
S
slguan
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'develop' into hotfix/crash
上级
1da21799
be1791e4
变更
35
展开全部
隐藏空白更改
内联
并排
Showing
35 changed file
with
663 addition
and
543 deletion
+663
-543
src/client/src/tscLocal.c
src/client/src/tscLocal.c
+11
-11
src/client/tests/timeParseTest.cpp
src/client/tests/timeParseTest.cpp
+37
-37
src/common/inc/tdataformat.h
src/common/inc/tdataformat.h
+1
-1
src/mnode/src/mnodeDb.c
src/mnode/src/mnodeDb.c
+1
-1
src/mnode/src/mnodeDnode.c
src/mnode/src/mnodeDnode.c
+1
-1
src/mnode/src/mnodeMnode.c
src/mnode/src/mnodeMnode.c
+3
-3
src/mnode/src/mnodeTable.c
src/mnode/src/mnodeTable.c
+5
-5
src/mnode/src/mnodeUser.c
src/mnode/src/mnodeUser.c
+2
-3
src/mnode/src/mnodeVgroup.c
src/mnode/src/mnodeVgroup.c
+2
-2
src/query/src/qExecutor.c
src/query/src/qExecutor.c
+4
-2
src/query/src/qast.c
src/query/src/qast.c
+6
-3
src/query/src/qextbuffer.c
src/query/src/qextbuffer.c
+2
-0
src/query/src/qparserImpl.c
src/query/src/qparserImpl.c
+2
-7
src/query/src/qpercentile.c
src/query/src/qpercentile.c
+3
-3
src/query/src/qresultBuf.c
src/query/src/qresultBuf.c
+7
-3
src/query/src/qtsbuf.c
src/query/src/qtsbuf.c
+1
-1
src/query/src/tvariant.c
src/query/src/tvariant.c
+1
-1
src/query/tests/unitTest.cpp
src/query/tests/unitTest.cpp
+32
-32
src/rpc/src/rpcMain.c
src/rpc/src/rpcMain.c
+1
-0
tests/pytest/fulltest.sh
tests/pytest/fulltest.sh
+1
-1
tests/pytest/query/filterAllIntTypes.py
tests/pytest/query/filterAllIntTypes.py
+31
-19
tests/pytest/query/filterFloatAndDouble.py
tests/pytest/query/filterFloatAndDouble.py
+18
-18
tests/pytest/query/filterOtherTypes.py
tests/pytest/query/filterOtherTypes.py
+73
-68
tests/pytest/query/querySort.py
tests/pytest/query/querySort.py
+30
-26
tests/pytest/random-test/random-test.py
tests/pytest/random-test/random-test.py
+2
-0
tests/pytest/regressiontest.sh
tests/pytest/regressiontest.sh
+4
-4
tests/pytest/table/del_stable.py
tests/pytest/table/del_stable.py
+2
-2
tests/pytest/table/tablename-boundary.py
tests/pytest/table/tablename-boundary.py
+4
-1
tests/pytest/tag_lite/change.py
tests/pytest/tag_lite/change.py
+11
-5
tests/pytest/tag_lite/commit.py
tests/pytest/tag_lite/commit.py
+109
-101
tests/pytest/tag_lite/delete.py
tests/pytest/tag_lite/delete.py
+149
-113
tests/pytest/tag_lite/set.py
tests/pytest/tag_lite/set.py
+73
-53
tests/pytest/util/sql.py
tests/pytest/util/sql.py
+20
-14
tests/script/unique/arbitrator/dn3_mn1_vnode_corruptFile_offline.sim
...t/unique/arbitrator/dn3_mn1_vnode_corruptFile_offline.sim
+7
-1
tests/script/unique/arbitrator/dn3_mn1_vnode_corruptFile_online.sim
...pt/unique/arbitrator/dn3_mn1_vnode_corruptFile_online.sim
+7
-1
未找到文件。
src/client/src/tscLocal.c
浏览文件 @
a561016f
...
...
@@ -132,14 +132,14 @@ static int32_t tscSetValueToResObj(SSqlObj *pSql, int32_t rowLen) {
for
(
int32_t
i
=
0
;
i
<
numOfRows
;
++
i
)
{
TAOS_FIELD
*
pField
=
tscFieldInfoGetField
(
&
pQueryInfo
->
fieldsInfo
,
0
);
char
*
dst
=
pRes
->
data
+
tscFieldInfoGetOffset
(
pQueryInfo
,
0
)
*
totalNumOfRows
+
pField
->
bytes
*
i
;
STR_WITH_MAXSIZE_TO_VARSTR
(
dst
,
pSchema
[
i
].
name
,
TSDB_COL_NAME_LEN
-
1
);
STR_WITH_MAXSIZE_TO_VARSTR
(
dst
,
pSchema
[
i
].
name
,
pField
->
bytes
);
char
*
type
=
tDataTypeDesc
[
pSchema
[
i
].
type
].
aName
;
pField
=
tscFieldInfoGetField
(
&
pQueryInfo
->
fieldsInfo
,
1
);
dst
=
pRes
->
data
+
tscFieldInfoGetOffset
(
pQueryInfo
,
1
)
*
totalNumOfRows
+
pField
->
bytes
*
i
;
STR_
TO_VARSTR
(
dst
,
type
);
STR_
WITH_MAXSIZE_TO_VARSTR
(
dst
,
type
,
pField
->
bytes
);
int32_t
bytes
=
pSchema
[
i
].
bytes
;
if
(
pSchema
[
i
].
type
==
TSDB_DATA_TYPE_BINARY
||
pSchema
[
i
].
type
==
TSDB_DATA_TYPE_NCHAR
)
{
...
...
@@ -157,7 +157,7 @@ static int32_t tscSetValueToResObj(SSqlObj *pSql, int32_t rowLen) {
if
(
i
>=
tscGetNumOfColumns
(
pMeta
)
&&
tscGetNumOfTags
(
pMeta
)
!=
0
)
{
char
*
output
=
pRes
->
data
+
tscFieldInfoGetOffset
(
pQueryInfo
,
3
)
*
totalNumOfRows
+
pField
->
bytes
*
i
;
const
char
*
src
=
"TAG"
;
STR_WITH_
SIZE_TO_VARSTR
(
output
,
src
,
strlen
(
src
)
);
STR_WITH_
MAXSIZE_TO_VARSTR
(
output
,
src
,
pField
->
bytes
);
}
}
...
...
@@ -171,7 +171,7 @@ static int32_t tscSetValueToResObj(SSqlObj *pSql, int32_t rowLen) {
// field name
TAOS_FIELD
*
pField
=
tscFieldInfoGetField
(
&
pQueryInfo
->
fieldsInfo
,
0
);
char
*
output
=
pRes
->
data
+
tscFieldInfoGetOffset
(
pQueryInfo
,
0
)
*
totalNumOfRows
+
pField
->
bytes
*
i
;
STR_WITH_MAXSIZE_TO_VARSTR
(
output
,
pSchema
[
i
].
name
,
TSDB_COL_NAME_LEN
-
1
);
STR_WITH_MAXSIZE_TO_VARSTR
(
output
,
pSchema
[
i
].
name
,
pField
->
bytes
);
// type name
pField
=
tscFieldInfoGetField
(
&
pQueryInfo
->
fieldsInfo
,
1
);
...
...
@@ -193,7 +193,7 @@ static int32_t tscSetValueToResObj(SSqlObj *pSql, int32_t rowLen) {
pField
=
tscFieldInfoGetField
(
&
pQueryInfo
->
fieldsInfo
,
3
);
char
*
target
=
pRes
->
data
+
tscFieldInfoGetOffset
(
pQueryInfo
,
3
)
*
totalNumOfRows
+
pField
->
bytes
*
i
;
const
char
*
src
=
"TAG"
;
STR_WITH_
SIZE_TO_VARSTR
(
target
,
src
,
strlen
(
src
)
);
STR_WITH_
MAXSIZE_TO_VARSTR
(
target
,
src
,
pField
->
bytes
);
pTagValue
+=
pSchema
[
i
].
bytes
;
}
...
...
@@ -220,15 +220,15 @@ static int32_t tscBuildTableSchemaResultFields(SSqlObj *pSql, int32_t numOfCols,
rowLen
+=
((
TSDB_COL_NAME_LEN
-
1
)
+
VARSTR_HEADER_SIZE
);
f
.
bytes
=
typeColLength
;
f
.
bytes
=
typeColLength
+
VARSTR_HEADER_SIZE
;
f
.
type
=
TSDB_DATA_TYPE_BINARY
;
tstrncpy
(
f
.
name
,
"Type"
,
sizeof
(
f
.
name
));
pInfo
=
tscFieldInfoAppend
(
&
pQueryInfo
->
fieldsInfo
,
&
f
);
pInfo
->
pSqlExpr
=
tscSqlExprAppend
(
pQueryInfo
,
TSDB_FUNC_TS_DUMMY
,
&
index
,
TSDB_DATA_TYPE_BINARY
,
typeColLength
,
pInfo
->
pSqlExpr
=
tscSqlExprAppend
(
pQueryInfo
,
TSDB_FUNC_TS_DUMMY
,
&
index
,
TSDB_DATA_TYPE_BINARY
,
typeColLength
+
VARSTR_HEADER_SIZE
,
typeColLength
,
false
);
rowLen
+=
typeColLength
;
rowLen
+=
typeColLength
+
VARSTR_HEADER_SIZE
;
f
.
bytes
=
sizeof
(
int32_t
);
f
.
type
=
TSDB_DATA_TYPE_INT
;
...
...
@@ -240,15 +240,15 @@ static int32_t tscBuildTableSchemaResultFields(SSqlObj *pSql, int32_t numOfCols,
rowLen
+=
sizeof
(
int32_t
);
f
.
bytes
=
noteColLength
;
f
.
bytes
=
noteColLength
+
VARSTR_HEADER_SIZE
;
f
.
type
=
TSDB_DATA_TYPE_BINARY
;
tstrncpy
(
f
.
name
,
"Note"
,
sizeof
(
f
.
name
));
pInfo
=
tscFieldInfoAppend
(
&
pQueryInfo
->
fieldsInfo
,
&
f
);
pInfo
->
pSqlExpr
=
tscSqlExprAppend
(
pQueryInfo
,
TSDB_FUNC_TS_DUMMY
,
&
index
,
TSDB_DATA_TYPE_BINARY
,
noteColLength
,
pInfo
->
pSqlExpr
=
tscSqlExprAppend
(
pQueryInfo
,
TSDB_FUNC_TS_DUMMY
,
&
index
,
TSDB_DATA_TYPE_BINARY
,
noteColLength
+
VARSTR_HEADER_SIZE
,
noteColLength
,
false
);
rowLen
+=
noteColLength
;
rowLen
+=
noteColLength
+
VARSTR_HEADER_SIZE
;
return
rowLen
;
}
...
...
src/client/tests/timeParseTest.cpp
浏览文件 @
a561016f
...
...
@@ -24,19 +24,19 @@ TEST(testCase, parse_time) {
int64_t
time
=
0
,
time1
=
0
;
taosParseTime
(
t1
,
&
time
,
strlen
(
t1
),
TSDB_TIME_PRECISION_MILLI
);
taosParseTime
(
t1
,
&
time
,
strlen
(
t1
),
TSDB_TIME_PRECISION_MILLI
,
0
);
EXPECT_EQ
(
time
,
1514739661952
);
taosParseTime
(
t13
,
&
time
,
strlen
(
t13
),
TSDB_TIME_PRECISION_MILLI
);
taosParseTime
(
t13
,
&
time
,
strlen
(
t13
),
TSDB_TIME_PRECISION_MILLI
,
0
);
EXPECT_EQ
(
time
,
timezone
*
MILLISECOND_PER_SECOND
);
char
t2
[]
=
"2018-1-1T1:1:1.952Z"
;
taosParseTime
(
t2
,
&
time
,
strlen
(
t2
),
TSDB_TIME_PRECISION_MILLI
);
taosParseTime
(
t2
,
&
time
,
strlen
(
t2
),
TSDB_TIME_PRECISION_MILLI
,
0
);
EXPECT_EQ
(
time
,
1514739661952
+
28800000
);
char
t3
[]
=
"2018-1-1 1:01:01.952"
;
taosParseTime
(
t3
,
&
time
,
strlen
(
t3
),
TSDB_TIME_PRECISION_MILLI
);
taosParseTime
(
t3
,
&
time
,
strlen
(
t3
),
TSDB_TIME_PRECISION_MILLI
,
0
);
EXPECT_EQ
(
time
,
1514739661952
);
char
t4
[]
=
"2018-1-1 1:01:01.9"
;
...
...
@@ -45,122 +45,122 @@ TEST(testCase, parse_time) {
char
t7
[]
=
"2018-01-01 01:01:01.9"
;
char
t8
[]
=
"2018-01-01 01:01:01.9007865"
;
taosParseTime
(
t4
,
&
time
,
strlen
(
t4
),
TSDB_TIME_PRECISION_MILLI
);
taosParseTime
(
t5
,
&
time1
,
strlen
(
t5
),
TSDB_TIME_PRECISION_MILLI
);
taosParseTime
(
t4
,
&
time
,
strlen
(
t4
),
TSDB_TIME_PRECISION_MILLI
,
0
);
taosParseTime
(
t5
,
&
time1
,
strlen
(
t5
),
TSDB_TIME_PRECISION_MILLI
,
0
);
EXPECT_EQ
(
time
,
time1
);
taosParseTime
(
t4
,
&
time
,
strlen
(
t4
),
TSDB_TIME_PRECISION_MILLI
);
taosParseTime
(
t6
,
&
time1
,
strlen
(
t6
),
TSDB_TIME_PRECISION_MILLI
);
taosParseTime
(
t4
,
&
time
,
strlen
(
t4
),
TSDB_TIME_PRECISION_MILLI
,
0
);
taosParseTime
(
t6
,
&
time1
,
strlen
(
t6
),
TSDB_TIME_PRECISION_MILLI
,
0
);
EXPECT_EQ
(
time
,
time1
);
taosParseTime
(
t4
,
&
time
,
strlen
(
t4
),
TSDB_TIME_PRECISION_MILLI
);
taosParseTime
(
t7
,
&
time1
,
strlen
(
t7
),
TSDB_TIME_PRECISION_MILLI
);
taosParseTime
(
t4
,
&
time
,
strlen
(
t4
),
TSDB_TIME_PRECISION_MILLI
,
0
);
taosParseTime
(
t7
,
&
time1
,
strlen
(
t7
),
TSDB_TIME_PRECISION_MILLI
,
0
);
EXPECT_EQ
(
time
,
time1
);
taosParseTime
(
t5
,
&
time
,
strlen
(
t5
),
TSDB_TIME_PRECISION_MILLI
);
taosParseTime
(
t8
,
&
time1
,
strlen
(
t8
),
TSDB_TIME_PRECISION_MILLI
);
taosParseTime
(
t5
,
&
time
,
strlen
(
t5
),
TSDB_TIME_PRECISION_MILLI
,
0
);
taosParseTime
(
t8
,
&
time1
,
strlen
(
t8
),
TSDB_TIME_PRECISION_MILLI
,
0
);
EXPECT_EQ
(
time
,
time1
);
char
t9
[]
=
"2017-4-3 1:1:2.980"
;
char
t10
[]
=
"2017-4-3T2:1:2.98+9:00"
;
taosParseTime
(
t9
,
&
time
,
strlen
(
t9
),
TSDB_TIME_PRECISION_MILLI
);
taosParseTime
(
t10
,
&
time1
,
strlen
(
t10
),
TSDB_TIME_PRECISION_MILLI
);
taosParseTime
(
t9
,
&
time
,
strlen
(
t9
),
TSDB_TIME_PRECISION_MILLI
,
0
);
taosParseTime
(
t10
,
&
time1
,
strlen
(
t10
),
TSDB_TIME_PRECISION_MILLI
,
0
);
EXPECT_EQ
(
time
,
time1
);
char
t11
[]
=
"2017-4-3T2:1:2.98+09:00"
;
taosParseTime
(
t11
,
&
time
,
strlen
(
t11
),
TSDB_TIME_PRECISION_MILLI
);
taosParseTime
(
t10
,
&
time1
,
strlen
(
t10
),
TSDB_TIME_PRECISION_MILLI
);
taosParseTime
(
t11
,
&
time
,
strlen
(
t11
),
TSDB_TIME_PRECISION_MILLI
,
0
);
taosParseTime
(
t10
,
&
time1
,
strlen
(
t10
),
TSDB_TIME_PRECISION_MILLI
,
0
);
EXPECT_EQ
(
time
,
time1
);
char
t12
[]
=
"2017-4-3T2:1:2.98+0900"
;
taosParseTime
(
t11
,
&
time
,
strlen
(
t11
),
TSDB_TIME_PRECISION_MILLI
);
taosParseTime
(
t12
,
&
time1
,
strlen
(
t12
),
TSDB_TIME_PRECISION_MILLI
);
taosParseTime
(
t11
,
&
time
,
strlen
(
t11
),
TSDB_TIME_PRECISION_MILLI
,
0
);
taosParseTime
(
t12
,
&
time1
,
strlen
(
t12
),
TSDB_TIME_PRECISION_MILLI
,
0
);
EXPECT_EQ
(
time
,
time1
);
taos_options
(
TSDB_OPTION_TIMEZONE
,
"UTC"
);
deltaToUtcInitOnce
();
taosParseTime
(
t13
,
&
time
,
strlen
(
t13
),
TSDB_TIME_PRECISION_MILLI
);
taosParseTime
(
t13
,
&
time
,
strlen
(
t13
),
TSDB_TIME_PRECISION_MILLI
,
0
);
EXPECT_EQ
(
time
,
0
);
taos_options
(
TSDB_OPTION_TIMEZONE
,
"Asia/Shanghai"
);
deltaToUtcInitOnce
();
char
t14
[]
=
"1970-1-1T0:0:0Z"
;
taosParseTime
(
t14
,
&
time
,
strlen
(
t14
),
TSDB_TIME_PRECISION_MILLI
);
taosParseTime
(
t14
,
&
time
,
strlen
(
t14
),
TSDB_TIME_PRECISION_MILLI
,
0
);
EXPECT_EQ
(
time
,
0
);
char
t40
[]
=
"1970-1-1 0:0:0.999999999"
;
taosParseTime
(
t40
,
&
time
,
strlen
(
t40
),
TSDB_TIME_PRECISION_MILLI
);
taosParseTime
(
t40
,
&
time
,
strlen
(
t40
),
TSDB_TIME_PRECISION_MILLI
,
0
);
EXPECT_EQ
(
time
,
999
+
timezone
*
MILLISECOND_PER_SECOND
);
char
t41
[]
=
"1997-1-1 0:0:0.999999999"
;
taosParseTime
(
t41
,
&
time
,
strlen
(
t41
),
TSDB_TIME_PRECISION_MILLI
);
taosParseTime
(
t41
,
&
time
,
strlen
(
t41
),
TSDB_TIME_PRECISION_MILLI
,
0
);
EXPECT_EQ
(
time
,
852048000999
);
int64_t
k
=
timezone
;
char
t42
[]
=
"1997-1-1T0:0:0.999999999Z"
;
taosParseTime
(
t42
,
&
time
,
strlen
(
t42
),
TSDB_TIME_PRECISION_MILLI
);
taosParseTime
(
t42
,
&
time
,
strlen
(
t42
),
TSDB_TIME_PRECISION_MILLI
,
0
);
EXPECT_EQ
(
time
,
852048000999
-
timezone
*
MILLISECOND_PER_SECOND
);
////////////////////////////////////////////////////////////////////
// illegal timestamp format
char
t15
[]
=
"2017-12-33 0:0:0"
;
EXPECT_EQ
(
taosParseTime
(
t15
,
&
time
,
strlen
(
t15
),
TSDB_TIME_PRECISION_MILLI
),
-
1
);
EXPECT_EQ
(
taosParseTime
(
t15
,
&
time
,
strlen
(
t15
),
TSDB_TIME_PRECISION_MILLI
,
0
),
-
1
);
char
t16
[]
=
"2017-12-31 99:0:0"
;
EXPECT_EQ
(
taosParseTime
(
t16
,
&
time
,
strlen
(
t16
),
TSDB_TIME_PRECISION_MILLI
),
-
1
);
EXPECT_EQ
(
taosParseTime
(
t16
,
&
time
,
strlen
(
t16
),
TSDB_TIME_PRECISION_MILLI
,
0
),
-
1
);
char
t17
[]
=
"2017-12-31T9:0:0"
;
EXPECT_EQ
(
taosParseTime
(
t17
,
&
time
,
strlen
(
t17
),
TSDB_TIME_PRECISION_MILLI
),
-
1
);
EXPECT_EQ
(
taosParseTime
(
t17
,
&
time
,
strlen
(
t17
),
TSDB_TIME_PRECISION_MILLI
,
0
),
-
1
);
char
t18
[]
=
"2017-12-31T9:0:0.Z"
;
EXPECT_EQ
(
taosParseTime
(
t18
,
&
time
,
strlen
(
t18
),
TSDB_TIME_PRECISION_MILLI
),
-
1
);
EXPECT_EQ
(
taosParseTime
(
t18
,
&
time
,
strlen
(
t18
),
TSDB_TIME_PRECISION_MILLI
,
0
),
-
1
);
char
t19
[]
=
"2017-12-31 9:0:0.-1"
;
EXPECT_EQ
(
taosParseTime
(
t19
,
&
time
,
strlen
(
t19
),
TSDB_TIME_PRECISION_MILLI
),
-
1
);
EXPECT_EQ
(
taosParseTime
(
t19
,
&
time
,
strlen
(
t19
),
TSDB_TIME_PRECISION_MILLI
,
0
),
-
1
);
char
t20
[]
=
"2017-12-31 9:0:0.1+12:99"
;
EXPECT_EQ
(
taosParseTime
(
t20
,
&
time
,
strlen
(
t20
),
TSDB_TIME_PRECISION_MILLI
),
0
);
EXPECT_EQ
(
taosParseTime
(
t20
,
&
time
,
strlen
(
t20
),
TSDB_TIME_PRECISION_MILLI
,
0
),
0
);
EXPECT_EQ
(
time
,
1514682000100
);
char
t21
[]
=
"2017-12-31T9:0:0.1+12:99"
;
EXPECT_EQ
(
taosParseTime
(
t21
,
&
time
,
strlen
(
t21
),
TSDB_TIME_PRECISION_MILLI
),
-
1
);
EXPECT_EQ
(
taosParseTime
(
t21
,
&
time
,
strlen
(
t21
),
TSDB_TIME_PRECISION_MILLI
,
0
),
-
1
);
char
t22
[]
=
"2017-12-31 9:0:0.1+13:1"
;
EXPECT_EQ
(
taosParseTime
(
t22
,
&
time
,
strlen
(
t22
),
TSDB_TIME_PRECISION_MILLI
),
0
);
EXPECT_EQ
(
taosParseTime
(
t22
,
&
time
,
strlen
(
t22
),
TSDB_TIME_PRECISION_MILLI
,
0
),
0
);
char
t23
[]
=
"2017-12-31T9:0:0.1+13:1"
;
EXPECT_EQ
(
taosParseTime
(
t23
,
&
time
,
strlen
(
t23
),
TSDB_TIME_PRECISION_MILLI
),
0
);
EXPECT_EQ
(
taosParseTime
(
t23
,
&
time
,
strlen
(
t23
),
TSDB_TIME_PRECISION_MILLI
,
0
),
0
);
//======================== add some case ============================//
char
b1
[]
=
"9999-12-31 23:59:59.999"
;
taosParseTime
(
b1
,
&
time
,
strlen
(
b1
),
TSDB_TIME_PRECISION_MILLI
);
taosParseTime
(
b1
,
&
time
,
strlen
(
b1
),
TSDB_TIME_PRECISION_MILLI
,
0
);
EXPECT_EQ
(
time
,
253402271999999
);
char
b2
[]
=
"2020-01-01 01:01:01.321"
;
taosParseTime
(
b2
,
&
time
,
strlen
(
b2
),
TSDB_TIME_PRECISION_MILLI
);
taosParseTime
(
b2
,
&
time
,
strlen
(
b2
),
TSDB_TIME_PRECISION_MILLI
,
0
);
EXPECT_EQ
(
time
,
1577811661321
);
taos_options
(
TSDB_OPTION_TIMEZONE
,
"America/New_York"
);
deltaToUtcInitOnce
();
taosParseTime
(
t13
,
&
time
,
strlen
(
t13
),
TSDB_TIME_PRECISION_MILLI
);
taosParseTime
(
t13
,
&
time
,
strlen
(
t13
),
TSDB_TIME_PRECISION_MILLI
,
0
);
EXPECT_EQ
(
time
,
18000
*
MILLISECOND_PER_SECOND
);
taos_options
(
TSDB_OPTION_TIMEZONE
,
"Asia/Tokyo"
);
deltaToUtcInitOnce
();
taosParseTime
(
t13
,
&
time
,
strlen
(
t13
),
TSDB_TIME_PRECISION_MILLI
);
taosParseTime
(
t13
,
&
time
,
strlen
(
t13
),
TSDB_TIME_PRECISION_MILLI
,
0
);
EXPECT_EQ
(
time
,
-
32400
*
MILLISECOND_PER_SECOND
);
taos_options
(
TSDB_OPTION_TIMEZONE
,
"Asia/Shanghai"
);
deltaToUtcInitOnce
();
taosParseTime
(
t13
,
&
time
,
strlen
(
t13
),
TSDB_TIME_PRECISION_MILLI
);
taosParseTime
(
t13
,
&
time
,
strlen
(
t13
),
TSDB_TIME_PRECISION_MILLI
,
0
);
EXPECT_EQ
(
time
,
-
28800
*
MILLISECOND_PER_SECOND
);
}
...
...
src/common/inc/tdataformat.h
浏览文件 @
a561016f
...
...
@@ -36,7 +36,7 @@ extern "C" {
#define STR_WITH_MAXSIZE_TO_VARSTR(x, str, _maxs) \
do { \
char *_e = stpncpy(varDataVal(x), (str), (_maxs)); \
char *_e = stpncpy(varDataVal(x), (str), (_maxs)
-VARSTR_HEADER_SIZE
); \
varDataSetLen(x, (_e - (x)-VARSTR_HEADER_SIZE)); \
} while (0)
...
...
src/mnode/src/mnodeDb.c
浏览文件 @
a561016f
...
...
@@ -616,7 +616,7 @@ static int32_t mnodeRetrieveDbs(SShowObj *pShow, char *data, int32_t rows, void
pWrite
=
data
+
pShow
->
offset
[
cols
]
*
rows
+
pShow
->
bytes
[
cols
]
*
numOfRows
;
char
*
name
=
mnodeGetDbStr
(
pDb
->
name
);
STR_WITH_MAXSIZE_TO_VARSTR
(
pWrite
,
name
,
TSDB_DB_NAME_LEN
-
1
);
STR_WITH_MAXSIZE_TO_VARSTR
(
pWrite
,
name
,
pShow
->
bytes
[
cols
]
);
cols
++
;
pWrite
=
data
+
pShow
->
offset
[
cols
]
*
rows
+
pShow
->
bytes
[
cols
]
*
numOfRows
;
...
...
src/mnode/src/mnodeDnode.c
浏览文件 @
a561016f
...
...
@@ -579,7 +579,7 @@ static int32_t mnodeRetrieveDnodes(SShowObj *pShow, char *data, int32_t rows, vo
cols
++
;
pWrite
=
data
+
pShow
->
offset
[
cols
]
*
rows
+
pShow
->
bytes
[
cols
]
*
numOfRows
;
STR_WITH_MAXSIZE_TO_VARSTR
(
pWrite
,
pDnode
->
dnodeEp
,
pShow
->
bytes
[
cols
]
-
VARSTR_HEADER_SIZE
);
STR_WITH_MAXSIZE_TO_VARSTR
(
pWrite
,
pDnode
->
dnodeEp
,
pShow
->
bytes
[
cols
]);
cols
++
;
pWrite
=
data
+
pShow
->
offset
[
cols
]
*
rows
+
pShow
->
bytes
[
cols
]
*
numOfRows
;
...
...
src/mnode/src/mnodeMnode.c
浏览文件 @
a561016f
...
...
@@ -401,9 +401,9 @@ static int32_t mnodeRetrieveMnodes(SShowObj *pShow, char *data, int32_t rows, vo
SDnodeObj
*
pDnode
=
mnodeGetDnode
(
pMnode
->
mnodeId
);
if
(
pDnode
!=
NULL
)
{
STR_WITH_MAXSIZE_TO_VARSTR
(
pWrite
,
pDnode
->
dnodeEp
,
pShow
->
bytes
[
cols
]
-
VARSTR_HEADER_SIZE
);
STR_WITH_MAXSIZE_TO_VARSTR
(
pWrite
,
pDnode
->
dnodeEp
,
pShow
->
bytes
[
cols
]);
}
else
{
STR_WITH_MAXSIZE_TO_VARSTR
(
pWrite
,
"invalid ep"
,
pShow
->
bytes
[
cols
]
-
VARSTR_HEADER_SIZE
);
STR_WITH_MAXSIZE_TO_VARSTR
(
pWrite
,
"invalid ep"
,
pShow
->
bytes
[
cols
]);
}
mnodeDecDnodeRef
(
pDnode
);
...
...
@@ -411,7 +411,7 @@ static int32_t mnodeRetrieveMnodes(SShowObj *pShow, char *data, int32_t rows, vo
pWrite
=
data
+
pShow
->
offset
[
cols
]
*
rows
+
pShow
->
bytes
[
cols
]
*
numOfRows
;
char
*
roles
=
mnodeGetMnodeRoleStr
(
pMnode
->
role
);
STR_
TO_VARSTR
(
pWrite
,
roles
);
STR_
WITH_MAXSIZE_TO_VARSTR
(
pWrite
,
roles
,
pShow
->
bytes
[
cols
]
);
cols
++
;
pWrite
=
data
+
pShow
->
offset
[
cols
]
*
rows
+
pShow
->
bytes
[
cols
]
*
numOfRows
;
...
...
src/mnode/src/mnodeTable.c
浏览文件 @
a561016f
...
...
@@ -2190,7 +2190,7 @@ static int32_t mnodeGetShowTableMeta(STableMetaMsg *pMeta, SShowObj *pShow, void
cols
++
;
SSchema
tbCol
=
tGetTableNameColumnSchema
();
pShow
->
bytes
[
cols
]
=
tbCol
.
bytes
;
pShow
->
bytes
[
cols
]
=
tbCol
.
bytes
+
VARSTR_HEADER_SIZE
;
pSchema
[
cols
].
type
=
tbCol
.
type
;
strcpy
(
pSchema
[
cols
].
name
,
"stable_name"
);
pSchema
[
cols
].
bytes
=
htons
(
pShow
->
bytes
[
cols
]);
...
...
@@ -2248,7 +2248,7 @@ static int32_t mnodeRetrieveShowTables(SShowObj *pShow, char *data, int32_t rows
char
*
pWrite
=
data
+
pShow
->
offset
[
cols
]
*
rows
+
pShow
->
bytes
[
cols
]
*
numOfRows
;
STR_WITH_MAXSIZE_TO_VARSTR
(
pWrite
,
tableName
,
sizeof
(
tableName
)
-
1
);
STR_WITH_MAXSIZE_TO_VARSTR
(
pWrite
,
tableName
,
pShow
->
bytes
[
cols
]
);
cols
++
;
pWrite
=
data
+
pShow
->
offset
[
cols
]
*
rows
+
pShow
->
bytes
[
cols
]
*
numOfRows
;
...
...
@@ -2269,7 +2269,7 @@ static int32_t mnodeRetrieveShowTables(SShowObj *pShow, char *data, int32_t rows
memset
(
tableName
,
0
,
sizeof
(
tableName
));
if
(
pTable
->
info
.
type
==
TSDB_CHILD_TABLE
)
{
mnodeExtractTableName
(
pTable
->
superTable
->
info
.
tableId
,
tableName
);
STR_WITH_MAXSIZE_TO_VARSTR
(
pWrite
,
tableName
,
sizeof
(
tableName
)
-
1
);
STR_WITH_MAXSIZE_TO_VARSTR
(
pWrite
,
tableName
,
pShow
->
bytes
[
cols
]
);
}
cols
++
;
...
...
@@ -2442,7 +2442,7 @@ static int32_t mnodeRetrieveStreamTables(SShowObj *pShow, char *data, int32_t ro
char
*
pWrite
=
data
+
pShow
->
offset
[
cols
]
*
rows
+
pShow
->
bytes
[
cols
]
*
numOfRows
;
STR_WITH_MAXSIZE_TO_VARSTR
(
pWrite
,
tableName
,
sizeof
(
tableName
)
-
1
);
STR_WITH_MAXSIZE_TO_VARSTR
(
pWrite
,
tableName
,
pShow
->
bytes
[
cols
]
);
cols
++
;
pWrite
=
data
+
pShow
->
offset
[
cols
]
*
rows
+
pShow
->
bytes
[
cols
]
*
numOfRows
;
...
...
@@ -2454,7 +2454,7 @@ static int32_t mnodeRetrieveStreamTables(SShowObj *pShow, char *data, int32_t ro
cols
++
;
pWrite
=
data
+
pShow
->
offset
[
cols
]
*
rows
+
pShow
->
bytes
[
cols
]
*
numOfRows
;
STR_WITH_MAXSIZE_TO_VARSTR
(
pWrite
,
pTable
->
sql
,
TSDB_MAX_SQL_SHOW_LEN
);
STR_WITH_MAXSIZE_TO_VARSTR
(
pWrite
,
pTable
->
sql
,
pShow
->
bytes
[
cols
]
);
cols
++
;
numOfRows
++
;
...
...
src/mnode/src/mnodeUser.c
浏览文件 @
a561016f
...
...
@@ -324,8 +324,7 @@ static int32_t mnodeRetrieveUsers(SShowObj *pShow, char *data, int32_t rows, voi
cols
=
0
;
pWrite
=
data
+
pShow
->
offset
[
cols
]
*
rows
+
pShow
->
bytes
[
cols
]
*
numOfRows
;
size_t
size
=
sizeof
(
pUser
->
user
);
STR_WITH_MAXSIZE_TO_VARSTR
(
pWrite
,
pUser
->
user
,
size
);
STR_WITH_MAXSIZE_TO_VARSTR
(
pWrite
,
pUser
->
user
,
pShow
->
bytes
[
cols
]);
cols
++
;
pWrite
=
data
+
pShow
->
offset
[
cols
]
*
rows
+
pShow
->
bytes
[
cols
]
*
numOfRows
;
...
...
@@ -346,7 +345,7 @@ static int32_t mnodeRetrieveUsers(SShowObj *pShow, char *data, int32_t rows, voi
cols
++
;
pWrite
=
data
+
pShow
->
offset
[
cols
]
*
rows
+
pShow
->
bytes
[
cols
]
*
numOfRows
;
STR_WITH_MAXSIZE_TO_VARSTR
(
pWrite
,
pUser
->
acct
,
sizeof
(
pUser
->
user
)
);
STR_WITH_MAXSIZE_TO_VARSTR
(
pWrite
,
pUser
->
acct
,
pShow
->
bytes
[
cols
]
);
cols
++
;
numOfRows
++
;
...
...
src/mnode/src/mnodeVgroup.c
浏览文件 @
a561016f
...
...
@@ -496,12 +496,12 @@ int32_t mnodeRetrieveVgroups(SShowObj *pShow, char *data, int32_t rows, void *pC
if
(
pDnode
!=
NULL
)
{
pWrite
=
data
+
pShow
->
offset
[
cols
]
*
rows
+
pShow
->
bytes
[
cols
]
*
numOfRows
;
STR_WITH_MAXSIZE_TO_VARSTR
(
pWrite
,
pDnode
->
dnodeEp
,
pShow
->
bytes
[
cols
]
-
VARSTR_HEADER_SIZE
);
STR_WITH_MAXSIZE_TO_VARSTR
(
pWrite
,
pDnode
->
dnodeEp
,
pShow
->
bytes
[
cols
]);
cols
++
;
pWrite
=
data
+
pShow
->
offset
[
cols
]
*
rows
+
pShow
->
bytes
[
cols
]
*
numOfRows
;
char
*
role
=
mnodeGetMnodeRoleStr
(
pVgroup
->
vnodeGid
[
i
].
role
);
STR_
TO_VARSTR
(
pWrite
,
role
);
STR_
WITH_MAXSIZE_TO_VARSTR
(
pWrite
,
role
,
pShow
->
bytes
[
cols
]
);
cols
++
;
}
else
{
pWrite
=
data
+
pShow
->
offset
[
cols
]
*
rows
+
pShow
->
bytes
[
cols
]
*
numOfRows
;
...
...
src/query/src/qExecutor.c
浏览文件 @
a561016f
...
...
@@ -847,7 +847,7 @@ static void blockwiseApplyFunctions(SQueryRuntimeEnv *pRuntimeEnv, SDataStatis *
}
int32_t
step
=
GET_FORWARD_DIRECTION_FACTOR
(
pQuery
->
order
.
order
);
if
(
isIntervalQuery
(
pQuery
))
{
if
(
isIntervalQuery
(
pQuery
)
&&
tsCols
!=
NULL
)
{
int32_t
offset
=
GET_COL_DATA_POS
(
pQuery
,
0
,
step
);
TSKEY
ts
=
tsCols
[
offset
];
...
...
@@ -4263,7 +4263,8 @@ static void sequentialTableProcess(SQInfo *pQInfo) {
assert
(
taosArrayGetSize
(
s
)
>=
1
);
setTagVal
(
pRuntimeEnv
,
(
STableId
*
)
taosArrayGet
(
s
,
0
),
pQInfo
->
tsdb
);
taosArrayDestroy
(
s
);
if
(
isFirstLastRowQuery
(
pQuery
))
{
assert
(
taosArrayGetSize
(
s
)
==
1
);
}
...
...
@@ -4328,6 +4329,7 @@ static void sequentialTableProcess(SQInfo *pQInfo) {
SWindowResInfo
*
pWindowResInfo
=
&
pRuntimeEnv
->
windowResInfo
;
// no results generated for current group, continue to try the next group
taosArrayDestroy
(
s
);
if
(
pWindowResInfo
->
size
<=
0
)
{
continue
;
}
...
...
src/query/src/qast.c
浏览文件 @
a561016f
...
...
@@ -496,7 +496,6 @@ static int32_t setQueryCond(tQueryInfo *queryColInfo, SQueryCond* pCond) {
printf
(
"relation is like
\n
"
);
assert
(
0
);
}
return
TSDB_CODE_SUCCESS
;
}
...
...
@@ -511,7 +510,7 @@ static void tQueryIndexColumn(SSkipList* pSkipList, tQueryInfo* pQueryInfo, SArr
if
(
cond
.
start
!=
NULL
)
{
iter
=
tSkipListCreateIterFromVal
(
pSkipList
,
(
char
*
)
cond
.
start
->
v
,
pSkipList
->
keyInfo
.
type
,
TSDB_ORDER_ASC
);
}
else
{
iter
=
tSkipListCreateIterFromVal
(
pSkipList
,
(
char
*
)
cond
.
end
->
v
,
pSkipList
->
keyInfo
.
type
,
TSDB_ORDER_DESC
);
iter
=
tSkipListCreateIterFromVal
(
pSkipList
,
(
char
*
)
(
cond
.
end
?
cond
.
end
->
v
:
NULL
)
,
pSkipList
->
keyInfo
.
type
,
TSDB_ORDER_DESC
);
}
if
(
cond
.
start
!=
NULL
)
{
...
...
@@ -601,6 +600,9 @@ static void tQueryIndexColumn(SSkipList* pSkipList, tQueryInfo* pQueryInfo, SArr
}
}
}
free
(
cond
.
start
);
free
(
cond
.
end
);
tSkipListDestroyIter
(
iter
);
}
int32_t
merge
(
SArray
*
pLeft
,
SArray
*
pRight
,
SArray
*
pFinalRes
)
{
...
...
@@ -748,6 +750,7 @@ static void exprTreeTraverseImpl(tExprNode *pExpr, SArray *pResult, SExprTravers
}
taosArrayCopy
(
pResult
,
array
);
taosArrayDestroy
(
array
);
}
static
void
tSQLBinaryTraverseOnSkipList
(
tExprNode
*
pExpr
,
SArray
*
pResult
,
SSkipList
*
pSkipList
,
SExprTraverseSupp
*
param
)
{
...
...
@@ -1182,4 +1185,4 @@ tExprNode* exprTreeFromTableName(const char* tbnameCond) {
CLEANUP_EXECUTE_TO
(
anchor
,
false
);
return
expr
;
}
\ No newline at end of file
}
src/query/src/qextbuffer.c
浏览文件 @
a561016f
...
...
@@ -896,6 +896,7 @@ void tColModelDisplay(SColumnModel *pModel, void *pData, int32_t numOfRows, int3
char
buf
[
4096
]
=
{
0
};
taosUcs4ToMbs
(
val
,
pModel
->
pFields
[
j
].
field
.
bytes
,
buf
);
printf
(
"%s
\t
"
,
buf
);
break
;
}
case
TSDB_DATA_TYPE_BINARY
:
{
printBinaryData
(
val
,
pModel
->
pFields
[
j
].
field
.
bytes
);
...
...
@@ -947,6 +948,7 @@ void tColModelDisplayEx(SColumnModel *pModel, void *pData, int32_t numOfRows, in
char
buf
[
128
]
=
{
0
};
taosUcs4ToMbs
(
val
,
pModel
->
pFields
[
j
].
field
.
bytes
,
buf
);
printf
(
"%s
\t
"
,
buf
);
break
;
}
case
TSDB_DATA_TYPE_BINARY
:
{
printBinaryDataEx
(
val
,
pModel
->
pFields
[
j
].
field
.
bytes
,
&
param
[
j
]);
...
...
src/query/src/qparserImpl.c
浏览文件 @
a561016f
...
...
@@ -775,19 +775,14 @@ void setDCLSQLElems(SSqlInfo *pInfo, int32_t type, int32_t nParam, ...) {
while
(
nParam
--
>
0
)
{
SSQLToken
*
pToken
=
va_arg
(
va
,
SSQLToken
*
);
(
void
)
tTokenListAppend
(
pInfo
->
pDCLInfo
,
pToken
);
pInfo
->
pDCLInfo
=
tTokenListAppend
(
pInfo
->
pDCLInfo
,
pToken
);
}
va_end
(
va
);
}
void
setDropDBTableInfo
(
SSqlInfo
*
pInfo
,
int32_t
type
,
SSQLToken
*
pToken
,
SSQLToken
*
existsCheck
)
{
pInfo
->
type
=
type
;
if
(
pInfo
->
pDCLInfo
==
NULL
)
{
pInfo
->
pDCLInfo
=
calloc
(
1
,
sizeof
(
tDCLSQL
));
}
tTokenListAppend
(
pInfo
->
pDCLInfo
,
pToken
);
pInfo
->
pDCLInfo
=
tTokenListAppend
(
pInfo
->
pDCLInfo
,
pToken
);
pInfo
->
pDCLInfo
->
existsCheck
=
(
existsCheck
->
n
==
1
);
}
...
...
src/query/src/qpercentile.c
浏览文件 @
a561016f
...
...
@@ -241,7 +241,6 @@ void tBucketDoubleHash(tMemBucket *pBucket, void *value, int16_t *segIdx, int16_
tMemBucket
*
tMemBucketCreate
(
int32_t
totalSlots
,
int32_t
nBufferSize
,
int16_t
nElemSize
,
int16_t
dataType
,
tOrderDescriptor
*
pDesc
)
{
tMemBucket
*
pBucket
=
(
tMemBucket
*
)
malloc
(
sizeof
(
tMemBucket
));
pBucket
->
nTotalSlots
=
totalSlots
;
pBucket
->
nSlotsOfSeg
=
1
<<
6
;
// 64 Segments, 16 slots each seg.
pBucket
->
dataType
=
dataType
;
...
...
@@ -258,6 +257,7 @@ tMemBucket *tMemBucketCreate(int32_t totalSlots, int32_t nBufferSize, int16_t nE
pBucket
->
numOfTotalPages
=
pBucket
->
nTotalBufferSize
/
pBucket
->
pageSize
;
pBucket
->
numOfAvailPages
=
pBucket
->
numOfTotalPages
;
pBucket
->
pSegs
=
NULL
;
pBucket
->
pOrderDesc
=
pDesc
;
switch
(
pBucket
->
dataType
)
{
...
...
@@ -315,7 +315,7 @@ tMemBucket *tMemBucketCreate(int32_t totalSlots, int32_t nBufferSize, int16_t nE
pBucket
->
pSegs
[
i
].
pBoundingEntries
=
NULL
;
}
uTrace
(
"MemBucket:%p,created,buffer size:%d,elem size:%d"
,
pBucket
,
pBucket
->
numOfTotalPages
*
DEFAULT_PAGE_SIZE
,
uTrace
(
"MemBucket:%p,created,buffer size:%
l
d,elem size:%d"
,
pBucket
,
pBucket
->
numOfTotalPages
*
DEFAULT_PAGE_SIZE
,
pBucket
->
nElemSize
);
return
pBucket
;
...
...
@@ -751,7 +751,7 @@ double getPercentileImpl(tMemBucket *pMemBucket, int32_t count, double fraction)
char
*
thisVal
=
buffer
->
data
+
pMemBucket
->
nElemSize
*
currentIdx
;
char
*
nextVal
=
thisVal
+
pMemBucket
->
nElemSize
;
double
td
,
nd
;
double
td
=
1
.
0
,
nd
=
1
.
0
;
switch
(
pMemBucket
->
dataType
)
{
case
TSDB_DATA_TYPE_SMALLINT
:
{
td
=
*
(
int16_t
*
)
thisVal
;
...
...
src/query/src/qresultBuf.c
浏览文件 @
a561016f
...
...
@@ -6,7 +6,12 @@
#include "queryLog.h"
int32_t
createDiskbasedResultBuffer
(
SDiskbasedResultBuf
**
pResultBuf
,
int32_t
size
,
int32_t
rowSize
,
void
*
handle
)
{
SDiskbasedResultBuf
*
pResBuf
=
calloc
(
1
,
sizeof
(
SDiskbasedResultBuf
));
*
pResultBuf
=
calloc
(
1
,
sizeof
(
SDiskbasedResultBuf
));
SDiskbasedResultBuf
*
pResBuf
=
*
pResultBuf
;
if
(
pResBuf
==
NULL
)
{
return
TSDB_CODE_COM_OUT_OF_MEMORY
;
}
pResBuf
->
numOfRowsPerPage
=
(
DEFAULT_INTERN_BUF_PAGE_SIZE
-
sizeof
(
tFilePage
))
/
rowSize
;
pResBuf
->
numOfPages
=
size
;
...
...
@@ -46,7 +51,6 @@ int32_t createDiskbasedResultBuffer(SDiskbasedResultBuf** pResultBuf, int32_t si
qTrace
(
"QInfo:%p create tmp file for output result, %s, %"
PRId64
"bytes"
,
handle
,
pResBuf
->
path
,
pResBuf
->
totalBufSize
);
*
pResultBuf
=
pResBuf
;
return
TSDB_CODE_SUCCESS
;
}
...
...
@@ -210,7 +214,7 @@ void destroyResultBuf(SDiskbasedResultBuf* pResultBuf, void* handle) {
}
int32_t
getLastPageId
(
SIDList
*
pList
)
{
if
(
pList
==
NULL
&&
pList
->
size
<=
0
)
{
if
(
pList
==
NULL
||
pList
->
size
<=
0
)
{
return
-
1
;
}
...
...
src/query/src/qtsbuf.c
浏览文件 @
a561016f
...
...
@@ -533,7 +533,7 @@ STSVnodeBlockInfo* tsBufGetVnodeBlockInfo(STSBuf* pTSBuf, int32_t vnodeId) {
}
int32_t
STSBufUpdateHeader
(
STSBuf
*
pTSBuf
,
STSBufFileHeader
*
pHeader
)
{
if
((
pTSBuf
->
f
==
NULL
)
||
pHeader
==
NULL
||
pHeader
->
numOfVnode
<
0
||
pHeader
->
magic
!=
TS_COMP_FILE_MAGIC
)
{
if
((
pTSBuf
->
f
==
NULL
)
||
pHeader
==
NULL
||
pHeader
->
numOfVnode
==
0
||
pHeader
->
magic
!=
TS_COMP_FILE_MAGIC
)
{
return
-
1
;
}
...
...
src/query/src/tvariant.c
浏览文件 @
a561016f
...
...
@@ -357,7 +357,7 @@ static int32_t toBinary(tVariant *pVariant, char **pDest, int32_t *pDestSize) {
if
(
pVariant
->
nType
==
TSDB_DATA_TYPE_NCHAR
)
{
size_t
newSize
=
pVariant
->
nLen
*
TSDB_NCHAR_SIZE
;
if
(
pBuf
!=
NULL
)
{
if
(
newSize
>
INITIAL_ALLOC_SIZE
)
{
if
(
newSize
>
=
INITIAL_ALLOC_SIZE
)
{
pBuf
=
realloc
(
pBuf
,
newSize
+
1
);
}
...
...
src/query/tests/unitTest.cpp
浏览文件 @
a561016f
...
...
@@ -334,19 +334,19 @@ TEST(testCase, parse_time) {
int64_t
time
=
0
,
time1
=
0
;
taosParseTime
(
t1
,
&
time
,
strlen
(
t1
),
TSDB_TIME_PRECISION_MILLI
);
taosParseTime
(
t1
,
&
time
,
strlen
(
t1
),
TSDB_TIME_PRECISION_MILLI
,
0
);
EXPECT_EQ
(
time
,
1514739661952
);
taosParseTime
(
t13
,
&
time
,
strlen
(
t13
),
TSDB_TIME_PRECISION_MILLI
);
taosParseTime
(
t13
,
&
time
,
strlen
(
t13
),
TSDB_TIME_PRECISION_MILLI
,
0
);
EXPECT_EQ
(
time
,
timezone
*
MILLISECOND_PER_SECOND
);
char
t2
[]
=
"2018-1-1T1:1:1.952Z"
;
taosParseTime
(
t2
,
&
time
,
strlen
(
t2
),
TSDB_TIME_PRECISION_MILLI
);
taosParseTime
(
t2
,
&
time
,
strlen
(
t2
),
TSDB_TIME_PRECISION_MILLI
,
0
);
EXPECT_EQ
(
time
,
1514739661952
+
28800000
);
char
t3
[]
=
"2018-1-1 1:01:01.952"
;
taosParseTime
(
t3
,
&
time
,
strlen
(
t3
),
TSDB_TIME_PRECISION_MILLI
);
taosParseTime
(
t3
,
&
time
,
strlen
(
t3
),
TSDB_TIME_PRECISION_MILLI
,
0
);
EXPECT_EQ
(
time
,
1514739661952
);
char
t4
[]
=
"2018-1-1 1:01:01.9"
;
...
...
@@ -355,89 +355,89 @@ TEST(testCase, parse_time) {
char
t7
[]
=
"2018-01-01 01:01:01.9"
;
char
t8
[]
=
"2018-01-01 01:01:01.9007865"
;
taosParseTime
(
t4
,
&
time
,
strlen
(
t4
),
TSDB_TIME_PRECISION_MILLI
);
taosParseTime
(
t5
,
&
time1
,
strlen
(
t5
),
TSDB_TIME_PRECISION_MILLI
);
taosParseTime
(
t4
,
&
time
,
strlen
(
t4
),
TSDB_TIME_PRECISION_MILLI
,
0
);
taosParseTime
(
t5
,
&
time1
,
strlen
(
t5
),
TSDB_TIME_PRECISION_MILLI
,
0
);
EXPECT_EQ
(
time
,
time1
);
taosParseTime
(
t4
,
&
time
,
strlen
(
t4
),
TSDB_TIME_PRECISION_MILLI
);
taosParseTime
(
t6
,
&
time1
,
strlen
(
t6
),
TSDB_TIME_PRECISION_MILLI
);
taosParseTime
(
t4
,
&
time
,
strlen
(
t4
),
TSDB_TIME_PRECISION_MILLI
,
0
);
taosParseTime
(
t6
,
&
time1
,
strlen
(
t6
),
TSDB_TIME_PRECISION_MILLI
,
0
);
EXPECT_EQ
(
time
,
time1
);
taosParseTime
(
t4
,
&
time
,
strlen
(
t4
),
TSDB_TIME_PRECISION_MILLI
);
taosParseTime
(
t7
,
&
time1
,
strlen
(
t7
),
TSDB_TIME_PRECISION_MILLI
);
taosParseTime
(
t4
,
&
time
,
strlen
(
t4
),
TSDB_TIME_PRECISION_MILLI
,
0
);
taosParseTime
(
t7
,
&
time1
,
strlen
(
t7
),
TSDB_TIME_PRECISION_MILLI
,
0
);
EXPECT_EQ
(
time
,
time1
);
taosParseTime
(
t5
,
&
time
,
strlen
(
t5
),
TSDB_TIME_PRECISION_MILLI
);
taosParseTime
(
t8
,
&
time1
,
strlen
(
t8
),
TSDB_TIME_PRECISION_MILLI
);
taosParseTime
(
t5
,
&
time
,
strlen
(
t5
),
TSDB_TIME_PRECISION_MILLI
,
0
);
taosParseTime
(
t8
,
&
time1
,
strlen
(
t8
),
TSDB_TIME_PRECISION_MILLI
,
0
);
EXPECT_EQ
(
time
,
time1
);
char
t9
[]
=
"2017-4-3 1:1:2.980"
;
char
t10
[]
=
"2017-4-3T2:1:2.98+9:00"
;
taosParseTime
(
t9
,
&
time
,
strlen
(
t9
),
TSDB_TIME_PRECISION_MILLI
);
taosParseTime
(
t10
,
&
time1
,
strlen
(
t10
),
TSDB_TIME_PRECISION_MILLI
);
taosParseTime
(
t9
,
&
time
,
strlen
(
t9
),
TSDB_TIME_PRECISION_MILLI
,
0
);
taosParseTime
(
t10
,
&
time1
,
strlen
(
t10
),
TSDB_TIME_PRECISION_MILLI
,
0
);
EXPECT_EQ
(
time
,
time1
);
char
t11
[]
=
"2017-4-3T2:1:2.98+09:00"
;
taosParseTime
(
t11
,
&
time
,
strlen
(
t11
),
TSDB_TIME_PRECISION_MILLI
);
taosParseTime
(
t10
,
&
time1
,
strlen
(
t10
),
TSDB_TIME_PRECISION_MILLI
);
taosParseTime
(
t11
,
&
time
,
strlen
(
t11
),
TSDB_TIME_PRECISION_MILLI
,
0
);
taosParseTime
(
t10
,
&
time1
,
strlen
(
t10
),
TSDB_TIME_PRECISION_MILLI
,
0
);
EXPECT_EQ
(
time
,
time1
);
char
t12
[]
=
"2017-4-3T2:1:2.98+0900"
;
taosParseTime
(
t11
,
&
time
,
strlen
(
t11
),
TSDB_TIME_PRECISION_MILLI
);
taosParseTime
(
t12
,
&
time1
,
strlen
(
t12
),
TSDB_TIME_PRECISION_MILLI
);
taosParseTime
(
t11
,
&
time
,
strlen
(
t11
),
TSDB_TIME_PRECISION_MILLI
,
0
);
taosParseTime
(
t12
,
&
time1
,
strlen
(
t12
),
TSDB_TIME_PRECISION_MILLI
,
0
);
EXPECT_EQ
(
time
,
time1
);
taos_options
(
TSDB_OPTION_TIMEZONE
,
"UTC"
);
taosParseTime
(
t13
,
&
time
,
strlen
(
t13
),
TSDB_TIME_PRECISION_MILLI
);
taosParseTime
(
t13
,
&
time
,
strlen
(
t13
),
TSDB_TIME_PRECISION_MILLI
,
0
);
EXPECT_EQ
(
time
,
0
);
taos_options
(
TSDB_OPTION_TIMEZONE
,
"Asia/Shanghai"
);
char
t14
[]
=
"1970-1-1T0:0:0Z"
;
taosParseTime
(
t14
,
&
time
,
strlen
(
t14
),
TSDB_TIME_PRECISION_MILLI
);
taosParseTime
(
t14
,
&
time
,
strlen
(
t14
),
TSDB_TIME_PRECISION_MILLI
,
0
);
EXPECT_EQ
(
time
,
0
);
char
t40
[]
=
"1970-1-1 0:0:0.999999999"
;
taosParseTime
(
t40
,
&
time
,
strlen
(
t40
),
TSDB_TIME_PRECISION_MILLI
);
taosParseTime
(
t40
,
&
time
,
strlen
(
t40
),
TSDB_TIME_PRECISION_MILLI
,
0
);
EXPECT_EQ
(
time
,
999
+
timezone
*
MILLISECOND_PER_SECOND
);
char
t41
[]
=
"1997-1-1 0:0:0.999999999"
;
taosParseTime
(
t41
,
&
time
,
strlen
(
t41
),
TSDB_TIME_PRECISION_MILLI
);
taosParseTime
(
t41
,
&
time
,
strlen
(
t41
),
TSDB_TIME_PRECISION_MILLI
,
0
);
EXPECT_EQ
(
time
,
852048000999
);
int64_t
k
=
timezone
;
char
t42
[]
=
"1997-1-1T0:0:0.999999999Z"
;
taosParseTime
(
t42
,
&
time
,
strlen
(
t42
),
TSDB_TIME_PRECISION_MILLI
);
taosParseTime
(
t42
,
&
time
,
strlen
(
t42
),
TSDB_TIME_PRECISION_MILLI
,
0
);
EXPECT_EQ
(
time
,
852048000999
-
timezone
*
MILLISECOND_PER_SECOND
);
////////////////////////////////////////////////////////////////////
// illegal timestamp format
char
t15
[]
=
"2017-12-33 0:0:0"
;
EXPECT_EQ
(
taosParseTime
(
t15
,
&
time
,
strlen
(
t15
),
TSDB_TIME_PRECISION_MILLI
),
-
1
);
EXPECT_EQ
(
taosParseTime
(
t15
,
&
time
,
strlen
(
t15
),
TSDB_TIME_PRECISION_MILLI
,
0
),
-
1
);
char
t16
[]
=
"2017-12-31 99:0:0"
;
EXPECT_EQ
(
taosParseTime
(
t16
,
&
time
,
strlen
(
t16
),
TSDB_TIME_PRECISION_MILLI
),
-
1
);
EXPECT_EQ
(
taosParseTime
(
t16
,
&
time
,
strlen
(
t16
),
TSDB_TIME_PRECISION_MILLI
,
0
),
-
1
);
char
t17
[]
=
"2017-12-31T9:0:0"
;
EXPECT_EQ
(
taosParseTime
(
t17
,
&
time
,
strlen
(
t17
),
TSDB_TIME_PRECISION_MILLI
),
-
1
);
EXPECT_EQ
(
taosParseTime
(
t17
,
&
time
,
strlen
(
t17
),
TSDB_TIME_PRECISION_MILLI
,
0
),
-
1
);
char
t18
[]
=
"2017-12-31T9:0:0.Z"
;
EXPECT_EQ
(
taosParseTime
(
t18
,
&
time
,
strlen
(
t18
),
TSDB_TIME_PRECISION_MILLI
),
-
1
);
EXPECT_EQ
(
taosParseTime
(
t18
,
&
time
,
strlen
(
t18
),
TSDB_TIME_PRECISION_MILLI
,
0
),
-
1
);
char
t19
[]
=
"2017-12-31 9:0:0.-1"
;
EXPECT_EQ
(
taosParseTime
(
t19
,
&
time
,
strlen
(
t19
),
TSDB_TIME_PRECISION_MILLI
),
-
1
);
EXPECT_EQ
(
taosParseTime
(
t19
,
&
time
,
strlen
(
t19
),
TSDB_TIME_PRECISION_MILLI
,
0
),
-
1
);
char
t20
[]
=
"2017-12-31 9:0:0.1+12:99"
;
EXPECT_EQ
(
taosParseTime
(
t20
,
&
time
,
strlen
(
t20
),
TSDB_TIME_PRECISION_MILLI
),
0
);
EXPECT_EQ
(
taosParseTime
(
t20
,
&
time
,
strlen
(
t20
),
TSDB_TIME_PRECISION_MILLI
,
0
),
0
);
EXPECT_EQ
(
time
,
1514682000100
);
char
t21
[]
=
"2017-12-31T9:0:0.1+12:99"
;
EXPECT_EQ
(
taosParseTime
(
t21
,
&
time
,
strlen
(
t21
),
TSDB_TIME_PRECISION_MILLI
),
-
1
);
EXPECT_EQ
(
taosParseTime
(
t21
,
&
time
,
strlen
(
t21
),
TSDB_TIME_PRECISION_MILLI
,
0
),
-
1
);
char
t22
[]
=
"2017-12-31 9:0:0.1+13:1"
;
EXPECT_EQ
(
taosParseTime
(
t22
,
&
time
,
strlen
(
t22
),
TSDB_TIME_PRECISION_MILLI
),
0
);
EXPECT_EQ
(
taosParseTime
(
t22
,
&
time
,
strlen
(
t22
),
TSDB_TIME_PRECISION_MILLI
,
0
),
0
);
char
t23
[]
=
"2017-12-31T9:0:0.1+13:1"
;
EXPECT_EQ
(
taosParseTime
(
t23
,
&
time
,
strlen
(
t23
),
TSDB_TIME_PRECISION_MILLI
),
0
);
EXPECT_EQ
(
taosParseTime
(
t23
,
&
time
,
strlen
(
t23
),
TSDB_TIME_PRECISION_MILLI
,
0
),
0
);
}
TEST
(
testCase
,
tvariant_convert
)
{
...
...
src/rpc/src/rpcMain.c
浏览文件 @
a561016f
...
...
@@ -695,6 +695,7 @@ static SRpcConn *rpcGetConnObj(SRpcInfo *pRpc, int sid, SRecvInfo *pRecv) {
if
(
pConn
)
{
if
(
pConn
->
linkUid
!=
pHead
->
linkUid
)
{
terrno
=
TSDB_CODE_RPC_MISMATCHED_LINK_ID
;
tError
(
"%s %p %p, linkUid:0x%x is not matched with received:0x%x"
,
pRpc
->
label
,
pConn
,
pHead
->
ahandle
,
pConn
->
linkUid
,
pHead
->
linkUid
);
pConn
=
NULL
;
}
}
...
...
tests/pytest/fulltest.sh
浏览文件 @
a561016f
...
...
@@ -127,7 +127,7 @@ python3 ./test.py -f user/user_create.py
python3 ./test.py
-f
user/pass_len.py
# table
#
python3 ./test.py -f table/del_stable.py
python3 ./test.py
-f
table/del_stable.py
#query
python3 ./test.py
-f
query/filter.py
...
...
tests/pytest/query/filterAllIntTypes.py
浏览文件 @
a561016f
...
...
@@ -22,12 +22,12 @@ class TDTestCase:
def
init
(
self
,
conn
,
logSql
):
tdLog
.
debug
(
"start to execute %s"
%
__file__
)
tdSql
.
init
(
conn
.
cursor
())
self
.
powers
=
[
7
,
15
,
31
,
63
]
self
.
types
=
[
"tinyint"
,
"smallint"
,
"int"
,
"bigint"
]
self
.
rowNum
=
10
self
.
ts
=
1537146000000
self
.
ts
=
1537146000000
def
run
(
self
):
tdSql
.
prepare
()
...
...
@@ -35,20 +35,30 @@ class TDTestCase:
curType
=
self
.
types
[
i
]
print
(
"======= Verify filter for %s type ========="
%
(
curType
))
tdLog
.
debug
(
"create table st%s(ts timestamp, num %s) tags(id %s)"
%
(
curType
,
curType
,
curType
))
"create table st%s(ts timestamp, num %s) tags(id %s)"
%
(
curType
,
curType
,
curType
))
tdSql
.
execute
(
"create table st%s(ts timestamp, num %s) tags(id %s)"
%
(
curType
,
curType
,
curType
))
#create 10 tables, insert 10 rows for each table
for
j
in
range
(
self
.
rowNum
):
tdSql
.
execute
(
"create table st%s%d using st%s tags(%d)"
%
(
curType
,
j
+
1
,
curType
,
j
+
1
))
for
k
in
range
(
self
.
rowNum
):
tdSql
.
execute
(
"insert into st%s%d values(%d, %d)"
%
(
curType
,
j
+
1
,
self
.
ts
+
k
+
1
,
j
*
10
+
k
+
1
))
tdSql
.
error
(
"insert into st%s10 values(%d, %d)"
%
(
curType
,
self
.
ts
+
11
,
pow
(
2
,
self
.
powers
[
i
])))
tdSql
.
execute
(
"insert into st%s10 values(%d, %d)"
%
(
curType
,
self
.
ts
+
12
,
pow
(
2
,
self
.
powers
[
i
])
-
1
))
tdSql
.
error
(
"insert into st%s10 values(%d, %d)"
%
(
curType
,
self
.
ts
+
13
,
pow
(
-
2
,
self
.
powers
[
i
])))
tdSql
.
execute
(
"insert into st%s10 values(%d, %d)"
%
(
curType
,
self
.
ts
+
14
,
pow
(
-
2
,
self
.
powers
[
i
])
+
1
))
"create table st%s(ts timestamp, num %s) tags(id %s)"
%
(
curType
,
curType
,
curType
))
# create 10 tables, insert 10 rows for each table
for
j
in
range
(
self
.
rowNum
):
tdSql
.
execute
(
"create table st%s%d using st%s tags(%d)"
%
(
curType
,
j
+
1
,
curType
,
j
+
1
))
for
k
in
range
(
self
.
rowNum
):
tdSql
.
execute
(
"insert into st%s%d values(%d, %d)"
%
(
curType
,
j
+
1
,
self
.
ts
+
k
+
1
,
j
*
10
+
k
+
1
))
tdSql
.
error
(
"insert into st%s10 values(%d, %d)"
%
(
curType
,
self
.
ts
+
11
,
pow
(
2
,
self
.
powers
[
i
])))
tdSql
.
execute
(
"insert into st%s10 values(%d, %d)"
%
(
curType
,
self
.
ts
+
12
,
pow
(
2
,
self
.
powers
[
i
])
-
1
))
tdSql
.
error
(
"insert into st%s10 values(%d, %d)"
%
(
curType
,
self
.
ts
+
13
,
pow
(
-
2
,
self
.
powers
[
i
])))
tdSql
.
execute
(
"insert into st%s10 values(%d, %d)"
%
(
curType
,
self
.
ts
+
14
,
pow
(
-
2
,
self
.
powers
[
i
])
+
1
))
# > for int type on column
tdSql
.
query
(
"select * from st%s where num > 50"
%
curType
)
...
...
@@ -104,10 +114,12 @@ class TDTestCase:
# != for int type on tag
tdSql
.
query
(
"select * from st%s where id != 5"
%
curType
)
tdSql
.
checkRows
(
92
)
tdSql
.
checkRows
(
92
)
print
(
"======= Verify filter for %s type finished ========="
%
curType
)
print
(
"======= Verify filter for %s type finished ========="
%
curType
)
def
stop
(
self
):
tdSql
.
close
()
tdLog
.
success
(
"%s successfully executed"
%
__file__
)
...
...
tests/pytest/query/filterFloatAndDouble.py
浏览文件 @
a561016f
...
...
@@ -21,28 +21,28 @@ from util.sql import *
class
TDTestCase
:
def
init
(
self
,
conn
,
logSql
):
tdLog
.
debug
(
"start to execute %s"
%
__file__
)
tdSql
.
init
(
conn
.
cursor
())
tdSql
.
init
(
conn
.
cursor
())
self
.
rowNum
=
10
self
.
ts
=
1537146000000
def
run
(
self
):
tdSql
.
prepare
()
print
(
"======= Verify filter for float and double type ========="
)
tdLog
.
debug
(
"create table st(ts timestamp, num float, speed double) tags(tagcol1 float, tagcol2 double)"
)
"create table st(ts timestamp, num float, speed double) tags(tagcol1 float, tagcol2 double)"
)
tdSql
.
execute
(
"create table st(ts timestamp, num float, speed double) tags(tagcol1 float, tagcol2 double)"
)
for
j
in
range
(
self
.
rowNum
):
tdSql
.
execute
(
"insert into st1 using st tags(1.1, 2.3) values(%d, %f, %f)"
%
(
self
.
ts
+
j
+
1
,
1.1
*
(
j
+
1
),
2.3
*
(
j
+
1
)))
"create table st(ts timestamp, num float, speed double) tags(tagcol1 float, tagcol2 double)"
)
for
j
in
range
(
self
.
rowNum
):
tdSql
.
execute
(
"insert into st1 using st tags(1.1, 2.3) values(%d, %f, %f)"
%
(
self
.
ts
+
j
+
1
,
1.1
*
(
j
+
1
),
2.3
*
(
j
+
1
)))
# > for float type on column
tdSql
.
query
(
"select * from st where num > 5.5"
)
tdSql
.
checkRows
(
5
)
# >= for float type on column
tdSql
.
query
(
"select * from st where num >= 5.5"
)
tdSql
.
checkRows
(
6
)
...
...
@@ -70,11 +70,11 @@ class TDTestCase:
# > for float type on tag
tdSql
.
query
(
"select * from st where tagcol1 > 1.1"
)
tdSql
.
checkRows
(
0
)
# >= for float type on tag
tdSql
.
query
(
"select * from st where tagcol1 >= 1.1"
)
tdSql
.
checkRows
(
10
)
# = for float type on tag
tdSql
.
query
(
"select * from st where tagcol1 = 1.1"
)
tdSql
.
checkRows
(
10
)
...
...
@@ -86,7 +86,7 @@ class TDTestCase:
# != for float type on tag
tdSql
.
query
(
"select * from st where tagcol1 != 1.1"
)
tdSql
.
checkRows
(
0
)
# <= for float type on tag
tdSql
.
query
(
"select * from st where tagcol1 <= 1.1"
)
tdSql
.
checkRows
(
10
)
...
...
@@ -94,11 +94,11 @@ class TDTestCase:
# < for float type on tag
tdSql
.
query
(
"select * from st where tagcol1 < 1.1"
)
tdSql
.
checkRows
(
0
)
# > for double type on column
tdSql
.
query
(
"select * from st where speed > 11.5"
)
tdSql
.
checkRows
(
5
)
# >= for double type on column
tdSql
.
query
(
"select * from st where speed >= 11.5"
)
tdSql
.
checkRows
(
6
)
...
...
@@ -126,11 +126,11 @@ class TDTestCase:
# > for double type on tag
tdSql
.
query
(
"select * from st where tagcol2 > 2.3"
)
tdSql
.
checkRows
(
0
)
# >= for double type on tag
tdSql
.
query
(
"select * from st where tagcol2 >= 2.3"
)
tdSql
.
checkRows
(
10
)
# = for double type on tag
tdSql
.
query
(
"select * from st where tagcol2 = 2.3"
)
tdSql
.
checkRows
(
10
)
...
...
@@ -142,7 +142,7 @@ class TDTestCase:
# != for double type on tag
tdSql
.
query
(
"select * from st where tagcol2 != 2.3"
)
tdSql
.
checkRows
(
0
)
# <= for double type on tag
tdSql
.
query
(
"select * from st where tagcol2 <= 2.3"
)
tdSql
.
checkRows
(
10
)
...
...
@@ -150,7 +150,7 @@ class TDTestCase:
# < for double type on tag
tdSql
.
query
(
"select * from st where tagcol2 < 2.3"
)
tdSql
.
checkRows
(
0
)
def
stop
(
self
):
tdSql
.
close
()
tdLog
.
success
(
"%s successfully executed"
%
__file__
)
...
...
tests/pytest/query/filterOtherTypes.py
浏览文件 @
a561016f
...
...
@@ -21,33 +21,39 @@ from util.sql import *
class
TDTestCase
:
def
init
(
self
,
conn
,
logSql
):
tdLog
.
debug
(
"start to execute %s"
%
__file__
)
tdSql
.
init
(
conn
.
cursor
())
tdSql
.
init
(
conn
.
cursor
())
self
.
ts
=
1537146000000
def
run
(
self
):
tdSql
.
prepare
()
print
(
"======= Verify filter for bool, nchar and binary type ========="
)
tdLog
.
debug
(
"create table st(ts timestamp, tbcol1 bool, tbcol2 nchar(10), tbcol3 binary(20)) tags(tagcol1 bool, tagcol2 nchar(10), tagcol3 binary(10))"
)
tdSql
.
execute
(
"create table st(ts timestamp, tbcol1 bool, tbcol2 nchar(10), tbcol3 binary(20)) tags(tagcol1 bool, tagcol2 nchar(10), tagcol3 binary(10))"
)
"create table st(ts timestamp, tbcol1 bool, tbcol2 nchar(10), tbcol3 binary(20)) tags(tagcol1 bool, tagcol2 nchar(10), tagcol3 binary(10))"
)
tdSql
.
execute
(
"create table st1 using st tags(true, 'table1', '水表')"
)
for
i
in
range
(
1
,
6
):
tdSql
.
execute
(
"insert into st1 values(%d, %d, 'taosdata%d', '涛思数据%d')"
%
(
self
.
ts
+
i
,
i
%
2
,
i
,
i
))
for
i
in
range
(
1
,
6
):
tdSql
.
execute
(
"insert into st1 values(%d, %d, 'taosdata%d', '涛思数据%d')"
%
(
self
.
ts
+
i
,
i
%
2
,
i
,
i
))
tdSql
.
execute
(
"create table st2 using st tags(false, 'table2', '电表')"
)
for
i
in
range
(
6
,
11
):
tdSql
.
execute
(
"insert into st2 values(%d, %d, 'taosdata%d', '涛思数据%d')"
%
(
self
.
ts
+
i
,
i
%
2
,
i
,
i
))
for
i
in
range
(
6
,
11
):
tdSql
.
execute
(
"insert into st2 values(%d, %d, 'taosdata%d', '涛思数据%d')"
%
(
self
.
ts
+
i
,
i
%
2
,
i
,
i
))
# =============Verify stable columns====================
# > for bool type on column
tdSql
.
error
(
"select * from st where tbcol1 > false"
)
# >= for bool type on column
tdSql
.
error
(
"select * from st where tbcol1 >= false"
)
tdSql
.
error
(
"select * from st where tbcol1 >= false"
)
# = for bool type on column
tdSql
.
query
(
"select * from st where tbcol1 = false"
)
...
...
@@ -77,18 +83,18 @@ class TDTestCase:
tdSql
.
error
(
"select * from st where tbcol2 > 'taosdata'"
)
# >= for nchar type on column
tdSql
.
error
(
"select * from st where tbcol2 >= 'taosdata'"
)
tdSql
.
error
(
"select * from st where tbcol2 >= 'taosdata'"
)
# = for nchar type on column
tdSql
.
query
(
"select * from st where tbcol2 = 'taosdata1'"
)
tdSql
.
checkRows
(
1
)
# <> for nchar type on column
tdSql
.
query
(
"select * from st where tbcol2 <> 'taosdata1'"
)
tdSql
.
query
(
"select * from st where tbcol2 <> 'taosdata1'"
)
tdSql
.
checkRows
(
9
)
# != for nchar type on column
tdSql
.
query
(
"select * from st where tbcol2 != 'taosdata1'"
)
tdSql
.
query
(
"select * from st where tbcol2 != 'taosdata1'"
)
tdSql
.
checkRows
(
9
)
# > for nchar type on column
...
...
@@ -98,57 +104,57 @@ class TDTestCase:
tdSql
.
error
(
"select * from st where tbcol2 <= 'taodata'"
)
# % for nchar type on column case 1
tdSql
.
query
(
"select * from st where tbcol2 like '%'"
)
tdSql
.
query
(
"select * from st where tbcol2 like '%'"
)
tdSql
.
checkRows
(
10
)
# % for nchar type on column case 2
tdSql
.
query
(
"select * from st where tbcol2 like 'a%'"
)
tdSql
.
query
(
"select * from st where tbcol2 like 'a%'"
)
tdSql
.
checkRows
(
0
)
# % for nchar type on column case 3
tdSql
.
query
(
"select * from st where tbcol2 like 't%_'"
)
tdSql
.
query
(
"select * from st where tbcol2 like 't%_'"
)
tdSql
.
checkRows
(
10
)
# % for nchar type on column case 4
tdSql
.
query
(
"select * from st where tbcol2 like '%1'"
)
tdSql
.
query
(
"select * from st where tbcol2 like '%1'"
)
# tdSql.checkRows(2)
# _ for nchar type on column case 1
tdSql
.
query
(
"select * from st where tbcol2 like '____________'"
)
tdSql
.
checkRows
(
0
)
tdSql
.
query
(
"select * from st where tbcol2 like '____________'"
)
tdSql
.
checkRows
(
0
)
# _ for nchar type on column case 2
tdSql
.
query
(
"select * from st where tbcol2 like '__________'"
)
tdSql
.
query
(
"select * from st where tbcol2 like '__________'"
)
tdSql
.
checkRows
(
1
)
# _ for nchar type on column case 3
tdSql
.
query
(
"select * from st where tbcol2 like '_________'"
)
tdSql
.
query
(
"select * from st where tbcol2 like '_________'"
)
tdSql
.
checkRows
(
9
)
# _ for nchar type on column case 4
tdSql
.
query
(
"select * from st where tbcol2 like 't________'"
)
tdSql
.
query
(
"select * from st where tbcol2 like 't________'"
)
tdSql
.
checkRows
(
9
)
# _ for nchar type on column case 5
tdSql
.
query
(
"select * from st where tbcol2 like '%________'"
)
tdSql
.
query
(
"select * from st where tbcol2 like '%________'"
)
tdSql
.
checkRows
(
10
)
# > for binary type on column
tdSql
.
error
(
"select * from st where tbcol3 > '涛思数据'"
)
# >= for binary type on column
tdSql
.
error
(
"select * from st where tbcol3 >= '涛思数据'"
)
tdSql
.
error
(
"select * from st where tbcol3 >= '涛思数据'"
)
# = for binary type on column
tdSql
.
query
(
"select * from st where tbcol3 = '涛思数据1'"
)
tdSql
.
checkRows
(
1
)
# <> for binary type on column
tdSql
.
query
(
"select * from st where tbcol3 <> '涛思数据1'"
)
tdSql
.
query
(
"select * from st where tbcol3 <> '涛思数据1'"
)
tdSql
.
checkRows
(
9
)
# != for binary type on column
tdSql
.
query
(
"select * from st where tbcol3 != '涛思数据1'"
)
tdSql
.
query
(
"select * from st where tbcol3 != '涛思数据1'"
)
tdSql
.
checkRows
(
9
)
# > for binary type on column
...
...
@@ -158,39 +164,39 @@ class TDTestCase:
tdSql
.
error
(
"select * from st where tbcol3 <= '涛思数据'"
)
# % for binary type on column case 1
tdSql
.
query
(
"select * from st where tbcol3 like '%'"
)
tdSql
.
query
(
"select * from st where tbcol3 like '%'"
)
tdSql
.
checkRows
(
10
)
# % for binary type on column case 2
tdSql
.
query
(
"select * from st where tbcol3 like '陶%'"
)
tdSql
.
query
(
"select * from st where tbcol3 like '陶%'"
)
tdSql
.
checkRows
(
0
)
# % for binary type on column case 3
tdSql
.
query
(
"select * from st where tbcol3 like '涛%_'"
)
tdSql
.
query
(
"select * from st where tbcol3 like '涛%_'"
)
tdSql
.
checkRows
(
10
)
# % for binary type on column case 4
tdSql
.
query
(
"select * from st where tbcol3 like '%1'"
)
tdSql
.
query
(
"select * from st where tbcol3 like '%1'"
)
tdSql
.
checkRows
(
1
)
# _ for binary type on column case 1
tdSql
.
query
(
"select * from st where tbcol3 like '_______'"
)
tdSql
.
checkRows
(
0
)
tdSql
.
query
(
"select * from st where tbcol3 like '_______'"
)
tdSql
.
checkRows
(
0
)
# _ for binary type on column case 2
tdSql
.
query
(
"select * from st where tbcol3 like '______'"
)
tdSql
.
query
(
"select * from st where tbcol3 like '______'"
)
tdSql
.
checkRows
(
1
)
# _ for binary type on column case 2
tdSql
.
query
(
"select * from st where tbcol3 like '_____'"
)
tdSql
.
query
(
"select * from st where tbcol3 like '_____'"
)
tdSql
.
checkRows
(
9
)
# _ for binary type on column case 3
tdSql
.
query
(
"select * from st where tbcol3 like '____'"
)
tdSql
.
query
(
"select * from st where tbcol3 like '____'"
)
tdSql
.
checkRows
(
0
)
# _ for binary type on column case 4
tdSql
.
query
(
"select * from st where tbcol3 like 't____'"
)
tdSql
.
query
(
"select * from st where tbcol3 like 't____'"
)
tdSql
.
checkRows
(
0
)
# =============Verify stable tags====================
...
...
@@ -198,7 +204,7 @@ class TDTestCase:
tdSql
.
error
(
"select * from st where tagcol1 > false"
)
# >= for bool type on tag
tdSql
.
error
(
"select * from st where tagcol1 >= false"
)
tdSql
.
error
(
"select * from st where tagcol1 >= false"
)
# = for bool type on tag
tdSql
.
query
(
"select * from st where tagcol1 = false"
)
...
...
@@ -228,18 +234,18 @@ class TDTestCase:
tdSql
.
error
(
"select * from st where tagcol2 > 'table'"
)
# >= for nchar type on tag
tdSql
.
error
(
"select * from st where tagcol2 >= 'table'"
)
tdSql
.
error
(
"select * from st where tagcol2 >= 'table'"
)
# = for nchar type on tag
tdSql
.
query
(
"select * from st where tagcol2 = 'table1'"
)
tdSql
.
checkRows
(
5
)
# <> for nchar type on tag
tdSql
.
query
(
"select * from st where tagcol2 <> 'table1'"
)
tdSql
.
query
(
"select * from st where tagcol2 <> 'table1'"
)
tdSql
.
checkRows
(
5
)
# != for nchar type on tag
tdSql
.
query
(
"select * from st where tagcol2 != 'table'"
)
tdSql
.
query
(
"select * from st where tagcol2 != 'table'"
)
tdSql
.
checkRows
(
10
)
# > for nchar type on tag
...
...
@@ -249,57 +255,57 @@ class TDTestCase:
tdSql
.
error
(
"select * from st where tagcol2 <= 'table'"
)
# % for nchar type on tag case 1
tdSql
.
query
(
"select * from st where tagcol2 like '%'"
)
tdSql
.
query
(
"select * from st where tagcol2 like '%'"
)
tdSql
.
checkRows
(
10
)
# % for nchar type on tag case 2
tdSql
.
query
(
"select * from st where tagcol2 like 'a%'"
)
tdSql
.
query
(
"select * from st where tagcol2 like 'a%'"
)
tdSql
.
checkRows
(
0
)
# % for nchar type on tag case 3
tdSql
.
query
(
"select * from st where tagcol2 like 't%_'"
)
tdSql
.
query
(
"select * from st where tagcol2 like 't%_'"
)
tdSql
.
checkRows
(
10
)
# % for nchar type on tag case 4
tdSql
.
query
(
"select * from st where tagcol2 like '%1'"
)
tdSql
.
query
(
"select * from st where tagcol2 like '%1'"
)
tdSql
.
checkRows
(
5
)
# _ for nchar type on tag case 1
tdSql
.
query
(
"select * from st where tagcol2 like '_______'"
)
tdSql
.
checkRows
(
0
)
tdSql
.
query
(
"select * from st where tagcol2 like '_______'"
)
tdSql
.
checkRows
(
0
)
# _ for nchar type on tag case 2
tdSql
.
query
(
"select * from st where tagcol2 like '______'"
)
tdSql
.
query
(
"select * from st where tagcol2 like '______'"
)
tdSql
.
checkRows
(
10
)
# _ for nchar type on tag case 3
tdSql
.
query
(
"select * from st where tagcol2 like 't_____'"
)
tdSql
.
query
(
"select * from st where tagcol2 like 't_____'"
)
tdSql
.
checkRows
(
10
)
# _ for nchar type on tag case 4
tdSql
.
query
(
"select * from st where tagcol2 like 's________'"
)
tdSql
.
query
(
"select * from st where tagcol2 like 's________'"
)
tdSql
.
checkRows
(
0
)
# _ for nchar type on tag case 5
tdSql
.
query
(
"select * from st where tagcol2 like '%__'"
)
tdSql
.
query
(
"select * from st where tagcol2 like '%__'"
)
tdSql
.
checkRows
(
10
)
# > for binary type on tag
tdSql
.
error
(
"select * from st where tagcol3 > '表'"
)
# >= for binary type on tag
tdSql
.
error
(
"select * from st where tagcol3 >= '表'"
)
tdSql
.
error
(
"select * from st where tagcol3 >= '表'"
)
# = for binary type on tag
tdSql
.
query
(
"select * from st where tagcol3 = '水表'"
)
tdSql
.
checkRows
(
5
)
# <> for binary type on tag
tdSql
.
query
(
"select * from st where tagcol3 <> '水表'"
)
tdSql
.
query
(
"select * from st where tagcol3 <> '水表'"
)
tdSql
.
checkRows
(
5
)
# != for binary type on tag
tdSql
.
query
(
"select * from st where tagcol3 != '水表'"
)
tdSql
.
query
(
"select * from st where tagcol3 != '水表'"
)
tdSql
.
checkRows
(
5
)
# > for binary type on tag
...
...
@@ -309,54 +315,53 @@ class TDTestCase:
tdSql
.
error
(
"select * from st where tagcol3 <= '水表'"
)
# % for binary type on tag case 1
tdSql
.
query
(
"select * from st where tagcol3 like '%'"
)
tdSql
.
query
(
"select * from st where tagcol3 like '%'"
)
tdSql
.
checkRows
(
10
)
# % for binary type on tag case 2
tdSql
.
query
(
"select * from st where tagcol3 like '水%'"
)
tdSql
.
query
(
"select * from st where tagcol3 like '水%'"
)
tdSql
.
checkRows
(
5
)
# % for binary type on tag case 3
tdSql
.
query
(
"select * from st where tagcol3 like '数%_'"
)
tdSql
.
query
(
"select * from st where tagcol3 like '数%_'"
)
tdSql
.
checkRows
(
0
)
# % for binary type on tag case 4
tdSql
.
query
(
"select * from st where tagcol3 like '%表'"
)
tdSql
.
query
(
"select * from st where tagcol3 like '%表'"
)
tdSql
.
checkRows
(
10
)
# % for binary type on tag case 5
tdSql
.
query
(
"select * from st where tagcol3 like '%据'"
)
tdSql
.
query
(
"select * from st where tagcol3 like '%据'"
)
tdSql
.
checkRows
(
0
)
# _ for binary type on tag case 1
tdSql
.
query
(
"select * from st where tagcol3 like '__'"
)
tdSql
.
checkRows
(
10
)
tdSql
.
query
(
"select * from st where tagcol3 like '__'"
)
tdSql
.
checkRows
(
10
)
# _ for binary type on tag case 2
tdSql
.
query
(
"select * from st where tagcol3 like '水_'"
)
tdSql
.
query
(
"select * from st where tagcol3 like '水_'"
)
tdSql
.
checkRows
(
5
)
# _ for binary type on tag case 2
tdSql
.
query
(
"select * from st where tagcol3 like '_表'"
)
tdSql
.
query
(
"select * from st where tagcol3 like '_表'"
)
tdSql
.
checkRows
(
10
)
# _ for binary type on tag case 3
tdSql
.
query
(
"select * from st where tagcol3 like '___'"
)
tdSql
.
query
(
"select * from st where tagcol3 like '___'"
)
tdSql
.
checkRows
(
0
)
# _ for binary type on tag case 4
tdSql
.
query
(
"select * from st where tagcol3 like '数_'"
)
tdSql
.
query
(
"select * from st where tagcol3 like '数_'"
)
tdSql
.
checkRows
(
0
)
# _ for binary type on tag case 5
tdSql
.
query
(
"select * from st where tagcol3 like '_据'"
)
tdSql
.
query
(
"select * from st where tagcol3 like '_据'"
)
tdSql
.
checkRows
(
0
)
def
stop
(
self
):
tdSql
.
close
()
tdLog
.
success
(
"%s successfully executed"
%
__file__
)
tdLog
.
success
(
"%s successfully executed"
%
__file__
)
tdCases
.
addWindows
(
__file__
,
TDTestCase
())
tdCases
.
addLinux
(
__file__
,
TDTestCase
())
tests/pytest/query/querySort.py
浏览文件 @
a561016f
...
...
@@ -21,56 +21,60 @@ from util.sql import *
class
TDTestCase
:
def
init
(
self
,
conn
,
logSql
):
tdLog
.
debug
(
"start to execute %s"
%
__file__
)
tdSql
.
init
(
conn
.
cursor
())
tdSql
.
init
(
conn
.
cursor
())
self
.
rowNum
=
10
self
.
ts
=
1537146000000
def
run
(
self
):
tdSql
.
prepare
()
print
(
"======= step 1: create table and insert data ========="
)
tdLog
.
debug
(
''' create table st(ts timestamp, tbcol1 tinyint, tbcol2 smallint, tbcol3 int, tbcol4 bigint, tbcol5 float, tbcol6 double,
tbcol7 bool, tbcol8 nchar(20), tbcol9 binary(20)) tags(tagcol1 tinyint, tagcol2 smallint, tagcol3 int, tagcol4 bigint, tagcol5 float,
''' create table st(ts timestamp, tbcol1 tinyint, tbcol2 smallint, tbcol3 int, tbcol4 bigint, tbcol5 float, tbcol6 double,
tbcol7 bool, tbcol8 nchar(20), tbcol9 binary(20)) tags(tagcol1 tinyint, tagcol2 smallint, tagcol3 int, tagcol4 bigint, tagcol5 float,
tagcol6 double, tagcol7 bool, tagcol8 nchar(20), tagcol9 binary(20))'''
)
tdSql
.
execute
(
''' create table st(ts timestamp, tbcol1 tinyint, tbcol2 smallint, tbcol3 int, tbcol4 bigint, tbcol5 float, tbcol6 double,
tbcol7 bool, tbcol8 nchar(20), tbcol9 binary(20)) tags(tagcol1 tinyint, tagcol2 smallint, tagcol3 int, tagcol4 bigint, tagcol5 float,
''' create table st(ts timestamp, tbcol1 tinyint, tbcol2 smallint, tbcol3 int, tbcol4 bigint, tbcol5 float, tbcol6 double,
tbcol7 bool, tbcol8 nchar(20), tbcol9 binary(20)) tags(tagcol1 tinyint, tagcol2 smallint, tagcol3 int, tagcol4 bigint, tagcol5 float,
tagcol6 double, tagcol7 bool, tagcol8 nchar(20), tagcol9 binary(20))'''
)
for
i
in
range
(
self
.
rowNum
):
tdSql
.
execute
(
"create table st%d using st tags(%d, %d, %d, %d, %f, %f, %d, 'tag%d', '标签%d')"
%
(
i
+
1
,
i
+
1
,
i
+
1
,
i
+
1
,
i
+
1
,
1.1
*
(
i
+
1
),
1.23
*
(
i
+
1
),
(
i
+
1
)
%
2
,
i
+
1
,
i
+
1
))
tdSql
.
execute
(
"create table st%d using st tags(%d, %d, %d, %d, %f, %f, %d, 'tag%d', '标签%d')"
%
(
i
+
1
,
i
+
1
,
i
+
1
,
i
+
1
,
i
+
1
,
1.1
*
(
i
+
1
),
1.23
*
(
i
+
1
),
(
i
+
1
)
%
2
,
i
+
1
,
i
+
1
))
for
j
in
range
(
self
.
rowNum
):
tdSql
.
execute
(
"insert into st%d values(%d, %d, %d, %d, %d, %f, %f, %d, 'taosdata%d', '涛思数据%d')"
%
(
i
+
1
,
self
.
ts
+
10
*
(
i
+
1
)
+
j
+
1
,
j
+
1
,
j
+
1
,
j
+
1
,
j
+
1
,
1.1
*
(
j
+
1
),
1.23
*
(
j
+
1
),
(
j
+
1
)
%
2
,
j
+
1
,
j
+
1
))
tdSql
.
execute
(
"insert into st%d values(%d, %d, %d, %d, %d, %f, %f, %d, 'taosdata%d', '涛思数据%d')"
%
(
i
+
1
,
self
.
ts
+
10
*
(
i
+
1
)
+
j
+
1
,
j
+
1
,
j
+
1
,
j
+
1
,
j
+
1
,
1.1
*
(
j
+
1
),
1.23
*
(
j
+
1
),
(
j
+
1
)
%
2
,
j
+
1
,
j
+
1
))
print
(
"======= step 2: verify order for each column ========="
)
# sort for timestamp in asc order
print
(
"======= step 2: verify order for each column ========="
)
# sort for timestamp in asc order
tdSql
.
query
(
"select * from st order by ts asc"
)
tdSql
.
checkColumnSorted
(
0
,
"asc"
)
# sort for timestamp in desc order
# sort for timestamp in desc order
tdSql
.
query
(
"select * from st order by ts desc"
)
tdSql
.
checkColumnSorted
(
0
,
"desc"
)
for
i
in
range
(
1
,
10
):
tdSql
.
error
(
"select * from st order by tbcol%d"
%
i
)
tdSql
.
error
(
"select * from st order by tbcol%d asc"
%
i
)
tdSql
.
error
(
"select * from st order by tbcol%d desc"
%
i
)
for
i
in
range
(
1
,
10
):
tdSql
.
error
(
"select * from st order by tbcol%d"
%
i
)
tdSql
.
error
(
"select * from st order by tbcol%d asc"
%
i
)
tdSql
.
error
(
"select * from st order by tbcol%d desc"
%
i
)
tdSql
.
query
(
"select avg(tbcol1) from st group by tagcol%d order by tagcol%d"
%
(
i
,
i
))
tdSql
.
query
(
"select avg(tbcol1) from st group by tagcol%d order by tagcol%d"
%
(
i
,
i
))
tdSql
.
checkColumnSorted
(
1
,
""
)
tdSql
.
query
(
"select avg(tbcol1) from st group by tagcol%d order by tagcol%d asc"
%
(
i
,
i
))
tdSql
.
query
(
"select avg(tbcol1) from st group by tagcol%d order by tagcol%d asc"
%
(
i
,
i
))
tdSql
.
checkColumnSorted
(
1
,
"asc"
)
tdSql
.
query
(
"select avg(tbcol1) from st group by tagcol%d order by tagcol%d desc"
%
(
i
,
i
))
tdSql
.
checkColumnSorted
(
1
,
"desc"
)
tdSql
.
query
(
"select avg(tbcol1) from st group by tagcol%d order by tagcol%d desc"
%
(
i
,
i
))
tdSql
.
checkColumnSorted
(
1
,
"desc"
)
def
stop
(
self
):
tdSql
.
close
()
tdLog
.
success
(
"%s successfully executed"
%
__file__
)
...
...
tests/pytest/random-test/random-test.py
浏览文件 @
a561016f
...
...
@@ -97,6 +97,8 @@ class Test:
"create table %s using %s tags (1, '表1')"
%
(
current_tb
,
self
.
last_stb
))
self
.
last_tb
=
current_tb
self
.
written
=
0
tdSql
.
execute
(
"insert into %s values (now, 27, '我是nchar字符串')"
%
self
.
last_tb
)
...
...
tests/pytest/regressiontest.sh
浏览文件 @
a561016f
...
...
@@ -38,9 +38,9 @@ python3 ./test.py -f tag_lite/bool_int.py
python3 ./test.py
-f
tag_lite/bool.py
python3 ./test.py
-f
tag_lite/change.py
python3 ./test.py
-f
tag_lite/column.py
#
python3 ./test.py -f tag_lite/commit.py
python3 ./test.py
-f
tag_lite/commit.py
python3 ./test.py
-f
tag_lite/create.py
#
python3 ./test.py -f tag_lite/datatype.py
python3 ./test.py
-f
tag_lite/datatype.py
python3 ./test.py
-f
tag_lite/datatype-without-alter.py
# python3 ./test.py -f tag_lite/delete.py
python3 ./test.py
-f
tag_lite/double.py
...
...
@@ -48,7 +48,7 @@ python3 ./test.py -f tag_lite/float.py
python3 ./test.py
-f
tag_lite/int_binary.py
python3 ./test.py
-f
tag_lite/int_float.py
python3 ./test.py
-f
tag_lite/int.py
#
python3 ./test.py -f tag_lite/set.py
python3 ./test.py
-f
tag_lite/set.py
python3 ./test.py
-f
tag_lite/smallint.py
python3 ./test.py
-f
tag_lite/tinyint.py
...
...
@@ -127,7 +127,7 @@ python3 ./test.py -f user/user_create.py
python3 ./test.py
-f
user/pass_len.py
# table
#
python3 ./test.py -f table/del_stable.py
python3 ./test.py
-f
table/del_stable.py
#query
python3 ./test.py
-f
query/filter.py
...
...
tests/pytest/table/del_stable.py
浏览文件 @
a561016f
...
...
@@ -40,13 +40,13 @@ class TDTestCase:
try
:
tdSql
.
execute
(
"select * from db.st"
)
except
Exception
as
e
:
if
e
.
args
[
0
]
!=
'invalid table name'
:
if
e
.
args
[
0
]
!=
'
mnode
invalid table name'
:
tdLog
.
exit
(
e
)
try
:
tdSql
.
execute
(
"select * from db.tb"
)
except
Exception
as
e
:
if
e
.
args
[
0
]
!=
'invalid table name'
:
if
e
.
args
[
0
]
!=
'
mnode
invalid table name'
:
tdLog
.
exit
(
e
)
def
stop
(
self
):
...
...
tests/pytest/table/tablename-boundary.py
浏览文件 @
a561016f
...
...
@@ -18,7 +18,10 @@ class TDTestCase:
tdSql
.
prepare
()
getTableNameLen
=
"grep -w '#define TSDB_TABLE_NAME_LEN' ../../src/inc/taosdef.h|awk '{print $3}'"
tableNameMaxLen
=
int
(
subprocess
.
check_output
(
getTableNameLen
,
shell
=
True
))
-
1
tableNameMaxLen
=
int
(
subprocess
.
check_output
(
getTableNameLen
,
shell
=
True
))
-
1
tdLog
.
info
(
"table name max length is %d"
%
tableNameMaxLen
)
chars
=
string
.
ascii_uppercase
+
string
.
ascii_lowercase
tb_name
=
''
.
join
(
random
.
choices
(
chars
,
k
=
tableNameMaxLen
))
...
...
tests/pytest/tag_lite/change.py
浏览文件 @
a561016f
...
...
@@ -93,9 +93,13 @@ class TDTestCase:
tdSql
.
error
(
"alter table ta_ch_mt2 change tag tgcol1 tgcol2"
)
# TSIM: return -1
# TSIM: step22:
# TSIM: sql alter table $mt change tag tgcol1 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -x step20
tdLog
.
info
(
"alter table ta_ch_mt2 change tag tgcol1 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -x step20"
)
tdSql
.
error
(
"alter table ta_ch_mt2 change tag tgcol1 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -x step20"
)
# TSIM: sql alter table $mt change tag tgcol1
# xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -x
# step20
tdLog
.
info
(
"alter table ta_ch_mt2 change tag tgcol1 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -x step20"
)
tdSql
.
error
(
"alter table ta_ch_mt2 change tag tgcol1 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -x step20"
)
# TSIM: return -1
# TSIM: step20:
# TSIM:
...
...
@@ -267,8 +271,10 @@ class TDTestCase:
tdSql
.
execute
(
'create table ta_ch_mt6 (ts timestamp, tbcol int) TAGS(tgcol1 binary(10), tgcol2 int, tgcol3 smallint, tgcol4 binary(11), tgcol5 double, tgcol6 binary(20))'
)
# TSIM: sql create table $tb using $mt tags( '1', 2, 3, '4', 5, '6' )
tdLog
.
info
(
"create table tb6 using ta_ch_mt6 tags( '1', 2, 3, '4', 5, '6' )"
)
tdSql
.
execute
(
"create table tb6 using ta_ch_mt6 tags( '1', 2, 3, '4', 5, '6' )"
)
tdLog
.
info
(
"create table tb6 using ta_ch_mt6 tags( '1', 2, 3, '4', 5, '6' )"
)
tdSql
.
execute
(
"create table tb6 using ta_ch_mt6 tags( '1', 2, 3, '4', 5, '6' )"
)
# TSIM: sql insert into $tb values(now, 1)
tdLog
.
info
(
"insert into tb6 values(now, 1)"
)
tdSql
.
execute
(
"insert into tb6 values(now, 1)"
)
...
...
tests/pytest/tag_lite/commit.py
浏览文件 @
a561016f
...
...
@@ -296,13 +296,13 @@ class TDTestCase:
# TSIM: return -1
# TSIM: endi
# TSIM: if $data23 != 1 then
tdLog
.
info
(
'tdSql.checkData(2, 3,
1
)'
)
tdSql
.
checkData
(
2
,
3
,
1
)
tdLog
.
info
(
'tdSql.checkData(2, 3,
"TAG"
)'
)
tdSql
.
checkData
(
2
,
3
,
"TAG"
)
# TSIM: return -1
# TSIM: endi
# TSIM: if $data33 != 2.000000 then
tdLog
.
info
(
'tdSql.checkData(3, 3,
2.000000
)'
)
tdSql
.
checkData
(
3
,
3
,
2.000000
)
tdLog
.
info
(
'tdSql.checkData(3, 3,
"TAG"
)'
)
tdSql
.
checkData
(
3
,
3
,
"TAG"
)
# TSIM: return -1
# TSIM: endi
# TSIM:
...
...
@@ -395,8 +395,8 @@ class TDTestCase:
# TSIM: return -1
# TSIM: endi
# TSIM: if $data03 != 2 then
tdLog
.
info
(
'tdSql.checkData(0, 3,
2
)'
)
tdSql
.
checkData
(
0
,
3
,
2
)
tdLog
.
info
(
'tdSql.checkData(0, 3,
"2"
)'
)
tdSql
.
checkData
(
0
,
3
,
"2"
)
# TSIM: return -1
# TSIM: endi
# TSIM:
...
...
@@ -552,13 +552,13 @@ class TDTestCase:
# TSIM: return -1
# TSIM: endi
# TSIM: if $data03 != 5 then
tdLog
.
info
(
'tdSql.checkData(0, 3,
5
)'
)
tdSql
.
checkData
(
0
,
3
,
5
)
tdLog
.
info
(
'tdSql.checkData(0, 3,
"5"
)'
)
tdSql
.
checkData
(
0
,
3
,
"5"
)
# TSIM: return -1
# TSIM: endi
# TSIM: if $data04 != 6 then
tdLog
.
info
(
'tdSql.checkData(0, 4,
6
)'
)
tdSql
.
checkData
(
0
,
4
,
6
)
tdLog
.
info
(
'tdSql.checkData(0, 4,
"6"
)'
)
tdSql
.
checkData
(
0
,
4
,
"6"
)
# TSIM: return -1
# TSIM: endi
# TSIM:
...
...
@@ -583,13 +583,13 @@ class TDTestCase:
# TSIM: return -1
# TSIM: endi
# TSIM: if $data03 != 5 then
tdLog
.
info
(
'tdSql.checkData(0, 3,
5
)'
)
tdSql
.
checkData
(
0
,
3
,
5
)
tdLog
.
info
(
'tdSql.checkData(0, 3,
"5"
)'
)
tdSql
.
checkData
(
0
,
3
,
"5"
)
# TSIM: return -1
# TSIM: endi
# TSIM: if $data04 != 6 then
tdLog
.
info
(
'tdSql.checkData(0, 4,
6
)'
)
tdSql
.
checkData
(
0
,
4
,
6
)
tdLog
.
info
(
'tdSql.checkData(0, 4,
"6"
)'
)
tdSql
.
checkData
(
0
,
4
,
"6"
)
# TSIM: return -1
# TSIM: endi
# TSIM:
...
...
@@ -653,8 +653,8 @@ class TDTestCase:
# TSIM: return -1
# TSIM: endi
# TSIM: if $data04 != 3 then
tdLog
.
info
(
'tdSql.checkData(0, 4,
3
)'
)
tdSql
.
checkData
(
0
,
4
,
3
)
tdLog
.
info
(
'tdSql.checkData(0, 4,
"3"
)'
)
tdSql
.
checkData
(
0
,
4
,
"3"
)
# TSIM: return -1
# TSIM: endi
# TSIM:
...
...
@@ -778,8 +778,8 @@ class TDTestCase:
# TSIM: return -1
# TSIM: endi
# TSIM: if $data04 != 3 then
tdLog
.
info
(
'tdSql.checkData(0, 4,
3
)'
)
tdSql
.
checkData
(
0
,
4
,
3
)
tdLog
.
info
(
'tdSql.checkData(0, 4,
"3"
)'
)
tdSql
.
checkData
(
0
,
4
,
"3"
)
# TSIM: return -1
# TSIM: endi
# TSIM:
...
...
@@ -835,8 +835,8 @@ class TDTestCase:
# TSIM: return -1
# TSIM: endi
# TSIM: if $data03 != 5 then
tdLog
.
info
(
'tdSql.checkData(0, 3,
5
)'
)
tdSql
.
checkData
(
0
,
3
,
5
)
tdLog
.
info
(
'tdSql.checkData(0, 3,
"5"
)'
)
tdSql
.
checkData
(
0
,
3
,
"5"
)
# TSIM: return -1
# TSIM: endi
# TSIM: if $data04 != 1 then
...
...
@@ -897,13 +897,13 @@ class TDTestCase:
# TSIM: return -1
# TSIM: endi
# TSIM: if $data03 != 2 then
tdLog
.
info
(
'tdSql.checkData(0, 3,
2
)'
)
tdSql
.
checkData
(
0
,
3
,
2
)
tdLog
.
info
(
'tdSql.checkData(0, 3,
"2"
)'
)
tdSql
.
checkData
(
0
,
3
,
"2"
)
# TSIM: return -1
# TSIM: endi
# TSIM: if $data04 != 3 then
tdLog
.
info
(
'tdSql.checkData(0, 4,
3
)'
)
tdSql
.
checkData
(
0
,
4
,
3
)
tdLog
.
info
(
'tdSql.checkData(0, 4,
"3"
)'
)
tdSql
.
checkData
(
0
,
4
,
"3"
)
# TSIM: return -1
# TSIM: endi
# TSIM:
...
...
@@ -1021,29 +1021,29 @@ class TDTestCase:
# TSIM: return -1
# TSIM: endi
# TSIM: if $data02 != 1 then
tdLog
.
info
(
'tdSql.checkData(0, 2,
1
)'
)
tdSql
.
checkData
(
0
,
2
,
1
)
tdLog
.
info
(
'tdSql.checkData(0, 2,
"1"
)'
)
tdSql
.
checkData
(
0
,
2
,
"1"
)
# TSIM: return -1
# TSIM: endi
# TSIM: if $data03 != 2 then
tdLog
.
info
(
'tdSql.checkData(0, 3,
2
)'
)
tdSql
.
checkData
(
0
,
3
,
2
)
tdLog
.
info
(
'tdSql.checkData(0, 3,
"2"
)'
)
tdSql
.
checkData
(
0
,
3
,
"2"
)
# TSIM: return -1
# TSIM: endi
# TSIM: if $data04 != 3 then
tdLog
.
info
(
'tdSql.checkData(0, 4,
3
)'
)
tdSql
.
checkData
(
0
,
4
,
3
)
tdLog
.
info
(
'tdSql.checkData(0, 4,
"3"
)'
)
tdSql
.
checkData
(
0
,
4
,
"3"
)
# TSIM: return -1
# TSIM: endi
# TSIM: if $data05 != 4 then
tdLog
.
info
(
'tdSql.checkData(0, 5,
4
)'
)
tdSql
.
checkData
(
0
,
5
,
4
)
tdLog
.
info
(
'tdSql.checkData(0, 5,
"4"
)'
)
tdSql
.
checkData
(
0
,
5
,
"4"
)
# TSIM: return -1
# TSIM: endi
# TSIM:
# TSIM: sql alter table $mt change tag tgcol1 tgcol4 -x step103
tdLog
.
info
(
'alter table %s change tag tgcol1 tgcol4 -x step103'
%
(
mt
))
tdSql
.
error
(
'alter table %s change tag tgcol1 tgcol4
03
'
%
(
mt
))
tdSql
.
error
(
'alter table %s change tag tgcol1 tgcol4'
%
(
mt
))
# TSIM: return -1
# TSIM: step103:
# TSIM:
...
...
@@ -1095,13 +1095,13 @@ class TDTestCase:
# TSIM: return -1
# TSIM: endi
# TSIM: if $data02 != 1 then
tdLog
.
info
(
'tdSql.checkData(0, 2,
1
)'
)
tdSql
.
checkData
(
0
,
2
,
1
)
tdLog
.
info
(
'tdSql.checkData(0, 2,
"1"
)'
)
tdSql
.
checkData
(
0
,
2
,
"1"
)
# TSIM: return -1
# TSIM: endi
# TSIM: if $data03 != 4 then
tdLog
.
info
(
'tdSql.checkData(0, 3,
4
)'
)
tdSql
.
checkData
(
0
,
3
,
4
)
tdLog
.
info
(
'tdSql.checkData(0, 3,
"4"
)'
)
tdSql
.
checkData
(
0
,
3
,
"4"
)
# TSIM: return -1
# TSIM: endi
# TSIM: if $data04 != 0 then
...
...
@@ -1111,18 +1111,22 @@ class TDTestCase:
# TSIM: endi
# TSIM: if $data05 != NULL then
tdLog
.
info
(
'tdSql.checkData(0, 5, NULL)'
)
tdSql
.
checkData
(
0
,
5
,
None
)
try
:
tdSql
.
checkData
(
0
,
5
,
None
)
except
Exception
as
e
:
tdLog
.
info
(
repr
(
e
))
tdLog
.
info
(
"out of range"
)
# TSIM: return -1
# TSIM: endi
# TSIM:
# TSIM: sql select * from $mt where tgcol2 = 1 -x step101
tdLog
.
info
(
'select * from %s where tgcol2 = 1 -x step101'
%
(
mt
))
tdSql
.
error
(
'select * from %s where tgcol2 = 1
01
'
%
(
mt
))
tdSql
.
error
(
'select * from %s where tgcol2 = 1'
%
(
mt
))
# TSIM: return -1
# TSIM: step101:
# TSIM: sql select * from $mt where tgcol3 = 1 -x step102
tdLog
.
info
(
'select * from %s where tgcol3 = 1 -x step102'
%
(
mt
))
tdSql
.
error
(
'select * from %s where tgcol3 = 1
02
'
%
(
mt
))
tdSql
.
error
(
'select * from %s where tgcol3 = 1'
%
(
mt
))
# TSIM: return -1
# TSIM: step102:
# TSIM:
...
...
@@ -1186,14 +1190,14 @@ class TDTestCase:
# TSIM: return -1
# TSIM: endi
# TSIM: if $data06 != 5 then
tdLog
.
info
(
'tdSql.checkData(0, 6,
5
)'
)
tdSql
.
checkData
(
0
,
6
,
5
)
tdLog
.
info
(
'tdSql.checkData(0, 6,
"5"
)'
)
tdSql
.
checkData
(
0
,
6
,
"5"
)
# TSIM: return -1
# TSIM: endi
# TSIM:
# TSIM: sql alter table $mt change tag tgcol1 tgcol4 -x step114
tdLog
.
info
(
'alter table %s change tag tgcol1 tgcol4 -x step114'
%
(
mt
))
tdSql
.
error
(
'alter table %s change tag tgcol1 tgcol4
14
'
%
(
mt
))
tdSql
.
error
(
'alter table %s change tag tgcol1 tgcol4'
%
(
mt
))
# TSIM: return -1
# TSIM: step114:
# TSIM:
...
...
@@ -1271,8 +1275,8 @@ class TDTestCase:
# TSIM: return -1
# TSIM: endi
# TSIM: if $data03 != 4 then
tdLog
.
info
(
'tdSql.checkData(0, 3,
4
)'
)
tdSql
.
checkData
(
0
,
3
,
4
)
tdLog
.
info
(
'tdSql.checkData(0, 3,
"4"
)'
)
tdSql
.
checkData
(
0
,
3
,
"4"
)
# TSIM: return -1
# TSIM: endi
# TSIM: if $data04 != 5 then
...
...
@@ -1281,8 +1285,8 @@ class TDTestCase:
# TSIM: return -1
# TSIM: endi
# TSIM: if $data05 != 6 then
tdLog
.
info
(
'tdSql.checkData(0, 5,
6
)'
)
tdSql
.
checkData
(
0
,
5
,
6
)
tdLog
.
info
(
'tdSql.checkData(0, 5,
"6"
)'
)
tdSql
.
checkData
(
0
,
5
,
"6"
)
# TSIM: return -1
# TSIM: endi
# TSIM: if $data06 != 7 then
...
...
@@ -1298,17 +1302,17 @@ class TDTestCase:
# TSIM:
# TSIM: sql select * from $mt where tgcol2 = 1 -x step111
tdLog
.
info
(
'select * from %s where tgcol2 = 1 -x step111'
%
(
mt
))
tdSql
.
error
(
'select * from %s where tgcol2 = 1
11
'
%
(
mt
))
tdSql
.
error
(
'select * from %s where tgcol2 = 1'
%
(
mt
))
# TSIM: return -1
# TSIM: step111:
# TSIM: sql select * from $mt where tgcol3 = 1 -x step112
tdLog
.
info
(
'select * from %s where tgcol3 = 1 -x step112'
%
(
mt
))
tdSql
.
error
(
'select * from %s where tgcol3 = 1
12
'
%
(
mt
))
tdSql
.
error
(
'select * from %s where tgcol3 = 1'
%
(
mt
))
# TSIM: return -1
# TSIM: step112:
# TSIM: sql select * from $mt where tgcol9 = 1 -x step113
tdLog
.
info
(
'select * from %s where tgcol9 = 1 -x step113'
%
(
mt
))
tdSql
.
error
(
'select * from %s where tgcol9 = 1
13
'
%
(
mt
))
tdSql
.
error
(
'select * from %s where tgcol9 = 1'
%
(
mt
))
# TSIM: return -1
# TSIM: step113:
# TSIM:
...
...
@@ -1373,13 +1377,13 @@ class TDTestCase:
# TSIM: return -1
# TSIM: endi
# TSIM: if $data06 != 5 then
tdLog
.
info
(
'tdSql.checkData(0, 6,
5
)'
)
tdSql
.
checkData
(
0
,
6
,
5
)
tdLog
.
info
(
'tdSql.checkData(0, 6,
"5"
)'
)
tdSql
.
checkData
(
0
,
6
,
"5"
)
# TSIM: return -1
# TSIM: endi
# TSIM: if $data07 != 6 then
tdLog
.
info
(
'tdSql.checkData(0, 7,
6
)'
)
tdSql
.
checkData
(
0
,
7
,
6
)
tdLog
.
info
(
'tdSql.checkData(0, 7,
"6"
)'
)
tdSql
.
checkData
(
0
,
7
,
"6"
)
# TSIM: return -1
# TSIM: endi
# TSIM:
...
...
@@ -1457,13 +1461,13 @@ class TDTestCase:
# TSIM: return -1
# TSIM: endi
# TSIM: if $data03 != 1 then
tdLog
.
info
(
'tdSql.checkData(0, 3,
1
)'
)
tdSql
.
checkData
(
0
,
3
,
1
)
tdLog
.
info
(
'tdSql.checkData(0, 3,
"1"
)'
)
tdSql
.
checkData
(
0
,
3
,
"1"
)
# TSIM: return -1
# TSIM: endi
# TSIM: if $data04 != 5 then
tdLog
.
info
(
'tdSql.checkData(0, 4,
5
)'
)
tdSql
.
checkData
(
0
,
4
,
5
)
tdLog
.
info
(
'tdSql.checkData(0, 4,
"5"
)'
)
tdSql
.
checkData
(
0
,
4
,
"5"
)
# TSIM: return -1
# TSIM: endi
# TSIM: if $data05 != 4 then
...
...
@@ -1472,8 +1476,8 @@ class TDTestCase:
# TSIM: return -1
# TSIM: endi
# TSIM: if $data06 != 3 then
tdLog
.
info
(
'tdSql.checkData(0, 6,
3
)'
)
tdSql
.
checkData
(
0
,
6
,
3
)
tdLog
.
info
(
'tdSql.checkData(0, 6,
"3"
)'
)
tdSql
.
checkData
(
0
,
6
,
"3"
)
# TSIM: return -1
# TSIM: endi
# TSIM: if $data07 != 2 then
...
...
@@ -1559,8 +1563,8 @@ class TDTestCase:
# TSIM: return -1
# TSIM: endi
# TSIM: if $data02 != 1 then
tdLog
.
info
(
'tdSql.checkData(0, 2,
1
)'
)
tdSql
.
checkData
(
0
,
2
,
1
)
tdLog
.
info
(
'tdSql.checkData(0, 2,
"1"
)'
)
tdSql
.
checkData
(
0
,
2
,
"1"
)
# TSIM: return -1
# TSIM: endi
# TSIM: if $data03 != 2 then
...
...
@@ -1574,8 +1578,8 @@ class TDTestCase:
# TSIM: return -1
# TSIM: endi
# TSIM: if $data05 != 4 then
tdLog
.
info
(
'tdSql.checkData(0, 5,
4
)'
)
tdSql
.
checkData
(
0
,
5
,
4
)
tdLog
.
info
(
'tdSql.checkData(0, 5,
"4"
)'
)
tdSql
.
checkData
(
0
,
5
,
"4"
)
# TSIM: return -1
# TSIM: endi
# TSIM: if $data06 != 5.000000000 then
...
...
@@ -1584,8 +1588,8 @@ class TDTestCase:
# TSIM: return -1
# TSIM: endi
# TSIM: if $data07 != 6 then
tdLog
.
info
(
'tdSql.checkData(0, 7,
6
)'
)
tdSql
.
checkData
(
0
,
7
,
6
)
tdLog
.
info
(
'tdSql.checkData(0, 7,
"6"
)'
)
tdSql
.
checkData
(
0
,
7
,
"6"
)
# TSIM: return -1
# TSIM: endi
# TSIM:
...
...
@@ -1652,8 +1656,8 @@ class TDTestCase:
# TSIM: return -1
# TSIM: endi
# TSIM: if $data02 != 7 then
tdLog
.
info
(
'tdSql.checkData(0, 2,
7
)'
)
tdSql
.
checkData
(
0
,
2
,
7
)
tdLog
.
info
(
'tdSql.checkData(0, 2,
"7"
)'
)
tdSql
.
checkData
(
0
,
2
,
"7"
)
# TSIM: return -1
# TSIM: endi
# TSIM: if $data03 != 9 then
...
...
@@ -1667,8 +1671,8 @@ class TDTestCase:
# TSIM: return -1
# TSIM: endi
# TSIM: if $data05 != 8 then
tdLog
.
info
(
'tdSql.checkData(0, 5,
8
)'
)
tdSql
.
checkData
(
0
,
5
,
8
)
tdLog
.
info
(
'tdSql.checkData(0, 5,
"8"
)'
)
tdSql
.
checkData
(
0
,
5
,
"8"
)
# TSIM: return -1
# TSIM: endi
# TSIM: if $data06 != 10 then
...
...
@@ -1867,13 +1871,13 @@ class TDTestCase:
# TSIM: return -1
# TSIM: endi
# TSIM: if $data03 != 5 then
tdLog
.
info
(
'tdSql.checkData(0, 3,
5
)'
)
tdSql
.
checkData
(
0
,
3
,
5
)
tdLog
.
info
(
'tdSql.checkData(0, 3,
"5"
)'
)
tdSql
.
checkData
(
0
,
3
,
"5"
)
# TSIM: return -1
# TSIM: endi
# TSIM: if $data04 != 6 then
tdLog
.
info
(
'tdSql.checkData(0, 4,
6
)'
)
tdSql
.
checkData
(
0
,
4
,
6
)
tdLog
.
info
(
'tdSql.checkData(0, 4,
"6"
)'
)
tdSql
.
checkData
(
0
,
4
,
"6"
)
# TSIM: return -1
# TSIM: endi
# TSIM:
...
...
@@ -1898,13 +1902,13 @@ class TDTestCase:
# TSIM: return -1
# TSIM: endi
# TSIM: if $data03 != 5 then
tdLog
.
info
(
'
tdSql.checkData(0, 3, 5
)'
)
tdSql
.
checkData
(
0
,
3
,
5
)
tdLog
.
info
(
'
: tdSql.checkData(0, 3, "5"
)'
)
tdSql
.
checkData
(
0
,
3
,
"5"
)
# TSIM: return -1
# TSIM: endi
# TSIM: if $data04 != 6 then
tdLog
.
info
(
'tdSql.checkData(0, 4,
6
)'
)
tdSql
.
checkData
(
0
,
4
,
6
)
tdLog
.
info
(
'tdSql.checkData(0, 4,
"6"
)'
)
tdSql
.
checkData
(
0
,
4
,
"6"
)
# TSIM: return -1
# TSIM: endi
# TSIM:
...
...
@@ -1988,8 +1992,8 @@ class TDTestCase:
# TSIM: return -1
# TSIM: endi
# TSIM: if $data03 != 5 then
tdLog
.
info
(
'tdSql.checkData(0, 3,
5
)'
)
tdSql
.
checkData
(
0
,
3
,
5
)
tdLog
.
info
(
'tdSql.checkData(0, 3,
"5"
)'
)
tdSql
.
checkData
(
0
,
3
,
"5"
)
# TSIM: return -1
# TSIM: endi
# TSIM: if $data04 != 1 then
...
...
@@ -2065,13 +2069,13 @@ class TDTestCase:
# TSIM: return -1
# TSIM: endi
# TSIM: if $data02 != 1 then
tdLog
.
info
(
'tdSql.checkData(0, 2,
1
)'
)
tdSql
.
checkData
(
0
,
2
,
1
)
tdLog
.
info
(
'tdSql.checkData(0, 2,
"1"
)'
)
tdSql
.
checkData
(
0
,
2
,
"1"
)
# TSIM: return -1
# TSIM: endi
# TSIM: if $data03 != 4 then
tdLog
.
info
(
'tdSql.checkData(0, 3,
4
)'
)
tdSql
.
checkData
(
0
,
3
,
4
)
tdLog
.
info
(
'tdSql.checkData(0, 3,
"4"
)'
)
tdSql
.
checkData
(
0
,
3
,
"4"
)
# TSIM: return -1
# TSIM: endi
# TSIM: if $data04 != 0 then
...
...
@@ -2081,7 +2085,11 @@ class TDTestCase:
# TSIM: endi
# TSIM: if $data05 != NULL then
tdLog
.
info
(
'tdSql.checkData(0, 5, NULL)'
)
tdSql
.
checkData
(
0
,
5
,
None
)
try
:
tdSql
.
checkData
(
0
,
5
,
None
)
except
Exception
as
e
:
tdLog
.
info
(
repr
(
e
))
tdLog
.
info
(
"out of range"
)
# TSIM: return -1
# TSIM: endi
# TSIM:
...
...
@@ -2115,8 +2123,8 @@ class TDTestCase:
# TSIM: return -1
# TSIM: endi
# TSIM: if $data03 != 4 then
tdLog
.
info
(
'tdSql.checkData(0, 3,
4
)'
)
tdSql
.
checkData
(
0
,
3
,
4
)
tdLog
.
info
(
'tdSql.checkData(0, 3,
"4"
)'
)
tdSql
.
checkData
(
0
,
3
,
"4"
)
# TSIM: return -1
# TSIM: endi
# TSIM: if $data04 != 5 then
...
...
@@ -2125,8 +2133,8 @@ class TDTestCase:
# TSIM: return -1
# TSIM: endi
# TSIM: if $data05 != 6 then
tdLog
.
info
(
'tdSql.checkData(0, 5,
6
)'
)
tdSql
.
checkData
(
0
,
5
,
6
)
tdLog
.
info
(
'tdSql.checkData(0, 5,
"6"
)'
)
tdSql
.
checkData
(
0
,
5
,
"6"
)
# TSIM: return -1
# TSIM: endi
# TSIM: if $data06 != 7 then
...
...
@@ -2171,13 +2179,13 @@ class TDTestCase:
# TSIM: return -1
# TSIM: endi
# TSIM: if $data03 != 1 then
tdLog
.
info
(
'tdSql.checkData(0, 3,
1
)'
)
tdSql
.
checkData
(
0
,
3
,
1
)
tdLog
.
info
(
'tdSql.checkData(0, 3,
"1"
)'
)
tdSql
.
checkData
(
0
,
3
,
"1"
)
# TSIM: return -1
# TSIM: endi
# TSIM: if $data04 != 5 then
tdLog
.
info
(
'tdSql.checkData(0, 4,
5
)'
)
tdSql
.
checkData
(
0
,
4
,
5
)
tdLog
.
info
(
'tdSql.checkData(0, 4,
"5"
)'
)
tdSql
.
checkData
(
0
,
4
,
"5"
)
# TSIM: return -1
# TSIM: endi
# TSIM: if $data05 != 4 then
...
...
@@ -2186,8 +2194,8 @@ class TDTestCase:
# TSIM: return -1
# TSIM: endi
# TSIM: if $data06 != 3 then
tdLog
.
info
(
'tdSql.checkData(0, 6,
3
)'
)
tdSql
.
checkData
(
0
,
6
,
3
)
tdLog
.
info
(
'tdSql.checkData(0, 6,
"3"
)'
)
tdSql
.
checkData
(
0
,
6
,
"3"
)
# TSIM: return -1
# TSIM: endi
# TSIM: if $data07 != 2 then
...
...
@@ -2257,8 +2265,8 @@ class TDTestCase:
# TSIM: return -1
# TSIM: endi
# TSIM: if $data02 != 7 then
tdLog
.
info
(
'tdSql.checkData(0, 2,
7
)'
)
tdSql
.
checkData
(
0
,
2
,
7
)
tdLog
.
info
(
'tdSql.checkData(0, 2,
"7"
)'
)
tdSql
.
checkData
(
0
,
2
,
"7"
)
# TSIM: return -1
# TSIM: endi
# TSIM: if $data03 != 9 then
...
...
@@ -2272,8 +2280,8 @@ class TDTestCase:
# TSIM: return -1
# TSIM: endi
# TSIM: if $data05 != 8 then
tdLog
.
info
(
'tdSql.checkData(0, 5,
8
)'
)
tdSql
.
checkData
(
0
,
5
,
8
)
tdLog
.
info
(
'tdSql.checkData(0, 5,
"8"
)'
)
tdSql
.
checkData
(
0
,
5
,
"8"
)
# TSIM: return -1
# TSIM: endi
# TSIM: if $data06 != 10 then
...
...
@@ -2290,8 +2298,8 @@ class TDTestCase:
# TSIM: print =============== clear
tdLog
.
info
(
'=============== clear'
)
# TSIM: sql drop database $db
tdLog
.
info
(
'
sql drop database $
db'
)
tdSql
.
execute
(
'
sql drop database $
db'
)
tdLog
.
info
(
'
drop database
db'
)
tdSql
.
execute
(
'
drop database
db'
)
# TSIM: sql show databases
tdLog
.
info
(
'show databases'
)
tdSql
.
query
(
'show databases'
)
...
...
tests/pytest/tag_lite/delete.py
浏览文件 @
a561016f
此差异已折叠。
点击以展开。
tests/pytest/tag_lite/set.py
浏览文件 @
a561016f
...
...
@@ -178,13 +178,13 @@ class TDTestCase:
# TSIM: return -1
# TSIM: endi
# TSIM: if $data23 != false then
tdLog
.
info
(
'tdSql.checkData(2, 3,
false
)'
)
tdSql
.
checkData
(
2
,
3
,
false
)
tdLog
.
info
(
'tdSql.checkData(2, 3,
"TAG"
)'
)
tdSql
.
checkData
(
2
,
3
,
"TAG"
)
# TSIM: return -1
# TSIM: endi
# TSIM: if $data33 != 4 then
tdLog
.
info
(
'tdSql.checkData(3, 3,
4
)'
)
tdSql
.
checkData
(
3
,
3
,
4
)
tdLog
.
info
(
'tdSql.checkData(3, 3,
"TAG"
)'
)
tdSql
.
checkData
(
3
,
3
,
"TAG"
)
# TSIM: return -1
# TSIM: endi
# TSIM:
...
...
@@ -458,8 +458,8 @@ class TDTestCase:
# TSIM: return -1
# TSIM: endi
# TSIM: if $data03 != 2 then
tdLog
.
info
(
'tdSql.checkData(0, 3,
2
)'
)
tdSql
.
checkData
(
0
,
3
,
2
)
tdLog
.
info
(
'tdSql.checkData(0, 3,
"2"
)'
)
tdSql
.
checkData
(
0
,
3
,
"2"
)
# TSIM: return -1
# TSIM: endi
# TSIM:
...
...
@@ -495,8 +495,8 @@ class TDTestCase:
# TSIM: return -1
# TSIM: endi
# TSIM: if $data03 != 4 then
tdLog
.
info
(
'tdSql.checkData(0, 3,
4
)'
)
tdSql
.
checkData
(
0
,
3
,
4
)
tdLog
.
info
(
'tdSql.checkData(0, 3,
"4"
)'
)
tdSql
.
checkData
(
0
,
3
,
"4"
)
# TSIM: return -1
# TSIM: endi
# TSIM:
...
...
@@ -521,8 +521,8 @@ class TDTestCase:
# TSIM: return -1
# TSIM: endi
# TSIM: if $data03 != 4 then
tdLog
.
info
(
'tdSql.checkData(0, 3,
4
)'
)
tdSql
.
checkData
(
0
,
3
,
4
)
tdLog
.
info
(
'tdSql.checkData(0, 3,
"4"
)'
)
tdSql
.
checkData
(
0
,
3
,
"4"
)
# TSIM: return -1
# TSIM: endi
# TSIM:
...
...
@@ -567,8 +567,8 @@ class TDTestCase:
# TSIM: return -1
# TSIM: endi
# TSIM: if $data02 != 1 then
tdLog
.
info
(
'tdSql.checkData(0, 2,
1
)'
)
tdSql
.
checkData
(
0
,
2
,
1
)
tdLog
.
info
(
'tdSql.checkData(0, 2,
"1"
)'
)
tdSql
.
checkData
(
0
,
2
,
"1"
)
# TSIM: return -1
# TSIM: endi
# TSIM: if $data03 != 2 then
...
...
@@ -582,8 +582,8 @@ class TDTestCase:
# TSIM: return -1
# TSIM: endi
# TSIM: if $data05 != 4 then
tdLog
.
info
(
'tdSql.checkData(0, 5,
4
)'
)
tdSql
.
checkData
(
0
,
5
,
4
)
tdLog
.
info
(
'tdSql.checkData(0, 5,
"4"
)'
)
tdSql
.
checkData
(
0
,
5
,
"4"
)
# TSIM: return -1
# TSIM: endi
# TSIM: if $data06 != 5.000000000 then
...
...
@@ -592,8 +592,8 @@ class TDTestCase:
# TSIM: return -1
# TSIM: endi
# TSIM: if $data07 != 6 then
tdLog
.
info
(
'tdSql.checkData(0, 7,
6
)'
)
tdSql
.
checkData
(
0
,
7
,
6
)
tdLog
.
info
(
'tdSql.checkData(0, 7,
"6"
)'
)
tdSql
.
checkData
(
0
,
7
,
"6"
)
# TSIM: return -1
# TSIM: endi
# TSIM:
...
...
@@ -636,8 +636,8 @@ class TDTestCase:
# TSIM: return -1
# TSIM: endi
# TSIM: if $data02 != 7 then
tdLog
.
info
(
'tdSql.checkData(0, 2,
7
)'
)
tdSql
.
checkData
(
0
,
2
,
7
)
tdLog
.
info
(
'tdSql.checkData(0, 2,
"7"
)'
)
tdSql
.
checkData
(
0
,
2
,
"7"
)
# TSIM: return -1
# TSIM: endi
# TSIM: if $data03 != 8 then
...
...
@@ -646,8 +646,8 @@ class TDTestCase:
# TSIM: return -1
# TSIM: endi
# TSIM: if $data04 != 9 then
tdLog
.
info
(
'tdSql.checkData(0, 4,
9
)'
)
tdSql
.
checkData
(
0
,
4
,
9
)
tdLog
.
info
(
'tdSql.checkData(0, 4,
"9"
)'
)
tdSql
.
checkData
(
0
,
4
,
"9"
)
# TSIM: return -1
# TSIM: endi
# TSIM: if $data05 != 10.000000000 then
...
...
@@ -656,13 +656,17 @@ class TDTestCase:
# TSIM: return -1
# TSIM: endi
# TSIM: if $data06 != 11 then
tdLog
.
info
(
'tdSql.checkData(0, 6,
11
)'
)
tdSql
.
checkData
(
0
,
6
,
11
)
tdLog
.
info
(
'tdSql.checkData(0, 6,
"11"
)'
)
tdSql
.
checkData
(
0
,
6
,
"11"
)
# TSIM: return -1
# TSIM: endi
# TSIM: if $data07 != NULL then
tdLog
.
info
(
'tdSql.checkData(0, 7, NULL)'
)
tdSql
.
checkData
(
0
,
7
,
None
)
try
:
tdSql
.
checkData
(
0
,
7
,
None
)
except
Exception
as
e
:
tdLog
.
info
(
repr
(
e
))
tdLog
.
info
(
"out of range"
)
# TSIM: return -1
# TSIM: endi
# TSIM:
...
...
@@ -682,8 +686,8 @@ class TDTestCase:
# TSIM: return -1
# TSIM: endi
# TSIM: if $data02 != 7 then
tdLog
.
info
(
'tdSql.checkData(0, 2,
7
)'
)
tdSql
.
checkData
(
0
,
2
,
7
)
tdLog
.
info
(
'tdSql.checkData(0, 2,
"7"
)'
)
tdSql
.
checkData
(
0
,
2
,
"7"
)
# TSIM: return -1
# TSIM: endi
# TSIM: if $data03 != 8 then
...
...
@@ -692,8 +696,8 @@ class TDTestCase:
# TSIM: return -1
# TSIM: endi
# TSIM: if $data04 != 9 then
tdLog
.
info
(
'tdSql.checkData(0, 4,
9
)'
)
tdSql
.
checkData
(
0
,
4
,
9
)
tdLog
.
info
(
'tdSql.checkData(0, 4,
"9"
)'
)
tdSql
.
checkData
(
0
,
4
,
"9"
)
# TSIM: return -1
# TSIM: endi
# TSIM: if $data05 != 10.000000000 then
...
...
@@ -702,13 +706,17 @@ class TDTestCase:
# TSIM: return -1
# TSIM: endi
# TSIM: if $data06 != 11 then
tdLog
.
info
(
'tdSql.checkData(0, 6,
11
)'
)
tdSql
.
checkData
(
0
,
6
,
11
)
tdLog
.
info
(
'tdSql.checkData(0, 6,
"11"
)'
)
tdSql
.
checkData
(
0
,
6
,
"11"
)
# TSIM: return -1
# TSIM: endi
# TSIM: if $data07 != NULL then
tdLog
.
info
(
'tdSql.checkData(0, 7, NULL)'
)
tdSql
.
checkData
(
0
,
7
,
None
)
try
:
tdSql
.
checkData
(
0
,
7
,
None
)
except
Exception
as
e
:
tdLog
.
info
(
repr
(
e
))
tdLog
.
info
(
"out of range"
)
# TSIM: return -1
# TSIM: endi
# TSIM:
...
...
@@ -728,8 +736,8 @@ class TDTestCase:
# TSIM: return -1
# TSIM: endi
# TSIM: if $data02 != 7 then
tdLog
.
info
(
'tdSql.checkData(0, 2,
7
)'
)
tdSql
.
checkData
(
0
,
2
,
7
)
tdLog
.
info
(
'tdSql.checkData(0, 2,
"7"
)'
)
tdSql
.
checkData
(
0
,
2
,
"7"
)
# TSIM: return -1
# TSIM: endi
# TSIM: if $data03 != 8 then
...
...
@@ -738,8 +746,8 @@ class TDTestCase:
# TSIM: return -1
# TSIM: endi
# TSIM: if $data04 != 9 then
tdLog
.
info
(
'tdSql.checkData(0, 4,
9
)'
)
tdSql
.
checkData
(
0
,
4
,
9
)
tdLog
.
info
(
'tdSql.checkData(0, 4,
"9"
)'
)
tdSql
.
checkData
(
0
,
4
,
"9"
)
# TSIM: return -1
# TSIM: endi
# TSIM: if $data05 != 10.000000000 then
...
...
@@ -748,13 +756,17 @@ class TDTestCase:
# TSIM: return -1
# TSIM: endi
# TSIM: if $data06 != 11 then
tdLog
.
info
(
'tdSql.checkData(0, 6,
11
)'
)
tdSql
.
checkData
(
0
,
6
,
11
)
tdLog
.
info
(
'tdSql.checkData(0, 6,
"11"
)'
)
tdSql
.
checkData
(
0
,
6
,
"11"
)
# TSIM: return -1
# TSIM: endi
# TSIM: if $data07 != NULL then
tdLog
.
info
(
'tdSql.checkData(0, 7, NULL)'
)
tdSql
.
checkData
(
0
,
7
,
None
)
try
:
tdSql
.
checkData
(
0
,
7
,
None
)
except
Exception
as
e
:
tdLog
.
info
(
repr
(
e
))
tdLog
.
info
(
"out of range"
)
# TSIM: return -1
# TSIM: endi
# TSIM:
...
...
@@ -774,8 +786,8 @@ class TDTestCase:
# TSIM: return -1
# TSIM: endi
# TSIM: if $data02 != 7 then
tdLog
.
info
(
'tdSql.checkData(0, 2,
7
)'
)
tdSql
.
checkData
(
0
,
2
,
7
)
tdLog
.
info
(
'tdSql.checkData(0, 2,
"7"
)'
)
tdSql
.
checkData
(
0
,
2
,
"7"
)
# TSIM: return -1
# TSIM: endi
# TSIM: if $data03 != 8 then
...
...
@@ -784,8 +796,8 @@ class TDTestCase:
# TSIM: return -1
# TSIM: endi
# TSIM: if $data04 != 9 then
tdLog
.
info
(
'tdSql.checkData(0, 4,
9
)'
)
tdSql
.
checkData
(
0
,
4
,
9
)
tdLog
.
info
(
'tdSql.checkData(0, 4,
"9"
)'
)
tdSql
.
checkData
(
0
,
4
,
"9"
)
# TSIM: return -1
# TSIM: endi
# TSIM: if $data05 != 10.000000000 then
...
...
@@ -794,13 +806,17 @@ class TDTestCase:
# TSIM: return -1
# TSIM: endi
# TSIM: if $data06 != 11 then
tdLog
.
info
(
'tdSql.checkData(0, 6,
11
)'
)
tdSql
.
checkData
(
0
,
6
,
11
)
tdLog
.
info
(
'tdSql.checkData(0, 6,
"11"
)'
)
tdSql
.
checkData
(
0
,
6
,
"11"
)
# TSIM: return -1
# TSIM: endi
# TSIM: if $data07 != NULL then
tdLog
.
info
(
'tdSql.checkData(0, 7, NULL)'
)
tdSql
.
checkData
(
0
,
7
,
None
)
try
:
tdSql
.
checkData
(
0
,
7
,
None
)
except
Exception
as
e
:
tdLog
.
info
(
repr
(
e
))
tdLog
.
info
(
"out of range"
)
# TSIM: return -1
# TSIM: endi
# TSIM:
...
...
@@ -820,8 +836,8 @@ class TDTestCase:
# TSIM: return -1
# TSIM: endi
# TSIM: if $data02 != 7 then
tdLog
.
info
(
'tdSql.checkData(0, 2,
7
)'
)
tdSql
.
checkData
(
0
,
2
,
7
)
tdLog
.
info
(
'tdSql.checkData(0, 2,
"7"
)'
)
tdSql
.
checkData
(
0
,
2
,
"7"
)
# TSIM: return -1
# TSIM: endi
# TSIM: if $data03 != 8 then
...
...
@@ -830,8 +846,8 @@ class TDTestCase:
# TSIM: return -1
# TSIM: endi
# TSIM: if $data04 != 9 then
tdLog
.
info
(
'tdSql.checkData(0, 4,
9
)'
)
tdSql
.
checkData
(
0
,
4
,
9
)
tdLog
.
info
(
'tdSql.checkData(0, 4,
"9"
)'
)
tdSql
.
checkData
(
0
,
4
,
"9"
)
# TSIM: return -1
# TSIM: endi
# TSIM: if $data05 != 10.000000000 then
...
...
@@ -840,21 +856,25 @@ class TDTestCase:
# TSIM: return -1
# TSIM: endi
# TSIM: if $data06 != 11 then
tdLog
.
info
(
'tdSql.checkData(0, 6,
11
)'
)
tdSql
.
checkData
(
0
,
6
,
11
)
tdLog
.
info
(
'tdSql.checkData(0, 6,
"11"
)'
)
tdSql
.
checkData
(
0
,
6
,
"11"
)
# TSIM: return -1
# TSIM: endi
# TSIM: if $data07 != NULL then
tdLog
.
info
(
'tdSql.checkData(0, 7, NULL)'
)
tdSql
.
checkData
(
0
,
7
,
None
)
try
:
tdSql
.
checkData
(
0
,
7
,
None
)
except
Exception
as
e
:
tdLog
.
info
(
repr
(
e
))
tdLog
.
info
(
"out of range"
)
# TSIM: return -1
# TSIM: endi
# TSIM:
# TSIM: print =============== clear
tdLog
.
info
(
'=============== clear'
)
# TSIM: sql drop database $db
tdLog
.
info
(
'
sql drop database $
db'
)
tdSql
.
execute
(
'
sql drop database $
db'
)
tdLog
.
info
(
'
drop database
db'
)
tdSql
.
execute
(
'
drop database
db'
)
# TSIM: sql show databases
tdLog
.
info
(
'show databases'
)
tdSql
.
query
(
'show databases'
)
...
...
tests/pytest/util/sql.py
浏览文件 @
a561016f
...
...
@@ -205,31 +205,37 @@ class TDSql:
if
col
<
0
:
tdLog
.
exit
(
"%s failed: sql:%s, col:%d is smaller than zero"
%
(
callerFilename
,
self
.
sql
,
col
))
(
callerFilename
,
self
.
sql
,
col
))
if
col
>
self
.
queryCols
:
tdLog
.
exit
(
"%s failed: sql:%s, col:%d is larger than queryCols:%d"
%
(
callerFilename
,
self
.
sql
,
col
,
self
.
queryCols
))
matrix
=
np
.
array
(
self
.
queryResult
)
list
=
matrix
[:,
0
]
list
=
matrix
[:,
0
]
if
order
==
""
or
order
.
upper
()
==
"ASC"
:
if
all
(
sorted
(
list
)
==
list
):
tdLog
.
info
(
"sql:%s, column :%d is sorted in accending order as expected"
%
if
order
==
""
or
order
.
upper
()
==
"ASC"
:
if
all
(
sorted
(
list
)
==
list
):
tdLog
.
info
(
"sql:%s, column :%d is sorted in accending order as expected"
%
(
self
.
sql
,
col
))
else
:
tdLog
.
exit
(
"%s failed: sql:%s, col:%d is not sorted in accesnind order"
%
tdLog
.
exit
(
"%s failed: sql:%s, col:%d is not sorted in accesnind order"
%
(
callerFilename
,
self
.
sql
,
col
))
elif
order
.
upper
()
==
"DESC"
:
if
all
(
sorted
(
list
,
reverse
=
True
)
==
list
):
tdLog
.
info
(
"sql:%s, column :%d is sorted in decending order as expected"
%
elif
order
.
upper
()
==
"DESC"
:
if
all
(
sorted
(
list
,
reverse
=
True
)
==
list
):
tdLog
.
info
(
"sql:%s, column :%d is sorted in decending order as expected"
%
(
self
.
sql
,
col
))
else
:
tdLog
.
exit
(
"%s failed: sql:%s, col:%d is not sorted in decending order"
%
(
callerFilename
,
self
.
sql
,
col
))
tdLog
.
exit
(
"%s failed: sql:%s, col:%d is not sorted in decending order"
%
(
callerFilename
,
self
.
sql
,
col
))
else
:
tdLog
.
exit
(
"%s failed: sql:%s, the order provided for col:%d is not correct"
%
(
callerFilename
,
self
.
sql
,
col
))
tdLog
.
exit
(
"%s failed: sql:%s, the order provided for col:%d is not correct"
%
(
callerFilename
,
self
.
sql
,
col
))
tdSql
=
TDSql
()
tests/script/unique/arbitrator/dn3_mn1_vnode_corruptFile_offline.sim
浏览文件 @
a561016f
...
...
@@ -177,7 +177,7 @@ if $data00 != $totalRows then
return -1
endi
print ============== step5: stop dnode2, and check if dnode3 sync ok
print ============== step5: stop dnode2, and check if dnode3 sync ok
system sh/exec.sh -n dnode2 -s stop -x SIGINT
sleep $sleepTimer
wait_dnode2_offline_0:
...
...
@@ -224,3 +224,9 @@ if $dnode3Vtatus != master then
sleep 2000
goto wait_dnode3_vgroup_master
endi
sql select count(*) from $stb
print data00 $data00
if $data00 != $totalRows then
return -1
endi
\ No newline at end of file
tests/script/unique/arbitrator/dn3_mn1_vnode_corruptFile_online.sim
浏览文件 @
a561016f
...
...
@@ -105,7 +105,7 @@ if $data00 != $totalRows then
return -1
endi
print ============== step5: stop dnode2, and check if dnode3 sync ok
print ============== step5: stop dnode2, and check if dnode3 sync ok
system sh/exec.sh -n dnode2 -s stop -x SIGINT
sleep $sleepTimer
wait_dnode2_offline_0:
...
...
@@ -152,3 +152,9 @@ if $dnode3Vtatus != master then
sleep 2000
goto wait_dnode3_vgroup_master
endi
sql select count(*) from $stb
print data00 $data00
if $data00 != $totalRows then
return -1
endi
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录