Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
a561016f
T
TDengine
项目概览
taosdata
/
TDengine
大约 2 年 前同步成功
通知
1192
Star
22018
Fork
4786
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
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
];
...
...
@@ -4264,6 +4264,7 @@ static void sequentialTableProcess(SQInfo *pQInfo) {
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
)
{
...
...
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
...
...
@@ -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 table st%s(ts timestamp, num %s) tags(id %s)"
%
(
curType
,
curType
,
curType
))
#create 10 tables, insert 10 rows for each table
#
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
))
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
))
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
)
...
...
@@ -106,7 +116,9 @@ class TDTestCase:
tdSql
.
query
(
"select * from st%s where id != 5"
%
curType
)
tdSql
.
checkRows
(
92
)
print
(
"======= Verify filter for %s type finished ========="
%
curType
)
print
(
"======= Verify filter for %s type finished ========="
%
curType
)
def
stop
(
self
):
tdSql
.
close
()
...
...
tests/pytest/query/filterFloatAndDouble.py
浏览文件 @
a561016f
...
...
@@ -36,8 +36,8 @@ class TDTestCase:
"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
)))
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"
)
...
...
tests/pytest/query/filterOtherTypes.py
浏览文件 @
a561016f
...
...
@@ -36,11 +36,17 @@ class TDTestCase:
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
))
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
))
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
...
...
@@ -359,4 +365,3 @@ class TDTestCase:
tdCases
.
addWindows
(
__file__
,
TDTestCase
())
tdCases
.
addLinux
(
__file__
,
TDTestCase
())
tests/pytest/query/querySort.py
浏览文件 @
a561016f
...
...
@@ -40,12 +40,11 @@ class TDTestCase:
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
...
...
@@ -56,19 +55,24 @@ class TDTestCase:
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
)
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
.
query
(
"select avg(tbcol1) from st group by tagcol%d order by tagcol%d desc"
%
(
i
,
i
))
tdSql
.
checkColumnSorted
(
1
,
"desc"
)
def
stop
(
self
):
...
...
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)'
)
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)'
)
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)'
)
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)'
)
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)'
)
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)'
)
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)'
)
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
...
...
@@ -216,20 +216,26 @@ class TDSql:
if
order
==
""
or
order
.
upper
()
==
"ASC"
:
if
all
(
sorted
(
list
)
==
list
):
tdLog
.
info
(
"sql:%s, column :%d is sorted in accending order as expected"
%
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"
%
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"
%
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"
%
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
...
...
@@ -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
...
...
@@ -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.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录