Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
74f81375
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看板
提交
74f81375
编写于
5月 16, 2022
作者:
H
Hongze Cheng
浏览文件
操作
浏览文件
下载
差异文件
Merge branch '3.0' of
https://github.com/taosdata/TDengine
into fix/hzcheng_3.0
上级
31549303
c2e006ac
变更
36
展开全部
隐藏空白更改
内联
并排
Showing
36 changed file
with
6243 addition
and
2830 deletion
+6243
-2830
cmake/cmake.define
cmake/cmake.define
+0
-19
include/util/taoserror.h
include/util/taoserror.h
+1
-0
source/client/src/clientSml.c
source/client/src/clientSml.c
+6
-6
source/client/test/smlTest.cpp
source/client/test/smlTest.cpp
+11
-11
source/common/src/tmsg.c
source/common/src/tmsg.c
+0
-1
source/libs/catalog/src/catalog.c
source/libs/catalog/src/catalog.c
+0
-6
source/libs/executor/inc/executorimpl.h
source/libs/executor/inc/executorimpl.h
+1
-0
source/libs/executor/src/executorimpl.c
source/libs/executor/src/executorimpl.c
+8
-3
source/libs/executor/src/scanoperator.c
source/libs/executor/src/scanoperator.c
+18
-14
source/libs/parser/inc/sql.y
source/libs/parser/inc/sql.y
+1
-1
source/libs/parser/src/parInsert.c
source/libs/parser/src/parInsert.c
+21
-24
source/libs/parser/src/parInsertData.c
source/libs/parser/src/parInsertData.c
+1
-3
source/libs/parser/src/parTranslater.c
source/libs/parser/src/parTranslater.c
+158
-12
source/libs/parser/src/parUtil.c
source/libs/parser/src/parUtil.c
+2
-0
source/libs/parser/src/sql.c
source/libs/parser/src/sql.c
+1
-1
source/libs/parser/test/parInitialATest.cpp
source/libs/parser/test/parInitialATest.cpp
+135
-15
source/libs/planner/src/planLogicCreater.c
source/libs/planner/src/planLogicCreater.c
+2
-0
source/libs/scheduler/src/scheduler.c
source/libs/scheduler/src/scheduler.c
+27
-0
tests/script/tsim/tmq/basic1.sim
tests/script/tsim/tmq/basic1.sim
+288
-278
tests/script/tsim/tmq/basic1Of2Cons.sim
tests/script/tsim/tmq/basic1Of2Cons.sim
+382
-372
tests/script/tsim/tmq/basic2.sim
tests/script/tsim/tmq/basic2.sim
+229
-219
tests/script/tsim/tmq/basic2Of2Cons.sim
tests/script/tsim/tmq/basic2Of2Cons.sim
+318
-309
tests/script/tsim/tmq/basic2Of2ConsOverlap.sim
tests/script/tsim/tmq/basic2Of2ConsOverlap.sim
+17
-8
tests/script/tsim/tmq/basic3.sim
tests/script/tsim/tmq/basic3.sim
+288
-278
tests/script/tsim/tmq/basic3Of2Cons.sim
tests/script/tsim/tmq/basic3Of2Cons.sim
+393
-384
tests/script/tsim/tmq/basic4.sim
tests/script/tsim/tmq/basic4.sim
+226
-216
tests/script/tsim/tmq/basic4Of2Cons.sim
tests/script/tsim/tmq/basic4Of2Cons.sim
+328
-319
tests/script/tsim/tmq/prepareBasicEnv-1vgrp.sim
tests/script/tsim/tmq/prepareBasicEnv-1vgrp.sim
+88
-88
tests/script/tsim/tmq/prepareBasicEnv-4vgrp.sim
tests/script/tsim/tmq/prepareBasicEnv-4vgrp.sim
+88
-88
tests/system-test/2-query/nestedQuery.py
tests/system-test/2-query/nestedQuery.py
+2284
-0
tests/system-test/2-query/query_cols_tags_and_or.py
tests/system-test/2-query/query_cols_tags_and_or.py
+27
-15
tests/system-test/2-query/union.py
tests/system-test/2-query/union.py
+412
-0
tests/system-test/7-tmq/basic5.py
tests/system-test/7-tmq/basic5.py
+29
-23
tests/system-test/7-tmq/subscribeDb.py
tests/system-test/7-tmq/subscribeDb.py
+421
-94
tests/system-test/fulltest.sh
tests/system-test/fulltest.sh
+2
-1
tests/test/c/tmqSim.c
tests/test/c/tmqSim.c
+30
-22
未找到文件。
cmake/cmake.define
浏览文件 @
74f81375
...
@@ -14,25 +14,6 @@ MESSAGE(STATUS "Project binary files output path: " ${PROJECT_BINARY_DIR})
...
@@ -14,25 +14,6 @@ MESSAGE(STATUS "Project binary files output path: " ${PROJECT_BINARY_DIR})
MESSAGE(STATUS "Project executable files output path: " ${EXECUTABLE_OUTPUT_PATH})
MESSAGE(STATUS "Project executable files output path: " ${EXECUTABLE_OUTPUT_PATH})
MESSAGE(STATUS "Project library files output path: " ${LIBRARY_OUTPUT_PATH})
MESSAGE(STATUS "Project library files output path: " ${LIBRARY_OUTPUT_PATH})
find_package(Git QUIET)
if(GIT_FOUND AND EXISTS "${TD_SOURCE_DIR}/.git")
# Update submodules as needed
option(GIT_SUBMODULE "Check submodules during build" ON)
if(GIT_SUBMODULE)
message(STATUS "Submodule update")
execute_process(COMMAND cd ${TD_SOURCE_DIR} && ${GIT_EXECUTABLE} submodule update --init --recursive
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
RESULT_VARIABLE GIT_SUBMOD_RESULT)
if(NOT GIT_SUBMOD_RESULT EQUAL "0")
message(WARNING "git submodule update --init --recursive failed with ${GIT_SUBMOD_RESULT}, please checkout submodules")
endif()
endif()
endif()
if(NOT EXISTS "${TD_SOURCE_DIR}/tools/taos-tools/CMakeLists.txt")
message(WARNING "The submodules were not downloaded! GIT_SUBMODULE was turned off or failed. Please update submodules manually if you need build them.")
endif()
if (NOT DEFINED TD_GRANT)
if (NOT DEFINED TD_GRANT)
SET(TD_GRANT FALSE)
SET(TD_GRANT FALSE)
endif()
endif()
...
...
include/util/taoserror.h
浏览文件 @
74f81375
...
@@ -642,6 +642,7 @@ int32_t* taosGetErrno();
...
@@ -642,6 +642,7 @@ int32_t* taosGetErrno();
#define TSDB_CODE_PAR_INVALID_INTERNAL_PK TAOS_DEF_ERROR_CODE(0, 0x2646)
#define TSDB_CODE_PAR_INVALID_INTERNAL_PK TAOS_DEF_ERROR_CODE(0, 0x2646)
#define TSDB_CODE_PAR_INVALID_TIMELINE_FUNC TAOS_DEF_ERROR_CODE(0, 0x2647)
#define TSDB_CODE_PAR_INVALID_TIMELINE_FUNC TAOS_DEF_ERROR_CODE(0, 0x2647)
#define TSDB_CODE_PAR_INVALID_PASSWD TAOS_DEF_ERROR_CODE(0, 0x2648)
#define TSDB_CODE_PAR_INVALID_PASSWD TAOS_DEF_ERROR_CODE(0, 0x2648)
#define TSDB_CODE_PAR_INVALID_ALTER_TABLE TAOS_DEF_ERROR_CODE(0, 0x2649)
//planner
//planner
#define TSDB_CODE_PLAN_INTERNAL_ERROR TAOS_DEF_ERROR_CODE(0, 0x2700)
#define TSDB_CODE_PLAN_INTERNAL_ERROR TAOS_DEF_ERROR_CODE(0, 0x2700)
...
...
source/client/src/clientSml.c
浏览文件 @
74f81375
...
@@ -1007,8 +1007,6 @@ static int32_t smlParseTelnetTags(const char* data, SArray *cols, SHashObj *dump
...
@@ -1007,8 +1007,6 @@ static int32_t smlParseTelnetTags(const char* data, SArray *cols, SHashObj *dump
while
(
*
sql
!=
'\0'
)
{
while
(
*
sql
!=
'\0'
)
{
// parse value
// parse value
if
(
*
sql
==
SPACE
)
{
if
(
*
sql
==
SPACE
)
{
valueLen
=
sql
-
value
;
sql
++
;
break
;
break
;
}
}
if
(
*
sql
==
EQUAL
)
{
if
(
*
sql
==
EQUAL
)
{
...
@@ -1017,9 +1015,7 @@ static int32_t smlParseTelnetTags(const char* data, SArray *cols, SHashObj *dump
...
@@ -1017,9 +1015,7 @@ static int32_t smlParseTelnetTags(const char* data, SArray *cols, SHashObj *dump
}
}
sql
++
;
sql
++
;
}
}
if
(
valueLen
==
0
){
valueLen
=
sql
-
value
;
valueLen
=
sql
-
value
;
}
if
(
valueLen
==
0
){
if
(
valueLen
==
0
){
smlBuildInvalidDataMsg
(
msg
,
"invalid value"
,
value
);
smlBuildInvalidDataMsg
(
msg
,
"invalid value"
,
value
);
...
@@ -1365,7 +1361,7 @@ static void smlDestroySTableMeta(SSmlSTableMeta *meta){
...
@@ -1365,7 +1361,7 @@ static void smlDestroySTableMeta(SSmlSTableMeta *meta){
static
void
smlDestroyCols
(
SArray
*
cols
)
{
static
void
smlDestroyCols
(
SArray
*
cols
)
{
if
(
!
cols
)
return
;
if
(
!
cols
)
return
;
for
(
int
i
=
0
;
i
<
taosArrayGetSize
(
cols
);
++
i
)
{
for
(
int
i
=
0
;
i
<
taosArrayGetSize
(
cols
);
++
i
)
{
void
*
kv
=
taosArrayGet
(
cols
,
i
);
void
*
kv
=
taosArrayGet
P
(
cols
,
i
);
taosMemoryFree
(
kv
);
taosMemoryFree
(
kv
);
}
}
}
}
...
@@ -2077,12 +2073,16 @@ static int32_t smlParseTelnetLine(SSmlHandle* info, void *data) {
...
@@ -2077,12 +2073,16 @@ static int32_t smlParseTelnetLine(SSmlHandle* info, void *data) {
if
(
ret
!=
TSDB_CODE_SUCCESS
){
if
(
ret
!=
TSDB_CODE_SUCCESS
){
uError
(
"SML:0x%"
PRIx64
" smlParseTelnetLine failed"
,
info
->
id
);
uError
(
"SML:0x%"
PRIx64
" smlParseTelnetLine failed"
,
info
->
id
);
smlDestroyTableInfo
(
info
,
tinfo
);
smlDestroyTableInfo
(
info
,
tinfo
);
smlDestroyCols
(
cols
);
taosArrayDestroy
(
cols
);
taosArrayDestroy
(
cols
);
return
ret
;
return
ret
;
}
}
if
(
taosArrayGetSize
(
tinfo
->
tags
)
<=
0
||
taosArrayGetSize
(
tinfo
->
tags
)
>
TSDB_MAX_TAGS
){
if
(
taosArrayGetSize
(
tinfo
->
tags
)
<=
0
||
taosArrayGetSize
(
tinfo
->
tags
)
>
TSDB_MAX_TAGS
){
smlBuildInvalidDataMsg
(
&
info
->
msgBuf
,
"invalidate tags length:[1,128]"
,
NULL
);
smlBuildInvalidDataMsg
(
&
info
->
msgBuf
,
"invalidate tags length:[1,128]"
,
NULL
);
smlDestroyTableInfo
(
info
,
tinfo
);
smlDestroyCols
(
cols
);
taosArrayDestroy
(
cols
);
return
TSDB_CODE_SML_INVALID_DATA
;
return
TSDB_CODE_SML_INVALID_DATA
;
}
}
taosHashClear
(
info
->
dumplicateKey
);
taosHashClear
(
info
->
dumplicateKey
);
...
...
source/client/test/smlTest.cpp
浏览文件 @
74f81375
...
@@ -516,8 +516,8 @@ TEST(testCase, smlProcess_influx_Test) {
...
@@ -516,8 +516,8 @@ TEST(testCase, smlProcess_influx_Test) {
int
ret
=
smlProcess
(
info
,
(
char
**
)
sql
,
sizeof
(
sql
)
/
sizeof
(
sql
[
0
]));
int
ret
=
smlProcess
(
info
,
(
char
**
)
sql
,
sizeof
(
sql
)
/
sizeof
(
sql
[
0
]));
ASSERT_EQ
(
ret
,
0
);
ASSERT_EQ
(
ret
,
0
);
TAOS_RES
*
res
=
taos_query
(
taos
,
"select * from t_6885c584b98481584ee13dac399e173d"
);
//
TAOS_RES *res = taos_query(taos, "select * from t_6885c584b98481584ee13dac399e173d");
ASSERT_NE
(
res
,
nullptr
);
//
ASSERT_NE(res, nullptr);
// int fieldNum = taos_field_count(res);
// int fieldNum = taos_field_count(res);
// ASSERT_EQ(fieldNum, 5);
// ASSERT_EQ(fieldNum, 5);
// int rowNum = taos_affected_rows(res);
// int rowNum = taos_affected_rows(res);
...
@@ -525,7 +525,7 @@ TEST(testCase, smlProcess_influx_Test) {
...
@@ -525,7 +525,7 @@ TEST(testCase, smlProcess_influx_Test) {
// for (int i = 0; i < rowNum; ++i) {
// for (int i = 0; i < rowNum; ++i) {
// TAOS_ROW rows = taos_fetch_row(res);
// TAOS_ROW rows = taos_fetch_row(res);
// }
// }
taos_free_result
(
res
);
//
taos_free_result(res);
destroyRequest
(
request
);
destroyRequest
(
request
);
smlDestroyInfo
(
info
);
smlDestroyInfo
(
info
);
}
}
...
@@ -605,8 +605,8 @@ TEST(testCase, smlProcess_telnet_Test) {
...
@@ -605,8 +605,8 @@ TEST(testCase, smlProcess_telnet_Test) {
int
ret
=
smlProcess
(
info
,
(
char
**
)
sql
,
sizeof
(
sql
)
/
sizeof
(
sql
[
0
]));
int
ret
=
smlProcess
(
info
,
(
char
**
)
sql
,
sizeof
(
sql
)
/
sizeof
(
sql
[
0
]));
ASSERT_EQ
(
ret
,
0
);
ASSERT_EQ
(
ret
,
0
);
TAOS_RES
*
res
=
taos_query
(
taos
,
"select * from t_8c30283b3c4131a071d1e16cf6d7094a"
);
//
TAOS_RES *res = taos_query(taos, "select * from t_8c30283b3c4131a071d1e16cf6d7094a");
ASSERT_NE
(
res
,
nullptr
);
//
ASSERT_NE(res, nullptr);
// int fieldNum = taos_field_count(res);
// int fieldNum = taos_field_count(res);
// ASSERT_EQ(fieldNum, 2);
// ASSERT_EQ(fieldNum, 2);
// int rowNum = taos_affected_rows(res);
// int rowNum = taos_affected_rows(res);
...
@@ -614,7 +614,7 @@ TEST(testCase, smlProcess_telnet_Test) {
...
@@ -614,7 +614,7 @@ TEST(testCase, smlProcess_telnet_Test) {
// for (int i = 0; i < rowNum; ++i) {
// for (int i = 0; i < rowNum; ++i) {
// TAOS_ROW rows = taos_fetch_row(res);
// TAOS_ROW rows = taos_fetch_row(res);
// }
// }
taos_free_result
(
res
);
//
taos_free_result(res);
// res = taos_query(taos, "select * from t_6931529054e5637ca92c78a1ad441961");
// res = taos_query(taos, "select * from t_6931529054e5637ca92c78a1ad441961");
// ASSERT_NE(res, nullptr);
// ASSERT_NE(res, nullptr);
...
@@ -670,16 +670,16 @@ TEST(testCase, smlProcess_json1_Test) {
...
@@ -670,16 +670,16 @@ TEST(testCase, smlProcess_json1_Test) {
int
ret
=
smlProcess
(
info
,
(
char
**
)(
&
sql
),
-
1
);
int
ret
=
smlProcess
(
info
,
(
char
**
)(
&
sql
),
-
1
);
ASSERT_EQ
(
ret
,
0
);
ASSERT_EQ
(
ret
,
0
);
TAOS_RES
*
res
=
taos_query
(
taos
,
"select * from t_cb27a7198d637b4f1c6464bd73f756a7"
);
//
TAOS_RES *res = taos_query(taos, "select * from t_cb27a7198d637b4f1c6464bd73f756a7");
ASSERT_NE
(
res
,
nullptr
);
//
ASSERT_NE(res, nullptr);
int
fieldNum
=
taos_field_count
(
res
);
//
int fieldNum = taos_field_count(res);
ASSERT_EQ
(
fieldNum
,
2
);
//
ASSERT_EQ(fieldNum, 2);
// int rowNum = taos_affected_rows(res);
// int rowNum = taos_affected_rows(res);
// ASSERT_EQ(rowNum, 1);
// ASSERT_EQ(rowNum, 1);
// for (int i = 0; i < rowNum; ++i) {
// for (int i = 0; i < rowNum; ++i) {
// TAOS_ROW rows = taos_fetch_row(res);
// TAOS_ROW rows = taos_fetch_row(res);
// }
// }
taos_free_result
(
res
);
//
taos_free_result(res);
destroyRequest
(
request
);
destroyRequest
(
request
);
smlDestroyInfo
(
info
);
smlDestroyInfo
(
info
);
}
}
...
...
source/common/src/tmsg.c
浏览文件 @
74f81375
...
@@ -4217,7 +4217,6 @@ int32_t tDecodeSVAlterTbReq(SDecoder *pDecoder, SVAlterTbReq *pReq) {
...
@@ -4217,7 +4217,6 @@ int32_t tDecodeSVAlterTbReq(SDecoder *pDecoder, SVAlterTbReq *pReq) {
if
(
tDecodeCStr
(
pDecoder
,
&
pReq
->
tbName
)
<
0
)
return
-
1
;
if
(
tDecodeCStr
(
pDecoder
,
&
pReq
->
tbName
)
<
0
)
return
-
1
;
if
(
tDecodeI8
(
pDecoder
,
&
pReq
->
action
)
<
0
)
return
-
1
;
if
(
tDecodeI8
(
pDecoder
,
&
pReq
->
action
)
<
0
)
return
-
1
;
if
(
tDecodeCStr
(
pDecoder
,
&
pReq
->
colName
)
<
0
)
return
-
1
;
switch
(
pReq
->
action
)
{
switch
(
pReq
->
action
)
{
case
TSDB_ALTER_TABLE_ADD_COLUMN
:
case
TSDB_ALTER_TABLE_ADD_COLUMN
:
if
(
tDecodeCStr
(
pDecoder
,
&
pReq
->
colName
)
<
0
)
return
-
1
;
if
(
tDecodeCStr
(
pDecoder
,
&
pReq
->
colName
)
<
0
)
return
-
1
;
...
...
source/libs/catalog/src/catalog.c
浏览文件 @
74f81375
...
@@ -2576,12 +2576,6 @@ int32_t catalogGetHandle(uint64_t clusterId, SCatalog** catalogHandle) {
...
@@ -2576,12 +2576,6 @@ int32_t catalogGetHandle(uint64_t clusterId, SCatalog** catalogHandle) {
CTG_ERR_JRET
(
TSDB_CODE_CTG_MEM_ERROR
);
CTG_ERR_JRET
(
TSDB_CODE_CTG_MEM_ERROR
);
}
}
SHashObj
*
metaCache
=
taosHashInit
(
gCtgMgmt
.
cfg
.
maxTblCacheNum
,
taosGetDefaultHashFunction
(
TSDB_DATA_TYPE_BINARY
),
true
,
HASH_ENTRY_LOCK
);
if
(
NULL
==
metaCache
)
{
qError
(
"taosHashInit failed, num:%d"
,
gCtgMgmt
.
cfg
.
maxTblCacheNum
);
CTG_ERR_RET
(
TSDB_CODE_CTG_MEM_ERROR
);
}
code
=
taosHashPut
(
gCtgMgmt
.
pCluster
,
&
clusterId
,
sizeof
(
clusterId
),
&
clusterCtg
,
POINTER_BYTES
);
code
=
taosHashPut
(
gCtgMgmt
.
pCluster
,
&
clusterId
,
sizeof
(
clusterId
),
&
clusterCtg
,
POINTER_BYTES
);
if
(
code
)
{
if
(
code
)
{
if
(
HASH_NODE_EXIST
(
code
))
{
if
(
HASH_NODE_EXIST
(
code
))
{
...
...
source/libs/executor/inc/executorimpl.h
浏览文件 @
74f81375
...
@@ -658,6 +658,7 @@ void initExecTimeWindowInfo(SColumnInfoData* pColData, STimeWindow* pQueryWin
...
@@ -658,6 +658,7 @@ void initExecTimeWindowInfo(SColumnInfoData* pColData, STimeWindow* pQueryWin
void
cleanupAggSup
(
SAggSupporter
*
pAggSup
);
void
cleanupAggSup
(
SAggSupporter
*
pAggSup
);
void
destroyBasicOperatorInfo
(
void
*
param
,
int32_t
numOfOutput
);
void
destroyBasicOperatorInfo
(
void
*
param
,
int32_t
numOfOutput
);
void
appendOneRowToDataBlock
(
SSDataBlock
*
pBlock
,
STupleHandle
*
pTupleHandle
);
void
appendOneRowToDataBlock
(
SSDataBlock
*
pBlock
,
STupleHandle
*
pTupleHandle
);
void
setTbNameColData
(
void
*
pMeta
,
const
SSDataBlock
*
pBlock
,
SColumnInfoData
*
pColInfoData
,
int32_t
functionId
);
SInterval
extractIntervalInfo
(
const
STableScanPhysiNode
*
pTableScanNode
);
SInterval
extractIntervalInfo
(
const
STableScanPhysiNode
*
pTableScanNode
);
SColumn
extractColumnFromColumnNode
(
SColumnNode
*
pColNode
);
SColumn
extractColumnFromColumnNode
(
SColumnNode
*
pColNode
);
...
...
source/libs/executor/src/executorimpl.c
浏览文件 @
74f81375
...
@@ -2055,6 +2055,11 @@ void extractQualifiedTupleByFilterResult(SSDataBlock* pBlock, const int8_t* rowR
...
@@ -2055,6 +2055,11 @@ void extractQualifiedTupleByFilterResult(SSDataBlock* pBlock, const int8_t* rowR
SColumnInfoData
*
pDst
=
taosArrayGet
(
px
->
pDataBlock
,
i
);
SColumnInfoData
*
pDst
=
taosArrayGet
(
px
->
pDataBlock
,
i
);
SColumnInfoData
*
pSrc
=
taosArrayGet
(
pBlock
->
pDataBlock
,
i
);
SColumnInfoData
*
pSrc
=
taosArrayGet
(
pBlock
->
pDataBlock
,
i
);
// it is a reserved column for scalar function, and no data in this column yet.
if
(
pSrc
->
pData
==
NULL
)
{
continue
;
}
int32_t
numOfRows
=
0
;
int32_t
numOfRows
=
0
;
for
(
int32_t
j
=
0
;
j
<
totalRows
;
++
j
)
{
for
(
int32_t
j
=
0
;
j
<
totalRows
;
++
j
)
{
if
(
rowRes
[
j
]
==
0
)
{
if
(
rowRes
[
j
]
==
0
)
{
...
@@ -4372,9 +4377,9 @@ SOperatorInfo* createProjectOperatorInfo(SOperatorInfo* downstream, SExprInfo* p
...
@@ -4372,9 +4377,9 @@ SOperatorInfo* createProjectOperatorInfo(SOperatorInfo* downstream, SExprInfo* p
goto
_error
;
goto
_error
;
}
}
pInfo
->
limit
=
*
pLimit
;
pInfo
->
limit
=
*
pLimit
;
pInfo
->
slimit
=
*
pSlimit
;
pInfo
->
slimit
=
*
pSlimit
;
pInfo
->
curOffset
=
pLimit
->
offset
;
pInfo
->
curOffset
=
pLimit
->
offset
;
pInfo
->
curSOffset
=
pSlimit
->
offset
;
pInfo
->
curSOffset
=
pSlimit
->
offset
;
pInfo
->
binfo
.
pRes
=
pResBlock
;
pInfo
->
binfo
.
pRes
=
pResBlock
;
...
...
source/libs/executor/src/scanoperator.c
浏览文件 @
74f81375
...
@@ -291,20 +291,7 @@ void addTagPseudoColumnData(STableScanInfo* pTableScanInfo, SSDataBlock* pBlock)
...
@@ -291,20 +291,7 @@ void addTagPseudoColumnData(STableScanInfo* pTableScanInfo, SSDataBlock* pBlock)
// this is to handle the tbname
// this is to handle the tbname
if
(
fmIsScanPseudoColumnFunc
(
functionId
))
{
if
(
fmIsScanPseudoColumnFunc
(
functionId
))
{
struct
SScalarFuncExecFuncs
fpSet
=
{
0
};
setTbNameColData
(
pTableScanInfo
->
readHandle
.
meta
,
pBlock
,
pColInfoData
,
functionId
);
fmGetScalarFuncExecFuncs
(
functionId
,
&
fpSet
);
SColumnInfoData
infoData
=
{
0
};
infoData
.
info
.
type
=
TSDB_DATA_TYPE_BIGINT
;
infoData
.
info
.
bytes
=
sizeof
(
uint64_t
);
colInfoDataEnsureCapacity
(
&
infoData
,
0
,
1
);
colDataAppendInt64
(
&
infoData
,
0
,
&
pBlock
->
info
.
uid
);
SScalarParam
srcParam
=
{
.
numOfRows
=
pBlock
->
info
.
rows
,
.
param
=
pTableScanInfo
->
readHandle
.
meta
,
.
columnData
=
&
infoData
};
SScalarParam
param
=
{.
columnData
=
pColInfoData
};
fpSet
.
process
(
&
srcParam
,
1
,
&
param
);
}
else
{
// these are tags
}
else
{
// these are tags
const
char
*
p
=
metaGetTableTagVal
(
&
mr
.
me
,
pExpr
->
base
.
pParam
[
0
].
pCol
->
colId
);
const
char
*
p
=
metaGetTableTagVal
(
&
mr
.
me
,
pExpr
->
base
.
pParam
[
0
].
pCol
->
colId
);
for
(
int32_t
i
=
0
;
i
<
pBlock
->
info
.
rows
;
++
i
)
{
for
(
int32_t
i
=
0
;
i
<
pBlock
->
info
.
rows
;
++
i
)
{
...
@@ -316,6 +303,23 @@ void addTagPseudoColumnData(STableScanInfo* pTableScanInfo, SSDataBlock* pBlock)
...
@@ -316,6 +303,23 @@ void addTagPseudoColumnData(STableScanInfo* pTableScanInfo, SSDataBlock* pBlock)
metaReaderClear
(
&
mr
);
metaReaderClear
(
&
mr
);
}
}
void
setTbNameColData
(
void
*
pMeta
,
const
SSDataBlock
*
pBlock
,
SColumnInfoData
*
pColInfoData
,
int32_t
functionId
)
{
struct
SScalarFuncExecFuncs
fpSet
=
{
0
};
fmGetScalarFuncExecFuncs
(
functionId
,
&
fpSet
);
SColumnInfoData
infoData
=
{
0
};
infoData
.
info
.
type
=
TSDB_DATA_TYPE_BIGINT
;
infoData
.
info
.
bytes
=
sizeof
(
uint64_t
);
colInfoDataEnsureCapacity
(
&
infoData
,
0
,
1
);
colDataAppendInt64
(
&
infoData
,
0
,
(
int64_t
*
)
&
pBlock
->
info
.
uid
);
SScalarParam
srcParam
=
{
.
numOfRows
=
pBlock
->
info
.
rows
,
.
param
=
pMeta
,
.
columnData
=
&
infoData
};
SScalarParam
param
=
{.
columnData
=
pColInfoData
};
fpSet
.
process
(
&
srcParam
,
1
,
&
param
);
}
static
SSDataBlock
*
doTableScanImpl
(
SOperatorInfo
*
pOperator
)
{
static
SSDataBlock
*
doTableScanImpl
(
SOperatorInfo
*
pOperator
)
{
STableScanInfo
*
pTableScanInfo
=
pOperator
->
info
;
STableScanInfo
*
pTableScanInfo
=
pOperator
->
info
;
SSDataBlock
*
pBlock
=
pTableScanInfo
->
pResBlock
;
SSDataBlock
*
pBlock
=
pTableScanInfo
->
pResBlock
;
...
...
source/libs/parser/inc/sql.y
浏览文件 @
74f81375
...
@@ -241,7 +241,7 @@ alter_table_clause(A) ::=
...
@@ -241,7 +241,7 @@ alter_table_clause(A) ::=
alter_table_clause(A) ::=
alter_table_clause(A) ::=
full_table_name(B) RENAME TAG column_name(C) column_name(D). { A = createAlterTableRenameCol(pCxt, B, TSDB_ALTER_TABLE_UPDATE_TAG_NAME, &C, &D); }
full_table_name(B) RENAME TAG column_name(C) column_name(D). { A = createAlterTableRenameCol(pCxt, B, TSDB_ALTER_TABLE_UPDATE_TAG_NAME, &C, &D); }
alter_table_clause(A) ::=
alter_table_clause(A) ::=
full_table_name(B) SET TAG column_name(C) NK_EQ literal(D). { A = createAlterTableSetTag(pCxt, B, &C,
D
); }
full_table_name(B) SET TAG column_name(C) NK_EQ literal(D). { A = createAlterTableSetTag(pCxt, B, &C,
releaseRawExprNode(pCxt, D)
); }
%type multi_create_clause { SNodeList* }
%type multi_create_clause { SNodeList* }
%destructor multi_create_clause { nodesDestroyList($$); }
%destructor multi_create_clause { nodesDestroyList($$); }
...
...
source/libs/parser/src/parInsert.c
浏览文件 @
74f81375
...
@@ -1041,18 +1041,6 @@ static void destroyInsertParseContextForTable(SInsertParseContext* pCxt) {
...
@@ -1041,18 +1041,6 @@ static void destroyInsertParseContextForTable(SInsertParseContext* pCxt) {
destroyCreateSubTbReq
(
&
pCxt
->
createTblReq
);
destroyCreateSubTbReq
(
&
pCxt
->
createTblReq
);
}
}
static
void
destroyDataBlock
(
STableDataBlocks
*
pDataBlock
)
{
if
(
pDataBlock
==
NULL
)
{
return
;
}
taosMemoryFreeClear
(
pDataBlock
->
pData
);
if
(
!
pDataBlock
->
cloned
)
{
destroyBoundColumnInfo
(
&
pDataBlock
->
boundColumnInfo
);
}
taosMemoryFreeClear
(
pDataBlock
);
}
static
void
destroyInsertParseContext
(
SInsertParseContext
*
pCxt
)
{
static
void
destroyInsertParseContext
(
SInsertParseContext
*
pCxt
)
{
destroyInsertParseContextForTable
(
pCxt
);
destroyInsertParseContextForTable
(
pCxt
);
taosHashCleanup
(
pCxt
->
pVgroupsHashObj
);
taosHashCleanup
(
pCxt
->
pVgroupsHashObj
);
...
@@ -1301,6 +1289,7 @@ int32_t qBuildStmtOutput(SQuery* pQuery, SHashObj* pVgHash, SHashObj* pBlockHash
...
@@ -1301,6 +1289,7 @@ int32_t qBuildStmtOutput(SQuery* pQuery, SHashObj* pVgHash, SHashObj* pBlockHash
CHECK_CODE
(
buildOutput
(
&
insertCtx
));
CHECK_CODE
(
buildOutput
(
&
insertCtx
));
destroyBlockArrayList
(
insertCtx
.
pVgDataBlocks
);
return
TSDB_CODE_SUCCESS
;
return
TSDB_CODE_SUCCESS
;
}
}
...
@@ -1580,16 +1569,25 @@ int32_t qBuildStmtColFields(void* pBlock, int32_t* fieldNum, TAOS_FIELD** fields
...
@@ -1580,16 +1569,25 @@ int32_t qBuildStmtColFields(void* pBlock, int32_t* fieldNum, TAOS_FIELD** fields
// schemaless logic start
// schemaless logic start
typedef
struct
SmlExecHandle
{
typedef
struct
SmlExecTableHandle
{
SHashObj
*
pBlockHash
;
SParsedDataColInfo
tags
;
// each table
SParsedDataColInfo
tags
;
// each table
SKVRowBuilder
tagsBuilder
;
// each table
SKVRowBuilder
tagsBuilder
;
// each table
SVCreateTbReq
createTblReq
;
// each table
SVCreateTbReq
createTblReq
;
// each table
}
SmlExecTableHandle
;
SQuery
*
pQuery
;
typedef
struct
SmlExecHandle
{
SHashObj
*
pBlockHash
;
SmlExecTableHandle
tableExecHandle
;
SQuery
*
pQuery
;
}
SSmlExecHandle
;
}
SSmlExecHandle
;
static
void
smlDestroyTableHandle
(
void
*
pHandle
)
{
SmlExecTableHandle
*
handle
=
(
SmlExecTableHandle
*
)
pHandle
;
tdDestroyKVRowBuilder
(
&
handle
->
tagsBuilder
);
destroyBoundColumnInfo
(
&
handle
->
tags
);
destroyCreateSubTbReq
(
&
handle
->
createTblReq
);
}
static
int32_t
smlBoundColumnData
(
SArray
*
cols
,
SParsedDataColInfo
*
pColList
,
SSchema
*
pSchema
)
{
static
int32_t
smlBoundColumnData
(
SArray
*
cols
,
SParsedDataColInfo
*
pColList
,
SSchema
*
pSchema
)
{
col_id_t
nCols
=
pColList
->
numOfCols
;
col_id_t
nCols
=
pColList
->
numOfCols
;
...
@@ -1692,25 +1690,26 @@ int32_t smlBindData(void *handle, SArray *tags, SArray *colsSchema, SArray *cols
...
@@ -1692,25 +1690,26 @@ int32_t smlBindData(void *handle, SArray *tags, SArray *colsSchema, SArray *cols
SMsgBuf
pBuf
=
{.
buf
=
msgBuf
,
.
len
=
msgBufLen
};
SMsgBuf
pBuf
=
{.
buf
=
msgBuf
,
.
len
=
msgBufLen
};
SSmlExecHandle
*
smlHandle
=
(
SSmlExecHandle
*
)
handle
;
SSmlExecHandle
*
smlHandle
=
(
SSmlExecHandle
*
)
handle
;
smlDestroyTableHandle
(
&
smlHandle
->
tableExecHandle
);
// free for each table
SSchema
*
pTagsSchema
=
getTableTagSchema
(
pTableMeta
);
SSchema
*
pTagsSchema
=
getTableTagSchema
(
pTableMeta
);
setBoundColumnInfo
(
&
smlHandle
->
tags
,
pTagsSchema
,
getNumOfTags
(
pTableMeta
));
setBoundColumnInfo
(
&
smlHandle
->
ta
bleExecHandle
.
ta
gs
,
pTagsSchema
,
getNumOfTags
(
pTableMeta
));
int
ret
=
smlBoundColumnData
(
tags
,
&
smlHandle
->
tags
,
pTagsSchema
);
int
ret
=
smlBoundColumnData
(
tags
,
&
smlHandle
->
ta
bleExecHandle
.
ta
gs
,
pTagsSchema
);
if
(
ret
!=
TSDB_CODE_SUCCESS
)
{
if
(
ret
!=
TSDB_CODE_SUCCESS
)
{
buildInvalidOperationMsg
(
&
pBuf
,
"bound tags error"
);
buildInvalidOperationMsg
(
&
pBuf
,
"bound tags error"
);
return
ret
;
return
ret
;
}
}
SKVRow
row
=
NULL
;
SKVRow
row
=
NULL
;
ret
=
smlBuildTagRow
(
tags
,
&
smlHandle
->
ta
gsBuilder
,
&
smlHandle
->
tags
,
pTagsSchema
,
&
row
,
&
pBuf
);
ret
=
smlBuildTagRow
(
tags
,
&
smlHandle
->
ta
bleExecHandle
.
tagsBuilder
,
&
smlHandle
->
tableExecHandle
.
tags
,
pTagsSchema
,
&
row
,
&
pBuf
);
if
(
ret
!=
TSDB_CODE_SUCCESS
)
{
if
(
ret
!=
TSDB_CODE_SUCCESS
)
{
return
ret
;
return
ret
;
}
}
buildCreateTbReq
(
&
smlHandle
->
createTblReq
,
tableName
,
row
,
pTableMeta
->
suid
);
buildCreateTbReq
(
&
smlHandle
->
tableExecHandle
.
createTblReq
,
tableName
,
row
,
pTableMeta
->
suid
);
STableDataBlocks
*
pDataBlock
=
NULL
;
STableDataBlocks
*
pDataBlock
=
NULL
;
ret
=
getDataBlockFromList
(
smlHandle
->
pBlockHash
,
&
pTableMeta
->
uid
,
sizeof
(
pTableMeta
->
uid
),
ret
=
getDataBlockFromList
(
smlHandle
->
pBlockHash
,
&
pTableMeta
->
uid
,
sizeof
(
pTableMeta
->
uid
),
TSDB_DEFAULT_PAYLOAD_SIZE
,
sizeof
(
SSubmitBlk
),
getTableInfo
(
pTableMeta
).
rowSize
,
TSDB_DEFAULT_PAYLOAD_SIZE
,
sizeof
(
SSubmitBlk
),
getTableInfo
(
pTableMeta
).
rowSize
,
pTableMeta
,
&
pDataBlock
,
NULL
,
&
smlHandle
->
createTblReq
);
pTableMeta
,
&
pDataBlock
,
NULL
,
&
smlHandle
->
tableExecHandle
.
createTblReq
);
if
(
ret
!=
TSDB_CODE_SUCCESS
)
{
if
(
ret
!=
TSDB_CODE_SUCCESS
)
{
buildInvalidOperationMsg
(
&
pBuf
,
"create data block error"
);
buildInvalidOperationMsg
(
&
pBuf
,
"create data block error"
);
return
ret
;
return
ret
;
...
@@ -1826,9 +1825,7 @@ void smlDestroyHandle(void* pHandle) {
...
@@ -1826,9 +1825,7 @@ void smlDestroyHandle(void* pHandle) {
if
(
!
pHandle
)
return
;
if
(
!
pHandle
)
return
;
SSmlExecHandle
*
handle
=
(
SSmlExecHandle
*
)
pHandle
;
SSmlExecHandle
*
handle
=
(
SSmlExecHandle
*
)
pHandle
;
destroyBlockHashmap
(
handle
->
pBlockHash
);
destroyBlockHashmap
(
handle
->
pBlockHash
);
tdDestroyKVRowBuilder
(
&
handle
->
tagsBuilder
);
smlDestroyTableHandle
(
&
handle
->
tableExecHandle
);
destroyBoundColumnInfo
(
&
handle
->
tags
);
destroyCreateSubTbReq
(
&
handle
->
createTblReq
);
taosMemoryFree
(
handle
);
taosMemoryFree
(
handle
);
}
}
...
...
source/libs/parser/src/parInsertData.c
浏览文件 @
74f81375
...
@@ -237,9 +237,7 @@ static void destroyDataBlock(STableDataBlocks* pDataBlock) {
...
@@ -237,9 +237,7 @@ static void destroyDataBlock(STableDataBlocks* pDataBlock) {
taosMemoryFreeClear
(
pDataBlock
->
pData
);
taosMemoryFreeClear
(
pDataBlock
->
pData
);
if
(
!
pDataBlock
->
cloned
)
{
if
(
!
pDataBlock
->
cloned
)
{
// free the refcount for metermeta
// free the refcount for metermeta
if
(
pDataBlock
->
pTableMeta
!=
NULL
)
{
taosMemoryFreeClear
(
pDataBlock
->
pTableMeta
);
taosMemoryFreeClear
(
pDataBlock
->
pTableMeta
);
}
destroyBoundColumnInfo
(
&
pDataBlock
->
boundColumnInfo
);
destroyBoundColumnInfo
(
&
pDataBlock
->
boundColumnInfo
);
}
}
...
...
source/libs/parser/src/parTranslater.c
浏览文件 @
74f81375
...
@@ -2949,8 +2949,8 @@ static int32_t translateCreateIndex(STranslateContext* pCxt, SCreateIndexStmt* p
...
@@ -2949,8 +2949,8 @@ static int32_t translateCreateIndex(STranslateContext* pCxt, SCreateIndexStmt* p
}
}
static
int32_t
translateDropIndex
(
STranslateContext
*
pCxt
,
SDropIndexStmt
*
pStmt
)
{
static
int32_t
translateDropIndex
(
STranslateContext
*
pCxt
,
SDropIndexStmt
*
pStmt
)
{
SEncoder
encoder
=
{
0
};
SEncoder
encoder
=
{
0
};
int32_t
contLen
=
0
;
int32_t
contLen
=
0
;
SVDropTSmaReq
dropSmaReq
=
{
0
};
SVDropTSmaReq
dropSmaReq
=
{
0
};
strcpy
(
dropSmaReq
.
indexName
,
pStmt
->
indexName
);
strcpy
(
dropSmaReq
.
indexName
,
pStmt
->
indexName
);
...
@@ -2958,7 +2958,7 @@ static int32_t translateDropIndex(STranslateContext* pCxt, SDropIndexStmt* pStmt
...
@@ -2958,7 +2958,7 @@ static int32_t translateDropIndex(STranslateContext* pCxt, SDropIndexStmt* pStmt
if
(
NULL
==
pCxt
->
pCmdMsg
)
{
if
(
NULL
==
pCxt
->
pCmdMsg
)
{
return
TSDB_CODE_OUT_OF_MEMORY
;
return
TSDB_CODE_OUT_OF_MEMORY
;
}
}
int32_t
ret
=
0
;
int32_t
ret
=
0
;
tEncodeSize
(
tEncodeSVDropTSmaReq
,
&
dropSmaReq
,
contLen
,
ret
);
tEncodeSize
(
tEncodeSVDropTSmaReq
,
&
dropSmaReq
,
contLen
,
ret
);
if
(
ret
<
0
)
{
if
(
ret
<
0
)
{
...
@@ -3800,7 +3800,7 @@ static void destroyCreateTbReqBatch(SVgroupCreateTableBatch* pTbBatch) {
...
@@ -3800,7 +3800,7 @@ static void destroyCreateTbReqBatch(SVgroupCreateTableBatch* pTbBatch) {
taosArrayDestroy
(
pTbBatch
->
req
.
pArray
);
taosArrayDestroy
(
pTbBatch
->
req
.
pArray
);
}
}
static
int32_t
rewriteToVnodeModifOpStmt
(
SQuery
*
pQuery
,
SArray
*
pBufArray
)
{
static
int32_t
rewriteToVnodeModif
y
OpStmt
(
SQuery
*
pQuery
,
SArray
*
pBufArray
)
{
SVnodeModifOpStmt
*
pNewStmt
=
nodesMakeNode
(
QUERY_NODE_VNODE_MODIF_STMT
);
SVnodeModifOpStmt
*
pNewStmt
=
nodesMakeNode
(
QUERY_NODE_VNODE_MODIF_STMT
);
if
(
pNewStmt
==
NULL
)
{
if
(
pNewStmt
==
NULL
)
{
return
TSDB_CODE_OUT_OF_MEMORY
;
return
TSDB_CODE_OUT_OF_MEMORY
;
...
@@ -3855,7 +3855,7 @@ static int32_t rewriteCreateTable(STranslateContext* pCxt, SQuery* pQuery) {
...
@@ -3855,7 +3855,7 @@ static int32_t rewriteCreateTable(STranslateContext* pCxt, SQuery* pQuery) {
code
=
buildCreateTableDataBlock
(
pCxt
->
pParseCxt
->
acctId
,
pStmt
,
&
info
,
&
pBufArray
);
code
=
buildCreateTableDataBlock
(
pCxt
->
pParseCxt
->
acctId
,
pStmt
,
&
info
,
&
pBufArray
);
}
}
if
(
TSDB_CODE_SUCCESS
==
code
)
{
if
(
TSDB_CODE_SUCCESS
==
code
)
{
code
=
rewriteToVnodeModifOpStmt
(
pQuery
,
pBufArray
);
code
=
rewriteToVnodeModif
y
OpStmt
(
pQuery
,
pBufArray
);
if
(
TSDB_CODE_SUCCESS
!=
code
)
{
if
(
TSDB_CODE_SUCCESS
!=
code
)
{
destroyCreateTbReqArray
(
pBufArray
);
destroyCreateTbReqArray
(
pBufArray
);
}
}
...
@@ -4111,7 +4111,7 @@ static int32_t rewriteCreateMultiTable(STranslateContext* pCxt, SQuery* pQuery)
...
@@ -4111,7 +4111,7 @@ static int32_t rewriteCreateMultiTable(STranslateContext* pCxt, SQuery* pQuery)
return
TSDB_CODE_OUT_OF_MEMORY
;
return
TSDB_CODE_OUT_OF_MEMORY
;
}
}
return
rewriteToVnodeModifOpStmt
(
pQuery
,
pBufArray
);
return
rewriteToVnodeModif
y
OpStmt
(
pQuery
,
pBufArray
);
}
}
typedef
struct
SVgroupDropTableBatch
{
typedef
struct
SVgroupDropTableBatch
{
...
@@ -4251,14 +4251,162 @@ static int32_t rewriteDropTable(STranslateContext* pCxt, SQuery* pQuery) {
...
@@ -4251,14 +4251,162 @@ static int32_t rewriteDropTable(STranslateContext* pCxt, SQuery* pQuery) {
return
TSDB_CODE_OUT_OF_MEMORY
;
return
TSDB_CODE_OUT_OF_MEMORY
;
}
}
return
rewriteToVnodeModifOpStmt
(
pQuery
,
pBufArray
);
return
rewriteToVnodeModif
y
OpStmt
(
pQuery
,
pBufArray
);
}
}
static
int32_t
rewriteAlterTable
(
STranslateContext
*
pCxt
,
SQuery
*
pQuery
)
{
static
int32_t
buildAlterTbReq
(
STranslateContext
*
pCxt
,
SAlterTableStmt
*
pStmt
,
SVAlterTbReq
*
pReq
)
{
// todo
pReq
->
tbName
=
strdup
(
pStmt
->
tableName
);
if
(
NULL
==
pReq
->
tbName
)
{
return
TSDB_CODE_OUT_OF_MEMORY
;
}
pReq
->
action
=
pStmt
->
alterType
;
switch
(
pStmt
->
alterType
)
{
case
TSDB_ALTER_TABLE_ADD_TAG
:
case
TSDB_ALTER_TABLE_DROP_TAG
:
case
TSDB_ALTER_TABLE_UPDATE_TAG_NAME
:
case
TSDB_ALTER_TABLE_UPDATE_TAG_BYTES
:
return
generateSyntaxErrMsg
(
&
pCxt
->
msgBuf
,
TSDB_CODE_PAR_INVALID_ALTER_TABLE
);
case
TSDB_ALTER_TABLE_UPDATE_TAG_VAL
:
pReq
->
tagName
=
strdup
(
pStmt
->
colName
);
if
(
NULL
==
pReq
->
tagName
)
{
return
TSDB_CODE_OUT_OF_MEMORY
;
}
if
(
DEAL_RES_ERROR
==
translateValue
(
pCxt
,
pStmt
->
pVal
))
{
return
pCxt
->
errCode
;
}
pReq
->
isNull
=
(
TSDB_DATA_TYPE_NULL
==
pStmt
->
pVal
->
node
.
resType
.
type
);
pReq
->
nTagVal
=
pStmt
->
pVal
->
node
.
resType
.
bytes
;
char
*
pVal
=
nodesGetValueFromNode
(
pStmt
->
pVal
);
pReq
->
pTagVal
=
IS_VAR_DATA_TYPE
(
pStmt
->
pVal
->
node
.
resType
.
type
)
?
pVal
+
VARSTR_HEADER_SIZE
:
pVal
;
break
;
case
TSDB_ALTER_TABLE_ADD_COLUMN
:
case
TSDB_ALTER_TABLE_DROP_COLUMN
:
pReq
->
colName
=
strdup
(
pStmt
->
colName
);
if
(
NULL
==
pReq
->
colName
)
{
return
TSDB_CODE_OUT_OF_MEMORY
;
}
pReq
->
type
=
pStmt
->
dataType
.
type
;
pReq
->
flags
=
COL_SMA_ON
;
pReq
->
bytes
=
pStmt
->
dataType
.
bytes
;
break
;
case
TSDB_ALTER_TABLE_UPDATE_COLUMN_BYTES
:
pReq
->
colName
=
strdup
(
pStmt
->
colName
);
if
(
NULL
==
pReq
->
colName
)
{
return
TSDB_CODE_OUT_OF_MEMORY
;
}
pReq
->
colModBytes
=
calcTypeBytes
(
pStmt
->
dataType
);
break
;
case
TSDB_ALTER_TABLE_UPDATE_OPTIONS
:
if
(
-
1
!=
pStmt
->
pOptions
->
ttl
)
{
pReq
->
updateTTL
=
true
;
pReq
->
newTTL
=
pStmt
->
pOptions
->
ttl
;
}
if
(
'\0'
!=
pStmt
->
pOptions
->
comment
[
0
])
{
pReq
->
updateComment
=
true
;
pReq
->
newComment
=
strdup
(
pStmt
->
pOptions
->
comment
);
if
(
NULL
==
pReq
->
newComment
)
{
return
TSDB_CODE_OUT_OF_MEMORY
;
}
}
break
;
case
TSDB_ALTER_TABLE_UPDATE_COLUMN_NAME
:
pReq
->
colName
=
strdup
(
pStmt
->
colName
);
pReq
->
colNewName
=
strdup
(
pStmt
->
newColName
);
if
(
NULL
==
pReq
->
colName
||
NULL
==
pReq
->
colNewName
)
{
return
TSDB_CODE_OUT_OF_MEMORY
;
}
break
;
default:
break
;
}
return
TSDB_CODE_SUCCESS
;
return
TSDB_CODE_SUCCESS
;
}
}
static
int32_t
serializeAlterTbReq
(
STranslateContext
*
pCxt
,
SAlterTableStmt
*
pStmt
,
SVAlterTbReq
*
pReq
,
SArray
*
pArray
)
{
SVgroupInfo
vg
=
{
0
};
int32_t
code
=
getTableHashVgroup
(
pCxt
,
pStmt
->
dbName
,
pStmt
->
tableName
,
&
vg
);
int
tlen
=
0
;
if
(
TSDB_CODE_SUCCESS
==
code
)
{
tEncodeSize
(
tEncodeSVAlterTbReq
,
pReq
,
tlen
,
code
);
}
if
(
TSDB_CODE_SUCCESS
==
code
)
{
tlen
+=
sizeof
(
SMsgHead
);
void
*
pMsg
=
taosMemoryMalloc
(
tlen
);
if
(
NULL
==
pMsg
)
{
return
TSDB_CODE_OUT_OF_MEMORY
;
}
((
SMsgHead
*
)
pMsg
)
->
vgId
=
htonl
(
vg
.
vgId
);
((
SMsgHead
*
)
pMsg
)
->
contLen
=
htonl
(
tlen
);
void
*
pBuf
=
POINTER_SHIFT
(
pMsg
,
sizeof
(
SMsgHead
));
SEncoder
coder
=
{
0
};
tEncoderInit
(
&
coder
,
pBuf
,
tlen
-
sizeof
(
SMsgHead
));
tEncodeSVAlterTbReq
(
&
coder
,
pReq
);
tEncoderClear
(
&
coder
);
SVgDataBlocks
*
pVgData
=
taosMemoryCalloc
(
1
,
sizeof
(
SVgDataBlocks
));
if
(
NULL
==
pVgData
)
{
taosMemoryFree
(
pMsg
);
return
TSDB_CODE_OUT_OF_MEMORY
;
}
pVgData
->
vg
=
vg
;
pVgData
->
pData
=
pMsg
;
pVgData
->
size
=
tlen
;
pVgData
->
numOfTables
=
1
;
taosArrayPush
(
pArray
,
&
pVgData
);
}
return
code
;
}
static
int32_t
buildModifyVnodeArray
(
STranslateContext
*
pCxt
,
SAlterTableStmt
*
pStmt
,
SVAlterTbReq
*
pReq
,
SArray
**
pArray
)
{
SArray
*
pTmpArray
=
taosArrayInit
(
1
,
sizeof
(
void
*
));
if
(
NULL
==
pTmpArray
)
{
return
TSDB_CODE_OUT_OF_MEMORY
;
}
int32_t
code
=
serializeAlterTbReq
(
pCxt
,
pStmt
,
pReq
,
pTmpArray
);
if
(
TSDB_CODE_SUCCESS
==
code
)
{
*
pArray
=
pTmpArray
;
}
else
{
taosArrayDestroy
(
pTmpArray
);
}
return
code
;
}
static
int32_t
rewriteAlterTable
(
STranslateContext
*
pCxt
,
SQuery
*
pQuery
)
{
SAlterTableStmt
*
pStmt
=
(
SAlterTableStmt
*
)
pQuery
->
pRoot
;
STableMeta
*
pTableMeta
=
NULL
;
int32_t
code
=
getTableMeta
(
pCxt
,
pStmt
->
dbName
,
pStmt
->
tableName
,
&
pTableMeta
);
if
(
TSDB_CODE_SUCCESS
!=
code
)
{
return
code
;
}
if
(
TSDB_SUPER_TABLE
==
pTableMeta
->
tableType
)
{
return
TSDB_CODE_SUCCESS
;
}
else
if
(
TSDB_CHILD_TABLE
!=
pTableMeta
->
tableType
&&
TSDB_NORMAL_TABLE
!=
pTableMeta
->
tableType
)
{
return
generateSyntaxErrMsg
(
&
pCxt
->
msgBuf
,
TSDB_CODE_PAR_INVALID_ALTER_TABLE
);
}
SVAlterTbReq
req
=
{
0
};
code
=
buildAlterTbReq
(
pCxt
,
pStmt
,
&
req
);
SArray
*
pArray
=
NULL
;
if
(
TSDB_CODE_SUCCESS
==
code
)
{
code
=
buildModifyVnodeArray
(
pCxt
,
pStmt
,
&
req
,
&
pArray
);
}
if
(
TSDB_CODE_SUCCESS
==
code
)
{
code
=
rewriteToVnodeModifyOpStmt
(
pQuery
,
pArray
);
}
return
code
;
}
static
int32_t
rewriteQuery
(
STranslateContext
*
pCxt
,
SQuery
*
pQuery
)
{
static
int32_t
rewriteQuery
(
STranslateContext
*
pCxt
,
SQuery
*
pQuery
)
{
int32_t
code
=
TSDB_CODE_SUCCESS
;
int32_t
code
=
TSDB_CODE_SUCCESS
;
switch
(
nodeType
(
pQuery
->
pRoot
))
{
switch
(
nodeType
(
pQuery
->
pRoot
))
{
...
@@ -4296,9 +4444,7 @@ static int32_t rewriteQuery(STranslateContext* pCxt, SQuery* pQuery) {
...
@@ -4296,9 +4444,7 @@ static int32_t rewriteQuery(STranslateContext* pCxt, SQuery* pQuery) {
code
=
rewriteDropTable
(
pCxt
,
pQuery
);
code
=
rewriteDropTable
(
pCxt
,
pQuery
);
break
;
break
;
case
QUERY_NODE_ALTER_TABLE_STMT
:
case
QUERY_NODE_ALTER_TABLE_STMT
:
if
(
TSDB_ALTER_TABLE_UPDATE_TAG_VAL
==
((
SAlterTableStmt
*
)
pQuery
->
pRoot
)
->
alterType
)
{
code
=
rewriteAlterTable
(
pCxt
,
pQuery
);
code
=
rewriteAlterTable
(
pCxt
,
pQuery
);
}
break
;
break
;
default:
default:
break
;
break
;
...
...
source/libs/parser/src/parUtil.c
浏览文件 @
74f81375
...
@@ -152,6 +152,8 @@ static char* getSyntaxErrFormat(int32_t errCode) {
...
@@ -152,6 +152,8 @@ static char* getSyntaxErrFormat(int32_t errCode) {
return
"Invalid timeline function"
;
return
"Invalid timeline function"
;
case
TSDB_CODE_PAR_INVALID_PASSWD
:
case
TSDB_CODE_PAR_INVALID_PASSWD
:
return
"Invalid password"
;
return
"Invalid password"
;
case
TSDB_CODE_PAR_INVALID_ALTER_TABLE
:
return
"Invalid alter table statement"
;
case
TSDB_CODE_OUT_OF_MEMORY
:
case
TSDB_CODE_OUT_OF_MEMORY
:
return
"Out of memory"
;
return
"Out of memory"
;
default:
default:
...
...
source/libs/parser/src/sql.c
浏览文件 @
74f81375
...
@@ -3500,7 +3500,7 @@ static YYACTIONTYPE yy_reduce(
...
@@ -3500,7 +3500,7 @@ static YYACTIONTYPE yy_reduce(
yymsp
[
-
4
].
minor
.
yy172
=
yylhsminor
.
yy172
;
yymsp
[
-
4
].
minor
.
yy172
=
yylhsminor
.
yy172
;
break
;
break
;
case
121
:
/* alter_table_clause ::= full_table_name SET TAG column_name NK_EQ literal */
case
121
:
/* alter_table_clause ::= full_table_name SET TAG column_name NK_EQ literal */
{
yylhsminor
.
yy172
=
createAlterTableSetTag
(
pCxt
,
yymsp
[
-
5
].
minor
.
yy172
,
&
yymsp
[
-
2
].
minor
.
yy105
,
yymsp
[
0
].
minor
.
yy172
);
}
{
yylhsminor
.
yy172
=
createAlterTableSetTag
(
pCxt
,
yymsp
[
-
5
].
minor
.
yy172
,
&
yymsp
[
-
2
].
minor
.
yy105
,
releaseRawExprNode
(
pCxt
,
yymsp
[
0
].
minor
.
yy172
)
);
}
yymsp
[
-
5
].
minor
.
yy172
=
yylhsminor
.
yy172
;
yymsp
[
-
5
].
minor
.
yy172
=
yylhsminor
.
yy172
;
break
;
break
;
case
123
:
/* multi_create_clause ::= multi_create_clause create_subtable_clause */
case
123
:
/* multi_create_clause ::= multi_create_clause create_subtable_clause */
...
...
source/libs/parser/test/parInitialATest.cpp
浏览文件 @
74f81375
...
@@ -69,7 +69,7 @@ TEST_F(ParserInitialATest, alterDatabase) {
...
@@ -69,7 +69,7 @@ TEST_F(ParserInitialATest, alterDatabase) {
* | COMMENT 'string_value'
* | COMMENT 'string_value'
* }
* }
*/
*/
TEST_F
(
ParserInitialATest
,
alterTable
)
{
TEST_F
(
ParserInitialATest
,
alter
S
Table
)
{
useDb
(
"root"
,
"test"
);
useDb
(
"root"
,
"test"
);
SMAlterStbReq
expect
=
{
0
};
SMAlterStbReq
expect
=
{
0
};
...
@@ -119,7 +119,7 @@ TEST_F(ParserInitialATest, alterTable) {
...
@@ -119,7 +119,7 @@ TEST_F(ParserInitialATest, alterTable) {
setCheckDdlFunc
([
&
](
const
SQuery
*
pQuery
,
ParserStage
stage
)
{
setCheckDdlFunc
([
&
](
const
SQuery
*
pQuery
,
ParserStage
stage
)
{
ASSERT_EQ
(
nodeType
(
pQuery
->
pRoot
),
QUERY_NODE_ALTER_TABLE_STMT
);
ASSERT_EQ
(
nodeType
(
pQuery
->
pRoot
),
QUERY_NODE_ALTER_TABLE_STMT
);
SMAlterStbReq
req
=
{
0
};
SMAlterStbReq
req
=
{
0
};
ASSERT_
TRUE
(
TSDB_CODE_SUCCESS
==
tDeserializeSMAlterStbReq
(
pQuery
->
pCmdMsg
->
pMsg
,
pQuery
->
pCmdMsg
->
msgLen
,
&
req
)
);
ASSERT_
EQ
(
tDeserializeSMAlterStbReq
(
pQuery
->
pCmdMsg
->
pMsg
,
pQuery
->
pCmdMsg
->
msgLen
,
&
req
),
TSDB_CODE_SUCCESS
);
ASSERT_EQ
(
std
::
string
(
req
.
name
),
std
::
string
(
expect
.
name
));
ASSERT_EQ
(
std
::
string
(
req
.
name
),
std
::
string
(
expect
.
name
));
ASSERT_EQ
(
req
.
alterType
,
expect
.
alterType
);
ASSERT_EQ
(
req
.
alterType
,
expect
.
alterType
);
ASSERT_EQ
(
req
.
numOfFields
,
expect
.
numOfFields
);
ASSERT_EQ
(
req
.
numOfFields
,
expect
.
numOfFields
);
...
@@ -139,24 +139,24 @@ TEST_F(ParserInitialATest, alterTable) {
...
@@ -139,24 +139,24 @@ TEST_F(ParserInitialATest, alterTable) {
}
}
});
});
setAlterStbReqFunc
(
"t1"
,
TSDB_ALTER_TABLE_UPDATE_OPTIONS
,
0
,
nullptr
,
0
,
0
,
nullptr
,
nullptr
,
10
);
setAlterStbReqFunc
(
"
s
t1"
,
TSDB_ALTER_TABLE_UPDATE_OPTIONS
,
0
,
nullptr
,
0
,
0
,
nullptr
,
nullptr
,
10
);
run
(
"ALTER TABLE t1 TTL 10"
);
run
(
"ALTER TABLE
s
t1 TTL 10"
);
setAlterStbReqFunc
(
"t1"
,
TSDB_ALTER_TABLE_UPDATE_OPTIONS
,
0
,
nullptr
,
0
,
0
,
nullptr
,
"test"
);
setAlterStbReqFunc
(
"
s
t1"
,
TSDB_ALTER_TABLE_UPDATE_OPTIONS
,
0
,
nullptr
,
0
,
0
,
nullptr
,
"test"
);
run
(
"ALTER TABLE t1 COMMENT 'test'"
);
run
(
"ALTER TABLE
s
t1 COMMENT 'test'"
);
setAlterStbReqFunc
(
"t1"
,
TSDB_ALTER_TABLE_ADD_COLUMN
,
1
,
"cc1"
,
TSDB_DATA_TYPE_BIGINT
);
setAlterStbReqFunc
(
"
s
t1"
,
TSDB_ALTER_TABLE_ADD_COLUMN
,
1
,
"cc1"
,
TSDB_DATA_TYPE_BIGINT
);
run
(
"ALTER TABLE t1 ADD COLUMN cc1 BIGINT"
);
run
(
"ALTER TABLE
s
t1 ADD COLUMN cc1 BIGINT"
);
setAlterStbReqFunc
(
"t1"
,
TSDB_ALTER_TABLE_DROP_COLUMN
,
1
,
"c1"
);
setAlterStbReqFunc
(
"
s
t1"
,
TSDB_ALTER_TABLE_DROP_COLUMN
,
1
,
"c1"
);
run
(
"ALTER TABLE t1 DROP COLUMN c1"
);
run
(
"ALTER TABLE
s
t1 DROP COLUMN c1"
);
setAlterStbReqFunc
(
"t1"
,
TSDB_ALTER_TABLE_UPDATE_COLUMN_BYTES
,
1
,
"c1"
,
TSDB_DATA_TYPE_VARCHAR
,
setAlterStbReqFunc
(
"
s
t1"
,
TSDB_ALTER_TABLE_UPDATE_COLUMN_BYTES
,
1
,
"c1"
,
TSDB_DATA_TYPE_VARCHAR
,
20
+
VARSTR_HEADER_SIZE
);
20
+
VARSTR_HEADER_SIZE
);
run
(
"ALTER TABLE t1 MODIFY COLUMN c1 VARCHAR(20)"
);
run
(
"ALTER TABLE
s
t1 MODIFY COLUMN c1 VARCHAR(20)"
);
setAlterStbReqFunc
(
"t1"
,
TSDB_ALTER_TABLE_UPDATE_COLUMN_NAME
,
2
,
"c1"
,
0
,
0
,
"cc1"
);
setAlterStbReqFunc
(
"
s
t1"
,
TSDB_ALTER_TABLE_UPDATE_COLUMN_NAME
,
2
,
"c1"
,
0
,
0
,
"cc1"
);
run
(
"ALTER TABLE t1 RENAME COLUMN c1 cc1"
);
run
(
"ALTER TABLE
s
t1 RENAME COLUMN c1 cc1"
);
setAlterStbReqFunc
(
"st1"
,
TSDB_ALTER_TABLE_ADD_TAG
,
1
,
"tag11"
,
TSDB_DATA_TYPE_BIGINT
);
setAlterStbReqFunc
(
"st1"
,
TSDB_ALTER_TABLE_ADD_TAG
,
1
,
"tag11"
,
TSDB_DATA_TYPE_BIGINT
);
run
(
"ALTER TABLE st1 ADD TAG tag11 BIGINT"
);
run
(
"ALTER TABLE st1 ADD TAG tag11 BIGINT"
);
...
@@ -171,7 +171,127 @@ TEST_F(ParserInitialATest, alterTable) {
...
@@ -171,7 +171,127 @@ TEST_F(ParserInitialATest, alterTable) {
setAlterStbReqFunc
(
"st1"
,
TSDB_ALTER_TABLE_UPDATE_TAG_NAME
,
2
,
"tag1"
,
0
,
0
,
"tag11"
);
setAlterStbReqFunc
(
"st1"
,
TSDB_ALTER_TABLE_UPDATE_TAG_NAME
,
2
,
"tag1"
,
0
,
0
,
"tag11"
);
run
(
"ALTER TABLE st1 RENAME TAG tag1 tag11"
);
run
(
"ALTER TABLE st1 RENAME TAG tag1 tag11"
);
// run("ALTER TABLE st1s1 SET TAG tag1=10");
// todo
// ADD {FULLTEXT | SMA} INDEX index_name (col_name [, col_name] ...) [index_option]
}
TEST_F
(
ParserInitialATest
,
alterTable
)
{
useDb
(
"root"
,
"test"
);
SVAlterTbReq
expect
=
{
0
};
auto
setAlterColFunc
=
[
&
](
const
char
*
pTbname
,
int8_t
alterType
,
const
char
*
pColName
,
int8_t
dataType
=
0
,
int32_t
dataBytes
=
0
,
const
char
*
pNewColName
=
nullptr
)
{
memset
(
&
expect
,
0
,
sizeof
(
SVAlterTbReq
));
expect
.
tbName
=
strdup
(
pTbname
);
expect
.
action
=
alterType
;
expect
.
colName
=
strdup
(
pColName
);
switch
(
alterType
)
{
case
TSDB_ALTER_TABLE_ADD_COLUMN
:
expect
.
type
=
dataType
;
expect
.
flags
=
COL_SMA_ON
;
expect
.
bytes
=
dataBytes
>
0
?
dataBytes
:
(
dataType
>
0
?
tDataTypes
[
dataType
].
bytes
:
0
);
break
;
case
TSDB_ALTER_TABLE_UPDATE_COLUMN_BYTES
:
expect
.
colModBytes
=
dataBytes
;
break
;
case
TSDB_ALTER_TABLE_UPDATE_COLUMN_NAME
:
expect
.
colNewName
=
strdup
(
pNewColName
);
break
;
default:
break
;
}
};
auto
setAlterTagFunc
=
[
&
](
const
char
*
pTbname
,
const
char
*
pTagName
,
const
uint8_t
*
pNewVal
,
uint32_t
bytes
)
{
memset
(
&
expect
,
0
,
sizeof
(
SVAlterTbReq
));
expect
.
tbName
=
strdup
(
pTbname
);
expect
.
action
=
TSDB_ALTER_TABLE_UPDATE_TAG_VAL
;
expect
.
tagName
=
strdup
(
pTagName
);
expect
.
isNull
=
(
nullptr
==
pNewVal
);
expect
.
nTagVal
=
bytes
;
expect
.
pTagVal
=
pNewVal
;
};
auto
setAlterOptionsFunc
=
[
&
](
const
char
*
pTbname
,
int32_t
ttl
,
const
char
*
pComment
=
nullptr
)
{
memset
(
&
expect
,
0
,
sizeof
(
SVAlterTbReq
));
expect
.
tbName
=
strdup
(
pTbname
);
expect
.
action
=
TSDB_ALTER_TABLE_UPDATE_OPTIONS
;
if
(
-
1
!=
ttl
)
{
expect
.
updateTTL
=
true
;
expect
.
newTTL
=
ttl
;
}
if
(
nullptr
!=
pComment
)
{
expect
.
updateComment
=
true
;
expect
.
newComment
=
pComment
;
}
};
setCheckDdlFunc
([
&
](
const
SQuery
*
pQuery
,
ParserStage
stage
)
{
ASSERT_EQ
(
nodeType
(
pQuery
->
pRoot
),
QUERY_NODE_VNODE_MODIF_STMT
);
SVnodeModifOpStmt
*
pStmt
=
(
SVnodeModifOpStmt
*
)
pQuery
->
pRoot
;
ASSERT_EQ
(
pStmt
->
sqlNodeType
,
QUERY_NODE_ALTER_TABLE_STMT
);
ASSERT_NE
(
pStmt
->
pDataBlocks
,
nullptr
);
ASSERT_EQ
(
taosArrayGetSize
(
pStmt
->
pDataBlocks
),
1
);
SVgDataBlocks
*
pVgData
=
(
SVgDataBlocks
*
)
taosArrayGetP
(
pStmt
->
pDataBlocks
,
0
);
void
*
pBuf
=
POINTER_SHIFT
(
pVgData
->
pData
,
sizeof
(
SMsgHead
));
SVAlterTbReq
req
=
{
0
};
SDecoder
coder
=
{
0
};
tDecoderInit
(
&
coder
,
(
const
uint8_t
*
)
pBuf
,
pVgData
->
size
);
ASSERT_EQ
(
tDecodeSVAlterTbReq
(
&
coder
,
&
req
),
TSDB_CODE_SUCCESS
);
ASSERT_EQ
(
std
::
string
(
req
.
tbName
),
std
::
string
(
expect
.
tbName
));
ASSERT_EQ
(
req
.
action
,
expect
.
action
);
if
(
nullptr
!=
expect
.
colName
)
{
ASSERT_EQ
(
std
::
string
(
req
.
colName
),
std
::
string
(
expect
.
colName
));
}
ASSERT_EQ
(
req
.
type
,
expect
.
type
);
ASSERT_EQ
(
req
.
flags
,
expect
.
flags
);
ASSERT_EQ
(
req
.
bytes
,
expect
.
bytes
);
ASSERT_EQ
(
req
.
colModBytes
,
expect
.
colModBytes
);
if
(
nullptr
!=
expect
.
colNewName
)
{
ASSERT_EQ
(
std
::
string
(
req
.
colNewName
),
std
::
string
(
expect
.
colNewName
));
}
if
(
nullptr
!=
expect
.
tagName
)
{
ASSERT_EQ
(
std
::
string
(
req
.
tagName
),
std
::
string
(
expect
.
tagName
));
}
ASSERT_EQ
(
req
.
isNull
,
expect
.
isNull
);
ASSERT_EQ
(
req
.
nTagVal
,
expect
.
nTagVal
);
ASSERT_EQ
(
memcmp
(
req
.
pTagVal
,
expect
.
pTagVal
,
expect
.
nTagVal
),
0
);
ASSERT_EQ
(
req
.
updateTTL
,
expect
.
updateTTL
);
ASSERT_EQ
(
req
.
newTTL
,
expect
.
newTTL
);
ASSERT_EQ
(
req
.
updateComment
,
expect
.
updateComment
);
if
(
nullptr
!=
expect
.
newComment
)
{
ASSERT_EQ
(
std
::
string
(
req
.
newComment
),
std
::
string
(
expect
.
newComment
));
}
tDecoderClear
(
&
coder
);
});
setAlterOptionsFunc
(
"t1"
,
10
,
nullptr
);
run
(
"ALTER TABLE t1 TTL 10"
);
setAlterOptionsFunc
(
"t1"
,
-
1
,
"test"
);
run
(
"ALTER TABLE t1 COMMENT 'test'"
);
setAlterColFunc
(
"t1"
,
TSDB_ALTER_TABLE_ADD_COLUMN
,
"cc1"
,
TSDB_DATA_TYPE_BIGINT
);
run
(
"ALTER TABLE t1 ADD COLUMN cc1 BIGINT"
);
setAlterColFunc
(
"t1"
,
TSDB_ALTER_TABLE_DROP_COLUMN
,
"c1"
);
run
(
"ALTER TABLE t1 DROP COLUMN c1"
);
setAlterColFunc
(
"t1"
,
TSDB_ALTER_TABLE_UPDATE_COLUMN_BYTES
,
"c1"
,
TSDB_DATA_TYPE_VARCHAR
,
20
+
VARSTR_HEADER_SIZE
);
run
(
"ALTER TABLE t1 MODIFY COLUMN c1 VARCHAR(20)"
);
setAlterColFunc
(
"t1"
,
TSDB_ALTER_TABLE_UPDATE_COLUMN_NAME
,
"c1"
,
0
,
0
,
"cc1"
);
run
(
"ALTER TABLE t1 RENAME COLUMN c1 cc1"
);
int64_t
val
=
10
;
setAlterTagFunc
(
"st1s1"
,
"tag1"
,
(
const
uint8_t
*
)
&
val
,
sizeof
(
val
));
run
(
"ALTER TABLE st1s1 SET TAG tag1=10"
);
// todo
// todo
// ADD {FULLTEXT | SMA} INDEX index_name (col_name [, col_name] ...) [index_option]
// ADD {FULLTEXT | SMA} INDEX index_name (col_name [, col_name] ...) [index_option]
...
...
source/libs/planner/src/planLogicCreater.c
浏览文件 @
74f81375
...
@@ -985,6 +985,8 @@ static int32_t getMsgType(ENodeType sqlType) {
...
@@ -985,6 +985,8 @@ static int32_t getMsgType(ENodeType sqlType) {
return
TDMT_VND_CREATE_TABLE
;
return
TDMT_VND_CREATE_TABLE
;
case
QUERY_NODE_DROP_TABLE_STMT
:
case
QUERY_NODE_DROP_TABLE_STMT
:
return
TDMT_VND_DROP_TABLE
;
return
TDMT_VND_DROP_TABLE
;
case
QUERY_NODE_ALTER_TABLE_STMT
:
return
TDMT_VND_ALTER_TABLE
;
default:
default:
break
;
break
;
}
}
...
...
source/libs/scheduler/src/scheduler.c
浏览文件 @
74f81375
...
@@ -256,6 +256,7 @@ int32_t schValidateTaskReceivedMsgType(SSchJob *pJob, SSchTask *pTask, int32_t m
...
@@ -256,6 +256,7 @@ int32_t schValidateTaskReceivedMsgType(SSchJob *pJob, SSchTask *pTask, int32_t m
return
TSDB_CODE_SUCCESS
;
return
TSDB_CODE_SUCCESS
;
case
TDMT_VND_CREATE_TABLE_RSP
:
case
TDMT_VND_CREATE_TABLE_RSP
:
case
TDMT_VND_DROP_TABLE_RSP
:
case
TDMT_VND_DROP_TABLE_RSP
:
case
TDMT_VND_ALTER_TABLE_RSP
:
case
TDMT_VND_SUBMIT_RSP
:
case
TDMT_VND_SUBMIT_RSP
:
break
;
break
;
default:
default:
...
@@ -1131,6 +1132,24 @@ int32_t schHandleResponseMsg(SSchJob *pJob, SSchTask *pTask, int32_t msgType, ch
...
@@ -1131,6 +1132,24 @@ int32_t schHandleResponseMsg(SSchJob *pJob, SSchTask *pTask, int32_t msgType, ch
SCH_ERR_RET
(
schProcessOnTaskSuccess
(
pJob
,
pTask
));
SCH_ERR_RET
(
schProcessOnTaskSuccess
(
pJob
,
pTask
));
break
;
break
;
}
}
case
TDMT_VND_ALTER_TABLE_RSP
:
{
SVAlterTbRsp
rsp
=
{
0
};
if
(
msg
)
{
SDecoder
coder
=
{
0
};
tDecoderInit
(
&
coder
,
msg
,
msgSize
);
code
=
tDecodeSVAlterTbRsp
(
&
coder
,
&
rsp
);
tDecoderClear
(
&
coder
);
SCH_ERR_JRET
(
code
);
SCH_ERR_JRET
(
rsp
.
code
);
}
SCH_ERR_JRET
(
rspCode
);
if
(
NULL
==
msg
)
{
SCH_ERR_JRET
(
TSDB_CODE_QRY_INVALID_INPUT
);
}
break
;
}
case
TDMT_VND_SUBMIT_RSP
:
{
case
TDMT_VND_SUBMIT_RSP
:
{
SCH_ERR_JRET
(
rspCode
);
SCH_ERR_JRET
(
rspCode
);
...
@@ -1391,6 +1410,10 @@ int32_t schHandleDropTableCallback(void *param, const SDataBuf *pMsg, int32_t co
...
@@ -1391,6 +1410,10 @@ int32_t schHandleDropTableCallback(void *param, const SDataBuf *pMsg, int32_t co
return
schHandleCallback
(
param
,
pMsg
,
TDMT_VND_DROP_TABLE_RSP
,
code
);
return
schHandleCallback
(
param
,
pMsg
,
TDMT_VND_DROP_TABLE_RSP
,
code
);
}
}
int32_t
schHandleAlterTableCallback
(
void
*
param
,
const
SDataBuf
*
pMsg
,
int32_t
code
)
{
return
schHandleCallback
(
param
,
pMsg
,
TDMT_VND_ALTER_TABLE_RSP
,
code
);
}
int32_t
schHandleQueryCallback
(
void
*
param
,
const
SDataBuf
*
pMsg
,
int32_t
code
)
{
int32_t
schHandleQueryCallback
(
void
*
param
,
const
SDataBuf
*
pMsg
,
int32_t
code
)
{
return
schHandleCallback
(
param
,
pMsg
,
TDMT_VND_QUERY_RSP
,
code
);
return
schHandleCallback
(
param
,
pMsg
,
TDMT_VND_QUERY_RSP
,
code
);
}
}
...
@@ -1490,6 +1513,9 @@ int32_t schGetCallbackFp(int32_t msgType, __async_send_cb_fn_t *fp) {
...
@@ -1490,6 +1513,9 @@ int32_t schGetCallbackFp(int32_t msgType, __async_send_cb_fn_t *fp) {
case
TDMT_VND_DROP_TABLE
:
case
TDMT_VND_DROP_TABLE
:
*
fp
=
schHandleDropTableCallback
;
*
fp
=
schHandleDropTableCallback
;
break
;
break
;
case
TDMT_VND_ALTER_TABLE
:
*
fp
=
schHandleAlterTableCallback
;
break
;
case
TDMT_VND_SUBMIT
:
case
TDMT_VND_SUBMIT
:
*
fp
=
schHandleSubmitCallback
;
*
fp
=
schHandleSubmitCallback
;
break
;
break
;
...
@@ -2010,6 +2036,7 @@ int32_t schBuildAndSendMsg(SSchJob *pJob, SSchTask *pTask, SQueryNodeAddr *addr,
...
@@ -2010,6 +2036,7 @@ int32_t schBuildAndSendMsg(SSchJob *pJob, SSchTask *pTask, SQueryNodeAddr *addr,
switch
(
msgType
)
{
switch
(
msgType
)
{
case
TDMT_VND_CREATE_TABLE
:
case
TDMT_VND_CREATE_TABLE
:
case
TDMT_VND_DROP_TABLE
:
case
TDMT_VND_DROP_TABLE
:
case
TDMT_VND_ALTER_TABLE
:
case
TDMT_VND_SUBMIT
:
{
case
TDMT_VND_SUBMIT
:
{
msgSize
=
pTask
->
msgLen
;
msgSize
=
pTask
->
msgLen
;
msg
=
taosMemoryCalloc
(
1
,
msgSize
);
msg
=
taosMemoryCalloc
(
1
,
msgSize
);
...
...
tests/script/tsim/tmq/basic1.sim
浏览文件 @
74f81375
#### test scenario, please refer to https://jira.taosdata.com:18090/pages/viewpage.action?pageId=135120406
#### test scenario, please refer to https://jira.taosdata.com:18090/pages/viewpage.action?pageId=135120406
#basic1.sim: vgroups=1, one topic for one consumer, firstly insert data, then start consume. Include six topics
#basic1.sim: vgroups=1, one topic for one consumer, firstly insert data, then start consume. Include six topics
#basic2.sim: vgroups=1, multi topics for one consumer, firstly insert data, then start consume. Include six topics
#basic2.sim: vgroups=1, multi topics for one consumer, firstly insert data, then start consume. Include six topics
#basic3.sim: vgroups=4, one topic for one consumer, firstly insert data, then start consume. Include six topics
#basic3.sim: vgroups=4, one topic for one consumer, firstly insert data, then start consume. Include six topics
#basic4.sim: vgroups=4, multi topics for one consumer, firstly insert data, then start consume. Include six topics
#basic4.sim: vgroups=4, multi topics for one consumer, firstly insert data, then start consume. Include six topics
# notes1: Scalar function: ABS/ACOS/ASIN/ATAN/CEIL/COS/FLOOR/LOG/POW/ROUND/SIN/SQRT/TAN
# notes1: Scalar function: ABS/ACOS/ASIN/ATAN/CEIL/COS/FLOOR/LOG/POW/ROUND/SIN/SQRT/TAN
# The above use cases are combined with where filter conditions, such as: where ts > "2017-08-12 18:25:58.128Z" and sin(a) > 0.5;
# The above use cases are combined with where filter conditions, such as: where ts > "2017-08-12 18:25:58.128Z" and sin(a) > 0.5;
#
#
# notes2: not support aggregate functions(such as sum/count/min/max) and time-windows(interval).
# notes2: not support aggregate functions(such as sum/count/min/max) and time-windows(interval).
#
#
run tsim/tmq/prepareBasicEnv-1vgrp.sim
run tsim/tmq/prepareBasicEnv-1vgrp.sim
#---- global parameters start ----#
#---- global parameters start ----#
$dbName = db
$dbName = db
$vgroups = 1
$vgroups = 1
$stbPrefix = stb
$stbPrefix = stb
$ctbPrefix = ctb
$ctbPrefix = ctb
$ntbPrefix = ntb
$ntbPrefix = ntb
$stbNum = 1
$stbNum = 1
$ctbNum = 10
$ctbNum = 10
$ntbNum = 10
$ntbNum = 10
$rowsPerCtb = 10
$rowsPerCtb = 10
$tstart = 1640966400000 # 2022-01-01 00:00:00.000
$tstart = 1640966400000 # 2022-01-01 00:00:00.000
#---- global parameters end ----#
#---- global parameters end ----#
$pullDelay = 3
$pullDelay = 3
$ifcheckdata = 1
$ifcheckdata = 1
$showMsg = 1
$ifmanualcommit = 1
$showRow = 0
$showMsg = 1
$showRow = 0
sql connect
sql use $dbName
sql connect
sql use $dbName
print == create topics from super table
sql create topic topic_stb_column as select ts, c3 from stb
print == create topics from super table
sql create topic topic_stb_all as select ts, c1, c2, c3 from stb
sql create topic topic_stb_column as select ts, c3 from stb
sql create topic topic_stb_function as select ts, abs(c1), sin(c2) from stb
sql create topic topic_stb_all as select ts, c1, c2, c3 from stb
sql create topic topic_stb_function as select ts, abs(c1), sin(c2) from stb
print == create topics from child table
sql create topic topic_ctb_column as select ts, c3 from ctb0
print == create topics from child table
sql create topic topic_ctb_all as select * from ctb0
sql create topic topic_ctb_column as select ts, c3 from ctb0
sql create topic topic_ctb_function as select ts, abs(c1), sin(c2) from ctb0
sql create topic topic_ctb_all as select * from ctb0
sql create topic topic_ctb_function as select ts, abs(c1), sin(c2) from ctb0
print == create topics from normal table
sql create topic topic_ntb_column as select ts, c3 from ntb0
print == create topics from normal table
sql create topic topic_ntb_all as select * from ntb0
sql create topic topic_ntb_column as select ts, c3 from ntb0
sql create topic topic_ntb_function as select ts, abs(c1), sin(c2) from ntb0
sql create topic topic_ntb_all as select * from ntb0
sql create topic topic_ntb_function as select ts, abs(c1), sin(c2) from ntb0
#sql show topics
#if $rows != 9 then
#sql show topics
# return -1
#if $rows != 9 then
#endi
# return -1
#endi
$keyList = ' . group.id:cgrp1
$keyList = $keyList . '
#'group.id:cgrp1,enable.auto.commit:false,auto.commit.interval.ms:6000,auto.offset.reset:earliest'
$keyList = ' . group.id:cgrp1
$cdb_index = 0
$keyList = $keyList . ,
#=============================== start consume =============================#
$keyList = $keyList . enable.auto.commit:false
#$keyList = $keyList . ,
print ================ test consume from stb
#$keyList = $keyList . auto.commit.interval.ms:6000
$loop_cnt = 0
#$keyList = $keyList . ,
loop_consume_diff_topic_from_stb:
#$keyList = $keyList . auto.offset.reset:earliest
$keyList = $keyList . '
#######################################################################################
print ========== key list: $keyList
# clear consume info and consume result
#run tsim/tmq/clearConsume.sim
# because drop table function no stable, so by create new db for consume info and result. Modify it later
$cdb_index = 0
$cdb_index = $cdb_index + 1
#=============================== start consume =============================#
$cdbName = cdb . $cdb_index
sql create database $cdbName vgroups 1
print ================ test consume from stb
sleep 500
$loop_cnt = 0
sql use $cdbName
loop_consume_diff_topic_from_stb:
print == create consume info table and consume result table
#######################################################################################
sql create table consumeinfo (ts timestamp, consumerid int, topiclist binary(1024), keylist binary(1024), expectmsgcnt bigint, ifcheckdata int)
# clear consume info and consume result
sql create table consumeresult (ts timestamp, consumerid int, consummsgcnt bigint, consumrowcnt bigint, checkresult int)
#run tsim/tmq/clearConsume.sim
# because drop table function no stable, so by create new db for consume info and result. Modify it later
sql show tables
$cdb_index = $cdb_index + 1
if $rows != 2 then
$cdbName = cdb . $cdb_index
return -1
sql create database $cdbName vgroups 1
endi
sleep 500
#######################################################################################
sql use $cdbName
if $loop_cnt == 0 then
print == create consume info table and consume result table
print == scenario 1: topic_stb_column
sql create table consumeinfo (ts timestamp, consumerid int, topiclist binary(1024), keylist binary(1024), expectmsgcnt bigint, ifcheckdata int, ifmanualcommit int)
$topicList = ' . topic_stb_column
sql create table consumeresult (ts timestamp, consumerid int, consummsgcnt bigint, consumrowcnt bigint, checkresult int)
$topicList = $topicList . '
elif $loop_cnt == 1 then
sql show tables
print == scenario 2: topic_stb_all
if $rows != 2 then
$topicList = ' . topic_stb_all
return -1
$topicList = $topicList . '
endi
elif $loop_cnt == 2 then
#######################################################################################
print == scenario 3: topic_stb_function
$topicList = ' . topic_stb_function
if $loop_cnt == 0 then
$topicList = $topicList . '
print == scenario 1: topic_stb_column
else
$topicList = ' . topic_stb_column
goto loop_consume_diff_topic_from_stb_end
$topicList = $topicList . '
endi
elif $loop_cnt == 1 then
print == scenario 2: topic_stb_all
$consumerId = 0
$topicList = ' . topic_stb_all
$totalMsgOfStb = $ctbNum * $rowsPerCtb
$topicList = $topicList . '
$expectmsgcnt = $totalMsgOfStb
elif $loop_cnt == 2 then
sql insert into consumeinfo values (now , $consumerId , $topicList , $keyList , $expectmsgcnt , $ifcheckdata )
print == scenario 3: topic_stb_function
$topicList = ' . topic_stb_function
print == start consumer to pull msgs from stb
$topicList = $topicList . '
print == tsim/tmq/consume.sh -d $dbName -y $pullDelay -g $showMsg -r $showRow -w $cdbName -s start
else
system tsim/tmq/consume.sh -d $dbName -y $pullDelay -g $showMsg -r $showRow -w $cdbName -s start
goto loop_consume_diff_topic_from_stb_end
endi
print == check consume result
wait_consumer_end_from_stb:
$consumerId = 0
sql select * from consumeresult
$totalMsgOfStb = $ctbNum * $rowsPerCtb
print ==> rows: $rows
$expectmsgcnt = $totalMsgOfStb
print ==> rows[0]: $data[0][0] $data[0][1] $data[0][2] $data[0][3] $data[0][4] $data[0][5] $data[0][6]
sql insert into consumeinfo values (now , $consumerId , $topicList , $keyList , $expectmsgcnt , $ifcheckdata , $ifmanualcommit )
if $rows != 1 then
sleep 1000
print == start consumer to pull msgs from stb
goto wait_consumer_end_from_stb
print == tsim/tmq/consume.sh -d $dbName -y $pullDelay -g $showMsg -r $showRow -w $cdbName -s start
endi
system tsim/tmq/consume.sh -d $dbName -y $pullDelay -g $showMsg -r $showRow -w $cdbName -s start
if $data[0][1] != $consumerId then
return -1
print == check consume result
endi
wait_consumer_end_from_stb:
if $data[0][2] != $expectmsgcnt then
sql select * from consumeresult
return -1
print ==> rows: $rows
endi
print ==> rows[0]: $data[0][0] $data[0][1] $data[0][2] $data[0][3] $data[0][4] $data[0][5] $data[0][6]
if $data[0][3] != $expectmsgcnt then
if $rows != 1 then
return -1
sleep 1000
endi
goto wait_consumer_end_from_stb
$loop_cnt = $loop_cnt + 1
endi
goto loop_consume_diff_topic_from_stb
if $data[0][1] != $consumerId then
loop_consume_diff_topic_from_stb_end:
return -1
endi
print ================ test consume from ctb
if $data[0][2] != $expectmsgcnt then
$loop_cnt = 0
return -1
loop_consume_diff_topic_from_ctb:
endi
if $data[0][3] != $expectmsgcnt then
#######################################################################################
return -1
# clear consume info and consume result
endi
#run tsim/tmq/clearConsume.sim
$loop_cnt = $loop_cnt + 1
# because drop table function no stable, so by create new db for consume info and result. Modify it later
goto loop_consume_diff_topic_from_stb
$cdb_index = $cdb_index + 1
loop_consume_diff_topic_from_stb_end:
$cdbName = cdb . $cdb_index
sql create database $cdbName vgroups 1
print ================ test consume from ctb
sleep 500
$loop_cnt = 0
sql use $cdbName
loop_consume_diff_topic_from_ctb:
print == create consume info table and consume result table
#######################################################################################
sql create table consumeinfo (ts timestamp, consumerid int, topiclist binary(1024), keylist binary(1024), expectmsgcnt bigint, ifcheckdata int)
# clear consume info and consume result
sql create table consumeresult (ts timestamp, consumerid int, consummsgcnt bigint, consumrowcnt bigint, checkresult int)
#run tsim/tmq/clearConsume.sim
# because drop table function no stable, so by create new db for consume info and result. Modify it later
sql show tables
$cdb_index = $cdb_index + 1
if $rows != 2 then
$cdbName = cdb . $cdb_index
return -1
sql create database $cdbName vgroups 1
endi
sleep 500
#######################################################################################
sql use $cdbName
if $loop_cnt == 0 then
print == create consume info table and consume result table
print == scenario 1: topic_ctb_column
sql create table consumeinfo (ts timestamp, consumerid int, topiclist binary(1024), keylist binary(1024), expectmsgcnt bigint, ifcheckdata int, ifmanualcommit int)
$topicList = ' . topic_ctb_column
sql create table consumeresult (ts timestamp, consumerid int, consummsgcnt bigint, consumrowcnt bigint, checkresult int)
$topicList = $topicList . '
elif $loop_cnt == 1 then
sql show tables
print == scenario 2: topic_ctb_all
if $rows != 2 then
$topicList = ' . topic_ctb_all
return -1
$topicList = $topicList . '
endi
elif $loop_cnt == 2 then
#######################################################################################
print == scenario 3: topic_ctb_function
$topicList = ' . topic_ctb_function
if $loop_cnt == 0 then
$topicList = $topicList . '
print == scenario 1: topic_ctb_column
else
$topicList = ' . topic_ctb_column
goto loop_consume_diff_topic_from_ctb_end
$topicList = $topicList . '
endi
elif $loop_cnt == 1 then
print == scenario 2: topic_ctb_all
$consumerId = 0
$topicList = ' . topic_ctb_all
$totalMsgOfCtb = $rowsPerCtb
$topicList = $topicList . '
$expectmsgcnt = $totalMsgOfCtb
elif $loop_cnt == 2 then
sql insert into consumeinfo values (now , $consumerId , $topicList , $keyList , $expectmsgcnt , $ifcheckdata )
print == scenario 3: topic_ctb_function
$topicList = ' . topic_ctb_function
print == start consumer to pull msgs from ctb
$topicList = $topicList . '
print == tsim/tmq/consume.sh -d $dbName -y $pullDelay -g $showMsg -r $showRow -s start
else
system tsim/tmq/consume.sh -d $dbName -y $pullDelay -g $showMsg -r $showRow -w $cdbName -s start
goto loop_consume_diff_topic_from_ctb_end
endi
print == check consume result
wait_consumer_end_from_ctb:
$consumerId = 0
sql select * from consumeresult
$totalMsgOfCtb = $rowsPerCtb
print ==> rows: $rows
$expectmsgcnt = $totalMsgOfCtb
print ==> rows[0]: $data[0][0] $data[0][1] $data[0][2] $data[0][3] $data[0][4] $data[0][5] $data[0][6]
sql insert into consumeinfo values (now , $consumerId , $topicList , $keyList , $expectmsgcnt , $ifcheckdata , $ifmanualcommit )
if $rows != 1 then
sleep 1000
print == start consumer to pull msgs from ctb
goto wait_consumer_end_from_ctb
print == tsim/tmq/consume.sh -d $dbName -y $pullDelay -g $showMsg -r $showRow -s start
endi
system tsim/tmq/consume.sh -d $dbName -y $pullDelay -g $showMsg -r $showRow -w $cdbName -s start
if $data[0][1] != $consumerId then
return -1
print == check consume result
endi
wait_consumer_end_from_ctb:
if $data[0][2] != $totalMsgOfCtb then
sql select * from consumeresult
return -1
print ==> rows: $rows
endi
print ==> rows[0]: $data[0][0] $data[0][1] $data[0][2] $data[0][3] $data[0][4] $data[0][5] $data[0][6]
if $data[0][3] != $totalMsgOfCtb then
if $rows != 1 then
return -1
sleep 1000
endi
goto wait_consumer_end_from_ctb
$loop_cnt = $loop_cnt + 1
endi
goto loop_consume_diff_topic_from_ctb
if $data[0][1] != $consumerId then
loop_consume_diff_topic_from_ctb_end:
return -1
endi
print ================ test consume from ntb
if $data[0][2] != $totalMsgOfCtb then
$loop_cnt = 0
return -1
loop_consume_diff_topic_from_ntb:
endi
if $data[0][3] != $totalMsgOfCtb then
#######################################################################################
return -1
# clear consume info and consume result
endi
#run tsim/tmq/clearConsume.sim
$loop_cnt = $loop_cnt + 1
# because drop table function no stable, so by create new db for consume info and result. Modify it later
goto loop_consume_diff_topic_from_ctb
$cdb_index = $cdb_index + 1
loop_consume_diff_topic_from_ctb_end:
$cdbName = cdb . $cdb_index
sql create database $cdbName vgroups 1
print ================ test consume from ntb
sleep 500
$loop_cnt = 0
sql use $cdbName
loop_consume_diff_topic_from_ntb:
print == create consume info table and consume result table
#######################################################################################
sql create table consumeinfo (ts timestamp, consumerid int, topiclist binary(1024), keylist binary(1024), expectmsgcnt bigint, ifcheckdata int)
# clear consume info and consume result
sql create table consumeresult (ts timestamp, consumerid int, consummsgcnt bigint, consumrowcnt bigint, checkresult int)
#run tsim/tmq/clearConsume.sim
# because drop table function no stable, so by create new db for consume info and result. Modify it later
sql show tables
$cdb_index = $cdb_index + 1
if $rows != 2 then
$cdbName = cdb . $cdb_index
return -1
sql create database $cdbName vgroups 1
endi
sleep 500
#######################################################################################
sql use $cdbName
if $loop_cnt == 0 then
print == create consume info table and consume result table
print == scenario 1: topic_ntb_column
sql create table consumeinfo (ts timestamp, consumerid int, topiclist binary(1024), keylist binary(1024), expectmsgcnt bigint, ifcheckdata int, ifmanualcommit int)
$topicList = ' . topic_ntb_column
sql create table consumeresult (ts timestamp, consumerid int, consummsgcnt bigint, consumrowcnt bigint, checkresult int)
$topicList = $topicList . '
elif $loop_cnt == 1 then
sql show tables
print == scenario 2: topic_ntb_all
if $rows != 2 then
$topicList = ' . topic_ntb_all
return -1
$topicList = $topicList . '
endi
elif $loop_cnt == 2 then
#######################################################################################
print == scenario 3: topic_ntb_function
$topicList = ' . topic_ntb_function
if $loop_cnt == 0 then
$topicList = $topicList . '
print == scenario 1: topic_ntb_column
else
$topicList = ' . topic_ntb_column
goto loop_consume_diff_topic_from_ntb_end
$topicList = $topicList . '
endi
elif $loop_cnt == 1 then
print == scenario 2: topic_ntb_all
$consumerId = 0
$topicList = ' . topic_ntb_all
$totalMsgOfNtb = $rowsPerCtb
$topicList = $topicList . '
$expectmsgcnt = $totalMsgOfNtb
elif $loop_cnt == 2 then
sql insert into consumeinfo values (now , $consumerId , $topicList , $keyList , $expectmsgcnt , $ifcheckdata )
print == scenario 3: topic_ntb_function
$topicList = ' . topic_ntb_function
print == start consumer to pull msgs from ntb
$topicList = $topicList . '
print == tsim/tmq/consume.sh -d $dbName -y $pullDelay -g $showMsg -r $showRow -s start
else
system tsim/tmq/consume.sh -d $dbName -y $pullDelay -g $showMsg -r $showRow -w $cdbName -s start
goto loop_consume_diff_topic_from_ntb_end
endi
print == check consume result from ntb
wait_consumer_end_from_ntb:
$consumerId = 0
sql select * from consumeresult
$totalMsgOfNtb = $rowsPerCtb
print ==> rows: $rows
$expectmsgcnt = $totalMsgOfNtb
print ==> rows[0]: $data[0][0] $data[0][1] $data[0][2] $data[0][3] $data[0][4] $data[0][5] $data[0][6]
sql insert into consumeinfo values (now , $consumerId , $topicList , $keyList , $expectmsgcnt , $ifcheckdata , $ifmanualcommit )
if $rows != 1 then
sleep 1000
print == start consumer to pull msgs from ntb
goto wait_consumer_end_from_ntb
print == tsim/tmq/consume.sh -d $dbName -y $pullDelay -g $showMsg -r $showRow -s start
endi
system tsim/tmq/consume.sh -d $dbName -y $pullDelay -g $showMsg -r $showRow -w $cdbName -s start
if $data[0][1] != $consumerId then
return -1
print == check consume result from ntb
endi
wait_consumer_end_from_ntb:
if $data[0][2] != $totalMsgOfNtb then
sql select * from consumeresult
return -1
print ==> rows: $rows
endi
print ==> rows[0]: $data[0][0] $data[0][1] $data[0][2] $data[0][3] $data[0][4] $data[0][5] $data[0][6]
if $data[0][3] != $totalMsgOfNtb then
if $rows != 1 then
return -1
sleep 1000
endi
goto wait_consumer_end_from_ntb
$loop_cnt = $loop_cnt + 1
endi
goto loop_consume_diff_topic_from_ntb
if $data[0][1] != $consumerId then
loop_consume_diff_topic_from_ntb_end:
return -1
endi
#------ not need stop consumer, because it exit after pull msg overthan expect msg
if $data[0][2] != $totalMsgOfNtb then
#system tsim/tmq/consume.sh -s stop -x SIGINT
return -1
endi
system sh/exec.sh -n dnode1 -s stop -x SIGINT
if $data[0][3] != $totalMsgOfNtb then
return -1
endi
$loop_cnt = $loop_cnt + 1
goto loop_consume_diff_topic_from_ntb
loop_consume_diff_topic_from_ntb_end:
#------ not need stop consumer, because it exit after pull msg overthan expect msg
#system tsim/tmq/consume.sh -s stop -x SIGINT
system sh/exec.sh -n dnode1 -s stop -x SIGINT
tests/script/tsim/tmq/basic1Of2Cons.sim
浏览文件 @
74f81375
此差异已折叠。
点击以展开。
tests/script/tsim/tmq/basic2.sim
浏览文件 @
74f81375
#### test scenario, please refer to https://jira.taosdata.com:18090/pages/viewpage.action?pageId=135120406
#### test scenario, please refer to https://jira.taosdata.com:18090/pages/viewpage.action?pageId=135120406
#basic1.sim: vgroups=1, one topic for one consumer, firstly insert data, then start consume. Include six topics
#basic1.sim: vgroups=1, one topic for one consumer, firstly insert data, then start consume. Include six topics
#basic2.sim: vgroups=1, multi topics for one consumer, firstly insert data, then start consume. Include six topics
#basic2.sim: vgroups=1, multi topics for one consumer, firstly insert data, then start consume. Include six topics
#basic3.sim: vgroups=4, one topic for one consumer, firstly insert data, then start consume. Include six topics
#basic3.sim: vgroups=4, one topic for one consumer, firstly insert data, then start consume. Include six topics
#basic4.sim: vgroups=4, multi topics for one consumer, firstly insert data, then start consume. Include six topics
#basic4.sim: vgroups=4, multi topics for one consumer, firstly insert data, then start consume. Include six topics
# notes1: Scalar function: ABS/ACOS/ASIN/ATAN/CEIL/COS/FLOOR/LOG/POW/ROUND/SIN/SQRT/TAN
# notes1: Scalar function: ABS/ACOS/ASIN/ATAN/CEIL/COS/FLOOR/LOG/POW/ROUND/SIN/SQRT/TAN
# The above use cases are combined with where filter conditions, such as: where ts > "2017-08-12 18:25:58.128Z" and sin(a) > 0.5;
# The above use cases are combined with where filter conditions, such as: where ts > "2017-08-12 18:25:58.128Z" and sin(a) > 0.5;
#
#
# notes2: not support aggregate functions(such as sum/count/min/max) and time-windows(interval).
# notes2: not support aggregate functions(such as sum/count/min/max) and time-windows(interval).
#
#
run tsim/tmq/prepareBasicEnv-1vgrp.sim
run tsim/tmq/prepareBasicEnv-1vgrp.sim
#---- global parameters start ----#
#---- global parameters start ----#
$dbName = db
$dbName = db
$vgroups = 1
$vgroups = 1
$stbPrefix = stb
$stbPrefix = stb
$ctbPrefix = ctb
$ctbPrefix = ctb
$ntbPrefix = ntb
$ntbPrefix = ntb
$stbNum = 1
$stbNum = 1
$ctbNum = 10
$ctbNum = 10
$ntbNum = 10
$ntbNum = 10
$rowsPerCtb = 10
$rowsPerCtb = 10
$tstart = 1640966400000 # 2022-01-01 00:00:00.000
$tstart = 1640966400000 # 2022-01-01 00:00:00.000
#---- global parameters end ----#
#---- global parameters end ----#
$pullDelay = 3
$pullDelay = 3
$ifcheckdata = 1
$ifcheckdata = 1
$showMsg = 1
$ifmanualcommit = 1
$showRow = 0
$showMsg = 1
$showRow = 0
sql connect
sql use $dbName
sql connect
sql use $dbName
print == create topics from super table
sql create topic topic_stb_column as select ts, c3 from stb
print == create topics from super table
sql create topic topic_stb_all as select ts, c1, c2, c3 from stb
sql create topic topic_stb_column as select ts, c3 from stb
sql create topic topic_stb_function as select ts, abs(c1), sin(c2) from stb
sql create topic topic_stb_all as select ts, c1, c2, c3 from stb
sql create topic topic_stb_function as select ts, abs(c1), sin(c2) from stb
print == create topics from child table
sql create topic topic_ctb_column as select ts, c3 from ctb0
print == create topics from child table
sql create topic topic_ctb_all as select * from ctb0
sql create topic topic_ctb_column as select ts, c3 from ctb0
sql create topic topic_ctb_function as select ts, abs(c1), sin(c2) from ctb0
sql create topic topic_ctb_all as select * from ctb0
sql create topic topic_ctb_function as select ts, abs(c1), sin(c2) from ctb0
print == create topics from normal table
sql create topic topic_ntb_column as select ts, c3 from ntb0
print == create topics from normal table
sql create topic topic_ntb_all as select * from ntb0
sql create topic topic_ntb_column as select ts, c3 from ntb0
sql create topic topic_ntb_function as select ts, abs(c1), sin(c2) from ntb0
sql create topic topic_ntb_all as select * from ntb0
sql create topic topic_ntb_function as select ts, abs(c1), sin(c2) from ntb0
#sql show topics
#if $rows != 9 then
#sql show topics
# return -1
#if $rows != 9 then
#endi
# return -1
#endi
$keyList = ' . group.id:cgrp1
$keyList = $keyList . '
#'group.id:cgrp1,enable.auto.commit:false,auto.commit.interval.ms:6000,auto.offset.reset:earliest'
$keyList = ' . group.id:cgrp1
$topicNum = 3
$keyList = $keyList . ,
$keyList = $keyList . enable.auto.commit:false
#=============================== start consume =============================#
#$keyList = $keyList . ,
#$keyList = $keyList . auto.commit.interval.ms:6000
#$keyList = $keyList . ,
print ================ test consume from stb
#$keyList = $keyList . auto.offset.reset:earliest
print == multi toipcs: topic_stb_column + topic_stb_all + topic_stb_function
$keyList = $keyList . '
$topicList = ' . topic_stb_column
print ========== key list: $keyList
$topicList = $topicList . ,
$topicList = $topicList . topic_stb_all
$topicList = $topicList . ,
$topicNum = 3
$topicList = $topicList . topic_stb_function
$topicList = $topicList . '
#=============================== start consume =============================#
$consumerId = 0
$totalMsgOfStb = $ctbNum * $rowsPerCtb
print ================ test consume from stb
$totalMsgOfStb = $totalMsgOfStb * $topicNum
print == multi toipcs: topic_stb_column + topic_stb_all + topic_stb_function
$expectmsgcnt = $totalMsgOfStb
$topicList = ' . topic_stb_column
sql insert into consumeinfo values (now , $consumerId , $topicList , $keyList , $expectmsgcnt , $ifcheckdata )
$topicList = $topicList . ,
$topicList = $topicList . topic_stb_all
print == start consumer to pull msgs from stb
$topicList = $topicList . ,
print == tsim/tmq/consume.sh -d $dbName -y $pullDelay -g $showMsg -r $showRow -w $dbName -s start
$topicList = $topicList . topic_stb_function
system tsim/tmq/consume.sh -d $dbName -y $pullDelay -g $showMsg -r $showRow -w $dbName -s start
$topicList = $topicList . '
print == check consume result
$consumerId = 0
wait_consumer_end_from_stb:
$totalMsgOfStb = $ctbNum * $rowsPerCtb
sql select * from consumeresult
$totalMsgOfStb = $totalMsgOfStb * $topicNum
print ==> rows: $rows
$expectmsgcnt = $totalMsgOfStb
print ==> rows[0]: $data[0][0] $data[0][1] $data[0][2] $data[0][3] $data[0][4] $data[0][5] $data[0][6]
sql insert into consumeinfo values (now , $consumerId , $topicList , $keyList , $expectmsgcnt , $ifcheckdata , $ifmanualcommit )
if $rows != 1 then
sleep 1000
print == start consumer to pull msgs from stb
goto wait_consumer_end_from_stb
print == tsim/tmq/consume.sh -d $dbName -y $pullDelay -g $showMsg -r $showRow -w $dbName -s start
endi
system tsim/tmq/consume.sh -d $dbName -y $pullDelay -g $showMsg -r $showRow -w $dbName -s start
if $data[0][1] != $consumerId then
return -1
print == check consume result
endi
wait_consumer_end_from_stb:
if $data[0][2] != $expectmsgcnt then
sql select * from consumeresult
return -1
print ==> rows: $rows
endi
print ==> rows[0]: $data[0][0] $data[0][1] $data[0][2] $data[0][3] $data[0][4] $data[0][5] $data[0][6]
if $data[0][3] != $expectmsgcnt then
if $rows != 1 then
return -1
sleep 1000
endi
goto wait_consumer_end_from_stb
endi
#######################################################################################
if $data[0][1] != $consumerId then
# clear consume info and consume result
return -1
#run tsim/tmq/clearConsume.sim
endi
# because drop table function no stable, so by create new db for consume info and result. Modify it later
if $data[0][2] != $expectmsgcnt then
$cdbName = cdb1
return -1
sql create database $cdbName vgroups 1
endi
sleep 500
if $data[0][3] != $expectmsgcnt then
sql use $cdbName
return -1
endi
print == create consume info table and consume result table
sql create table consumeinfo (ts timestamp, consumerid int, topiclist binary(1024), keylist binary(1024), expectmsgcnt bigint, ifcheckdata int)
#######################################################################################
sql create table consumeresult (ts timestamp, consumerid int, consummsgcnt bigint, consumrowcnt bigint, checkresult int)
# clear consume info and consume result
#run tsim/tmq/clearConsume.sim
sql show tables
# because drop table function no stable, so by create new db for consume info and result. Modify it later
if $rows != 2 then
$cdbName = cdb1
return -1
sql create database $cdbName vgroups 1
endi
sleep 500
#######################################################################################
sql use $cdbName
print == create consume info table and consume result table
print ================ test consume from ctb
sql create table consumeinfo (ts timestamp, consumerid int, topiclist binary(1024), keylist binary(1024), expectmsgcnt bigint, ifcheckdata int, ifmanualcommit int)
print == multi toipcs: topic_ctb_column + topic_ctb_all + topic_ctb_function
sql create table consumeresult (ts timestamp, consumerid int, consummsgcnt bigint, consumrowcnt bigint, checkresult int)
$topicList = ' . topic_ctb_column
$topicList = $topicList . ,
sql show tables
$topicList = $topicList . topic_ctb_all
if $rows != 2 then
$topicList = $topicList . ,
return -1
$topicList = $topicList . topic_ctb_function
endi
$topicList = $topicList . '
#######################################################################################
$consumerId = 0
$totalMsgOfCtb = $rowsPerCtb * $topicNum
print ================ test consume from ctb
$expectmsgcnt = $totalMsgOfCtb
print == multi toipcs: topic_ctb_column + topic_ctb_all + topic_ctb_function
sql insert into consumeinfo values (now , $consumerId , $topicList , $keyList , $expectmsgcnt , $ifcheckdata )
$topicList = ' . topic_ctb_column
$topicList = $topicList . ,
print == start consumer to pull msgs from ctb
$topicList = $topicList . topic_ctb_all
print == tsim/tmq/consume.sh -d $dbName -y $pullDelay -g $showMsg -r $showRow -s start
$topicList = $topicList . ,
system tsim/tmq/consume.sh -d $dbName -y $pullDelay -g $showMsg -r $showRow -w $cdbName -s start
$topicList = $topicList . topic_ctb_function
$topicList = $topicList . '
print == check consume result
wait_consumer_end_from_ctb:
$consumerId = 0
sql select * from consumeresult
$totalMsgOfCtb = $rowsPerCtb * $topicNum
print ==> rows: $rows
$expectmsgcnt = $totalMsgOfCtb
print ==> rows[0]: $data[0][0] $data[0][1] $data[0][2] $data[0][3] $data[0][4] $data[0][5] $data[0][6]
sql insert into consumeinfo values (now , $consumerId , $topicList , $keyList , $expectmsgcnt , $ifcheckdata , $ifmanualcommit )
if $rows != 1 then
sleep 1000
print == start consumer to pull msgs from ctb
goto wait_consumer_end_from_ctb
print == tsim/tmq/consume.sh -d $dbName -y $pullDelay -g $showMsg -r $showRow -s start
endi
system tsim/tmq/consume.sh -d $dbName -y $pullDelay -g $showMsg -r $showRow -w $cdbName -s start
if $data[0][1] != $consumerId then
return -1
print == check consume result
endi
wait_consumer_end_from_ctb:
if $data[0][2] != $totalMsgOfCtb then
sql select * from consumeresult
return -1
print ==> rows: $rows
endi
print ==> rows[0]: $data[0][0] $data[0][1] $data[0][2] $data[0][3] $data[0][4] $data[0][5] $data[0][6]
if $data[0][3] != $totalMsgOfCtb then
if $rows != 1 then
return -1
sleep 1000
endi
goto wait_consumer_end_from_ctb
endi
#######################################################################################
if $data[0][1] != $consumerId then
# clear consume info and consume result
return -1
#run tsim/tmq/clearConsume.sim
endi
# because drop table function no stable, so by create new db for consume info and result. Modify it later
if $data[0][2] != $totalMsgOfCtb then
$cdbName = cdb2
return -1
sql create database $cdbName vgroups 1
endi
sleep 500
if $data[0][3] != $totalMsgOfCtb then
sql use $cdbName
return -1
endi
print == create consume info table and consume result table
sql create table consumeinfo (ts timestamp, consumerid int, topiclist binary(1024), keylist binary(1024), expectmsgcnt bigint, ifcheckdata int)
#######################################################################################
sql create table consumeresult (ts timestamp, consumerid int, consummsgcnt bigint, consumrowcnt bigint, checkresult int)
# clear consume info and consume result
#run tsim/tmq/clearConsume.sim
sql show tables
# because drop table function no stable, so by create new db for consume info and result. Modify it later
if $rows != 2 then
$cdbName = cdb2
return -1
sql create database $cdbName vgroups 1
endi
sleep 500
#######################################################################################
sql use $cdbName
print == create consume info table and consume result table
print ================ test consume from ntb
sql create table consumeinfo (ts timestamp, consumerid int, topiclist binary(1024), keylist binary(1024), expectmsgcnt bigint, ifcheckdata int, ifmanualcommit int)
print == multi toipcs: topic_ntb_column + topic_ntb_all + topic_ntb_function
sql create table consumeresult (ts timestamp, consumerid int, consummsgcnt bigint, consumrowcnt bigint, checkresult int)
$topicList = ' . topic_ntb_column
$topicList = $topicList . ,
sql show tables
$topicList = $topicList . topic_ntb_all
if $rows != 2 then
$topicList = $topicList . ,
return -1
$topicList = $topicList . topic_ntb_function
endi
$topicList = $topicList . '
#######################################################################################
$consumerId = 0
$totalMsgOfNtb = $rowsPerCtb * $topicNum
print ================ test consume from ntb
$expectmsgcnt = $totalMsgOfNtb
print == multi toipcs: topic_ntb_column + topic_ntb_all + topic_ntb_function
sql insert into consumeinfo values (now , $consumerId , $topicList , $keyList , $expectmsgcnt , $ifcheckdata )
$topicList = ' . topic_ntb_column
$topicList = $topicList . ,
print == start consumer to pull msgs from ntb
$topicList = $topicList . topic_ntb_all
print == tsim/tmq/consume.sh -d $dbName -y $pullDelay -g $showMsg -r $showRow -s start
$topicList = $topicList . ,
system tsim/tmq/consume.sh -d $dbName -y $pullDelay -g $showMsg -r $showRow -w $cdbName -s start
$topicList = $topicList . topic_ntb_function
$topicList = $topicList . '
print == check consume result from ntb
wait_consumer_end_from_ntb:
$consumerId = 0
sql select * from consumeresult
$totalMsgOfNtb = $rowsPerCtb * $topicNum
print ==> rows: $rows
$expectmsgcnt = $totalMsgOfNtb
print ==> rows[0]: $data[0][0] $data[0][1] $data[0][2] $data[0][3] $data[0][4] $data[0][5] $data[0][6]
sql insert into consumeinfo values (now , $consumerId , $topicList , $keyList , $expectmsgcnt , $ifcheckdata , $ifmanualcommit )
if $rows != 1 then
sleep 1000
print == start consumer to pull msgs from ntb
goto wait_consumer_end_from_ntb
print == tsim/tmq/consume.sh -d $dbName -y $pullDelay -g $showMsg -r $showRow -s start
endi
system tsim/tmq/consume.sh -d $dbName -y $pullDelay -g $showMsg -r $showRow -w $cdbName -s start
if $data[0][1] != $consumerId then
return -1
print == check consume result from ntb
endi
wait_consumer_end_from_ntb:
if $data[0][2] != $totalMsgOfNtb then
sql select * from consumeresult
return -1
print ==> rows: $rows
endi
print ==> rows[0]: $data[0][0] $data[0][1] $data[0][2] $data[0][3] $data[0][4] $data[0][5] $data[0][6]
if $data[0][3] != $totalMsgOfNtb then
if $rows != 1 then
return -1
sleep 1000
endi
goto wait_consumer_end_from_ntb
endi
#------ not need stop consumer, because it exit after pull msg overthan expect msg
if $data[0][1] != $consumerId then
#system tsim/tmq/consume.sh -s stop -x SIGINT
return -1
endi
system sh/exec.sh -n dnode1 -s stop -x SIGINT
if $data[0][2] != $totalMsgOfNtb then
return -1
endi
if $data[0][3] != $totalMsgOfNtb then
return -1
endi
#------ not need stop consumer, because it exit after pull msg overthan expect msg
#system tsim/tmq/consume.sh -s stop -x SIGINT
system sh/exec.sh -n dnode1 -s stop -x SIGINT
tests/script/tsim/tmq/basic2Of2Cons.sim
浏览文件 @
74f81375
此差异已折叠。
点击以展开。
tests/script/tsim/tmq/basic2Of2ConsOverlap.sim
浏览文件 @
74f81375
...
@@ -27,6 +27,7 @@ $tstart = 1640966400000 # 2022-01-01 00:00:00.000
...
@@ -27,6 +27,7 @@ $tstart = 1640966400000 # 2022-01-01 00:00:00.000
$pullDelay = 5
$pullDelay = 5
$ifcheckdata = 1
$ifcheckdata = 1
$ifmanualcommit = 1
$showMsg = 1
$showMsg = 1
$showRow = 0
$showRow = 0
...
@@ -53,8 +54,16 @@ sql create topic topic_ntb_function as select ts, abs(c1), sin(c2) from ntb0
...
@@ -53,8 +54,16 @@ sql create topic topic_ntb_function as select ts, abs(c1), sin(c2) from ntb0
# return -1
# return -1
#endi
#endi
#'group.id:cgrp1,enable.auto.commit:false,auto.commit.interval.ms:6000,auto.offset.reset:earliest'
$keyList = ' . group.id:cgrp1
$keyList = ' . group.id:cgrp1
$keyList = $keyList . ,
$keyList = $keyList . enable.auto.commit:false
#$keyList = $keyList . ,
#$keyList = $keyList . auto.commit.interval.ms:6000
#$keyList = $keyList . ,
#$keyList = $keyList . auto.offset.reset:earliest
$keyList = $keyList . '
$keyList = $keyList . '
print ========== key list: $keyList
$topicNum = 2
$topicNum = 2
...
@@ -72,7 +81,7 @@ $consumerId = 0
...
@@ -72,7 +81,7 @@ $consumerId = 0
$totalMsgOfOneTopic = $ctbNum * $rowsPerCtb
$totalMsgOfOneTopic = $ctbNum * $rowsPerCtb
$totalMsgOfStb = $totalMsgOfOneTopic * $topicNum
$totalMsgOfStb = $totalMsgOfOneTopic * $topicNum
$expectmsgcnt = $totalMsgOfStb
$expectmsgcnt = $totalMsgOfStb
sql insert into consumeinfo values (now , $consumerId , $topicList , $keyList , $expectmsgcnt , $ifcheckdata )
sql insert into consumeinfo values (now , $consumerId , $topicList , $keyList , $expectmsgcnt , $ifcheckdata
, $ifmanualcommit
)
$topicList = ' . topic_stb_all
$topicList = ' . topic_stb_all
...
@@ -80,7 +89,7 @@ $topicList = $topicList . ,
...
@@ -80,7 +89,7 @@ $topicList = $topicList . ,
$topicList = $topicList . topic_stb_function
$topicList = $topicList . topic_stb_function
$topicList = $topicList . '
$topicList = $topicList . '
$consumerId = 1
$consumerId = 1
sql insert into consumeinfo values (now , $consumerId , $topicList , $keyList , $expectmsgcnt , $ifcheckdata )
sql insert into consumeinfo values (now , $consumerId , $topicList , $keyList , $expectmsgcnt , $ifcheckdata
, $ifmanualcommit
)
print == start consumer to pull msgs from stb
print == start consumer to pull msgs from stb
print == tsim/tmq/consume.sh -d $dbName -y $pullDelay -g $showMsg -r $showRow -w $dbName -s start
print == tsim/tmq/consume.sh -d $dbName -y $pullDelay -g $showMsg -r $showRow -w $dbName -s start
...
@@ -158,7 +167,7 @@ sleep 500
...
@@ -158,7 +167,7 @@ sleep 500
sql use $cdbName
sql use $cdbName
print == create consume info table and consume result table for ctb
print == create consume info table and consume result table for ctb
sql create table consumeinfo (ts timestamp, consumerid int, topiclist binary(1024), keylist binary(1024), expectmsgcnt bigint, ifcheckdata int)
sql create table consumeinfo (ts timestamp, consumerid int, topiclist binary(1024), keylist binary(1024), expectmsgcnt bigint, ifcheckdata int
, ifmanualcommit int
)
sql create table consumeresult (ts timestamp, consumerid int, consummsgcnt bigint, consumrowcnt bigint, checkresult int)
sql create table consumeresult (ts timestamp, consumerid int, consummsgcnt bigint, consumrowcnt bigint, checkresult int)
sql show tables
sql show tables
...
@@ -179,14 +188,14 @@ $consumerId = 0
...
@@ -179,14 +188,14 @@ $consumerId = 0
$totalMsgOfOneTopic = $rowsPerCtb
$totalMsgOfOneTopic = $rowsPerCtb
$totalMsgOfCtb = $totalMsgOfOneTopic * $topicNum
$totalMsgOfCtb = $totalMsgOfOneTopic * $topicNum
$expectmsgcnt = $totalMsgOfCtb
$expectmsgcnt = $totalMsgOfCtb
sql insert into consumeinfo values (now , $consumerId , $topicList , $keyList , $expectmsgcnt , $ifcheckdata )
sql insert into consumeinfo values (now , $consumerId , $topicList , $keyList , $expectmsgcnt , $ifcheckdata
, $ifmanualcommit
)
$topicList = ' . topic_ctb_function
$topicList = ' . topic_ctb_function
$topicList = $topicList . ,
$topicList = $topicList . ,
$topicList = $topicList . topic_ctb_all
$topicList = $topicList . topic_ctb_all
$topicList = $topicList . '
$topicList = $topicList . '
$consumerId = 1
$consumerId = 1
sql insert into consumeinfo values (now , $consumerId , $topicList , $keyList , $expectmsgcnt , $ifcheckdata )
sql insert into consumeinfo values (now , $consumerId , $topicList , $keyList , $expectmsgcnt , $ifcheckdata
, $ifmanualcommit
)
print == start consumer to pull msgs from ctb
print == start consumer to pull msgs from ctb
print == tsim/tmq/consume.sh -d $dbName -y $pullDelay -g $showMsg -r $showRow -w $cdbName -s start
print == tsim/tmq/consume.sh -d $dbName -y $pullDelay -g $showMsg -r $showRow -w $cdbName -s start
...
@@ -249,7 +258,7 @@ sleep 500
...
@@ -249,7 +258,7 @@ sleep 500
sql use $cdbName
sql use $cdbName
print == create consume info table and consume result table for ntb
print == create consume info table and consume result table for ntb
sql create table consumeinfo (ts timestamp, consumerid int, topiclist binary(1024), keylist binary(1024), expectmsgcnt bigint, ifcheckdata int)
sql create table consumeinfo (ts timestamp, consumerid int, topiclist binary(1024), keylist binary(1024), expectmsgcnt bigint, ifcheckdata int
, ifmanualcommit int
)
sql create table consumeresult (ts timestamp, consumerid int, consummsgcnt bigint, consumrowcnt bigint, checkresult int)
sql create table consumeresult (ts timestamp, consumerid int, consummsgcnt bigint, consumrowcnt bigint, checkresult int)
sql show tables
sql show tables
...
@@ -270,7 +279,7 @@ $consumerId = 0
...
@@ -270,7 +279,7 @@ $consumerId = 0
$totalMsgOfOneTopic = $rowsPerCtb
$totalMsgOfOneTopic = $rowsPerCtb
$totalMsgOfNtb = $totalMsgOfOneTopic * $topicNum
$totalMsgOfNtb = $totalMsgOfOneTopic * $topicNum
$expectmsgcnt = $totalMsgOfNtb
$expectmsgcnt = $totalMsgOfNtb
sql insert into consumeinfo values (now , $consumerId , $topicList , $keyList , $expectmsgcnt , $ifcheckdata )
sql insert into consumeinfo values (now , $consumerId , $topicList , $keyList , $expectmsgcnt , $ifcheckdata
, $ifmanualcommit
)
$topicList = ' . topic_ntb_function
$topicList = ' . topic_ntb_function
...
@@ -278,7 +287,7 @@ $topicList = $topicList . ,
...
@@ -278,7 +287,7 @@ $topicList = $topicList . ,
$topicList = $topicList . topic_ntb_all
$topicList = $topicList . topic_ntb_all
$topicList = $topicList . '
$topicList = $topicList . '
$consumerId = 1
$consumerId = 1
sql insert into consumeinfo values (now , $consumerId , $topicList , $keyList , $expectmsgcnt , $ifcheckdata )
sql insert into consumeinfo values (now , $consumerId , $topicList , $keyList , $expectmsgcnt , $ifcheckdata
, $ifmanualcommit
)
print == start consumer to pull msgs from ntb
print == start consumer to pull msgs from ntb
print == tsim/tmq/consume.sh -d $dbName -y $pullDelay -g $showMsg -r $showRow -s start
print == tsim/tmq/consume.sh -d $dbName -y $pullDelay -g $showMsg -r $showRow -s start
...
...
tests/script/tsim/tmq/basic3.sim
浏览文件 @
74f81375
#### test scenario, please refer to https://jira.taosdata.com:18090/pages/viewpage.action?pageId=135120406
#### test scenario, please refer to https://jira.taosdata.com:18090/pages/viewpage.action?pageId=135120406
#basic1.sim: vgroups=1, one topic for one consumer, firstly insert data, then start consume. Include six topics
#basic1.sim: vgroups=1, one topic for one consumer, firstly insert data, then start consume. Include six topics
#basic2.sim: vgroups=1, multi topics for one consumer, firstly insert data, then start consume. Include six topics
#basic2.sim: vgroups=1, multi topics for one consumer, firstly insert data, then start consume. Include six topics
#basic3.sim: vgroups=4, one topic for one consumer, firstly insert data, then start consume. Include six topics
#basic3.sim: vgroups=4, one topic for one consumer, firstly insert data, then start consume. Include six topics
#basic4.sim: vgroups=4, multi topics for one consumer, firstly insert data, then start consume. Include six topics
#basic4.sim: vgroups=4, multi topics for one consumer, firstly insert data, then start consume. Include six topics
# notes1: Scalar function: ABS/ACOS/ASIN/ATAN/CEIL/COS/FLOOR/LOG/POW/ROUND/SIN/SQRT/TAN
# notes1: Scalar function: ABS/ACOS/ASIN/ATAN/CEIL/COS/FLOOR/LOG/POW/ROUND/SIN/SQRT/TAN
# The above use cases are combined with where filter conditions, such as: where ts > "2017-08-12 18:25:58.128Z" and sin(a) > 0.5;
# The above use cases are combined with where filter conditions, such as: where ts > "2017-08-12 18:25:58.128Z" and sin(a) > 0.5;
#
#
# notes2: not support aggregate functions(such as sum/count/min/max) and time-windows(interval).
# notes2: not support aggregate functions(such as sum/count/min/max) and time-windows(interval).
#
#
run tsim/tmq/prepareBasicEnv-4vgrp.sim
run tsim/tmq/prepareBasicEnv-4vgrp.sim
#---- global parameters start ----#
#---- global parameters start ----#
$dbName = db
$dbName = db
$vgroups = 4
$vgroups = 4
$stbPrefix = stb
$stbPrefix = stb
$ctbPrefix = ctb
$ctbPrefix = ctb
$ntbPrefix = ntb
$ntbPrefix = ntb
$stbNum = 1
$stbNum = 1
$ctbNum = 10
$ctbNum = 10
$ntbNum = 10
$ntbNum = 10
$rowsPerCtb = 10
$rowsPerCtb = 10
$tstart = 1640966400000 # 2022-01-01 00:00:00.000
$tstart = 1640966400000 # 2022-01-01 00:00:00.000
#---- global parameters end ----#
#---- global parameters end ----#
$pullDelay = 3
$pullDelay = 3
$ifcheckdata = 1
$ifcheckdata = 1
$showMsg = 1
$ifmanualcommit = 1
$showRow = 0
$showMsg = 1
$showRow = 0
sql connect
sql use $dbName
sql connect
sql use $dbName
print == create topics from super table
sql create topic topic_stb_column as select ts, c3 from stb
print == create topics from super table
sql create topic topic_stb_all as select ts, c1, c2, c3 from stb
sql create topic topic_stb_column as select ts, c3 from stb
sql create topic topic_stb_function as select ts, abs(c1), sin(c2) from stb
sql create topic topic_stb_all as select ts, c1, c2, c3 from stb
sql create topic topic_stb_function as select ts, abs(c1), sin(c2) from stb
print == create topics from child table
sql create topic topic_ctb_column as select ts, c3 from ctb0
print == create topics from child table
sql create topic topic_ctb_all as select * from ctb0
sql create topic topic_ctb_column as select ts, c3 from ctb0
sql create topic topic_ctb_function as select ts, abs(c1), sin(c2) from ctb0
sql create topic topic_ctb_all as select * from ctb0
sql create topic topic_ctb_function as select ts, abs(c1), sin(c2) from ctb0
print == create topics from normal table
sql create topic topic_ntb_column as select ts, c3 from ntb0
print == create topics from normal table
sql create topic topic_ntb_all as select * from ntb0
sql create topic topic_ntb_column as select ts, c3 from ntb0
sql create topic topic_ntb_function as select ts, abs(c1), sin(c2) from ntb0
sql create topic topic_ntb_all as select * from ntb0
sql create topic topic_ntb_function as select ts, abs(c1), sin(c2) from ntb0
#sql show topics
#if $rows != 9 then
#sql show topics
# return -1
#if $rows != 9 then
#endi
# return -1
#endi
$keyList = ' . group.id:cgrp1
$keyList = $keyList . '
#'group.id:cgrp1,enable.auto.commit:false,auto.commit.interval.ms:6000,auto.offset.reset:earliest'
$keyList = ' . group.id:cgrp1
$cdb_index = 0
$keyList = $keyList . ,
#=============================== start consume =============================#
$keyList = $keyList . enable.auto.commit:false
#$keyList = $keyList . ,
print ================ test consume from stb
#$keyList = $keyList . auto.commit.interval.ms:6000
$loop_cnt = 0
#$keyList = $keyList . ,
loop_consume_diff_topic_from_stb:
#$keyList = $keyList . auto.offset.reset:earliest
$keyList = $keyList . '
#######################################################################################
print ========== key list: $keyList
# clear consume info and consume result
#run tsim/tmq/clearConsume.sim
# because drop table function no stable, so by create new db for consume info and result. Modify it later
$cdb_index = 0
$cdb_index = $cdb_index + 1
#=============================== start consume =============================#
$cdbName = cdb . $cdb_index
sql create database $cdbName vgroups 1
print ================ test consume from stb
sleep 500
$loop_cnt = 0
sql use $cdbName
loop_consume_diff_topic_from_stb:
print == create consume info table and consume result table
#######################################################################################
sql create table consumeinfo (ts timestamp, consumerid int, topiclist binary(1024), keylist binary(1024), expectmsgcnt bigint, ifcheckdata int)
# clear consume info and consume result
sql create table consumeresult (ts timestamp, consumerid int, consummsgcnt bigint, consumrowcnt bigint, checkresult int)
#run tsim/tmq/clearConsume.sim
# because drop table function no stable, so by create new db for consume info and result. Modify it later
sql show tables
$cdb_index = $cdb_index + 1
if $rows != 2 then
$cdbName = cdb . $cdb_index
return -1
sql create database $cdbName vgroups 1
endi
sleep 500
#######################################################################################
sql use $cdbName
if $loop_cnt == 0 then
print == create consume info table and consume result table
print == scenario 1: topic_stb_column
sql create table consumeinfo (ts timestamp, consumerid int, topiclist binary(1024), keylist binary(1024), expectmsgcnt bigint, ifcheckdata int, ifmanualcommit int)
$topicList = ' . topic_stb_column
sql create table consumeresult (ts timestamp, consumerid int, consummsgcnt bigint, consumrowcnt bigint, checkresult int)
$topicList = $topicList . '
elif $loop_cnt == 1 then
sql show tables
print == scenario 2: topic_stb_all
if $rows != 2 then
$topicList = ' . topic_stb_all
return -1
$topicList = $topicList . '
endi
elif $loop_cnt == 2 then
#######################################################################################
print == scenario 3: topic_stb_function
$topicList = ' . topic_stb_function
if $loop_cnt == 0 then
$topicList = $topicList . '
print == scenario 1: topic_stb_column
else
$topicList = ' . topic_stb_column
goto loop_consume_diff_topic_from_stb_end
$topicList = $topicList . '
endi
elif $loop_cnt == 1 then
print == scenario 2: topic_stb_all
$consumerId = 0
$topicList = ' . topic_stb_all
$totalMsgOfStb = $ctbNum * $rowsPerCtb
$topicList = $topicList . '
$expectmsgcnt = $totalMsgOfStb
elif $loop_cnt == 2 then
sql insert into consumeinfo values (now , $consumerId , $topicList , $keyList , $expectmsgcnt , $ifcheckdata )
print == scenario 3: topic_stb_function
$topicList = ' . topic_stb_function
print == start consumer to pull msgs from stb
$topicList = $topicList . '
print == tsim/tmq/consume.sh -d $dbName -y $pullDelay -g $showMsg -r $showRow -w $cdbName -s start
else
system tsim/tmq/consume.sh -d $dbName -y $pullDelay -g $showMsg -r $showRow -w $cdbName -s start
goto loop_consume_diff_topic_from_stb_end
endi
print == check consume result
wait_consumer_end_from_stb:
$consumerId = 0
sql select * from consumeresult
$totalMsgOfStb = $ctbNum * $rowsPerCtb
print ==> rows: $rows
$expectmsgcnt = $totalMsgOfStb
print ==> rows[0]: $data[0][0] $data[0][1] $data[0][2] $data[0][3] $data[0][4] $data[0][5] $data[0][6]
sql insert into consumeinfo values (now , $consumerId , $topicList , $keyList , $expectmsgcnt , $ifcheckdata , $ifmanualcommit )
if $rows != 1 then
sleep 1000
print == start consumer to pull msgs from stb
goto wait_consumer_end_from_stb
print == tsim/tmq/consume.sh -d $dbName -y $pullDelay -g $showMsg -r $showRow -w $cdbName -s start
endi
system tsim/tmq/consume.sh -d $dbName -y $pullDelay -g $showMsg -r $showRow -w $cdbName -s start
if $data[0][1] != $consumerId then
return -1
print == check consume result
endi
wait_consumer_end_from_stb:
if $data[0][2] != $expectmsgcnt then
sql select * from consumeresult
return -1
print ==> rows: $rows
endi
print ==> rows[0]: $data[0][0] $data[0][1] $data[0][2] $data[0][3] $data[0][4] $data[0][5] $data[0][6]
if $data[0][3] != $expectmsgcnt then
if $rows != 1 then
return -1
sleep 1000
endi
goto wait_consumer_end_from_stb
$loop_cnt = $loop_cnt + 1
endi
goto loop_consume_diff_topic_from_stb
if $data[0][1] != $consumerId then
loop_consume_diff_topic_from_stb_end:
return -1
endi
print ================ test consume from ctb
if $data[0][2] != $expectmsgcnt then
$loop_cnt = 0
return -1
loop_consume_diff_topic_from_ctb:
endi
if $data[0][3] != $expectmsgcnt then
#######################################################################################
return -1
# clear consume info and consume result
endi
#run tsim/tmq/clearConsume.sim
$loop_cnt = $loop_cnt + 1
# because drop table function no stable, so by create new db for consume info and result. Modify it later
goto loop_consume_diff_topic_from_stb
$cdb_index = $cdb_index + 1
loop_consume_diff_topic_from_stb_end:
$cdbName = cdb . $cdb_index
sql create database $cdbName vgroups 1
print ================ test consume from ctb
sleep 500
$loop_cnt = 0
sql use $cdbName
loop_consume_diff_topic_from_ctb:
print == create consume info table and consume result table
#######################################################################################
sql create table consumeinfo (ts timestamp, consumerid int, topiclist binary(1024), keylist binary(1024), expectmsgcnt bigint, ifcheckdata int)
# clear consume info and consume result
sql create table consumeresult (ts timestamp, consumerid int, consummsgcnt bigint, consumrowcnt bigint, checkresult int)
#run tsim/tmq/clearConsume.sim
# because drop table function no stable, so by create new db for consume info and result. Modify it later
sql show tables
$cdb_index = $cdb_index + 1
if $rows != 2 then
$cdbName = cdb . $cdb_index
return -1
sql create database $cdbName vgroups 1
endi
sleep 500
#######################################################################################
sql use $cdbName
if $loop_cnt == 0 then
print == create consume info table and consume result table
print == scenario 1: topic_ctb_column
sql create table consumeinfo (ts timestamp, consumerid int, topiclist binary(1024), keylist binary(1024), expectmsgcnt bigint, ifcheckdata int, ifmanualcommit int)
$topicList = ' . topic_ctb_column
sql create table consumeresult (ts timestamp, consumerid int, consummsgcnt bigint, consumrowcnt bigint, checkresult int)
$topicList = $topicList . '
elif $loop_cnt == 1 then
sql show tables
print == scenario 2: topic_ctb_all
if $rows != 2 then
$topicList = ' . topic_ctb_all
return -1
$topicList = $topicList . '
endi
elif $loop_cnt == 2 then
#######################################################################################
print == scenario 3: topic_ctb_function
$topicList = ' . topic_ctb_function
if $loop_cnt == 0 then
$topicList = $topicList . '
print == scenario 1: topic_ctb_column
else
$topicList = ' . topic_ctb_column
goto loop_consume_diff_topic_from_ctb_end
$topicList = $topicList . '
endi
elif $loop_cnt == 1 then
print == scenario 2: topic_ctb_all
$consumerId = 0
$topicList = ' . topic_ctb_all
$totalMsgOfCtb = $rowsPerCtb
$topicList = $topicList . '
$expectmsgcnt = $totalMsgOfCtb
elif $loop_cnt == 2 then
sql insert into consumeinfo values (now , $consumerId , $topicList , $keyList , $expectmsgcnt , $ifcheckdata )
print == scenario 3: topic_ctb_function
$topicList = ' . topic_ctb_function
print == start consumer to pull msgs from ctb
$topicList = $topicList . '
print == tsim/tmq/consume.sh -d $dbName -y $pullDelay -g $showMsg -r $showRow -s start
else
system tsim/tmq/consume.sh -d $dbName -y $pullDelay -g $showMsg -r $showRow -w $cdbName -s start
goto loop_consume_diff_topic_from_ctb_end
endi
print == check consume result
wait_consumer_end_from_ctb:
$consumerId = 0
sql select * from consumeresult
$totalMsgOfCtb = $rowsPerCtb
print ==> rows: $rows
$expectmsgcnt = $totalMsgOfCtb
print ==> rows[0]: $data[0][0] $data[0][1] $data[0][2] $data[0][3] $data[0][4] $data[0][5] $data[0][6]
sql insert into consumeinfo values (now , $consumerId , $topicList , $keyList , $expectmsgcnt , $ifcheckdata , $ifmanualcommit )
if $rows != 1 then
sleep 1000
print == start consumer to pull msgs from ctb
goto wait_consumer_end_from_ctb
print == tsim/tmq/consume.sh -d $dbName -y $pullDelay -g $showMsg -r $showRow -s start
endi
system tsim/tmq/consume.sh -d $dbName -y $pullDelay -g $showMsg -r $showRow -w $cdbName -s start
if $data[0][1] != $consumerId then
return -1
print == check consume result
endi
wait_consumer_end_from_ctb:
if $data[0][2] != $totalMsgOfCtb then
sql select * from consumeresult
return -1
print ==> rows: $rows
endi
print ==> rows[0]: $data[0][0] $data[0][1] $data[0][2] $data[0][3] $data[0][4] $data[0][5] $data[0][6]
if $data[0][3] != $totalMsgOfCtb then
if $rows != 1 then
return -1
sleep 1000
endi
goto wait_consumer_end_from_ctb
$loop_cnt = $loop_cnt + 1
endi
goto loop_consume_diff_topic_from_ctb
if $data[0][1] != $consumerId then
loop_consume_diff_topic_from_ctb_end:
return -1
endi
print ================ test consume from ntb
if $data[0][2] != $totalMsgOfCtb then
$loop_cnt = 0
return -1
loop_consume_diff_topic_from_ntb:
endi
if $data[0][3] != $totalMsgOfCtb then
#######################################################################################
return -1
# clear consume info and consume result
endi
#run tsim/tmq/clearConsume.sim
$loop_cnt = $loop_cnt + 1
# because drop table function no stable, so by create new db for consume info and result. Modify it later
goto loop_consume_diff_topic_from_ctb
$cdb_index = $cdb_index + 1
loop_consume_diff_topic_from_ctb_end:
$cdbName = cdb . $cdb_index
sql create database $cdbName vgroups 1
print ================ test consume from ntb
sleep 500
$loop_cnt = 0
sql use $cdbName
loop_consume_diff_topic_from_ntb:
print == create consume info table and consume result table
#######################################################################################
sql create table consumeinfo (ts timestamp, consumerid int, topiclist binary(1024), keylist binary(1024), expectmsgcnt bigint, ifcheckdata int)
# clear consume info and consume result
sql create table consumeresult (ts timestamp, consumerid int, consummsgcnt bigint, consumrowcnt bigint, checkresult int)
#run tsim/tmq/clearConsume.sim
# because drop table function no stable, so by create new db for consume info and result. Modify it later
sql show tables
$cdb_index = $cdb_index + 1
if $rows != 2 then
$cdbName = cdb . $cdb_index
return -1
sql create database $cdbName vgroups 1
endi
sleep 500
#######################################################################################
sql use $cdbName
if $loop_cnt == 0 then
print == create consume info table and consume result table
print == scenario 1: topic_ntb_column
sql create table consumeinfo (ts timestamp, consumerid int, topiclist binary(1024), keylist binary(1024), expectmsgcnt bigint, ifcheckdata int, ifmanualcommit int)
$topicList = ' . topic_ntb_column
sql create table consumeresult (ts timestamp, consumerid int, consummsgcnt bigint, consumrowcnt bigint, checkresult int)
$topicList = $topicList . '
elif $loop_cnt == 1 then
sql show tables
print == scenario 2: topic_ntb_all
if $rows != 2 then
$topicList = ' . topic_ntb_all
return -1
$topicList = $topicList . '
endi
elif $loop_cnt == 2 then
#######################################################################################
print == scenario 3: topic_ntb_function
$topicList = ' . topic_ntb_function
if $loop_cnt == 0 then
$topicList = $topicList . '
print == scenario 1: topic_ntb_column
else
$topicList = ' . topic_ntb_column
goto loop_consume_diff_topic_from_ntb_end
$topicList = $topicList . '
endi
elif $loop_cnt == 1 then
print == scenario 2: topic_ntb_all
$consumerId = 0
$topicList = ' . topic_ntb_all
$totalMsgOfNtb = $rowsPerCtb
$topicList = $topicList . '
$expectmsgcnt = $totalMsgOfNtb
elif $loop_cnt == 2 then
sql insert into consumeinfo values (now , $consumerId , $topicList , $keyList , $expectmsgcnt , $ifcheckdata )
print == scenario 3: topic_ntb_function
$topicList = ' . topic_ntb_function
print == start consumer to pull msgs from ntb
$topicList = $topicList . '
print == tsim/tmq/consume.sh -d $dbName -y $pullDelay -g $showMsg -r $showRow -s start
else
system tsim/tmq/consume.sh -d $dbName -y $pullDelay -g $showMsg -r $showRow -w $cdbName -s start
goto loop_consume_diff_topic_from_ntb_end
endi
print == check consume result from ntb
wait_consumer_end_from_ntb:
$consumerId = 0
sql select * from consumeresult
$totalMsgOfNtb = $rowsPerCtb
print ==> rows: $rows
$expectmsgcnt = $totalMsgOfNtb
print ==> rows[0]: $data[0][0] $data[0][1] $data[0][2] $data[0][3] $data[0][4] $data[0][5] $data[0][6]
sql insert into consumeinfo values (now , $consumerId , $topicList , $keyList , $expectmsgcnt , $ifcheckdata , $ifmanualcommit )
if $rows != 1 then
sleep 1000
print == start consumer to pull msgs from ntb
goto wait_consumer_end_from_ntb
print == tsim/tmq/consume.sh -d $dbName -y $pullDelay -g $showMsg -r $showRow -s start
endi
system tsim/tmq/consume.sh -d $dbName -y $pullDelay -g $showMsg -r $showRow -w $cdbName -s start
if $data[0][1] != $consumerId then
return -1
print == check consume result from ntb
endi
wait_consumer_end_from_ntb:
if $data[0][2] != $totalMsgOfNtb then
sql select * from consumeresult
return -1
print ==> rows: $rows
endi
print ==> rows[0]: $data[0][0] $data[0][1] $data[0][2] $data[0][3] $data[0][4] $data[0][5] $data[0][6]
if $data[0][3] != $totalMsgOfNtb then
if $rows != 1 then
return -1
sleep 1000
endi
goto wait_consumer_end_from_ntb
$loop_cnt = $loop_cnt + 1
endi
goto loop_consume_diff_topic_from_ntb
if $data[0][1] != $consumerId then
loop_consume_diff_topic_from_ntb_end:
return -1
endi
#------ not need stop consumer, because it exit after pull msg overthan expect msg
if $data[0][2] != $totalMsgOfNtb then
#system tsim/tmq/consume.sh -s stop -x SIGINT
return -1
endi
system sh/exec.sh -n dnode1 -s stop -x SIGINT
if $data[0][3] != $totalMsgOfNtb then
return -1
endi
$loop_cnt = $loop_cnt + 1
goto loop_consume_diff_topic_from_ntb
loop_consume_diff_topic_from_ntb_end:
#------ not need stop consumer, because it exit after pull msg overthan expect msg
#system tsim/tmq/consume.sh -s stop -x SIGINT
system sh/exec.sh -n dnode1 -s stop -x SIGINT
tests/script/tsim/tmq/basic3Of2Cons.sim
浏览文件 @
74f81375
此差异已折叠。
点击以展开。
tests/script/tsim/tmq/basic4.sim
浏览文件 @
74f81375
此差异已折叠。
点击以展开。
tests/script/tsim/tmq/basic4Of2Cons.sim
浏览文件 @
74f81375
此差异已折叠。
点击以展开。
tests/script/tsim/tmq/prepareBasicEnv-1vgrp.sim
浏览文件 @
74f81375
# stop all dnodes before start this case
# stop all dnodes before start this case
system sh/stop_dnodes.sh
system sh/stop_dnodes.sh
# deploy dnode 1
# deploy dnode 1
system sh/deploy.sh -n dnode1 -i 1
system sh/deploy.sh -n dnode1 -i 1
# add some config items for this case
# add some config items for this case
#system sh/cfg.sh -n dnode1 -c supportVnodes -v 0
#system sh/cfg.sh -n dnode1 -c supportVnodes -v 0
# start dnode 1
# start dnode 1
system sh/exec.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
sql connect
sql connect
#---- global parameters start ----#
#---- global parameters start ----#
$dbName = db
$dbName = db
$vgroups = 1
$vgroups = 1
$stbPrefix = stb
$stbPrefix = stb
$ctbPrefix = ctb
$ctbPrefix = ctb
$ntbPrefix = ntb
$ntbPrefix = ntb
$stbNum = 1
$stbNum = 1
$ctbNum = 10
$ctbNum = 10
$ntbNum = 10
$ntbNum = 10
$rowsPerCtb = 10
$rowsPerCtb = 10
$tstart = 1640966400000 # 2022-01-01 00:00:00.000
$tstart = 1640966400000 # 2022-01-01 00:00:00.000
#---- global parameters end ----#
#---- global parameters end ----#
print == create database $dbName vgroups $vgroups
print == create database $dbName vgroups $vgroups
sql create database $dbName vgroups $vgroups
sql create database $dbName vgroups $vgroups
#wait database ready
#wait database ready
$loop_cnt = 0
$loop_cnt = 0
check_db_ready:
check_db_ready:
if $loop_cnt == 10 then
if $loop_cnt == 10 then
print ====> database not ready!
print ====> database not ready!
return -1
return -1
endi
endi
sql show databases
sql show databases
print ==> rows: $rows
print ==> rows: $rows
print ==> $data(db)[0] $data(db)[1] $data(db)[2] $data(db)[3] $data(db)[4] $data(db)[5] $data(db)[6] $data(db)[7] $data(db)[8] $data(db)[9] $data(db)[10] $data(db)[11] $data(db)[12]
print ==> $data(db)[0] $data(db)[1] $data(db)[2] $data(db)[3] $data(db)[4] $data(db)[5] $data(db)[6] $data(db)[7] $data(db)[8] $data(db)[9] $data(db)[10] $data(db)[11] $data(db)[12]
print $data(db)[13] $data(db)[14] $data(db)[15] $data(db)[16] $data(db)[17] $data(db)[18] $data(db)[19] $data(db)[20]
print $data(db)[13] $data(db)[14] $data(db)[15] $data(db)[16] $data(db)[17] $data(db)[18] $data(db)[19] $data(db)[20]
if $data(db)[19] != nostrict then
if $data(db)[19] != nostrict then
sleep 100
sleep 100
$loop_cnt = $loop_cnt + 1
$loop_cnt = $loop_cnt + 1
goto check_db_ready
goto check_db_ready
endi
endi
sql use $dbName
sql use $dbName
print == create consume info table and consume result table
print == create consume info table and consume result table
sql create table consumeinfo (ts timestamp, consumerid int, topiclist binary(1024), keylist binary(1024), expectmsgcnt bigint, ifcheckdata int
)
sql create table consumeinfo (ts timestamp, consumerid int, topiclist binary(1024), keylist binary(1024), expectmsgcnt bigint, ifcheckdata int
, ifmanualcommit int)
sql create table consumeresult (ts timestamp, consumerid int, consummsgcnt bigint, consumrowcnt bigint, checkresult int)
sql create table consumeresult (ts timestamp, consumerid int, consummsgcnt bigint, consumrowcnt bigint, checkresult int)
sql show tables
sql show tables
if $rows != 2 then
if $rows != 2 then
return -1
return -1
endi
endi
print == create super table
print == create super table
sql create table $stbPrefix (ts timestamp, c1 int, c2 float, c3 binary(16)) tags (t1 int)
sql create table $stbPrefix (ts timestamp, c1 int, c2 float, c3 binary(16)) tags (t1 int)
sql show stables
sql show stables
if $rows != 1 then
if $rows != 1 then
return -1
return -1
endi
endi
print == create child table, normal table and insert data
print == create child table, normal table and insert data
$i = 0
$i = 0
while $i < $ctbNum
while $i < $ctbNum
$ctb = $ctbPrefix . $i
$ctb = $ctbPrefix . $i
$ntb = $ntbPrefix . $i
$ntb = $ntbPrefix . $i
sql create table $ctb using $stbPrefix tags( $i )
sql create table $ctb using $stbPrefix tags( $i )
sql create table $ntb (ts timestamp, c1 int, c2 float, c3 binary(16))
sql create table $ntb (ts timestamp, c1 int, c2 float, c3 binary(16))
$x = 0
$x = 0
while $x < $rowsPerCtb
while $x < $rowsPerCtb
$binary = ' . binary-
$binary = ' . binary-
$binary = $binary . $i
$binary = $binary . $i
$binary = $binary . '
$binary = $binary . '
sql insert into $ctb values ($tstart , $i , $x , $binary )
sql insert into $ctb values ($tstart , $i , $x , $binary )
sql insert into $ntb values ($tstart , $i , $x , $binary )
sql insert into $ntb values ($tstart , $i , $x , $binary )
$tstart = $tstart + 1
$tstart = $tstart + 1
$x = $x + 1
$x = $x + 1
endw
endw
$i = $i + 1
$i = $i + 1
$tstart = 1640966400000
$tstart = 1640966400000
endw
endw
tests/script/tsim/tmq/prepareBasicEnv-4vgrp.sim
浏览文件 @
74f81375
# stop all dnodes before start this case
# stop all dnodes before start this case
system sh/stop_dnodes.sh
system sh/stop_dnodes.sh
# deploy dnode 1
# deploy dnode 1
system sh/deploy.sh -n dnode1 -i 1
system sh/deploy.sh -n dnode1 -i 1
# add some config items for this case
# add some config items for this case
#system sh/cfg.sh -n dnode1 -c supportVnodes -v 0
#system sh/cfg.sh -n dnode1 -c supportVnodes -v 0
# start dnode 1
# start dnode 1
system sh/exec.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
sql connect
sql connect
#---- global parameters start ----#
#---- global parameters start ----#
$dbName = db
$dbName = db
$vgroups = 4
$vgroups = 4
$stbPrefix = stb
$stbPrefix = stb
$ctbPrefix = ctb
$ctbPrefix = ctb
$ntbPrefix = ntb
$ntbPrefix = ntb
$stbNum = 1
$stbNum = 1
$ctbNum = 10
$ctbNum = 10
$ntbNum = 10
$ntbNum = 10
$rowsPerCtb = 10
$rowsPerCtb = 10
$tstart = 1640966400000 # 2022-01-01 00:00:00.000
$tstart = 1640966400000 # 2022-01-01 00:00:00.000
#---- global parameters end ----#
#---- global parameters end ----#
print == create database $dbName vgroups $vgroups
print == create database $dbName vgroups $vgroups
sql create database $dbName vgroups $vgroups
sql create database $dbName vgroups $vgroups
#wait database ready
#wait database ready
$loop_cnt = 0
$loop_cnt = 0
check_db_ready:
check_db_ready:
if $loop_cnt == 10 then
if $loop_cnt == 10 then
print ====> database not ready!
print ====> database not ready!
return -1
return -1
endi
endi
sql show databases
sql show databases
print ==> rows: $rows
print ==> rows: $rows
print ==> $data(db)[0] $data(db)[1] $data(db)[2] $data(db)[3] $data(db)[4] $data(db)[5] $data(db)[6] $data(db)[7] $data(db)[8] $data(db)[9] $data(db)[10] $data(db)[11] $data(db)[12]
print ==> $data(db)[0] $data(db)[1] $data(db)[2] $data(db)[3] $data(db)[4] $data(db)[5] $data(db)[6] $data(db)[7] $data(db)[8] $data(db)[9] $data(db)[10] $data(db)[11] $data(db)[12]
print $data(db)[13] $data(db)[14] $data(db)[15] $data(db)[16] $data(db)[17] $data(db)[18] $data(db)[19] $data(db)[20]
print $data(db)[13] $data(db)[14] $data(db)[15] $data(db)[16] $data(db)[17] $data(db)[18] $data(db)[19] $data(db)[20]
if $data(db)[19] != nostrict then
if $data(db)[19] != nostrict then
sleep 100
sleep 100
$loop_cnt = $loop_cnt + 1
$loop_cnt = $loop_cnt + 1
goto check_db_ready
goto check_db_ready
endi
endi
sql use $dbName
sql use $dbName
print == create consume info table and consume result table
print == create consume info table and consume result table
sql create table consumeinfo (ts timestamp, consumerid int, topiclist binary(1024), keylist binary(1024), expectmsgcnt bigint, ifcheckdata int
)
sql create table consumeinfo (ts timestamp, consumerid int, topiclist binary(1024), keylist binary(1024), expectmsgcnt bigint, ifcheckdata int
, ifmanualcommit int)
sql create table consumeresult (ts timestamp, consumerid int, consummsgcnt bigint, consumrowcnt bigint, checkresult int)
sql create table consumeresult (ts timestamp, consumerid int, consummsgcnt bigint, consumrowcnt bigint, checkresult int)
sql show tables
sql show tables
if $rows != 2 then
if $rows != 2 then
return -1
return -1
endi
endi
print == create super table
print == create super table
sql create table $stbPrefix (ts timestamp, c1 int, c2 float, c3 binary(16)) tags (t1 int)
sql create table $stbPrefix (ts timestamp, c1 int, c2 float, c3 binary(16)) tags (t1 int)
sql show stables
sql show stables
if $rows != 1 then
if $rows != 1 then
return -1
return -1
endi
endi
print == create child table, normal table and insert data
print == create child table, normal table and insert data
$i = 0
$i = 0
while $i < $ctbNum
while $i < $ctbNum
$ctb = $ctbPrefix . $i
$ctb = $ctbPrefix . $i
$ntb = $ntbPrefix . $i
$ntb = $ntbPrefix . $i
sql create table $ctb using $stbPrefix tags( $i )
sql create table $ctb using $stbPrefix tags( $i )
sql create table $ntb (ts timestamp, c1 int, c2 float, c3 binary(16))
sql create table $ntb (ts timestamp, c1 int, c2 float, c3 binary(16))
$x = 0
$x = 0
while $x < $rowsPerCtb
while $x < $rowsPerCtb
$binary = ' . binary-
$binary = ' . binary-
$binary = $binary . $i
$binary = $binary . $i
$binary = $binary . '
$binary = $binary . '
sql insert into $ctb values ($tstart , $i , $x , $binary )
sql insert into $ctb values ($tstart , $i , $x , $binary )
sql insert into $ntb values ($tstart , $i , $x , $binary )
sql insert into $ntb values ($tstart , $i , $x , $binary )
$tstart = $tstart + 1
$tstart = $tstart + 1
$x = $x + 1
$x = $x + 1
endw
endw
$i = $i + 1
$i = $i + 1
$tstart = 1640966400000
$tstart = 1640966400000
endw
endw
tests/system-test/2-query/nestedQuery.py
0 → 100755
浏览文件 @
74f81375
此差异已折叠。
点击以展开。
tests/system-test/2-query/query_cols_tags_and_or.py
浏览文件 @
74f81375
此差异已折叠。
点击以展开。
tests/system-test/2-query/union.py
0 → 100644
浏览文件 @
74f81375
此差异已折叠。
点击以展开。
tests/system-test/7-tmq/basic5.py
浏览文件 @
74f81375
此差异已折叠。
点击以展开。
tests/system-test/7-tmq/subscribeDb.py
浏览文件 @
74f81375
此差异已折叠。
点击以展开。
tests/system-test/fulltest.sh
浏览文件 @
74f81375
...
@@ -53,6 +53,7 @@ python3 ./test.py -f 2-query/tan.py
...
@@ -53,6 +53,7 @@ python3 ./test.py -f 2-query/tan.py
python3 ./test.py
-f
2-query/arcsin.py
python3 ./test.py
-f
2-query/arcsin.py
python3 ./test.py
-f
2-query/arccos.py
python3 ./test.py
-f
2-query/arccos.py
python3 ./test.py
-f
2-query/arctan.py
python3 ./test.py
-f
2-query/arctan.py
# python3 ./test.py -f 2-query/query_cols_tags_and_or.py
python3 ./test.py
-f
2-query/query_cols_tags_and_or.py
python3 ./test.py
-f
2-query/nestedQuery.py
python3 ./test.py
-f
7-tmq/basic5.py
python3 ./test.py
-f
7-tmq/basic5.py
tests/test/c/tmqSim.c
浏览文件 @
74f81375
此差异已折叠。
点击以展开。
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录