Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
90348e52
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看板
提交
90348e52
编写于
7月 22, 2022
作者:
P
plum-lihui
浏览文件
操作
浏览文件
下载
差异文件
Merge branch '3.0' into test3.0/lihui
上级
a243e267
1b69d30a
变更
79
展开全部
隐藏空白更改
内联
并排
Showing
79 changed file
with
819 addition
and
847 deletion
+819
-847
include/common/taosdef.h
include/common/taosdef.h
+4
-5
include/common/tmsg.h
include/common/tmsg.h
+9
-0
include/common/tmsgdef.h
include/common/tmsgdef.h
+1
-0
include/libs/executor/executor.h
include/libs/executor/executor.h
+2
-1
include/libs/nodes/plannodes.h
include/libs/nodes/plannodes.h
+1
-0
include/util/taoserror.h
include/util/taoserror.h
+1
-0
source/common/src/tglobal.c
source/common/src/tglobal.c
+11
-2
source/common/src/tmsg.c
source/common/src/tmsg.c
+27
-0
source/dnode/mgmt/mgmt_mnode/src/mmHandle.c
source/dnode/mgmt/mgmt_mnode/src/mmHandle.c
+1
-0
source/dnode/mgmt/mgmt_vnode/src/vmHandle.c
source/dnode/mgmt/mgmt_vnode/src/vmHandle.c
+1
-0
source/dnode/mnode/impl/inc/mndDef.h
source/dnode/mnode/impl/inc/mndDef.h
+31
-27
source/dnode/mnode/impl/src/mndTopic.c
source/dnode/mnode/impl/src/mndTopic.c
+122
-11
source/dnode/vnode/src/inc/tq.h
source/dnode/vnode/src/inc/tq.h
+2
-5
source/dnode/vnode/src/inc/vnodeInt.h
source/dnode/vnode/src/inc/vnodeInt.h
+3
-2
source/dnode/vnode/src/meta/metaTable.c
source/dnode/vnode/src/meta/metaTable.c
+12
-0
source/dnode/vnode/src/tq/tq.c
source/dnode/vnode/src/tq/tq.c
+30
-10
source/dnode/vnode/src/tq/tqExec.c
source/dnode/vnode/src/tq/tqExec.c
+4
-0
source/dnode/vnode/src/tq/tqMeta.c
source/dnode/vnode/src/tq/tqMeta.c
+2
-2
source/dnode/vnode/src/tq/tqRead.c
source/dnode/vnode/src/tq/tqRead.c
+15
-14
source/dnode/vnode/src/tq/tqSink.c
source/dnode/vnode/src/tq/tqSink.c
+0
-1
source/dnode/vnode/src/vnd/vnodeCommit.c
source/dnode/vnode/src/vnd/vnodeCommit.c
+3
-0
source/dnode/vnode/src/vnd/vnodeOpen.c
source/dnode/vnode/src/vnd/vnodeOpen.c
+1
-1
source/dnode/vnode/src/vnd/vnodeSvr.c
source/dnode/vnode/src/vnd/vnodeSvr.c
+6
-0
source/libs/executor/inc/executorimpl.h
source/libs/executor/inc/executorimpl.h
+11
-10
source/libs/executor/src/executorMain.c
source/libs/executor/src/executorMain.c
+0
-1
source/libs/executor/src/executorimpl.c
source/libs/executor/src/executorimpl.c
+9
-7
source/libs/executor/src/scanoperator.c
source/libs/executor/src/scanoperator.c
+141
-258
source/libs/executor/src/timewindowoperator.c
source/libs/executor/src/timewindowoperator.c
+56
-52
source/libs/function/src/builtins.c
source/libs/function/src/builtins.c
+8
-8
source/libs/function/src/builtinsimpl.c
source/libs/function/src/builtinsimpl.c
+23
-29
source/libs/function/src/tudf.c
source/libs/function/src/tudf.c
+30
-27
source/libs/function/src/udfd.c
source/libs/function/src/udfd.c
+3
-0
source/libs/nodes/src/nodesCodeFuncs.c
source/libs/nodes/src/nodesCodeFuncs.c
+7
-0
source/libs/parser/src/parTranslater.c
source/libs/parser/src/parTranslater.c
+1
-1
source/libs/planner/src/planLogicCreater.c
source/libs/planner/src/planLogicCreater.c
+3
-2
source/libs/planner/src/planSpliter.c
source/libs/planner/src/planSpliter.c
+16
-11
source/libs/planner/src/planUtil.c
source/libs/planner/src/planUtil.c
+4
-2
source/libs/planner/test/planBasicTest.cpp
source/libs/planner/test/planBasicTest.cpp
+4
-0
source/libs/planner/test/planPartByTest.cpp
source/libs/planner/test/planPartByTest.cpp
+13
-1
source/libs/sync/test/sh/a.sh
source/libs/sync/test/sh/a.sh
+1
-1
source/util/src/tconfig.c
source/util/src/tconfig.c
+92
-10
source/util/src/terror.c
source/util/src/terror.c
+1
-0
tests/pytest/topic/topicQuery.py
tests/pytest/topic/topicQuery.py
+0
-91
tests/script/jenkins/basic.txt
tests/script/jenkins/basic.txt
+28
-31
tests/script/tsim/parser/col_arithmetic_query.sim
tests/script/tsim/parser/col_arithmetic_query.sim
+10
-94
tests/script/tsim/parser/columnValue_bigint.sim
tests/script/tsim/parser/columnValue_bigint.sim
+0
-1
tests/script/tsim/parser/columnValue_bool.sim
tests/script/tsim/parser/columnValue_bool.sim
+0
-1
tests/script/tsim/parser/columnValue_double.sim
tests/script/tsim/parser/columnValue_double.sim
+0
-2
tests/script/tsim/parser/columnValue_float.sim
tests/script/tsim/parser/columnValue_float.sim
+0
-2
tests/script/tsim/parser/columnValue_int.sim
tests/script/tsim/parser/columnValue_int.sim
+0
-1
tests/script/tsim/parser/columnValue_smallint.sim
tests/script/tsim/parser/columnValue_smallint.sim
+0
-2
tests/script/tsim/parser/columnValue_tinyint.sim
tests/script/tsim/parser/columnValue_tinyint.sim
+0
-2
tests/script/tsim/parser/columnValue_unsign.sim
tests/script/tsim/parser/columnValue_unsign.sim
+0
-2
tests/script/tsim/parser/first_last_query.sim
tests/script/tsim/parser/first_last_query.sim
+0
-1
tests/script/tsim/parser/groupby-basic.sim
tests/script/tsim/parser/groupby-basic.sim
+0
-26
tests/script/tsim/parser/interp_test.sim
tests/script/tsim/parser/interp_test.sim
+0
-1
tests/script/tsim/parser/join.sim
tests/script/tsim/parser/join.sim
+0
-4
tests/script/tsim/parser/limit.sim
tests/script/tsim/parser/limit.sim
+0
-3
tests/script/tsim/parser/limit1.sim
tests/script/tsim/parser/limit1.sim
+1
-1
tests/script/tsim/parser/limit1_tb.sim
tests/script/tsim/parser/limit1_tb.sim
+5
-2
tests/script/tsim/parser/limit2.sim
tests/script/tsim/parser/limit2.sim
+1
-2
tests/script/tsim/parser/limit2_query.sim
tests/script/tsim/parser/limit2_query.sim
+7
-5
tests/script/tsim/parser/limit_tb.sim
tests/script/tsim/parser/limit_tb.sim
+11
-9
tests/script/tsim/parser/projection_limit_offset.sim
tests/script/tsim/parser/projection_limit_offset.sim
+0
-2
tests/script/tsim/parser/single_row_in_tb.sim
tests/script/tsim/parser/single_row_in_tb.sim
+0
-1
tests/script/tsim/parser/slimit1.sim
tests/script/tsim/parser/slimit1.sim
+0
-2
tests/script/tsim/parser/slimit1_query.sim
tests/script/tsim/parser/slimit1_query.sim
+0
-1
tests/script/tsim/parser/slimit_alter_tags.sim
tests/script/tsim/parser/slimit_alter_tags.sim
+0
-8
tests/script/tsim/parser/slimit_query.sim
tests/script/tsim/parser/slimit_query.sim
+0
-1
tests/script/tsim/parser/union.sim
tests/script/tsim/parser/union.sim
+0
-3
tests/script/tsim/stream/sliding.sim
tests/script/tsim/stream/sliding.sim
+2
-2
tests/script/tsim/tag/column.sim
tests/script/tsim/tag/column.sim
+4
-4
tests/script/tsim/tag/commit.sim
tests/script/tsim/tag/commit.sim
+17
-19
tests/system-test/2-query/csum.py
tests/system-test/2-query/csum.py
+1
-1
tests/system-test/7-tmq/schema.py
tests/system-test/7-tmq/schema.py
+15
-15
tests/system-test/fulltest.sh
tests/system-test/fulltest.sh
+1
-1
tests/test/c/CMakeLists.txt
tests/test/c/CMakeLists.txt
+2
-1
tools/taos-tools
tools/taos-tools
+1
-1
tools/taosadapter
tools/taosadapter
+1
-1
未找到文件。
include/common/taosdef.h
浏览文件 @
90348e52
...
@@ -34,11 +34,10 @@ typedef enum {
...
@@ -34,11 +34,10 @@ typedef enum {
TSDB_SUPER_TABLE
=
1
,
// super table
TSDB_SUPER_TABLE
=
1
,
// super table
TSDB_CHILD_TABLE
=
2
,
// table created from super table
TSDB_CHILD_TABLE
=
2
,
// table created from super table
TSDB_NORMAL_TABLE
=
3
,
// ordinary table
TSDB_NORMAL_TABLE
=
3
,
// ordinary table
TSDB_STREAM_TABLE
=
4
,
// table created from stream computing
TSDB_TEMP_TABLE
=
4
,
// temp table created by nest query
TSDB_TEMP_TABLE
=
5
,
// temp table created by nest query
TSDB_SYSTEM_TABLE
=
5
,
TSDB_SYSTEM_TABLE
=
6
,
TSDB_TSMA_TABLE
=
6
,
// time-range-wise sma
TSDB_TSMA_TABLE
=
7
,
// time-range-wise sma
TSDB_TABLE_MAX
=
7
TSDB_TABLE_MAX
=
8
}
ETableType
;
}
ETableType
;
typedef
enum
{
typedef
enum
{
...
...
include/common/tmsg.h
浏览文件 @
90348e52
...
@@ -2537,6 +2537,15 @@ static FORCE_INLINE void* tDecodeSMqRebVgReq(const void* buf, SMqRebVgReq* pReq)
...
@@ -2537,6 +2537,15 @@ static FORCE_INLINE void* tDecodeSMqRebVgReq(const void* buf, SMqRebVgReq* pReq)
return
(
void
*
)
buf
;
return
(
void
*
)
buf
;
}
}
typedef
struct
{
char
topic
[
TSDB_TOPIC_FNAME_LEN
];
int64_t
ntbUid
;
SArray
*
colIdList
;
// SArray<int16_t>
}
SCheckAlterInfo
;
int32_t
tEncodeSCheckAlterInfo
(
SEncoder
*
pEncoder
,
const
SCheckAlterInfo
*
pInfo
);
int32_t
tDecodeSCheckAlterInfo
(
SDecoder
*
pDecoder
,
SCheckAlterInfo
*
pInfo
);
typedef
struct
{
typedef
struct
{
int32_t
vgId
;
int32_t
vgId
;
int64_t
offset
;
int64_t
offset
;
...
...
include/common/tmsgdef.h
浏览文件 @
90348e52
...
@@ -186,6 +186,7 @@ enum {
...
@@ -186,6 +186,7 @@ enum {
TD_DEF_MSG_TYPE
(
TDMT_VND_MQ_VG_CHANGE
,
"vnode-mq-vg-change"
,
SMqRebVgReq
,
SMqRebVgRsp
)
TD_DEF_MSG_TYPE
(
TDMT_VND_MQ_VG_CHANGE
,
"vnode-mq-vg-change"
,
SMqRebVgReq
,
SMqRebVgRsp
)
TD_DEF_MSG_TYPE
(
TDMT_VND_MQ_VG_DELETE
,
"vnode-mq-vg-delete"
,
SMqVDeleteReq
,
SMqVDeleteRsp
)
TD_DEF_MSG_TYPE
(
TDMT_VND_MQ_VG_DELETE
,
"vnode-mq-vg-delete"
,
SMqVDeleteReq
,
SMqVDeleteRsp
)
TD_DEF_MSG_TYPE
(
TDMT_VND_MQ_COMMIT_OFFSET
,
"vnode-commit-offset"
,
STqOffset
,
STqOffset
)
TD_DEF_MSG_TYPE
(
TDMT_VND_MQ_COMMIT_OFFSET
,
"vnode-commit-offset"
,
STqOffset
,
STqOffset
)
TD_DEF_MSG_TYPE
(
TDMT_VND_CHECK_ALTER_INFO
,
"vnode-alter-check-info"
,
NULL
,
NULL
)
TD_DEF_MSG_TYPE
(
TDMT_VND_CREATE_TOPIC
,
"vnode-create-topic"
,
NULL
,
NULL
)
TD_DEF_MSG_TYPE
(
TDMT_VND_CREATE_TOPIC
,
"vnode-create-topic"
,
NULL
,
NULL
)
TD_DEF_MSG_TYPE
(
TDMT_VND_ALTER_TOPIC
,
"vnode-alter-topic"
,
NULL
,
NULL
)
TD_DEF_MSG_TYPE
(
TDMT_VND_ALTER_TOPIC
,
"vnode-alter-topic"
,
NULL
,
NULL
)
TD_DEF_MSG_TYPE
(
TDMT_VND_DROP_TOPIC
,
"vnode-drop-topic"
,
NULL
,
NULL
)
TD_DEF_MSG_TYPE
(
TDMT_VND_DROP_TOPIC
,
"vnode-drop-topic"
,
NULL
,
NULL
)
...
...
include/libs/executor/executor.h
浏览文件 @
90348e52
...
@@ -64,7 +64,8 @@ qTaskInfo_t qCreateStreamExecTaskInfo(void* msg, SReadHandle* readers);
...
@@ -64,7 +64,8 @@ qTaskInfo_t qCreateStreamExecTaskInfo(void* msg, SReadHandle* readers);
* @param SReadHandle
* @param SReadHandle
* @return
* @return
*/
*/
qTaskInfo_t
qCreateQueueExecTaskInfo
(
void
*
msg
,
SReadHandle
*
readers
,
int32_t
*
numOfCols
,
SSchemaWrapper
**
pSchemaWrapper
);
qTaskInfo_t
qCreateQueueExecTaskInfo
(
void
*
msg
,
SReadHandle
*
readers
,
int32_t
*
numOfCols
,
SSchemaWrapper
**
pSchemaWrapper
);
/**
/**
* Set the input data block for the stream scan.
* Set the input data block for the stream scan.
...
...
include/libs/nodes/plannodes.h
浏览文件 @
90348e52
...
@@ -111,6 +111,7 @@ typedef struct SAggLogicNode {
...
@@ -111,6 +111,7 @@ typedef struct SAggLogicNode {
SNodeList
*
pGroupKeys
;
SNodeList
*
pGroupKeys
;
SNodeList
*
pAggFuncs
;
SNodeList
*
pAggFuncs
;
bool
hasLastRow
;
bool
hasLastRow
;
bool
hasTimeLineFunc
;
}
SAggLogicNode
;
}
SAggLogicNode
;
typedef
struct
SProjectLogicNode
{
typedef
struct
SProjectLogicNode
{
...
...
include/util/taoserror.h
浏览文件 @
90348e52
...
@@ -332,6 +332,7 @@ int32_t* taosGetErrno();
...
@@ -332,6 +332,7 @@ int32_t* taosGetErrno();
#define TSDB_CODE_VND_INVALID_TABLE_ACTION TAOS_DEF_ERROR_CODE(0, 0x0519)
#define TSDB_CODE_VND_INVALID_TABLE_ACTION TAOS_DEF_ERROR_CODE(0, 0x0519)
#define TSDB_CODE_VND_COL_ALREADY_EXISTS TAOS_DEF_ERROR_CODE(0, 0x051a)
#define TSDB_CODE_VND_COL_ALREADY_EXISTS TAOS_DEF_ERROR_CODE(0, 0x051a)
#define TSDB_CODE_VND_TABLE_COL_NOT_EXISTS TAOS_DEF_ERROR_CODE(0, 0x051b)
#define TSDB_CODE_VND_TABLE_COL_NOT_EXISTS TAOS_DEF_ERROR_CODE(0, 0x051b)
#define TSDB_CODE_VND_COL_SUBSCRIBED TAOS_DEF_ERROR_CODE(0, 0x051c)
// tsdb
// tsdb
#define TSDB_CODE_TDB_INVALID_TABLE_ID TAOS_DEF_ERROR_CODE(0, 0x0600)
#define TSDB_CODE_TDB_INVALID_TABLE_ID TAOS_DEF_ERROR_CODE(0, 0x0600)
...
...
source/common/src/tglobal.c
浏览文件 @
90348e52
...
@@ -226,8 +226,17 @@ static int32_t taosSetTfsCfg(SConfig *pCfg) {
...
@@ -226,8 +226,17 @@ static int32_t taosSetTfsCfg(SConfig *pCfg) {
}
}
if
(
tsDataDir
[
0
]
==
0
)
{
if
(
tsDataDir
[
0
]
==
0
)
{
uError
(
"datadir not set"
);
if
(
pItem
->
str
!=
NULL
)
{
return
-
1
;
taosAddDataDir
(
0
,
pItem
->
str
,
0
,
1
);
tstrncpy
(
tsDataDir
,
pItem
->
str
,
PATH_MAX
);
if
(
taosMulMkDir
(
tsDataDir
)
!=
0
)
{
uError
(
"failed to create dataDir:%s since %s"
,
tsDataDir
,
terrstr
());
return
-
1
;
}
}
else
{
uError
(
"datadir not set"
);
return
-
1
;
}
}
}
return
0
;
return
0
;
...
...
source/common/src/tmsg.c
浏览文件 @
90348e52
...
@@ -5623,6 +5623,33 @@ int32_t tDecodeSTqOffset(SDecoder *pDecoder, STqOffset *pOffset) {
...
@@ -5623,6 +5623,33 @@ int32_t tDecodeSTqOffset(SDecoder *pDecoder, STqOffset *pOffset) {
return
0
;
return
0
;
}
}
int32_t
tEncodeSCheckAlterInfo
(
SEncoder
*
pEncoder
,
const
SCheckAlterInfo
*
pInfo
)
{
if
(
tEncodeCStr
(
pEncoder
,
pInfo
->
topic
)
<
0
)
return
-
1
;
if
(
tEncodeI64
(
pEncoder
,
pInfo
->
ntbUid
)
<
0
)
return
-
1
;
int32_t
sz
=
taosArrayGetSize
(
pInfo
->
colIdList
);
if
(
tEncodeI32
(
pEncoder
,
sz
)
<
0
)
return
-
1
;
for
(
int32_t
i
=
0
;
i
<
sz
;
i
++
)
{
int16_t
colId
=
*
(
int16_t
*
)
taosArrayGet
(
pInfo
->
colIdList
,
i
);
if
(
tEncodeI16
(
pEncoder
,
colId
)
<
0
)
return
-
1
;
}
return
pEncoder
->
pos
;
}
int32_t
tDecodeSCheckAlterInfo
(
SDecoder
*
pDecoder
,
SCheckAlterInfo
*
pInfo
)
{
if
(
tDecodeCStrTo
(
pDecoder
,
pInfo
->
topic
)
<
0
)
return
-
1
;
if
(
tDecodeI64
(
pDecoder
,
&
pInfo
->
ntbUid
)
<
0
)
return
-
1
;
int32_t
sz
;
if
(
tDecodeI32
(
pDecoder
,
&
sz
)
<
0
)
return
-
1
;
pInfo
->
colIdList
=
taosArrayInit
(
sz
,
sizeof
(
int16_t
));
if
(
pInfo
->
colIdList
==
NULL
)
return
-
1
;
for
(
int32_t
i
=
0
;
i
<
sz
;
i
++
)
{
int16_t
colId
;
if
(
tDecodeI16
(
pDecoder
,
&
colId
)
<
0
)
return
-
1
;
taosArrayPush
(
pInfo
->
colIdList
,
&
colId
);
}
return
0
;
}
int32_t
tEncodeDeleteRes
(
SEncoder
*
pCoder
,
const
SDeleteRes
*
pRes
)
{
int32_t
tEncodeDeleteRes
(
SEncoder
*
pCoder
,
const
SDeleteRes
*
pRes
)
{
int32_t
nUid
=
taosArrayGetSize
(
pRes
->
uidList
);
int32_t
nUid
=
taosArrayGetSize
(
pRes
->
uidList
);
...
...
source/dnode/mgmt/mgmt_mnode/src/mmHandle.c
浏览文件 @
90348e52
...
@@ -224,6 +224,7 @@ SArray *mmGetMsgHandles() {
...
@@ -224,6 +224,7 @@ SArray *mmGetMsgHandles() {
if
(
dmSetMgmtHandle
(
pArray
,
TDMT_VND_DROP_SMA_RSP
,
mmPutMsgToWriteQueue
,
0
)
==
NULL
)
goto
_OVER
;
if
(
dmSetMgmtHandle
(
pArray
,
TDMT_VND_DROP_SMA_RSP
,
mmPutMsgToWriteQueue
,
0
)
==
NULL
)
goto
_OVER
;
if
(
dmSetMgmtHandle
(
pArray
,
TDMT_VND_MQ_VG_CHANGE_RSP
,
mmPutMsgToWriteQueue
,
0
)
==
NULL
)
goto
_OVER
;
if
(
dmSetMgmtHandle
(
pArray
,
TDMT_VND_MQ_VG_CHANGE_RSP
,
mmPutMsgToWriteQueue
,
0
)
==
NULL
)
goto
_OVER
;
if
(
dmSetMgmtHandle
(
pArray
,
TDMT_VND_MQ_VG_DELETE_RSP
,
mmPutMsgToWriteQueue
,
0
)
==
NULL
)
goto
_OVER
;
if
(
dmSetMgmtHandle
(
pArray
,
TDMT_VND_MQ_VG_DELETE_RSP
,
mmPutMsgToWriteQueue
,
0
)
==
NULL
)
goto
_OVER
;
if
(
dmSetMgmtHandle
(
pArray
,
TDMT_VND_CHECK_ALTER_INFO_RSP
,
mmPutMsgToWriteQueue
,
0
)
==
NULL
)
goto
_OVER
;
if
(
dmSetMgmtHandle
(
pArray
,
TDMT_SCH_DROP_TASK
,
mmPutMsgToFetchQueue
,
1
)
==
NULL
)
goto
_OVER
;
if
(
dmSetMgmtHandle
(
pArray
,
TDMT_SCH_DROP_TASK
,
mmPutMsgToFetchQueue
,
1
)
==
NULL
)
goto
_OVER
;
if
(
dmSetMgmtHandle
(
pArray
,
TDMT_STREAM_TASK_DEPLOY_RSP
,
mmPutMsgToWriteQueue
,
0
)
==
NULL
)
goto
_OVER
;
if
(
dmSetMgmtHandle
(
pArray
,
TDMT_STREAM_TASK_DEPLOY_RSP
,
mmPutMsgToWriteQueue
,
0
)
==
NULL
)
goto
_OVER
;
if
(
dmSetMgmtHandle
(
pArray
,
TDMT_STREAM_TASK_DROP_RSP
,
mmPutMsgToWriteQueue
,
0
)
==
NULL
)
goto
_OVER
;
if
(
dmSetMgmtHandle
(
pArray
,
TDMT_STREAM_TASK_DROP_RSP
,
mmPutMsgToWriteQueue
,
0
)
==
NULL
)
goto
_OVER
;
...
...
source/dnode/mgmt/mgmt_vnode/src/vmHandle.c
浏览文件 @
90348e52
...
@@ -352,6 +352,7 @@ SArray *vmGetMsgHandles() {
...
@@ -352,6 +352,7 @@ SArray *vmGetMsgHandles() {
if
(
dmSetMgmtHandle
(
pArray
,
TDMT_VND_MQ_VG_CHANGE
,
vmPutMsgToWriteQueue
,
0
)
==
NULL
)
goto
_OVER
;
if
(
dmSetMgmtHandle
(
pArray
,
TDMT_VND_MQ_VG_CHANGE
,
vmPutMsgToWriteQueue
,
0
)
==
NULL
)
goto
_OVER
;
if
(
dmSetMgmtHandle
(
pArray
,
TDMT_VND_MQ_VG_DELETE
,
vmPutMsgToWriteQueue
,
0
)
==
NULL
)
goto
_OVER
;
if
(
dmSetMgmtHandle
(
pArray
,
TDMT_VND_MQ_VG_DELETE
,
vmPutMsgToWriteQueue
,
0
)
==
NULL
)
goto
_OVER
;
if
(
dmSetMgmtHandle
(
pArray
,
TDMT_VND_MQ_COMMIT_OFFSET
,
vmPutMsgToWriteQueue
,
0
)
==
NULL
)
goto
_OVER
;
if
(
dmSetMgmtHandle
(
pArray
,
TDMT_VND_MQ_COMMIT_OFFSET
,
vmPutMsgToWriteQueue
,
0
)
==
NULL
)
goto
_OVER
;
if
(
dmSetMgmtHandle
(
pArray
,
TDMT_VND_CHECK_ALTER_INFO
,
vmPutMsgToWriteQueue
,
0
)
==
NULL
)
goto
_OVER
;
if
(
dmSetMgmtHandle
(
pArray
,
TDMT_VND_CONSUME
,
vmPutMsgToFetchQueue
,
0
)
==
NULL
)
goto
_OVER
;
if
(
dmSetMgmtHandle
(
pArray
,
TDMT_VND_CONSUME
,
vmPutMsgToFetchQueue
,
0
)
==
NULL
)
goto
_OVER
;
if
(
dmSetMgmtHandle
(
pArray
,
TDMT_VND_DELETE
,
vmPutMsgToWriteQueue
,
0
)
==
NULL
)
goto
_OVER
;
if
(
dmSetMgmtHandle
(
pArray
,
TDMT_VND_DELETE
,
vmPutMsgToWriteQueue
,
0
)
==
NULL
)
goto
_OVER
;
if
(
dmSetMgmtHandle
(
pArray
,
TDMT_VND_COMMIT
,
vmPutMsgToWriteQueue
,
0
)
==
NULL
)
goto
_OVER
;
if
(
dmSetMgmtHandle
(
pArray
,
TDMT_VND_COMMIT
,
vmPutMsgToWriteQueue
,
0
)
==
NULL
)
goto
_OVER
;
...
...
source/dnode/mnode/impl/inc/mndDef.h
浏览文件 @
90348e52
...
@@ -144,33 +144,33 @@ typedef enum {
...
@@ -144,33 +144,33 @@ typedef enum {
}
ECsmUpdateType
;
}
ECsmUpdateType
;
typedef
struct
{
typedef
struct
{
int32_t
id
;
int32_t
id
;
ETrnStage
stage
;
ETrnStage
stage
;
ETrnPolicy
policy
;
ETrnPolicy
policy
;
ETrnConflct
conflict
;
ETrnConflct
conflict
;
ETrnExec
exec
;
ETrnExec
exec
;
EOperType
oper
;
EOperType
oper
;
int32_t
code
;
int32_t
code
;
int32_t
failedTimes
;
int32_t
failedTimes
;
void
*
rpcRsp
;
void
*
rpcRsp
;
int32_t
rpcRspLen
;
int32_t
rpcRspLen
;
int32_t
redoActionPos
;
int32_t
redoActionPos
;
SArray
*
redoActions
;
SArray
*
redoActions
;
SArray
*
undoActions
;
SArray
*
undoActions
;
SArray
*
commitActions
;
SArray
*
commitActions
;
int64_t
createdTime
;
int64_t
createdTime
;
int64_t
lastExecTime
;
int64_t
lastExecTime
;
int32_t
lastAction
;
int32_t
lastAction
;
int32_t
lastErrorNo
;
int32_t
lastErrorNo
;
tmsg_t
lastMsgType
;
tmsg_t
lastMsgType
;
SEpSet
lastEpset
;
SEpSet
lastEpset
;
char
dbname1
[
TSDB_DB_FNAME_LEN
];
char
dbname1
[
TSDB_DB_FNAME_LEN
];
char
dbname2
[
TSDB_DB_FNAME_LEN
];
char
dbname2
[
TSDB_DB_FNAME_LEN
];
int32_t
startFunc
;
int32_t
startFunc
;
int32_t
stopFunc
;
int32_t
stopFunc
;
int32_t
paramLen
;
int32_t
paramLen
;
void
*
param
;
void
*
param
;
SArray
*
pRpcArray
;
SArray
*
pRpcArray
;
}
STrans
;
}
STrans
;
typedef
struct
{
typedef
struct
{
...
@@ -477,6 +477,10 @@ typedef struct {
...
@@ -477,6 +477,10 @@ typedef struct {
char
*
physicalPlan
;
char
*
physicalPlan
;
SSchemaWrapper
schema
;
SSchemaWrapper
schema
;
int64_t
stbUid
;
int64_t
stbUid
;
// forbid condition
int64_t
ntbUid
;
SArray
*
ntbColIds
;
int64_t
ctbStbUid
;
}
SMqTopicObj
;
}
SMqTopicObj
;
typedef
struct
{
typedef
struct
{
...
...
source/dnode/mnode/impl/src/mndTopic.c
浏览文件 @
90348e52
...
@@ -57,6 +57,7 @@ int32_t mndInitTopic(SMnode *pMnode) {
...
@@ -57,6 +57,7 @@ int32_t mndInitTopic(SMnode *pMnode) {
mndSetMsgHandle
(
pMnode
,
TDMT_MND_CREATE_TOPIC
,
mndProcessCreateTopicReq
);
mndSetMsgHandle
(
pMnode
,
TDMT_MND_CREATE_TOPIC
,
mndProcessCreateTopicReq
);
mndSetMsgHandle
(
pMnode
,
TDMT_MND_DROP_TOPIC
,
mndProcessDropTopicReq
);
mndSetMsgHandle
(
pMnode
,
TDMT_MND_DROP_TOPIC
,
mndProcessDropTopicReq
);
mndSetMsgHandle
(
pMnode
,
TDMT_VND_DROP_TOPIC_RSP
,
mndTransProcessRsp
);
mndSetMsgHandle
(
pMnode
,
TDMT_VND_DROP_TOPIC_RSP
,
mndTransProcessRsp
);
mndSetMsgHandle
(
pMnode
,
TDMT_VND_CHECK_ALTER_INFO_RSP
,
mndTransProcessRsp
);
mndAddShowRetrieveHandle
(
pMnode
,
TSDB_MGMT_TABLE_TOPICS
,
mndRetrieveTopic
);
mndAddShowRetrieveHandle
(
pMnode
,
TSDB_MGMT_TABLE_TOPICS
,
mndRetrieveTopic
);
mndAddShowFreeIterHandle
(
pMnode
,
TSDB_MGMT_TABLE_TOPICS
,
mndCancelGetNextTopic
);
mndAddShowFreeIterHandle
(
pMnode
,
TSDB_MGMT_TABLE_TOPICS
,
mndCancelGetNextTopic
);
...
@@ -74,7 +75,6 @@ const char *mndTopicGetShowName(const char topic[TSDB_TOPIC_FNAME_LEN]) {
...
@@ -74,7 +75,6 @@ const char *mndTopicGetShowName(const char topic[TSDB_TOPIC_FNAME_LEN]) {
int32_t
mndCheckColAndTagModifiable
(
SMnode
*
pMnode
,
int64_t
suid
,
col_id_t
colId
)
{
int32_t
mndCheckColAndTagModifiable
(
SMnode
*
pMnode
,
int64_t
suid
,
col_id_t
colId
)
{
SSdb
*
pSdb
=
pMnode
->
pSdb
;
SSdb
*
pSdb
=
pMnode
->
pSdb
;
void
*
pIter
=
NULL
;
void
*
pIter
=
NULL
;
bool
found
=
false
;
while
(
1
)
{
while
(
1
)
{
SMqTopicObj
*
pTopic
=
NULL
;
SMqTopicObj
*
pTopic
=
NULL
;
pIter
=
sdbFetch
(
pSdb
,
SDB_TOPIC
,
pIter
,
(
void
**
)
&
pTopic
);
pIter
=
sdbFetch
(
pSdb
,
SDB_TOPIC
,
pIter
,
(
void
**
)
&
pTopic
);
...
@@ -95,10 +95,12 @@ int32_t mndCheckColAndTagModifiable(SMnode *pMnode, int64_t suid, col_id_t colId
...
@@ -95,10 +95,12 @@ int32_t mndCheckColAndTagModifiable(SMnode *pMnode, int64_t suid, col_id_t colId
SNode
*
pNode
=
NULL
;
SNode
*
pNode
=
NULL
;
FOREACH
(
pNode
,
pNodeList
)
{
FOREACH
(
pNode
,
pNodeList
)
{
SColumnNode
*
pCol
=
(
SColumnNode
*
)
pNode
;
SColumnNode
*
pCol
=
(
SColumnNode
*
)
pNode
;
if
(
pCol
->
tableId
!=
suid
)
goto
NEXT
;
if
(
pCol
->
tableId
!=
suid
&&
pTopic
->
ctbStbUid
!=
suid
)
goto
NEXT
;
if
(
pCol
->
colId
>
0
&&
pCol
->
colId
==
colId
)
{
if
(
pCol
->
colId
>
0
&&
pCol
->
colId
==
colId
)
{
found
=
true
;
sdbRelease
(
pSdb
,
pTopic
);
goto
NEXT
;
nodesDestroyNode
(
pAst
);
terrno
=
TSDB_CODE_MND_FIELD_CONFLICT_WITH_TOPIC
;
return
-
1
;
}
}
mTrace
(
"topic:%s, colId:%d is used"
,
pTopic
->
name
,
pCol
->
colId
);
mTrace
(
"topic:%s, colId:%d is used"
,
pTopic
->
name
,
pCol
->
colId
);
}
}
...
@@ -106,10 +108,6 @@ int32_t mndCheckColAndTagModifiable(SMnode *pMnode, int64_t suid, col_id_t colId
...
@@ -106,10 +108,6 @@ int32_t mndCheckColAndTagModifiable(SMnode *pMnode, int64_t suid, col_id_t colId
NEXT:
NEXT:
sdbRelease
(
pSdb
,
pTopic
);
sdbRelease
(
pSdb
,
pTopic
);
nodesDestroyNode
(
pAst
);
nodesDestroyNode
(
pAst
);
if
(
found
)
{
terrno
=
TSDB_CODE_MND_FIELD_CONFLICT_WITH_TOPIC
;
return
-
1
;
}
}
}
return
0
;
return
0
;
...
@@ -127,8 +125,10 @@ SSdbRaw *mndTopicActionEncode(SMqTopicObj *pTopic) {
...
@@ -127,8 +125,10 @@ SSdbRaw *mndTopicActionEncode(SMqTopicObj *pTopic) {
if
(
pTopic
->
schema
.
nCols
)
{
if
(
pTopic
->
schema
.
nCols
)
{
schemaLen
=
taosEncodeSSchemaWrapper
(
NULL
,
&
pTopic
->
schema
);
schemaLen
=
taosEncodeSSchemaWrapper
(
NULL
,
&
pTopic
->
schema
);
}
}
int32_t
size
=
int32_t
ntbColLen
=
taosArrayGetSize
(
pTopic
->
ntbColIds
)
*
sizeof
(
int16_t
);
sizeof
(
SMqTopicObj
)
+
physicalPlanLen
+
pTopic
->
sqlLen
+
pTopic
->
astLen
+
schemaLen
+
MND_TOPIC_RESERVE_SIZE
;
int32_t
size
=
sizeof
(
SMqTopicObj
)
+
physicalPlanLen
+
pTopic
->
sqlLen
+
pTopic
->
astLen
+
schemaLen
+
ntbColLen
+
MND_TOPIC_RESERVE_SIZE
;
SSdbRaw
*
pRaw
=
sdbAllocRaw
(
SDB_TOPIC
,
MND_TOPIC_VER_NUMBER
,
size
);
SSdbRaw
*
pRaw
=
sdbAllocRaw
(
SDB_TOPIC
,
MND_TOPIC_VER_NUMBER
,
size
);
if
(
pRaw
==
NULL
)
goto
TOPIC_ENCODE_OVER
;
if
(
pRaw
==
NULL
)
goto
TOPIC_ENCODE_OVER
;
...
@@ -164,6 +164,16 @@ SSdbRaw *mndTopicActionEncode(SMqTopicObj *pTopic) {
...
@@ -164,6 +164,16 @@ SSdbRaw *mndTopicActionEncode(SMqTopicObj *pTopic) {
taosEncodeSSchemaWrapper
(
&
aswBuf
,
&
pTopic
->
schema
);
taosEncodeSSchemaWrapper
(
&
aswBuf
,
&
pTopic
->
schema
);
SDB_SET_BINARY
(
pRaw
,
dataPos
,
swBuf
,
schemaLen
,
TOPIC_ENCODE_OVER
);
SDB_SET_BINARY
(
pRaw
,
dataPos
,
swBuf
,
schemaLen
,
TOPIC_ENCODE_OVER
);
}
}
SDB_SET_INT64
(
pRaw
,
dataPos
,
pTopic
->
ntbUid
,
TOPIC_ENCODE_OVER
);
if
(
pTopic
->
ntbUid
!=
0
)
{
int32_t
sz
=
taosArrayGetSize
(
pTopic
->
ntbColIds
);
SDB_SET_INT32
(
pRaw
,
dataPos
,
sz
,
TOPIC_ENCODE_OVER
);
for
(
int32_t
i
=
0
;
i
<
sz
;
i
++
)
{
int16_t
colId
=
*
(
int16_t
*
)
taosArrayGet
(
pTopic
->
ntbColIds
,
i
);
SDB_SET_INT16
(
pRaw
,
dataPos
,
colId
,
TOPIC_ENCODE_OVER
);
}
}
SDB_SET_INT64
(
pRaw
,
dataPos
,
pTopic
->
ctbStbUid
,
TOPIC_ENCODE_OVER
);
SDB_SET_RESERVE
(
pRaw
,
dataPos
,
MND_TOPIC_RESERVE_SIZE
,
TOPIC_ENCODE_OVER
);
SDB_SET_RESERVE
(
pRaw
,
dataPos
,
MND_TOPIC_RESERVE_SIZE
,
TOPIC_ENCODE_OVER
);
SDB_SET_DATALEN
(
pRaw
,
dataPos
,
TOPIC_ENCODE_OVER
);
SDB_SET_DATALEN
(
pRaw
,
dataPos
,
TOPIC_ENCODE_OVER
);
...
@@ -259,6 +269,20 @@ SSdbRow *mndTopicActionDecode(SSdbRaw *pRaw) {
...
@@ -259,6 +269,20 @@ SSdbRow *mndTopicActionDecode(SSdbRaw *pRaw) {
pTopic
->
schema
.
version
=
0
;
pTopic
->
schema
.
version
=
0
;
pTopic
->
schema
.
pSchema
=
NULL
;
pTopic
->
schema
.
pSchema
=
NULL
;
}
}
SDB_GET_INT64
(
pRaw
,
dataPos
,
&
pTopic
->
ntbUid
,
TOPIC_DECODE_OVER
);
if
(
pTopic
->
ntbUid
!=
0
)
{
int32_t
ntbColNum
;
SDB_GET_INT32
(
pRaw
,
dataPos
,
&
ntbColNum
,
TOPIC_DECODE_OVER
);
pTopic
->
ntbColIds
=
taosArrayInit
(
ntbColNum
,
sizeof
(
int16_t
));
if
(
pTopic
->
ntbColIds
==
NULL
)
{
terrno
=
TSDB_CODE_OUT_OF_MEMORY
;
goto
TOPIC_DECODE_OVER
;
}
int16_t
colId
;
SDB_GET_INT16
(
pRaw
,
dataPos
,
&
colId
,
TOPIC_DECODE_OVER
);
taosArrayPush
(
pTopic
->
ntbColIds
,
&
colId
);
}
SDB_GET_INT64
(
pRaw
,
dataPos
,
&
pTopic
->
ctbStbUid
,
TOPIC_DECODE_OVER
);
SDB_GET_RESERVE
(
pRaw
,
dataPos
,
MND_TOPIC_RESERVE_SIZE
,
TOPIC_DECODE_OVER
);
SDB_GET_RESERVE
(
pRaw
,
dataPos
,
MND_TOPIC_RESERVE_SIZE
,
TOPIC_DECODE_OVER
);
...
@@ -346,6 +370,26 @@ static int32_t mndCheckCreateTopicReq(SCMCreateTopicReq *pCreate) {
...
@@ -346,6 +370,26 @@ static int32_t mndCheckCreateTopicReq(SCMCreateTopicReq *pCreate) {
return
0
;
return
0
;
}
}
static
int32_t
extractTopicTbInfo
(
SNode
*
pAst
,
SMqTopicObj
*
pTopic
)
{
SNodeList
*
pNodeList
=
NULL
;
nodesCollectColumns
((
SSelectStmt
*
)
pAst
,
SQL_CLAUSE_FROM
,
NULL
,
COLLECT_COL_TYPE_ALL
,
&
pNodeList
);
int64_t
suid
=
((
SRealTableNode
*
)((
SSelectStmt
*
)
pAst
)
->
pFromTable
)
->
pMeta
->
suid
;
int8_t
tableType
=
((
SRealTableNode
*
)((
SSelectStmt
*
)
pAst
)
->
pFromTable
)
->
pMeta
->
tableType
;
if
(
tableType
==
TSDB_CHILD_TABLE
)
{
pTopic
->
ctbStbUid
=
suid
;
}
else
if
(
tableType
==
TSDB_NORMAL_TABLE
)
{
SNode
*
pNode
=
NULL
;
FOREACH
(
pNode
,
pNodeList
)
{
SColumnNode
*
pCol
=
(
SColumnNode
*
)
pNode
;
if
(
pCol
->
tableType
==
TSDB_NORMAL_TABLE
)
{
pTopic
->
ntbUid
=
pCol
->
tableId
;
taosArrayPush
(
pTopic
->
ntbColIds
,
&
pCol
->
colId
);
}
}
}
return
0
;
}
static
int32_t
mndCreateTopic
(
SMnode
*
pMnode
,
SRpcMsg
*
pReq
,
SCMCreateTopicReq
*
pCreate
,
SDbObj
*
pDb
)
{
static
int32_t
mndCreateTopic
(
SMnode
*
pMnode
,
SRpcMsg
*
pReq
,
SCMCreateTopicReq
*
pCreate
,
SDbObj
*
pDb
)
{
mDebug
(
"topic:%s to create"
,
pCreate
->
name
);
mDebug
(
"topic:%s to create"
,
pCreate
->
name
);
SMqTopicObj
topicObj
=
{
0
};
SMqTopicObj
topicObj
=
{
0
};
...
@@ -386,6 +430,19 @@ static int32_t mndCreateTopic(SMnode *pMnode, SRpcMsg *pReq, SCMCreateTopicReq *
...
@@ -386,6 +430,19 @@ static int32_t mndCreateTopic(SMnode *pMnode, SRpcMsg *pReq, SCMCreateTopicReq *
return
-
1
;
return
-
1
;
}
}
int64_t
ntbUid
;
topicObj
.
ntbColIds
=
taosArrayInit
(
0
,
sizeof
(
int16_t
));
if
(
topicObj
.
ntbColIds
==
NULL
)
{
terrno
=
TSDB_CODE_OUT_OF_MEMORY
;
return
-
1
;
}
extractTopicTbInfo
(
pAst
,
&
topicObj
);
if
(
topicObj
.
ntbUid
==
0
)
{
taosArrayDestroy
(
topicObj
.
ntbColIds
);
topicObj
.
ntbColIds
=
NULL
;
}
if
(
qExtractResultSchema
(
pAst
,
&
topicObj
.
schema
.
nCols
,
&
topicObj
.
schema
.
pSchema
)
!=
0
)
{
if
(
qExtractResultSchema
(
pAst
,
&
topicObj
.
schema
.
nCols
,
&
topicObj
.
schema
.
pSchema
)
!=
0
)
{
mError
(
"topic:%s, failed to create since %s"
,
pCreate
->
name
,
terrstr
());
mError
(
"topic:%s, failed to create since %s"
,
pCreate
->
name
,
terrstr
());
taosMemoryFree
(
topicObj
.
ast
);
taosMemoryFree
(
topicObj
.
ast
);
...
@@ -433,6 +490,60 @@ static int32_t mndCreateTopic(SMnode *pMnode, SRpcMsg *pReq, SCMCreateTopicReq *
...
@@ -433,6 +490,60 @@ static int32_t mndCreateTopic(SMnode *pMnode, SRpcMsg *pReq, SCMCreateTopicReq *
}
}
sdbSetRawStatus
(
pCommitRaw
,
SDB_STATUS_READY
);
sdbSetRawStatus
(
pCommitRaw
,
SDB_STATUS_READY
);
if
(
topicObj
.
ntbUid
!=
0
)
{
SCheckAlterInfo
info
;
memcpy
(
info
.
topic
,
topicObj
.
name
,
TSDB_TOPIC_FNAME_LEN
);
info
.
ntbUid
=
topicObj
.
ntbUid
;
info
.
colIdList
=
topicObj
.
ntbColIds
;
// broadcast forbid alter info
void
*
pIter
=
NULL
;
SSdb
*
pSdb
=
pMnode
->
pSdb
;
SVgObj
*
pVgroup
=
NULL
;
while
(
1
)
{
// iterate vg
pIter
=
sdbFetch
(
pSdb
,
SDB_VGROUP
,
pIter
,
(
void
**
)
&
pVgroup
);
if
(
pIter
==
NULL
)
break
;
if
(
!
mndVgroupInDb
(
pVgroup
,
topicObj
.
dbUid
))
{
sdbRelease
(
pSdb
,
pVgroup
);
continue
;
}
// encoder check alter info
int32_t
len
;
int32_t
code
;
tEncodeSize
(
tEncodeSCheckAlterInfo
,
&
info
,
len
,
code
);
if
(
code
<
0
)
{
sdbRelease
(
pSdb
,
pVgroup
);
mndTransDrop
(
pTrans
);
ASSERT
(
0
);
return
-
1
;
}
void
*
buf
=
taosMemoryCalloc
(
1
,
sizeof
(
SMsgHead
)
+
len
);
void
*
abuf
=
POINTER_SHIFT
(
buf
,
sizeof
(
SMsgHead
));
SEncoder
encoder
;
tEncoderInit
(
&
encoder
,
abuf
,
len
);
if
(
tEncodeSCheckAlterInfo
(
&
encoder
,
&
info
)
<
0
)
{
sdbRelease
(
pSdb
,
pVgroup
);
mndTransDrop
(
pTrans
);
return
-
1
;
}
tEncoderClear
(
&
encoder
);
((
SMsgHead
*
)
buf
)
->
vgId
=
htonl
(
pVgroup
->
vgId
);
// add redo action
STransAction
action
=
{
0
};
action
.
epSet
=
mndGetVgroupEpset
(
pMnode
,
pVgroup
);
action
.
pCont
=
buf
;
action
.
contLen
=
sizeof
(
SMsgHead
)
+
len
;
action
.
msgType
=
TDMT_VND_CHECK_ALTER_INFO
;
if
(
mndTransAppendRedoAction
(
pTrans
,
&
action
)
!=
0
)
{
taosMemoryFree
(
buf
);
sdbRelease
(
pSdb
,
pVgroup
);
mndTransDrop
(
pTrans
);
return
-
1
;
}
}
}
if
(
mndTransPrepare
(
pMnode
,
pTrans
)
!=
0
)
{
if
(
mndTransPrepare
(
pMnode
,
pTrans
)
!=
0
)
{
mError
(
"trans:%d, failed to prepare since %s"
,
pTrans
->
id
,
terrstr
());
mError
(
"trans:%d, failed to prepare since %s"
,
pTrans
->
id
,
terrstr
());
taosMemoryFreeClear
(
topicObj
.
physicalPlan
);
taosMemoryFreeClear
(
topicObj
.
physicalPlan
);
...
@@ -442,7 +553,7 @@ static int32_t mndCreateTopic(SMnode *pMnode, SRpcMsg *pReq, SCMCreateTopicReq *
...
@@ -442,7 +553,7 @@ static int32_t mndCreateTopic(SMnode *pMnode, SRpcMsg *pReq, SCMCreateTopicReq *
taosMemoryFreeClear
(
topicObj
.
physicalPlan
);
taosMemoryFreeClear
(
topicObj
.
physicalPlan
);
mndTransDrop
(
pTrans
);
mndTransDrop
(
pTrans
);
return
0
;
return
TSDB_CODE_ACTION_IN_PROGRESS
;
}
}
static
int32_t
mndProcessCreateTopicReq
(
SRpcMsg
*
pReq
)
{
static
int32_t
mndProcessCreateTopicReq
(
SRpcMsg
*
pReq
)
{
...
...
source/dnode/vnode/src/inc/tq.h
浏览文件 @
90348e52
...
@@ -89,7 +89,7 @@ typedef struct {
...
@@ -89,7 +89,7 @@ typedef struct {
STqExecDb
execDb
;
STqExecDb
execDb
;
};
};
int32_t
numOfCols
;
// number of out pout column, temporarily used
int32_t
numOfCols
;
// number of out pout column, temporarily used
SSchemaWrapper
*
pSchemaWrapper
;
// columns that are involved in query
SSchemaWrapper
*
pSchemaWrapper
;
// columns that are involved in query
}
STqExecHandle
;
}
STqExecHandle
;
typedef
struct
{
typedef
struct
{
...
@@ -110,9 +110,6 @@ typedef struct {
...
@@ -110,9 +110,6 @@ typedef struct {
// exec
// exec
STqExecHandle
execHandle
;
STqExecHandle
execHandle
;
// prevent drop
int64_t
ntbUid
;
SArray
*
colIdList
;
// SArray<int32_t>
}
STqHandle
;
}
STqHandle
;
struct
STQ
{
struct
STQ
{
...
@@ -120,9 +117,9 @@ struct STQ {
...
@@ -120,9 +117,9 @@ struct STQ {
SHashObj
*
pushMgr
;
// consumerId -> STqHandle*
SHashObj
*
pushMgr
;
// consumerId -> STqHandle*
SHashObj
*
handles
;
// subKey -> STqHandle
SHashObj
*
handles
;
// subKey -> STqHandle
SHashObj
*
pStreamTasks
;
// taksId -> SStreamTask
SHashObj
*
pStreamTasks
;
// taksId -> SStreamTask
SHashObj
*
pAlterInfo
;
// topic -> SAlterCheckInfo
STqOffsetStore
*
pOffsetStore
;
STqOffsetStore
*
pOffsetStore
;
SVnode
*
pVnode
;
SVnode
*
pVnode
;
SWal
*
pWal
;
TDB
*
pMetaStore
;
TDB
*
pMetaStore
;
TTB
*
pExecStore
;
TTB
*
pExecStore
;
};
};
...
...
source/dnode/vnode/src/inc/vnodeInt.h
浏览文件 @
90348e52
...
@@ -137,12 +137,13 @@ STsdbReader tsdbQueryCacheLastT(STsdb* tsdb, SQueryTableDataCond* pCond, STableL
...
@@ -137,12 +137,13 @@ STsdbReader tsdbQueryCacheLastT(STsdb* tsdb, SQueryTableDataCond* pCond, STableL
// tq
// tq
int
tqInit
();
int
tqInit
();
void
tqCleanUp
();
void
tqCleanUp
();
STQ
*
tqOpen
(
const
char
*
path
,
SVnode
*
pVnode
,
SWal
*
pWal
);
STQ
*
tqOpen
(
const
char
*
path
,
SVnode
*
pVnode
);
void
tqClose
(
STQ
*
);
void
tqClose
(
STQ
*
);
int
tqPushMsg
(
STQ
*
,
void
*
msg
,
int32_t
msgLen
,
tmsg_t
msgType
,
int64_t
ver
);
int
tqPushMsg
(
STQ
*
,
void
*
msg
,
int32_t
msgLen
,
tmsg_t
msgType
,
int64_t
ver
);
int
tqCommit
(
STQ
*
);
int
tqCommit
(
STQ
*
);
int32_t
tqUpdateTbUidList
(
STQ
*
pTq
,
const
SArray
*
tbUidList
,
bool
isAdd
);
int32_t
tqUpdateTbUidList
(
STQ
*
pTq
,
const
SArray
*
tbUidList
,
bool
isAdd
);
int32_t
tqCheckColModifiable
(
STQ
*
pTq
,
int32_t
colId
);
int32_t
tqCheckColModifiable
(
STQ
*
pTq
,
int64_t
tbUid
,
int32_t
colId
);
int32_t
tqProcessCheckAlterInfoReq
(
STQ
*
pTq
,
char
*
msg
,
int32_t
msgLen
);
int32_t
tqProcessVgChangeReq
(
STQ
*
pTq
,
char
*
msg
,
int32_t
msgLen
);
int32_t
tqProcessVgChangeReq
(
STQ
*
pTq
,
char
*
msg
,
int32_t
msgLen
);
int32_t
tqProcessVgDeleteReq
(
STQ
*
pTq
,
char
*
msg
,
int32_t
msgLen
);
int32_t
tqProcessVgDeleteReq
(
STQ
*
pTq
,
char
*
msg
,
int32_t
msgLen
);
int32_t
tqProcessOffsetCommitReq
(
STQ
*
pTq
,
char
*
msg
,
int32_t
msgLen
);
int32_t
tqProcessOffsetCommitReq
(
STQ
*
pTq
,
char
*
msg
,
int32_t
msgLen
);
...
...
source/dnode/vnode/src/meta/metaTable.c
浏览文件 @
90348e52
...
@@ -640,6 +640,10 @@ static int metaAlterTableColumn(SMeta *pMeta, int64_t version, SVAlterTbReq *pAl
...
@@ -640,6 +640,10 @@ static int metaAlterTableColumn(SMeta *pMeta, int64_t version, SVAlterTbReq *pAl
terrno
=
TSDB_CODE_VND_INVALID_TABLE_ACTION
;
terrno
=
TSDB_CODE_VND_INVALID_TABLE_ACTION
;
goto
_err
;
goto
_err
;
}
}
if
(
tqCheckColModifiable
(
pMeta
->
pVnode
->
pTq
,
uid
,
pColumn
->
colId
)
!=
0
)
{
terrno
=
TSDB_CODE_VND_COL_SUBSCRIBED
;
goto
_err
;
}
pSchema
->
version
++
;
pSchema
->
version
++
;
tlen
=
(
pSchema
->
nCols
-
iCol
-
1
)
*
sizeof
(
SSchema
);
tlen
=
(
pSchema
->
nCols
-
iCol
-
1
)
*
sizeof
(
SSchema
);
if
(
tlen
)
{
if
(
tlen
)
{
...
@@ -656,6 +660,10 @@ static int metaAlterTableColumn(SMeta *pMeta, int64_t version, SVAlterTbReq *pAl
...
@@ -656,6 +660,10 @@ static int metaAlterTableColumn(SMeta *pMeta, int64_t version, SVAlterTbReq *pAl
terrno
=
TSDB_CODE_VND_INVALID_TABLE_ACTION
;
terrno
=
TSDB_CODE_VND_INVALID_TABLE_ACTION
;
goto
_err
;
goto
_err
;
}
}
if
(
tqCheckColModifiable
(
pMeta
->
pVnode
->
pTq
,
uid
,
pColumn
->
colId
)
!=
0
)
{
terrno
=
TSDB_CODE_VND_COL_SUBSCRIBED
;
goto
_err
;
}
pSchema
->
version
++
;
pSchema
->
version
++
;
pColumn
->
bytes
=
pAlterTbReq
->
colModBytes
;
pColumn
->
bytes
=
pAlterTbReq
->
colModBytes
;
break
;
break
;
...
@@ -664,6 +672,10 @@ static int metaAlterTableColumn(SMeta *pMeta, int64_t version, SVAlterTbReq *pAl
...
@@ -664,6 +672,10 @@ static int metaAlterTableColumn(SMeta *pMeta, int64_t version, SVAlterTbReq *pAl
terrno
=
TSDB_CODE_VND_TABLE_COL_NOT_EXISTS
;
terrno
=
TSDB_CODE_VND_TABLE_COL_NOT_EXISTS
;
goto
_err
;
goto
_err
;
}
}
if
(
tqCheckColModifiable
(
pMeta
->
pVnode
->
pTq
,
uid
,
pColumn
->
colId
)
!=
0
)
{
terrno
=
TSDB_CODE_VND_COL_SUBSCRIBED
;
goto
_err
;
}
pSchema
->
version
++
;
pSchema
->
version
++
;
strcpy
(
pColumn
->
name
,
pAlterTbReq
->
colNewName
);
strcpy
(
pColumn
->
name
,
pAlterTbReq
->
colNewName
);
break
;
break
;
...
...
source/dnode/vnode/src/tq/tq.c
浏览文件 @
90348e52
...
@@ -51,7 +51,7 @@ void tqCleanUp() {
...
@@ -51,7 +51,7 @@ void tqCleanUp() {
}
}
}
}
STQ
*
tqOpen
(
const
char
*
path
,
SVnode
*
pVnode
,
SWal
*
pWal
)
{
STQ
*
tqOpen
(
const
char
*
path
,
SVnode
*
pVnode
)
{
STQ
*
pTq
=
taosMemoryCalloc
(
1
,
sizeof
(
STQ
));
STQ
*
pTq
=
taosMemoryCalloc
(
1
,
sizeof
(
STQ
));
if
(
pTq
==
NULL
)
{
if
(
pTq
==
NULL
)
{
terrno
=
TSDB_CODE_TQ_OUT_OF_MEMORY
;
terrno
=
TSDB_CODE_TQ_OUT_OF_MEMORY
;
...
@@ -59,7 +59,6 @@ STQ* tqOpen(const char* path, SVnode* pVnode, SWal* pWal) {
...
@@ -59,7 +59,6 @@ STQ* tqOpen(const char* path, SVnode* pVnode, SWal* pWal) {
}
}
pTq
->
path
=
strdup
(
path
);
pTq
->
path
=
strdup
(
path
);
pTq
->
pVnode
=
pVnode
;
pTq
->
pVnode
=
pVnode
;
pTq
->
pWal
=
pWal
;
pTq
->
handles
=
taosHashInit
(
64
,
MurmurHash3_32
,
true
,
HASH_ENTRY_LOCK
);
pTq
->
handles
=
taosHashInit
(
64
,
MurmurHash3_32
,
true
,
HASH_ENTRY_LOCK
);
...
@@ -67,6 +66,8 @@ STQ* tqOpen(const char* path, SVnode* pVnode, SWal* pWal) {
...
@@ -67,6 +66,8 @@ STQ* tqOpen(const char* path, SVnode* pVnode, SWal* pWal) {
pTq
->
pushMgr
=
taosHashInit
(
64
,
taosGetDefaultHashFunction
(
TSDB_DATA_TYPE_BIGINT
),
true
,
HASH_ENTRY_LOCK
);
pTq
->
pushMgr
=
taosHashInit
(
64
,
taosGetDefaultHashFunction
(
TSDB_DATA_TYPE_BIGINT
),
true
,
HASH_ENTRY_LOCK
);
pTq
->
pAlterInfo
=
taosHashInit
(
64
,
MurmurHash3_32
,
true
,
HASH_ENTRY_LOCK
);
if
(
tqMetaOpen
(
pTq
)
<
0
)
{
if
(
tqMetaOpen
(
pTq
)
<
0
)
{
ASSERT
(
0
);
ASSERT
(
0
);
}
}
...
@@ -91,6 +92,7 @@ void tqClose(STQ* pTq) {
...
@@ -91,6 +92,7 @@ void tqClose(STQ* pTq) {
}
}
taosHashCleanup
(
pTq
->
pStreamTasks
);
taosHashCleanup
(
pTq
->
pStreamTasks
);
taosHashCleanup
(
pTq
->
pushMgr
);
taosHashCleanup
(
pTq
->
pushMgr
);
taosHashCleanup
(
pTq
->
pAlterInfo
);
taosMemoryFree
(
pTq
->
path
);
taosMemoryFree
(
pTq
->
path
);
tqMetaClose
(
pTq
);
tqMetaClose
(
pTq
);
taosMemoryFree
(
pTq
);
taosMemoryFree
(
pTq
);
...
@@ -208,18 +210,18 @@ int32_t tqProcessOffsetCommitReq(STQ* pTq, char* msg, int32_t msgLen) {
...
@@ -208,18 +210,18 @@ int32_t tqProcessOffsetCommitReq(STQ* pTq, char* msg, int32_t msgLen) {
return
0
;
return
0
;
}
}
int32_t
tqCheckColModifiable
(
STQ
*
pTq
,
int32_t
colId
)
{
int32_t
tqCheckColModifiable
(
STQ
*
pTq
,
int
64_t
tbUid
,
int
32_t
colId
)
{
void
*
pIter
=
NULL
;
void
*
pIter
=
NULL
;
while
(
1
)
{
while
(
1
)
{
pIter
=
taosHashIterate
(
pTq
->
handles
,
pIter
);
pIter
=
taosHashIterate
(
pTq
->
pAlterInfo
,
pIter
);
if
(
pIter
==
NULL
)
break
;
if
(
pIter
==
NULL
)
break
;
S
TqHandle
*
pExec
=
(
STqHandle
*
)
pIter
;
S
CheckAlterInfo
*
pCheck
=
(
SCheckAlterInfo
*
)
pIter
;
if
(
p
Exec
->
execHandle
.
subType
==
TOPIC_SUB_TYPE__COLUMN
)
{
if
(
p
Check
->
ntbUid
==
tbUid
)
{
int32_t
sz
=
pExec
->
execHandle
.
pSchemaWrapper
->
nCols
;
int32_t
sz
=
taosArrayGetSize
(
pCheck
->
colIdList
)
;
for
(
int32_t
i
=
0
;
i
<
sz
;
i
++
)
{
for
(
int32_t
i
=
0
;
i
<
sz
;
i
++
)
{
SSchema
*
pSchema
=
&
pExec
->
execHandle
.
pSchemaWrapper
->
pSchema
[
i
]
;
int16_t
forbidColId
=
*
(
int16_t
*
)
taosArrayGet
(
pCheck
->
colIdList
,
i
)
;
if
(
pSchema
->
c
olId
==
colId
)
{
if
(
forbidC
olId
==
colId
)
{
taosHashCancelIterate
(
pTq
->
handles
,
pIter
);
taosHashCancelIterate
(
pTq
->
pAlterInfo
,
pIter
);
return
-
1
;
return
-
1
;
}
}
}
}
...
@@ -270,6 +272,7 @@ int32_t tqProcessPollReq(STQ* pTq, SRpcMsg* pMsg) {
...
@@ -270,6 +272,7 @@ int32_t tqProcessPollReq(STQ* pTq, SRpcMsg* pMsg) {
int32_t
code
=
0
;
int32_t
code
=
0
;
STqOffsetVal
reqOffset
=
pReq
->
reqOffset
;
STqOffsetVal
reqOffset
=
pReq
->
reqOffset
;
STqOffsetVal
fetchOffsetNew
;
STqOffsetVal
fetchOffsetNew
;
SWalCkHead
*
pCkHead
=
NULL
;
// 1.find handle
// 1.find handle
STqHandle
*
pHandle
=
taosHashGet
(
pTq
->
handles
,
pReq
->
subKey
,
strlen
(
pReq
->
subKey
));
STqHandle
*
pHandle
=
taosHashGet
(
pTq
->
handles
,
pReq
->
subKey
,
strlen
(
pReq
->
subKey
));
...
@@ -459,6 +462,7 @@ int32_t tqProcessPollReq(STQ* pTq, SRpcMsg* pMsg) {
...
@@ -459,6 +462,7 @@ int32_t tqProcessPollReq(STQ* pTq, SRpcMsg* pMsg) {
}
}
OVER:
OVER:
if
(
pCkHead
)
taosMemoryFree
(
pCkHead
);
// TODO wrap in destroy func
// TODO wrap in destroy func
taosArrayDestroy
(
dataRsp
.
blockDataLen
);
taosArrayDestroy
(
dataRsp
.
blockDataLen
);
taosArrayDestroyP
(
dataRsp
.
blockData
,
(
FDelete
)
taosMemoryFree
);
taosArrayDestroyP
(
dataRsp
.
blockData
,
(
FDelete
)
taosMemoryFree
);
...
@@ -488,6 +492,22 @@ int32_t tqProcessVgDeleteReq(STQ* pTq, char* msg, int32_t msgLen) {
...
@@ -488,6 +492,22 @@ int32_t tqProcessVgDeleteReq(STQ* pTq, char* msg, int32_t msgLen) {
return
0
;
return
0
;
}
}
int32_t
tqProcessCheckAlterInfoReq
(
STQ
*
pTq
,
char
*
msg
,
int32_t
msgLen
)
{
SCheckAlterInfo
info
=
{
0
};
SDecoder
decoder
;
tDecoderInit
(
&
decoder
,
msg
,
msgLen
);
if
(
tDecodeSCheckAlterInfo
(
&
decoder
,
&
info
)
<
0
)
{
terrno
=
TSDB_CODE_OUT_OF_MEMORY
;
return
-
1
;
}
tDecoderClear
(
&
decoder
);
if
(
taosHashPut
(
pTq
->
pAlterInfo
,
info
.
topic
,
strlen
(
info
.
topic
),
&
info
,
sizeof
(
SCheckAlterInfo
))
<
0
)
{
terrno
=
TSDB_CODE_OUT_OF_MEMORY
;
return
-
1
;
}
return
0
;
}
int32_t
tqProcessVgChangeReq
(
STQ
*
pTq
,
char
*
msg
,
int32_t
msgLen
)
{
int32_t
tqProcessVgChangeReq
(
STQ
*
pTq
,
char
*
msg
,
int32_t
msgLen
)
{
SMqRebVgReq
req
=
{
0
};
SMqRebVgReq
req
=
{
0
};
tDecodeSMqRebVgReq
(
msg
,
&
req
);
tDecodeSMqRebVgReq
(
msg
,
&
req
);
...
...
source/dnode/vnode/src/tq/tqExec.c
浏览文件 @
90348e52
...
@@ -201,10 +201,12 @@ int32_t tqLogScanExec(STQ* pTq, STqExecHandle* pExec, SSubmitReq* pReq, SMqDataR
...
@@ -201,10 +201,12 @@ int32_t tqLogScanExec(STQ* pTq, STqExecHandle* pExec, SSubmitReq* pReq, SMqDataR
if
(
pRsp
->
withTbName
)
{
if
(
pRsp
->
withTbName
)
{
int64_t
uid
=
pExec
->
pExecReader
->
msgIter
.
uid
;
int64_t
uid
=
pExec
->
pExecReader
->
msgIter
.
uid
;
if
(
tqAddTbNameToRsp
(
pTq
,
uid
,
pRsp
)
<
0
)
{
if
(
tqAddTbNameToRsp
(
pTq
,
uid
,
pRsp
)
<
0
)
{
blockDataFreeRes
(
&
block
);
continue
;
continue
;
}
}
}
}
tqAddBlockDataToRsp
(
&
block
,
pRsp
,
taosArrayGetSize
(
block
.
pDataBlock
));
tqAddBlockDataToRsp
(
&
block
,
pRsp
,
taosArrayGetSize
(
block
.
pDataBlock
));
blockDataFreeRes
(
&
block
);
tqAddBlockSchemaToRsp
(
pExec
,
pRsp
);
tqAddBlockSchemaToRsp
(
pExec
,
pRsp
);
pRsp
->
blockNum
++
;
pRsp
->
blockNum
++
;
}
}
...
@@ -220,10 +222,12 @@ int32_t tqLogScanExec(STQ* pTq, STqExecHandle* pExec, SSubmitReq* pReq, SMqDataR
...
@@ -220,10 +222,12 @@ int32_t tqLogScanExec(STQ* pTq, STqExecHandle* pExec, SSubmitReq* pReq, SMqDataR
if
(
pRsp
->
withTbName
)
{
if
(
pRsp
->
withTbName
)
{
int64_t
uid
=
pExec
->
pExecReader
->
msgIter
.
uid
;
int64_t
uid
=
pExec
->
pExecReader
->
msgIter
.
uid
;
if
(
tqAddTbNameToRsp
(
pTq
,
uid
,
pRsp
)
<
0
)
{
if
(
tqAddTbNameToRsp
(
pTq
,
uid
,
pRsp
)
<
0
)
{
blockDataFreeRes
(
&
block
);
continue
;
continue
;
}
}
}
}
tqAddBlockDataToRsp
(
&
block
,
pRsp
,
taosArrayGetSize
(
block
.
pDataBlock
));
tqAddBlockDataToRsp
(
&
block
,
pRsp
,
taosArrayGetSize
(
block
.
pDataBlock
));
blockDataFreeRes
(
&
block
);
tqAddBlockSchemaToRsp
(
pExec
,
pRsp
);
tqAddBlockSchemaToRsp
(
pExec
,
pRsp
);
pRsp
->
blockNum
++
;
pRsp
->
blockNum
++
;
}
}
...
...
source/dnode/vnode/src/tq/tqMeta.c
浏览文件 @
90348e52
...
@@ -89,8 +89,8 @@ int32_t tqMetaOpen(STQ* pTq) {
...
@@ -89,8 +89,8 @@ int32_t tqMetaOpen(STQ* pTq) {
.
version
=
handle
.
snapshotVer
,
.
version
=
handle
.
snapshotVer
,
};
};
handle
.
execHandle
.
execCol
.
task
=
handle
.
execHandle
.
execCol
.
task
=
qCreateQueueExecTaskInfo
(
qCreateQueueExecTaskInfo
(
handle
.
execHandle
.
execCol
.
qmsg
,
&
reader
,
&
handle
.
execHandle
.
numOfCols
,
&
handle
.
execHandle
.
pSchemaWrapper
);
handle
.
execHandle
.
execCol
.
qmsg
,
&
reader
,
&
handle
.
execHandle
.
numOfCols
,
&
handle
.
execHandle
.
pSchemaWrapper
);
ASSERT
(
handle
.
execHandle
.
execCol
.
task
);
ASSERT
(
handle
.
execHandle
.
execCol
.
task
);
void
*
scanner
=
NULL
;
void
*
scanner
=
NULL
;
qExtractStreamScanner
(
handle
.
execHandle
.
execCol
.
task
,
&
scanner
);
qExtractStreamScanner
(
handle
.
execHandle
.
execCol
.
task
,
&
scanner
);
...
...
source/dnode/vnode/src/tq/tqRead.c
浏览文件 @
90348e52
...
@@ -340,29 +340,30 @@ FAIL:
...
@@ -340,29 +340,30 @@ FAIL:
void
tqReaderSetColIdList
(
STqReader
*
pReadHandle
,
SArray
*
pColIdList
)
{
pReadHandle
->
pColIdList
=
pColIdList
;
}
void
tqReaderSetColIdList
(
STqReader
*
pReadHandle
,
SArray
*
pColIdList
)
{
pReadHandle
->
pColIdList
=
pColIdList
;
}
int
tqReaderSetTbUidList
(
STqReader
*
pHandle
,
const
SArray
*
tbUidList
)
{
int
tqReaderSetTbUidList
(
STqReader
*
pReader
,
const
SArray
*
tbUidList
)
{
if
(
pHandle
->
tbIdHash
)
{
if
(
pReader
->
tbIdHash
)
{
taosHashClear
(
pHandle
->
tbIdHash
);
taosHashClear
(
pReader
->
tbIdHash
);
}
else
{
pReader
->
tbIdHash
=
taosHashInit
(
64
,
taosGetDefaultHashFunction
(
TSDB_DATA_TYPE_BIGINT
),
true
,
HASH_NO_LOCK
);
}
}
pHandle
->
tbIdHash
=
taosHashInit
(
64
,
taosGetDefaultHashFunction
(
TSDB_DATA_TYPE_BIGINT
),
true
,
HASH_NO_LOCK
);
if
(
pReader
->
tbIdHash
==
NULL
)
{
if
(
pHandle
->
tbIdHash
==
NULL
)
{
terrno
=
TSDB_CODE_OUT_OF_MEMORY
;
terrno
=
TSDB_CODE_OUT_OF_MEMORY
;
return
-
1
;
return
-
1
;
}
}
for
(
int
i
=
0
;
i
<
taosArrayGetSize
(
tbUidList
);
i
++
)
{
for
(
int
i
=
0
;
i
<
taosArrayGetSize
(
tbUidList
);
i
++
)
{
int64_t
*
pKey
=
(
int64_t
*
)
taosArrayGet
(
tbUidList
,
i
);
int64_t
*
pKey
=
(
int64_t
*
)
taosArrayGet
(
tbUidList
,
i
);
taosHashPut
(
p
Handle
->
tbIdHash
,
pKey
,
sizeof
(
int64_t
),
NULL
,
0
);
taosHashPut
(
p
Reader
->
tbIdHash
,
pKey
,
sizeof
(
int64_t
),
NULL
,
0
);
}
}
return
0
;
return
0
;
}
}
int
tqReaderAddTbUidList
(
STqReader
*
p
Handle
,
const
SArray
*
tbUidList
)
{
int
tqReaderAddTbUidList
(
STqReader
*
p
Reader
,
const
SArray
*
tbUidList
)
{
if
(
p
Handle
->
tbIdHash
==
NULL
)
{
if
(
p
Reader
->
tbIdHash
==
NULL
)
{
p
Handle
->
tbIdHash
=
taosHashInit
(
64
,
taosGetDefaultHashFunction
(
TSDB_DATA_TYPE_BIGINT
),
true
,
HASH_NO_LOCK
);
p
Reader
->
tbIdHash
=
taosHashInit
(
64
,
taosGetDefaultHashFunction
(
TSDB_DATA_TYPE_BIGINT
),
true
,
HASH_NO_LOCK
);
if
(
p
Handle
->
tbIdHash
==
NULL
)
{
if
(
p
Reader
->
tbIdHash
==
NULL
)
{
terrno
=
TSDB_CODE_OUT_OF_MEMORY
;
terrno
=
TSDB_CODE_OUT_OF_MEMORY
;
return
-
1
;
return
-
1
;
}
}
...
@@ -370,18 +371,18 @@ int tqReaderAddTbUidList(STqReader* pHandle, const SArray* tbUidList) {
...
@@ -370,18 +371,18 @@ int tqReaderAddTbUidList(STqReader* pHandle, const SArray* tbUidList) {
for
(
int
i
=
0
;
i
<
taosArrayGetSize
(
tbUidList
);
i
++
)
{
for
(
int
i
=
0
;
i
<
taosArrayGetSize
(
tbUidList
);
i
++
)
{
int64_t
*
pKey
=
(
int64_t
*
)
taosArrayGet
(
tbUidList
,
i
);
int64_t
*
pKey
=
(
int64_t
*
)
taosArrayGet
(
tbUidList
,
i
);
taosHashPut
(
p
Handle
->
tbIdHash
,
pKey
,
sizeof
(
int64_t
),
NULL
,
0
);
taosHashPut
(
p
Reader
->
tbIdHash
,
pKey
,
sizeof
(
int64_t
),
NULL
,
0
);
}
}
return
0
;
return
0
;
}
}
int
tqReaderRemoveTbUidList
(
STqReader
*
p
Handle
,
const
SArray
*
tbUidList
)
{
int
tqReaderRemoveTbUidList
(
STqReader
*
p
Reader
,
const
SArray
*
tbUidList
)
{
ASSERT
(
p
Handle
->
tbIdHash
!=
NULL
);
ASSERT
(
p
Reader
->
tbIdHash
!=
NULL
);
for
(
int32_t
i
=
0
;
i
<
taosArrayGetSize
(
tbUidList
);
i
++
)
{
for
(
int32_t
i
=
0
;
i
<
taosArrayGetSize
(
tbUidList
);
i
++
)
{
int64_t
*
pKey
=
(
int64_t
*
)
taosArrayGet
(
tbUidList
,
i
);
int64_t
*
pKey
=
(
int64_t
*
)
taosArrayGet
(
tbUidList
,
i
);
taosHashRemove
(
p
Handle
->
tbIdHash
,
pKey
,
sizeof
(
int64_t
));
taosHashRemove
(
p
Reader
->
tbIdHash
,
pKey
,
sizeof
(
int64_t
));
}
}
return
0
;
return
0
;
...
...
source/dnode/vnode/src/tq/tqSink.c
浏览文件 @
90348e52
...
@@ -110,7 +110,6 @@ SSubmitReq* tdBlockToSubmit(const SArray* pBlocks, const STSchema* pTSchema, boo
...
@@ -110,7 +110,6 @@ SSubmitReq* tdBlockToSubmit(const SArray* pBlocks, const STSchema* pTSchema, boo
// TODO
// TODO
ret
=
rpcMallocCont
(
cap
);
ret
=
rpcMallocCont
(
cap
);
ret
->
header
.
vgId
=
vgId
;
ret
->
header
.
vgId
=
vgId
;
ret
->
version
=
htonl
(
1
);
ret
->
length
=
sizeof
(
SSubmitReq
);
ret
->
length
=
sizeof
(
SSubmitReq
);
ret
->
numOfBlocks
=
htonl
(
sz
);
ret
->
numOfBlocks
=
htonl
(
sz
);
...
...
source/dnode/vnode/src/vnd/vnodeCommit.c
浏览文件 @
90348e52
...
@@ -95,16 +95,19 @@ int vnodeSaveInfo(const char *dir, const SVnodeInfo *pInfo) {
...
@@ -95,16 +95,19 @@ int vnodeSaveInfo(const char *dir, const SVnodeInfo *pInfo) {
// save info to a vnode_tmp.json
// save info to a vnode_tmp.json
pFile
=
taosOpenFile
(
fname
,
TD_FILE_CREATE
|
TD_FILE_WRITE
|
TD_FILE_TRUNC
);
pFile
=
taosOpenFile
(
fname
,
TD_FILE_CREATE
|
TD_FILE_WRITE
|
TD_FILE_TRUNC
);
if
(
pFile
==
NULL
)
{
if
(
pFile
==
NULL
)
{
vError
(
"failed to open info file: %s for write: %s"
,
fname
,
terrstr
());
terrno
=
TAOS_SYSTEM_ERROR
(
errno
);
terrno
=
TAOS_SYSTEM_ERROR
(
errno
);
return
-
1
;
return
-
1
;
}
}
if
(
taosWriteFile
(
pFile
,
data
,
strlen
(
data
))
<
0
)
{
if
(
taosWriteFile
(
pFile
,
data
,
strlen
(
data
))
<
0
)
{
vError
(
"failed to write info file: %s data: %s"
,
fname
,
terrstr
());
terrno
=
TAOS_SYSTEM_ERROR
(
errno
);
terrno
=
TAOS_SYSTEM_ERROR
(
errno
);
goto
_err
;
goto
_err
;
}
}
if
(
taosFsyncFile
(
pFile
)
<
0
)
{
if
(
taosFsyncFile
(
pFile
)
<
0
)
{
vError
(
"failed to fsync info file: %s error: %s"
,
fname
,
terrstr
());
terrno
=
TAOS_SYSTEM_ERROR
(
errno
);
terrno
=
TAOS_SYSTEM_ERROR
(
errno
);
goto
_err
;
goto
_err
;
}
}
...
...
source/dnode/vnode/src/vnd/vnodeOpen.c
浏览文件 @
90348e52
...
@@ -135,7 +135,7 @@ SVnode *vnodeOpen(const char *path, STfs *pTfs, SMsgCb msgCb) {
...
@@ -135,7 +135,7 @@ SVnode *vnodeOpen(const char *path, STfs *pTfs, SMsgCb msgCb) {
// open tq
// open tq
sprintf
(
tdir
,
"%s%s%s"
,
dir
,
TD_DIRSEP
,
VNODE_TQ_DIR
);
sprintf
(
tdir
,
"%s%s%s"
,
dir
,
TD_DIRSEP
,
VNODE_TQ_DIR
);
taosRealPath
(
tdir
,
NULL
,
sizeof
(
tdir
));
taosRealPath
(
tdir
,
NULL
,
sizeof
(
tdir
));
pVnode
->
pTq
=
tqOpen
(
tdir
,
pVnode
,
pVnode
->
pWal
);
pVnode
->
pTq
=
tqOpen
(
tdir
,
pVnode
);
if
(
pVnode
->
pTq
==
NULL
)
{
if
(
pVnode
->
pTq
==
NULL
)
{
vError
(
"vgId:%d, failed to open vnode tq since %s"
,
TD_VID
(
pVnode
),
tstrerror
(
terrno
));
vError
(
"vgId:%d, failed to open vnode tq since %s"
,
TD_VID
(
pVnode
),
tstrerror
(
terrno
));
goto
_err
;
goto
_err
;
...
...
source/dnode/vnode/src/vnd/vnodeSvr.c
浏览文件 @
90348e52
...
@@ -206,6 +206,12 @@ int32_t vnodeProcessWriteMsg(SVnode *pVnode, SRpcMsg *pMsg, int64_t version, SRp
...
@@ -206,6 +206,12 @@ int32_t vnodeProcessWriteMsg(SVnode *pVnode, SRpcMsg *pMsg, int64_t version, SRp
goto
_err
;
goto
_err
;
}
}
break
;
break
;
case
TDMT_VND_CHECK_ALTER_INFO
:
if
(
tqProcessCheckAlterInfoReq
(
pVnode
->
pTq
,
POINTER_SHIFT
(
pMsg
->
pCont
,
sizeof
(
SMsgHead
)),
pMsg
->
contLen
-
sizeof
(
SMsgHead
))
<
0
)
{
goto
_err
;
}
break
;
case
TDMT_STREAM_TASK_DEPLOY
:
{
case
TDMT_STREAM_TASK_DEPLOY
:
{
if
(
tqProcessTaskDeployReq
(
pVnode
->
pTq
,
POINTER_SHIFT
(
pMsg
->
pCont
,
sizeof
(
SMsgHead
)),
if
(
tqProcessTaskDeployReq
(
pVnode
->
pTq
,
POINTER_SHIFT
(
pMsg
->
pCont
,
sizeof
(
SMsgHead
)),
pMsg
->
contLen
-
sizeof
(
SMsgHead
))
<
0
)
{
pMsg
->
contLen
-
sizeof
(
SMsgHead
))
<
0
)
{
...
...
source/libs/executor/inc/executorimpl.h
浏览文件 @
90348e52
...
@@ -52,11 +52,12 @@ typedef int32_t (*__block_search_fn_t)(char* data, int32_t num, int64_t key, int
...
@@ -52,11 +52,12 @@ typedef int32_t (*__block_search_fn_t)(char* data, int32_t num, int64_t key, int
#define NEEDTO_COMPRESS_QUERY(size) ((size) > tsCompressColData ? 1 : 0)
#define NEEDTO_COMPRESS_QUERY(size) ((size) > tsCompressColData ? 1 : 0)
#define START_TS_COLUMN_INDEX 0
#define START_TS_COLUMN_INDEX 0
#define END_TS_COLUMN_INDEX 1
#define END_TS_COLUMN_INDEX 1
#define UID_COLUMN_INDEX 2
#define UID_COLUMN_INDEX 2
#define GROUPID_COLUMN_INDEX UID_COLUMN_INDEX
#define GROUPID_COLUMN_INDEX 3
#define DELETE_GROUPID_COLUMN_INDEX 2
#define CALCULATE_START_TS_COLUMN_INDEX 4
#define CALCULATE_END_TS_COLUMN_INDEX 5
enum
{
enum
{
// when this task starts to execute, this status will set
// when this task starts to execute, this status will set
...
@@ -175,6 +176,7 @@ typedef struct SExecTaskInfo {
...
@@ -175,6 +176,7 @@ typedef struct SExecTaskInfo {
int64_t
owner
;
// if it is in execution
int64_t
owner
;
// if it is in execution
int32_t
code
;
int32_t
code
;
int64_t
version
;
// used for stream to record wal version
SStreamTaskInfo
streamInfo
;
SStreamTaskInfo
streamInfo
;
SSchemaInfo
schemaInfo
;
SSchemaInfo
schemaInfo
;
STableListInfo
tableqinfoList
;
// this is a table list
STableListInfo
tableqinfoList
;
// this is a table list
...
@@ -346,7 +348,6 @@ typedef enum EStreamScanMode {
...
@@ -346,7 +348,6 @@ typedef enum EStreamScanMode {
STREAM_SCAN_FROM_READERHANDLE
=
1
,
STREAM_SCAN_FROM_READERHANDLE
=
1
,
STREAM_SCAN_FROM_RES
,
STREAM_SCAN_FROM_RES
,
STREAM_SCAN_FROM_UPDATERES
,
STREAM_SCAN_FROM_UPDATERES
,
STREAM_SCAN_FROM_DATAREADER
,
// todo(liuyao) delete it
STREAM_SCAN_FROM_DATAREADER_RETRIEVE
,
STREAM_SCAN_FROM_DATAREADER_RETRIEVE
,
STREAM_SCAN_FROM_DATAREADER_RANGE
,
STREAM_SCAN_FROM_DATAREADER_RANGE
,
}
EStreamScanMode
;
}
EStreamScanMode
;
...
@@ -366,7 +367,7 @@ typedef struct SStreamAggSupporter {
...
@@ -366,7 +367,7 @@ typedef struct SStreamAggSupporter {
char
*
pKeyBuf
;
// window key buffer
char
*
pKeyBuf
;
// window key buffer
SDiskbasedBuf
*
pResultBuf
;
// query result buffer based on blocked-wised disk file
SDiskbasedBuf
*
pResultBuf
;
// query result buffer based on blocked-wised disk file
int32_t
resultRowSize
;
// the result buffer size for each result row, with the meta data size for each row
int32_t
resultRowSize
;
// the result buffer size for each result row, with the meta data size for each row
S
Array
*
pScanWindow
;
S
SDataBlock
*
pScanBlock
;
}
SStreamAggSupporter
;
}
SStreamAggSupporter
;
typedef
struct
SessionWindowSupporter
{
typedef
struct
SessionWindowSupporter
{
...
@@ -419,7 +420,7 @@ typedef struct SStreamScanInfo {
...
@@ -419,7 +420,7 @@ typedef struct SStreamScanInfo {
int32_t
deleteDataIndex
;
int32_t
deleteDataIndex
;
STimeWindow
updateWin
;
STimeWindow
updateWin
;
STimeWindowAggSupp
twAggSup
;
STimeWindowAggSupp
twAggSup
;
SSDataBlock
*
pUpdateDataRes
;
// status for tmq
// status for tmq
// SSchemaWrapper schema;
// SSchemaWrapper schema;
STqOffset
offset
;
STqOffset
offset
;
...
@@ -712,7 +713,6 @@ typedef struct SStreamStateAggOperatorInfo {
...
@@ -712,7 +713,6 @@ typedef struct SStreamStateAggOperatorInfo {
SSDataBlock
*
pDelRes
;
SSDataBlock
*
pDelRes
;
SHashObj
*
pSeDeleted
;
SHashObj
*
pSeDeleted
;
void
*
pDelIterator
;
void
*
pDelIterator
;
SArray
*
pScanWindow
;
SArray
*
pChildren
;
// cache for children's result;
SArray
*
pChildren
;
// cache for children's result;
bool
ignoreExpiredData
;
bool
ignoreExpiredData
;
}
SStreamStateAggOperatorInfo
;
}
SStreamStateAggOperatorInfo
;
...
@@ -954,6 +954,7 @@ int32_t updateSessionWindowInfo(SResultWindowInfo* pWinInfo, TSKEY* pStartTs,
...
@@ -954,6 +954,7 @@ int32_t updateSessionWindowInfo(SResultWindowInfo* pWinInfo, TSKEY* pStartTs,
TSKEY
*
pEndTs
,
int32_t
rows
,
int32_t
start
,
int64_t
gap
,
SHashObj
*
pStDeleted
);
TSKEY
*
pEndTs
,
int32_t
rows
,
int32_t
start
,
int64_t
gap
,
SHashObj
*
pStDeleted
);
bool
functionNeedToExecute
(
SqlFunctionCtx
*
pCtx
);
bool
functionNeedToExecute
(
SqlFunctionCtx
*
pCtx
);
bool
isCloseWindow
(
STimeWindow
*
pWin
,
STimeWindowAggSupp
*
pSup
);
bool
isCloseWindow
(
STimeWindow
*
pWin
,
STimeWindowAggSupp
*
pSup
);
void
appendOneRow
(
SSDataBlock
*
pBlock
,
TSKEY
*
pStartTs
,
TSKEY
*
pEndTs
,
uint64_t
*
pUid
);
int32_t
finalizeResultRowIntoResultDataBlock
(
SDiskbasedBuf
*
pBuf
,
SResultRowPosition
*
resultRowPosition
,
int32_t
finalizeResultRowIntoResultDataBlock
(
SDiskbasedBuf
*
pBuf
,
SResultRowPosition
*
resultRowPosition
,
SqlFunctionCtx
*
pCtx
,
SExprInfo
*
pExprInfo
,
int32_t
numOfExprs
,
const
int32_t
*
rowCellOffset
,
SqlFunctionCtx
*
pCtx
,
SExprInfo
*
pExprInfo
,
int32_t
numOfExprs
,
const
int32_t
*
rowCellOffset
,
...
@@ -970,7 +971,7 @@ SOperatorInfo* createTableMergeScanOperatorInfo(STableScanPhysiNode* pTableScanN
...
@@ -970,7 +971,7 @@ SOperatorInfo* createTableMergeScanOperatorInfo(STableScanPhysiNode* pTableScanN
void
copyUpdateDataBlock
(
SSDataBlock
*
pDest
,
SSDataBlock
*
pSource
,
int32_t
tsColIndex
);
void
copyUpdateDataBlock
(
SSDataBlock
*
pDest
,
SSDataBlock
*
pSource
,
int32_t
tsColIndex
);
int32_t
generateGroupIdMap
(
STableListInfo
*
pTableListInfo
,
SReadHandle
*
pHandle
,
SNodeList
*
groupKey
);
int32_t
generateGroupIdMap
(
STableListInfo
*
pTableListInfo
,
SReadHandle
*
pHandle
,
SNodeList
*
groupKey
);
SSDataBlock
*
create
PullDataBlock
(
);
SSDataBlock
*
create
SpecialDataBlock
(
EStreamType
type
);
#ifdef __cplusplus
#ifdef __cplusplus
}
}
...
...
source/libs/executor/src/executorMain.c
浏览文件 @
90348e52
...
@@ -351,7 +351,6 @@ int32_t qStreamPrepareScan(qTaskInfo_t tinfo, const STqOffsetVal* pOffset) {
...
@@ -351,7 +351,6 @@ int32_t qStreamPrepareScan(qTaskInfo_t tinfo, const STqOffsetVal* pOffset) {
int32_t
tableSz
=
taosArrayGetSize
(
pTaskInfo
->
tableqinfoList
.
pTableList
);
int32_t
tableSz
=
taosArrayGetSize
(
pTaskInfo
->
tableqinfoList
.
pTableList
);
#ifndef NDEBUG
#ifndef NDEBUG
qDebug
(
"switch to next table %ld (cursor %d), %ld rows returned"
,
uid
,
pTableScanInfo
->
currentTable
,
qDebug
(
"switch to next table %ld (cursor %d), %ld rows returned"
,
uid
,
pTableScanInfo
->
currentTable
,
pInfo
->
pTableScanOp
->
resultInfo
.
totalRows
);
pInfo
->
pTableScanOp
->
resultInfo
.
totalRows
);
pInfo
->
pTableScanOp
->
resultInfo
.
totalRows
=
0
;
pInfo
->
pTableScanOp
->
resultInfo
.
totalRows
=
0
;
...
...
source/libs/executor/src/executorimpl.c
浏览文件 @
90348e52
...
@@ -521,7 +521,7 @@ static int32_t doSetInputDataBlock(SOperatorInfo* pOperator, SqlFunctionCtx* pCt
...
@@ -521,7 +521,7 @@ static int32_t doSetInputDataBlock(SOperatorInfo* pOperator, SqlFunctionCtx* pCt
// NOTE: the last parameter is the primary timestamp column
// NOTE: the last parameter is the primary timestamp column
// todo: refactor this
// todo: refactor this
if
(
fmIs
Timeline
Func
(
pCtx
[
i
].
functionId
)
&&
(
j
==
pOneExpr
->
base
.
numOfParams
-
1
))
{
if
(
fmIs
ImplicitTs
Func
(
pCtx
[
i
].
functionId
)
&&
(
j
==
pOneExpr
->
base
.
numOfParams
-
1
))
{
pInput
->
pPTS
=
pInput
->
pData
[
j
];
// in case of merge function, this is not always the ts column data.
pInput
->
pPTS
=
pInput
->
pData
[
j
];
// in case of merge function, this is not always the ts column data.
// ASSERT(pInput->pPTS->info.type == TSDB_DATA_TYPE_TIMESTAMP);
// ASSERT(pInput->pPTS->info.type == TSDB_DATA_TYPE_TIMESTAMP);
}
}
...
@@ -1602,6 +1602,9 @@ void doBuildResultDatablock(SOperatorInfo* pOperator, SOptrBasicInfo* pbInfo, SG
...
@@ -1602,6 +1602,9 @@ void doBuildResultDatablock(SOperatorInfo* pOperator, SOptrBasicInfo* pbInfo, SG
SSDataBlock
*
pBlock
=
pbInfo
->
pRes
;
SSDataBlock
*
pBlock
=
pbInfo
->
pRes
;
SqlFunctionCtx
*
pCtx
=
pOperator
->
exprSupp
.
pCtx
;
SqlFunctionCtx
*
pCtx
=
pOperator
->
exprSupp
.
pCtx
;
// set output datablock version
pBlock
->
info
.
version
=
pTaskInfo
->
version
;
blockDataCleanup
(
pBlock
);
blockDataCleanup
(
pBlock
);
if
(
!
hasDataInGroupInfo
(
pGroupResInfo
))
{
if
(
!
hasDataInGroupInfo
(
pGroupResInfo
))
{
return
;
return
;
...
@@ -4440,10 +4443,10 @@ SOperatorInfo* createOperatorTree(SPhysiNode* pPhyNode, SExecTaskInfo* pTaskInfo
...
@@ -4440,10 +4443,10 @@ SOperatorInfo* createOperatorTree(SPhysiNode* pPhyNode, SExecTaskInfo* pTaskInfo
return
createExchangeOperatorInfo
(
pHandle
->
pMsgCb
->
clientRpc
,
(
SExchangePhysiNode
*
)
pPhyNode
,
pTaskInfo
);
return
createExchangeOperatorInfo
(
pHandle
->
pMsgCb
->
clientRpc
,
(
SExchangePhysiNode
*
)
pPhyNode
,
pTaskInfo
);
}
else
if
(
QUERY_NODE_PHYSICAL_PLAN_STREAM_SCAN
==
type
)
{
}
else
if
(
QUERY_NODE_PHYSICAL_PLAN_STREAM_SCAN
==
type
)
{
STableScanPhysiNode
*
pTableScanNode
=
(
STableScanPhysiNode
*
)
pPhyNode
;
STableScanPhysiNode
*
pTableScanNode
=
(
STableScanPhysiNode
*
)
pPhyNode
;
STimeWindowAggSupp
aggSup
=
(
STimeWindowAggSupp
){
STimeWindowAggSupp
aggSup
=
(
STimeWindowAggSupp
){
.
waterMark
=
pTableScanNode
->
watermark
,
.
waterMark
=
pTableScanNode
->
watermark
,
.
calTrigger
=
pTableScanNode
->
triggerType
,
.
calTrigger
=
pTableScanNode
->
triggerType
,
.
maxTs
=
INT64_MIN
,
.
maxTs
=
INT64_MIN
,
};
};
if
(
pHandle
->
vnode
)
{
if
(
pHandle
->
vnode
)
{
...
@@ -5136,8 +5139,7 @@ int32_t initStreamAggSupporter(SStreamAggSupporter* pSup, const char* pKey, SqlF
...
@@ -5136,8 +5139,7 @@ int32_t initStreamAggSupporter(SStreamAggSupporter* pSup, const char* pKey, SqlF
}
}
pSup
->
valueSize
=
size
;
pSup
->
valueSize
=
size
;
pSup
->
pScanWindow
=
taosArrayInit
(
4
,
sizeof
(
STimeWindow
));
pSup
->
pScanBlock
=
createSpecialDataBlock
(
STREAM_CLEAR
);
int32_t
pageSize
=
4096
;
int32_t
pageSize
=
4096
;
while
(
pageSize
<
pSup
->
resultRowSize
*
4
)
{
while
(
pageSize
<
pSup
->
resultRowSize
*
4
)
{
pageSize
<<=
1u
;
pageSize
<<=
1u
;
...
...
source/libs/executor/src/scanoperator.c
浏览文件 @
90348e52
此差异已折叠。
点击以展开。
source/libs/executor/src/timewindowoperator.c
浏览文件 @
90348e52
...
@@ -1373,8 +1373,10 @@ void doDeleteSpecifyIntervalWindow(SAggSupporter* pAggSup, SSDataBlock* pBlock,
...
@@ -1373,8 +1373,10 @@ void doDeleteSpecifyIntervalWindow(SAggSupporter* pAggSup, SSDataBlock* pBlock,
static
void
doClearWindows
(
SAggSupporter
*
pAggSup
,
SExprSupp
*
pSup1
,
SInterval
*
pInterval
,
int32_t
numOfOutput
,
static
void
doClearWindows
(
SAggSupporter
*
pAggSup
,
SExprSupp
*
pSup1
,
SInterval
*
pInterval
,
int32_t
numOfOutput
,
SSDataBlock
*
pBlock
,
SArray
*
pUpWins
)
{
SSDataBlock
*
pBlock
,
SArray
*
pUpWins
)
{
SColumnInfoData
*
pTsCol
=
taosArrayGet
(
pBlock
->
pDataBlock
,
START_TS_COLUMN_INDEX
);
SColumnInfoData
*
pStartTsCol
=
taosArrayGet
(
pBlock
->
pDataBlock
,
START_TS_COLUMN_INDEX
);
TSKEY
*
tsCols
=
(
TSKEY
*
)
pTsCol
->
pData
;
TSKEY
*
startTsCols
=
(
TSKEY
*
)
pStartTsCol
->
pData
;
SColumnInfoData
*
pEndTsCol
=
taosArrayGet
(
pBlock
->
pDataBlock
,
END_TS_COLUMN_INDEX
);
TSKEY
*
endTsCols
=
(
TSKEY
*
)
pEndTsCol
->
pData
;
uint64_t
*
pGpDatas
=
NULL
;
uint64_t
*
pGpDatas
=
NULL
;
if
(
pBlock
->
info
.
type
==
STREAM_RETRIEVE
)
{
if
(
pBlock
->
info
.
type
==
STREAM_RETRIEVE
)
{
SColumnInfoData
*
pGpCol
=
taosArrayGet
(
pBlock
->
pDataBlock
,
GROUPID_COLUMN_INDEX
);
SColumnInfoData
*
pGpCol
=
taosArrayGet
(
pBlock
->
pDataBlock
,
GROUPID_COLUMN_INDEX
);
...
@@ -1382,22 +1384,18 @@ static void doClearWindows(SAggSupporter* pAggSup, SExprSupp* pSup1, SInterval*
...
@@ -1382,22 +1384,18 @@ static void doClearWindows(SAggSupporter* pAggSup, SExprSupp* pSup1, SInterval*
}
}
int32_t
step
=
0
;
int32_t
step
=
0
;
int32_t
startPos
=
0
;
int32_t
startPos
=
0
;
SResultRowInfo
dumyInfo
;
for
(
int32_t
i
=
0
;
i
<
pBlock
->
info
.
rows
;
i
++
)
{
dumyInfo
.
cur
.
pageId
=
-
1
;
SResultRowInfo
dumyInfo
;
STimeWindow
win
=
getActiveTimeWindow
(
NULL
,
&
dumyInfo
,
tsCols
[
0
],
pInterval
,
TSDB_ORDER_ASC
);
dumyInfo
.
cur
.
pageId
=
-
1
;
while
(
1
)
{
STimeWindow
win
=
getActiveTimeWindow
(
NULL
,
&
dumyInfo
,
startTsCols
[
i
],
pInterval
,
TSDB_ORDER_ASC
);
step
=
while
(
win
.
ekey
<=
endTsCols
[
i
])
{
getNumOfRowsInTimeWindow
(
&
pBlock
->
info
,
tsCols
,
startPos
,
win
.
ekey
,
binarySearchForKey
,
NULL
,
TSDB_ORDER_ASC
);
uint64_t
winGpId
=
pGpDatas
?
pGpDatas
[
startPos
]
:
pBlock
->
info
.
groupId
;
uint64_t
winGpId
=
pGpDatas
?
pGpDatas
[
startPos
]
:
pBlock
->
info
.
groupId
;
bool
res
=
doClearWindow
(
pAggSup
,
pSup1
,
(
char
*
)
&
win
.
skey
,
sizeof
(
TSKEY
),
winGpId
,
numOfOutput
);
bool
res
=
doClearWindow
(
pAggSup
,
pSup1
,
(
char
*
)
&
win
.
skey
,
sizeof
(
TSKEY
),
winGpId
,
numOfOutput
);
if
(
pUpWins
&&
res
)
{
if
(
pUpWins
&&
res
)
{
SWinRes
winRes
=
{.
ts
=
win
.
skey
,
.
groupId
=
winGpId
};
SWinRes
winRes
=
{.
ts
=
win
.
skey
,
.
groupId
=
winGpId
};
taosArrayPush
(
pUpWins
,
&
winRes
);
taosArrayPush
(
pUpWins
,
&
winRes
);
}
}
getNextTimeWindow
(
pInterval
,
pInterval
->
precision
,
TSDB_ORDER_ASC
,
&
win
);
int32_t
prevEndPos
=
step
-
1
+
startPos
;
startPos
=
getNextQualifiedWindow
(
pInterval
,
&
win
,
&
pBlock
->
info
,
tsCols
,
prevEndPos
,
TSDB_ORDER_ASC
);
if
(
startPos
<
0
)
{
break
;
}
}
}
}
}
}
...
@@ -1501,7 +1499,7 @@ static void doBuildDeleteResult(SArray* pWins, int32_t* index, SSDataBlock* pBlo
...
@@ -1501,7 +1499,7 @@ static void doBuildDeleteResult(SArray* pWins, int32_t* index, SSDataBlock* pBlo
}
}
blockDataEnsureCapacity
(
pBlock
,
size
-
*
index
);
blockDataEnsureCapacity
(
pBlock
,
size
-
*
index
);
SColumnInfoData
*
pTsCol
=
taosArrayGet
(
pBlock
->
pDataBlock
,
START_TS_COLUMN_INDEX
);
SColumnInfoData
*
pTsCol
=
taosArrayGet
(
pBlock
->
pDataBlock
,
START_TS_COLUMN_INDEX
);
SColumnInfoData
*
pGroupCol
=
taosArrayGet
(
pBlock
->
pDataBlock
,
DELETE_
GROUPID_COLUMN_INDEX
);
SColumnInfoData
*
pGroupCol
=
taosArrayGet
(
pBlock
->
pDataBlock
,
GROUPID_COLUMN_INDEX
);
for
(
int32_t
i
=
*
index
;
i
<
size
;
i
++
)
{
for
(
int32_t
i
=
*
index
;
i
<
size
;
i
++
)
{
SWinRes
*
pWin
=
taosArrayGet
(
pWins
,
i
);
SWinRes
*
pWin
=
taosArrayGet
(
pWins
,
i
);
colDataAppend
(
pTsCol
,
pBlock
->
info
.
rows
,
(
const
char
*
)
&
pWin
->
ts
,
false
);
colDataAppend
(
pTsCol
,
pBlock
->
info
.
rows
,
(
const
char
*
)
&
pWin
->
ts
,
false
);
...
@@ -1562,6 +1560,11 @@ static SSDataBlock* doStreamIntervalAgg(SOperatorInfo* pOperator) {
...
@@ -1562,6 +1560,11 @@ static SSDataBlock* doStreamIntervalAgg(SOperatorInfo* pOperator) {
continue
;
continue
;
}
}
if
(
pBlock
->
info
.
type
==
STREAM_NORMAL
)
{
//set input version
pTaskInfo
->
version
=
pBlock
->
info
.
version
;
}
if
(
pInfo
->
scalarSupp
.
pExprInfo
!=
NULL
)
{
if
(
pInfo
->
scalarSupp
.
pExprInfo
!=
NULL
)
{
SExprSupp
*
pExprSup
=
&
pInfo
->
scalarSupp
;
SExprSupp
*
pExprSup
=
&
pInfo
->
scalarSupp
;
projectApplyFunctions
(
pExprSup
->
pExprInfo
,
pBlock
,
pBlock
,
pExprSup
->
pCtx
,
pExprSup
->
numOfExprs
,
NULL
);
projectApplyFunctions
(
pExprSup
->
pExprInfo
,
pBlock
,
pBlock
,
pExprSup
->
pCtx
,
pExprSup
->
numOfExprs
,
NULL
);
...
@@ -1793,10 +1796,7 @@ SOperatorInfo* createIntervalOperatorInfo(SOperatorInfo* downstream, SExprInfo*
...
@@ -1793,10 +1796,7 @@ SOperatorInfo* createIntervalOperatorInfo(SOperatorInfo* downstream, SExprInfo*
pInfo
->
pRecycledPages
=
taosArrayInit
(
4
,
sizeof
(
int32_t
));
pInfo
->
pRecycledPages
=
taosArrayInit
(
4
,
sizeof
(
int32_t
));
pInfo
->
pDelWins
=
taosArrayInit
(
4
,
sizeof
(
SWinRes
));
pInfo
->
pDelWins
=
taosArrayInit
(
4
,
sizeof
(
SWinRes
));
pInfo
->
delIndex
=
0
;
pInfo
->
delIndex
=
0
;
// pInfo->pDelRes = createPullDataBlock(); todo(liuyao) for delete
pInfo
->
pDelRes
=
createSpecialDataBlock
(
STREAM_DELETE_RESULT
);
pInfo
->
pDelRes
=
createOneDataBlock
(
pInfo
->
binfo
.
pRes
,
false
);
// todo(liuyao) for delete
pInfo
->
pDelRes
->
info
.
type
=
STREAM_DELETE_RESULT
;
// todo(liuyao) for delete
initResultRowInfo
(
&
pInfo
->
binfo
.
resultRowInfo
);
initResultRowInfo
(
&
pInfo
->
binfo
.
resultRowInfo
);
pOperator
->
name
=
"TimeIntervalAggOperator"
;
pOperator
->
name
=
"TimeIntervalAggOperator"
;
...
@@ -2598,14 +2598,6 @@ static void doHashInterval(SOperatorInfo* pOperatorInfo, SSDataBlock* pSDataBloc
...
@@ -2598,14 +2598,6 @@ static void doHashInterval(SOperatorInfo* pOperatorInfo, SSDataBlock* pSDataBloc
chId
=
getChildIndex
(
pSDataBlock
);
chId
=
getChildIndex
(
pSDataBlock
);
index
=
taosArraySearchIdx
(
chArray
,
&
chId
,
compareInt32Val
,
TD_EQ
);
index
=
taosArraySearchIdx
(
chArray
,
&
chId
,
compareInt32Val
,
TD_EQ
);
}
}
// if (index != -1 && pSDataBlock->info.type == STREAM_PULL_DATA) {
// qDebug("===stream===delete child id %d", chId);
// taosArrayRemove(chArray, index);
// if (taosArrayGetSize(chArray) == 0) {
// // pull data is over
// taosHashRemove(pInfo->pPullDataMap, &winRes, sizeof(SWinRes));
// }
// }
if
(
index
==
-
1
||
pSDataBlock
->
info
.
type
==
STREAM_PULL_DATA
)
{
if
(
index
==
-
1
||
pSDataBlock
->
info
.
type
==
STREAM_PULL_DATA
)
{
ignore
=
false
;
ignore
=
false
;
}
}
...
@@ -2697,16 +2689,18 @@ static void doBuildPullDataBlock(SArray* array, int32_t* pIndex, SSDataBlock* pB
...
@@ -2697,16 +2689,18 @@ static void doBuildPullDataBlock(SArray* array, int32_t* pIndex, SSDataBlock* pB
}
}
blockDataEnsureCapacity
(
pBlock
,
size
-
(
*
pIndex
));
blockDataEnsureCapacity
(
pBlock
,
size
-
(
*
pIndex
));
ASSERT
(
3
<=
taosArrayGetSize
(
pBlock
->
pDataBlock
));
ASSERT
(
3
<=
taosArrayGetSize
(
pBlock
->
pDataBlock
));
SColumnInfoData
*
pStartTs
=
(
SColumnInfoData
*
)
taosArrayGet
(
pBlock
->
pDataBlock
,
START_TS_COLUMN_INDEX
);
SColumnInfoData
*
pEndTs
=
(
SColumnInfoData
*
)
taosArrayGet
(
pBlock
->
pDataBlock
,
END_TS_COLUMN_INDEX
);
SColumnInfoData
*
pGroupId
=
(
SColumnInfoData
*
)
taosArrayGet
(
pBlock
->
pDataBlock
,
GROUPID_COLUMN_INDEX
);
SColumnInfoData
*
pCalStartTs
=
(
SColumnInfoData
*
)
taosArrayGet
(
pBlock
->
pDataBlock
,
CALCULATE_START_TS_COLUMN_INDEX
);
SColumnInfoData
*
pCalEndTs
=
(
SColumnInfoData
*
)
taosArrayGet
(
pBlock
->
pDataBlock
,
CALCULATE_END_TS_COLUMN_INDEX
);
for
(;
(
*
pIndex
)
<
size
;
(
*
pIndex
)
++
)
{
for
(;
(
*
pIndex
)
<
size
;
(
*
pIndex
)
++
)
{
SPullWindowInfo
*
pWin
=
taosArrayGet
(
array
,
(
*
pIndex
));
SPullWindowInfo
*
pWin
=
taosArrayGet
(
array
,
(
*
pIndex
));
SColumnInfoData
*
pStartTs
=
(
SColumnInfoData
*
)
taosArrayGet
(
pBlock
->
pDataBlock
,
START_TS_COLUMN_INDEX
);
colDataAppend
(
pStartTs
,
pBlock
->
info
.
rows
,
(
const
char
*
)
&
pWin
->
window
.
skey
,
false
);
colDataAppend
(
pStartTs
,
pBlock
->
info
.
rows
,
(
const
char
*
)
&
pWin
->
window
.
skey
,
false
);
SColumnInfoData
*
pEndTs
=
(
SColumnInfoData
*
)
taosArrayGet
(
pBlock
->
pDataBlock
,
END_TS_COLUMN_INDEX
);
colDataAppend
(
pEndTs
,
pBlock
->
info
.
rows
,
(
const
char
*
)
&
pWin
->
window
.
ekey
,
false
);
colDataAppend
(
pEndTs
,
pBlock
->
info
.
rows
,
(
const
char
*
)
&
pWin
->
window
.
ekey
,
false
);
SColumnInfoData
*
pGroupId
=
(
SColumnInfoData
*
)
taosArrayGet
(
pBlock
->
pDataBlock
,
GROUPID_COLUMN_INDEX
);
colDataAppend
(
pGroupId
,
pBlock
->
info
.
rows
,
(
const
char
*
)
&
pWin
->
groupId
,
false
);
colDataAppend
(
pGroupId
,
pBlock
->
info
.
rows
,
(
const
char
*
)
&
pWin
->
groupId
,
false
);
colDataAppend
(
pCalStartTs
,
pBlock
->
info
.
rows
,
(
const
char
*
)
&
pWin
->
window
.
skey
,
false
);
colDataAppend
(
pCalEndTs
,
pBlock
->
info
.
rows
,
(
const
char
*
)
&
pWin
->
window
.
ekey
,
false
);
pBlock
->
info
.
rows
++
;
pBlock
->
info
.
rows
++
;
}
}
if
((
*
pIndex
)
==
size
)
{
if
((
*
pIndex
)
==
size
)
{
...
@@ -2825,7 +2819,8 @@ static SSDataBlock* doStreamFinalIntervalAgg(SOperatorInfo* pOperator) {
...
@@ -2825,7 +2819,8 @@ static SSDataBlock* doStreamFinalIntervalAgg(SOperatorInfo* pOperator) {
continue
;
continue
;
}
}
removeResults
(
pUpWins
,
pUpdated
);
removeResults
(
pUpWins
,
pUpdated
);
copyUpdateDataBlock
(
pInfo
->
pUpdateRes
,
pBlock
,
pInfo
->
primaryTsIndex
);
copyDataBlock
(
pInfo
->
pUpdateRes
,
pBlock
);
// copyUpdateDataBlock(pInfo->pUpdateRes, pBlock, pInfo->primaryTsIndex);
pInfo
->
returnUpdate
=
true
;
pInfo
->
returnUpdate
=
true
;
taosArrayDestroy
(
pUpWins
);
taosArrayDestroy
(
pUpWins
);
break
;
break
;
...
@@ -2933,12 +2928,12 @@ static SSDataBlock* doStreamFinalIntervalAgg(SOperatorInfo* pOperator) {
...
@@ -2933,12 +2928,12 @@ static SSDataBlock* doStreamFinalIntervalAgg(SOperatorInfo* pOperator) {
return
NULL
;
return
NULL
;
}
}
SSDataBlock
*
create
PullDataBlock
(
)
{
SSDataBlock
*
create
SpecialDataBlock
(
EStreamType
type
)
{
SSDataBlock
*
pBlock
=
taosMemoryCalloc
(
1
,
sizeof
(
SSDataBlock
));
SSDataBlock
*
pBlock
=
taosMemoryCalloc
(
1
,
sizeof
(
SSDataBlock
));
pBlock
->
info
.
hasVarCol
=
false
;
pBlock
->
info
.
hasVarCol
=
false
;
pBlock
->
info
.
groupId
=
0
;
pBlock
->
info
.
groupId
=
0
;
pBlock
->
info
.
rows
=
0
;
pBlock
->
info
.
rows
=
0
;
pBlock
->
info
.
type
=
STREAM_RETRIEVE
;
pBlock
->
info
.
type
=
type
;
pBlock
->
info
.
rowSize
=
sizeof
(
TSKEY
)
+
sizeof
(
TSKEY
)
+
sizeof
(
uint64_t
);
pBlock
->
info
.
rowSize
=
sizeof
(
TSKEY
)
+
sizeof
(
TSKEY
)
+
sizeof
(
uint64_t
);
pBlock
->
pDataBlock
=
taosArrayInit
(
3
,
sizeof
(
SColumnInfoData
));
pBlock
->
pDataBlock
=
taosArrayInit
(
3
,
sizeof
(
SColumnInfoData
));
...
@@ -2952,6 +2947,14 @@ SSDataBlock* createPullDataBlock() {
...
@@ -2952,6 +2947,14 @@ SSDataBlock* createPullDataBlock() {
infoData
.
info
.
type
=
TSDB_DATA_TYPE_UBIGINT
;
infoData
.
info
.
type
=
TSDB_DATA_TYPE_UBIGINT
;
infoData
.
info
.
bytes
=
sizeof
(
uint64_t
);
infoData
.
info
.
bytes
=
sizeof
(
uint64_t
);
// uid
taosArrayPush
(
pBlock
->
pDataBlock
,
&
infoData
);
// group id
taosArrayPush
(
pBlock
->
pDataBlock
,
&
infoData
);
// calculate start ts
taosArrayPush
(
pBlock
->
pDataBlock
,
&
infoData
);
// calculate end ts
taosArrayPush
(
pBlock
->
pDataBlock
,
&
infoData
);
taosArrayPush
(
pBlock
->
pDataBlock
,
&
infoData
);
return
pBlock
;
return
pBlock
;
...
@@ -3019,8 +3022,7 @@ SOperatorInfo* createStreamFinalIntervalOperatorInfo(SOperatorInfo* downstream,
...
@@ -3019,8 +3022,7 @@ SOperatorInfo* createStreamFinalIntervalOperatorInfo(SOperatorInfo* downstream,
goto
_error
;
goto
_error
;
}
}
}
}
pInfo
->
pUpdateRes
=
createResDataBlock
(
pPhyNode
->
pOutputDataBlockDesc
);
pInfo
->
pUpdateRes
=
createSpecialDataBlock
(
STREAM_CLEAR
);
pInfo
->
pUpdateRes
->
info
.
type
=
STREAM_CLEAR
;
blockDataEnsureCapacity
(
pInfo
->
pUpdateRes
,
128
);
blockDataEnsureCapacity
(
pInfo
->
pUpdateRes
,
128
);
pInfo
->
returnUpdate
=
false
;
pInfo
->
returnUpdate
=
false
;
...
@@ -3042,11 +3044,9 @@ SOperatorInfo* createStreamFinalIntervalOperatorInfo(SOperatorInfo* downstream,
...
@@ -3042,11 +3044,9 @@ SOperatorInfo* createStreamFinalIntervalOperatorInfo(SOperatorInfo* downstream,
pInfo
->
pullIndex
=
0
;
pInfo
->
pullIndex
=
0
;
_hash_fn_t
hashFn
=
taosGetDefaultHashFunction
(
TSDB_DATA_TYPE_BINARY
);
_hash_fn_t
hashFn
=
taosGetDefaultHashFunction
(
TSDB_DATA_TYPE_BINARY
);
pInfo
->
pPullDataMap
=
taosHashInit
(
64
,
hashFn
,
false
,
HASH_NO_LOCK
);
pInfo
->
pPullDataMap
=
taosHashInit
(
64
,
hashFn
,
false
,
HASH_NO_LOCK
);
pInfo
->
pPullDataRes
=
create
PullDataBlock
(
);
pInfo
->
pPullDataRes
=
create
SpecialDataBlock
(
STREAM_RETRIEVE
);
pInfo
->
ignoreExpiredData
=
pIntervalPhyNode
->
window
.
igExpired
;
pInfo
->
ignoreExpiredData
=
pIntervalPhyNode
->
window
.
igExpired
;
// pInfo->pDelRes = createPullDataBlock(); // todo(liuyao) for delete
pInfo
->
pDelRes
=
createSpecialDataBlock
(
STREAM_DELETE_RESULT
);
pInfo
->
pDelRes
=
createOneDataBlock
(
pInfo
->
binfo
.
pRes
,
false
);
// todo(liuyao) for delete
pInfo
->
pDelRes
->
info
.
type
=
STREAM_DELETE_RESULT
;
// todo(liuyao) for delete
pInfo
->
delIndex
=
0
;
pInfo
->
delIndex
=
0
;
pInfo
->
pDelWins
=
taosArrayInit
(
4
,
sizeof
(
SWinRes
));
pInfo
->
pDelWins
=
taosArrayInit
(
4
,
sizeof
(
SWinRes
));
...
@@ -3061,7 +3061,9 @@ SOperatorInfo* createStreamFinalIntervalOperatorInfo(SOperatorInfo* downstream,
...
@@ -3061,7 +3061,9 @@ SOperatorInfo* createStreamFinalIntervalOperatorInfo(SOperatorInfo* downstream,
pOperator
->
fpSet
=
pOperator
->
fpSet
=
createOperatorFpSet
(
NULL
,
doStreamFinalIntervalAgg
,
NULL
,
NULL
,
destroyStreamFinalIntervalOperatorInfo
,
createOperatorFpSet
(
NULL
,
doStreamFinalIntervalAgg
,
NULL
,
NULL
,
destroyStreamFinalIntervalOperatorInfo
,
aggEncodeResultRow
,
aggDecodeResultRow
,
NULL
);
aggEncodeResultRow
,
aggDecodeResultRow
,
NULL
);
if
(
pPhyNode
->
type
==
QUERY_NODE_PHYSICAL_PLAN_STREAM_SEMI_INTERVAL
)
{
initIntervalDownStream
(
downstream
,
pPhyNode
->
type
);
}
code
=
appendDownstream
(
pOperator
,
&
downstream
,
1
);
code
=
appendDownstream
(
pOperator
,
&
downstream
,
1
);
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
goto
_error
;
goto
_error
;
...
@@ -3086,6 +3088,7 @@ void destroyStreamAggSupporter(SStreamAggSupporter* pSup) {
...
@@ -3086,6 +3088,7 @@ void destroyStreamAggSupporter(SStreamAggSupporter* pSup) {
}
}
taosHashCleanup
(
pSup
->
pResultRows
);
taosHashCleanup
(
pSup
->
pResultRows
);
destroyDiskbasedBuf
(
pSup
->
pResultBuf
);
destroyDiskbasedBuf
(
pSup
->
pResultBuf
);
blockDataDestroy
(
pSup
->
pScanBlock
);
}
}
void
destroyStreamSessionAggOperatorInfo
(
void
*
param
,
int32_t
numOfOutput
)
{
void
destroyStreamSessionAggOperatorInfo
(
void
*
param
,
int32_t
numOfOutput
)
{
...
@@ -3200,7 +3203,7 @@ SOperatorInfo* createStreamSessionAggOperatorInfo(SOperatorInfo* downstream, SPh
...
@@ -3200,7 +3203,7 @@ SOperatorInfo* createStreamSessionAggOperatorInfo(SOperatorInfo* downstream, SPh
_hash_fn_t
hashFn
=
taosGetDefaultHashFunction
(
TSDB_DATA_TYPE_BINARY
);
_hash_fn_t
hashFn
=
taosGetDefaultHashFunction
(
TSDB_DATA_TYPE_BINARY
);
pInfo
->
pStDeleted
=
taosHashInit
(
64
,
hashFn
,
true
,
HASH_NO_LOCK
);
pInfo
->
pStDeleted
=
taosHashInit
(
64
,
hashFn
,
true
,
HASH_NO_LOCK
);
pInfo
->
pDelIterator
=
NULL
;
pInfo
->
pDelIterator
=
NULL
;
// pInfo->pDelRes = create
PullDataBlock(
);
// pInfo->pDelRes = create
SpecialDataBlock(STREAM_DELETE_RESULT
);
pInfo
->
pDelRes
=
createOneDataBlock
(
pInfo
->
binfo
.
pRes
,
false
);
// todo(liuyao) for delete
pInfo
->
pDelRes
=
createOneDataBlock
(
pInfo
->
binfo
.
pRes
,
false
);
// todo(liuyao) for delete
pInfo
->
pDelRes
->
info
.
type
=
STREAM_DELETE_RESULT
;
// todo(liuyao) for delete
pInfo
->
pDelRes
->
info
.
type
=
STREAM_DELETE_RESULT
;
// todo(liuyao) for delete
pInfo
->
pChildren
=
NULL
;
pInfo
->
pChildren
=
NULL
;
...
@@ -3559,7 +3562,7 @@ static void doDeleteTimeWindows(SStreamAggSupporter* pAggSup, SSDataBlock* pBloc
...
@@ -3559,7 +3562,7 @@ static void doDeleteTimeWindows(SStreamAggSupporter* pAggSup, SSDataBlock* pBloc
TSKEY
*
startDatas
=
(
TSKEY
*
)
pStartTsCol
->
pData
;
TSKEY
*
startDatas
=
(
TSKEY
*
)
pStartTsCol
->
pData
;
SColumnInfoData
*
pEndTsCol
=
taosArrayGet
(
pBlock
->
pDataBlock
,
END_TS_COLUMN_INDEX
);
SColumnInfoData
*
pEndTsCol
=
taosArrayGet
(
pBlock
->
pDataBlock
,
END_TS_COLUMN_INDEX
);
TSKEY
*
endDatas
=
(
TSKEY
*
)
pEndTsCol
->
pData
;
TSKEY
*
endDatas
=
(
TSKEY
*
)
pEndTsCol
->
pData
;
SColumnInfoData
*
pGroupCol
=
taosArrayGet
(
pBlock
->
pDataBlock
,
U
ID_COLUMN_INDEX
);
SColumnInfoData
*
pGroupCol
=
taosArrayGet
(
pBlock
->
pDataBlock
,
GROUP
ID_COLUMN_INDEX
);
uint64_t
*
gpDatas
=
(
uint64_t
*
)
pGroupCol
->
pData
;
uint64_t
*
gpDatas
=
(
uint64_t
*
)
pGroupCol
->
pData
;
for
(
int32_t
i
=
0
;
i
<
pBlock
->
info
.
rows
;
i
++
)
{
for
(
int32_t
i
=
0
;
i
<
pBlock
->
info
.
rows
;
i
++
)
{
int32_t
winIndex
=
0
;
int32_t
winIndex
=
0
;
...
@@ -4255,7 +4258,6 @@ static void doClearStateWindows(SStreamAggSupporter* pAggSup, SSDataBlock* pBloc
...
@@ -4255,7 +4258,6 @@ static void doClearStateWindows(SStreamAggSupporter* pAggSup, SSDataBlock* pBloc
step
=
updateStateWindowInfo
(
pAggSup
->
pCurWins
,
winIndex
,
tsCol
,
pKeyColInfo
,
pBlock
->
info
.
rows
,
i
,
&
allEqual
,
step
=
updateStateWindowInfo
(
pAggSup
->
pCurWins
,
winIndex
,
tsCol
,
pKeyColInfo
,
pBlock
->
info
.
rows
,
i
,
&
allEqual
,
pSeDeleted
);
pSeDeleted
);
ASSERT
(
isTsInWindow
(
pCurWin
,
tsCol
[
i
])
||
isEqualStateKey
(
pCurWin
,
pKeyData
));
ASSERT
(
isTsInWindow
(
pCurWin
,
tsCol
[
i
])
||
isEqualStateKey
(
pCurWin
,
pKeyData
));
taosArrayPush
(
pAggSup
->
pScanWindow
,
&
pCurWin
->
winInfo
.
win
);
taosHashRemove
(
pSeUpdated
,
&
pCurWin
->
winInfo
.
pos
,
sizeof
(
SResultRowPosition
));
taosHashRemove
(
pSeUpdated
,
&
pCurWin
->
winInfo
.
pos
,
sizeof
(
SResultRowPosition
));
deleteWindow
(
pAggSup
->
pCurWins
,
winIndex
);
deleteWindow
(
pAggSup
->
pCurWins
,
winIndex
);
}
}
...
@@ -4280,8 +4282,9 @@ static void doStreamStateAggImpl(SOperatorInfo* pOperator, SSDataBlock* pSDataBl
...
@@ -4280,8 +4282,9 @@ static void doStreamStateAggImpl(SOperatorInfo* pOperator, SSDataBlock* pSDataBl
}
else
{
}
else
{
return
;
return
;
}
}
SStreamAggSupporter
*
pAggSup
=
&
pInfo
->
streamAggSup
;
SStreamAggSupporter
*
pAggSup
=
&
pInfo
->
streamAggSup
;
blockDataEnsureCapacity
(
pAggSup
->
pScanBlock
,
pSDataBlock
->
info
.
rows
);
SColumnInfoData
*
pKeyColInfo
=
taosArrayGet
(
pSDataBlock
->
pDataBlock
,
pInfo
->
stateCol
.
slotId
);
SColumnInfoData
*
pKeyColInfo
=
taosArrayGet
(
pSDataBlock
->
pDataBlock
,
pInfo
->
stateCol
.
slotId
);
for
(
int32_t
i
=
0
;
i
<
pSDataBlock
->
info
.
rows
;
i
+=
winRows
)
{
for
(
int32_t
i
=
0
;
i
<
pSDataBlock
->
info
.
rows
;
i
+=
winRows
)
{
if
(
pInfo
->
ignoreExpiredData
&&
isOverdue
(
tsCols
[
i
],
&
pInfo
->
twAggSup
))
{
if
(
pInfo
->
ignoreExpiredData
&&
isOverdue
(
tsCols
[
i
],
&
pInfo
->
twAggSup
))
{
...
@@ -4296,7 +4299,8 @@ static void doStreamStateAggImpl(SOperatorInfo* pOperator, SSDataBlock* pSDataBl
...
@@ -4296,7 +4299,8 @@ static void doStreamStateAggImpl(SOperatorInfo* pOperator, SSDataBlock* pSDataBl
winRows
=
updateStateWindowInfo
(
pAggSup
->
pCurWins
,
winIndex
,
tsCols
,
pKeyColInfo
,
pSDataBlock
->
info
.
rows
,
i
,
winRows
=
updateStateWindowInfo
(
pAggSup
->
pCurWins
,
winIndex
,
tsCols
,
pKeyColInfo
,
pSDataBlock
->
info
.
rows
,
i
,
&
allEqual
,
pInfo
->
pSeDeleted
);
&
allEqual
,
pInfo
->
pSeDeleted
);
if
(
!
allEqual
)
{
if
(
!
allEqual
)
{
taosArrayPush
(
pAggSup
->
pScanWindow
,
&
pCurWin
->
winInfo
.
win
);
appendOneRow
(
pAggSup
->
pScanBlock
,
&
pCurWin
->
winInfo
.
win
.
skey
,
&
pCurWin
->
winInfo
.
win
.
ekey
,
&
pSDataBlock
->
info
.
groupId
);
taosHashRemove
(
pSeUpdated
,
&
pCurWin
->
winInfo
.
pos
,
sizeof
(
SResultRowPosition
));
taosHashRemove
(
pSeUpdated
,
&
pCurWin
->
winInfo
.
pos
,
sizeof
(
SResultRowPosition
));
deleteWindow
(
pAggSup
->
pCurWins
,
winIndex
);
deleteWindow
(
pAggSup
->
pCurWins
,
winIndex
);
continue
;
continue
;
...
@@ -4460,7 +4464,7 @@ SOperatorInfo* createStreamStateAggOperatorInfo(SOperatorInfo* downstream, SPhys
...
@@ -4460,7 +4464,7 @@ SOperatorInfo* createStreamStateAggOperatorInfo(SOperatorInfo* downstream, SPhys
_hash_fn_t
hashFn
=
taosGetDefaultHashFunction
(
TSDB_DATA_TYPE_BINARY
);
_hash_fn_t
hashFn
=
taosGetDefaultHashFunction
(
TSDB_DATA_TYPE_BINARY
);
pInfo
->
pSeDeleted
=
taosHashInit
(
64
,
hashFn
,
true
,
HASH_NO_LOCK
);
pInfo
->
pSeDeleted
=
taosHashInit
(
64
,
hashFn
,
true
,
HASH_NO_LOCK
);
pInfo
->
pDelIterator
=
NULL
;
pInfo
->
pDelIterator
=
NULL
;
// pInfo->pDelRes = create
PullDataBlock(); // todo(liuyao) for delete
// pInfo->pDelRes = create
SpecialDataBlock(STREAM_DELETE_RESULT);
pInfo
->
pDelRes
=
createOneDataBlock
(
pInfo
->
binfo
.
pRes
,
false
);
// todo(liuyao) for delete
pInfo
->
pDelRes
=
createOneDataBlock
(
pInfo
->
binfo
.
pRes
,
false
);
// todo(liuyao) for delete
pInfo
->
pDelRes
->
info
.
type
=
STREAM_DELETE_RESULT
;
// todo(liuyao) for delete
pInfo
->
pDelRes
->
info
.
type
=
STREAM_DELETE_RESULT
;
// todo(liuyao) for delete
pInfo
->
pChildren
=
NULL
;
pInfo
->
pChildren
=
NULL
;
...
...
source/libs/function/src/builtins.c
浏览文件 @
90348e52
...
@@ -2242,7 +2242,7 @@ const SBuiltinFuncDefinition funcMgtBuiltins[] = {
...
@@ -2242,7 +2242,7 @@ const SBuiltinFuncDefinition funcMgtBuiltins[] = {
{
{
.
name
=
"last_row"
,
.
name
=
"last_row"
,
.
type
=
FUNCTION_TYPE_LAST_ROW
,
.
type
=
FUNCTION_TYPE_LAST_ROW
,
.
classification
=
FUNC_MGT_AGG_FUNC
|
FUNC_MGT_MULTI_RES_FUNC
|
FUNC_MGT_SELECT_FUNC
|
FUNC_MGT_
TIMELINE_FUNC
|
FUNC_MGT_
IMPLICIT_TS_FUNC
,
.
classification
=
FUNC_MGT_AGG_FUNC
|
FUNC_MGT_MULTI_RES_FUNC
|
FUNC_MGT_SELECT_FUNC
|
FUNC_MGT_IMPLICIT_TS_FUNC
,
.
translateFunc
=
translateFirstLast
,
.
translateFunc
=
translateFirstLast
,
.
getEnvFunc
=
getFirstLastFuncEnv
,
.
getEnvFunc
=
getFirstLastFuncEnv
,
.
initFunc
=
functionSetup
,
.
initFunc
=
functionSetup
,
...
@@ -2253,7 +2253,7 @@ const SBuiltinFuncDefinition funcMgtBuiltins[] = {
...
@@ -2253,7 +2253,7 @@ const SBuiltinFuncDefinition funcMgtBuiltins[] = {
{
{
.
name
=
"_cache_last_row"
,
.
name
=
"_cache_last_row"
,
.
type
=
FUNCTION_TYPE_CACHE_LAST_ROW
,
.
type
=
FUNCTION_TYPE_CACHE_LAST_ROW
,
.
classification
=
FUNC_MGT_AGG_FUNC
|
FUNC_MGT_MULTI_RES_FUNC
|
FUNC_MGT_SELECT_FUNC
|
FUNC_MGT_
TIMELINE_FUNC
|
FUNC_MGT_
IMPLICIT_TS_FUNC
,
.
classification
=
FUNC_MGT_AGG_FUNC
|
FUNC_MGT_MULTI_RES_FUNC
|
FUNC_MGT_SELECT_FUNC
|
FUNC_MGT_IMPLICIT_TS_FUNC
,
.
translateFunc
=
translateFirstLast
,
.
translateFunc
=
translateFirstLast
,
.
getEnvFunc
=
getFirstLastFuncEnv
,
.
getEnvFunc
=
getFirstLastFuncEnv
,
.
initFunc
=
functionSetup
,
.
initFunc
=
functionSetup
,
...
@@ -2263,7 +2263,7 @@ const SBuiltinFuncDefinition funcMgtBuiltins[] = {
...
@@ -2263,7 +2263,7 @@ const SBuiltinFuncDefinition funcMgtBuiltins[] = {
{
{
.
name
=
"first"
,
.
name
=
"first"
,
.
type
=
FUNCTION_TYPE_FIRST
,
.
type
=
FUNCTION_TYPE_FIRST
,
.
classification
=
FUNC_MGT_AGG_FUNC
|
FUNC_MGT_SELECT_FUNC
|
FUNC_MGT_MULTI_RES_FUNC
|
FUNC_MGT_
TIMELINE_FUNC
|
FUNC_MGT_
IMPLICIT_TS_FUNC
,
.
classification
=
FUNC_MGT_AGG_FUNC
|
FUNC_MGT_SELECT_FUNC
|
FUNC_MGT_MULTI_RES_FUNC
|
FUNC_MGT_IMPLICIT_TS_FUNC
,
.
translateFunc
=
translateFirstLast
,
.
translateFunc
=
translateFirstLast
,
.
getEnvFunc
=
getFirstLastFuncEnv
,
.
getEnvFunc
=
getFirstLastFuncEnv
,
.
initFunc
=
functionSetup
,
.
initFunc
=
functionSetup
,
...
@@ -2277,7 +2277,7 @@ const SBuiltinFuncDefinition funcMgtBuiltins[] = {
...
@@ -2277,7 +2277,7 @@ const SBuiltinFuncDefinition funcMgtBuiltins[] = {
{
{
.
name
=
"_first_partial"
,
.
name
=
"_first_partial"
,
.
type
=
FUNCTION_TYPE_FIRST_PARTIAL
,
.
type
=
FUNCTION_TYPE_FIRST_PARTIAL
,
.
classification
=
FUNC_MGT_AGG_FUNC
|
FUNC_MGT_SELECT_FUNC
|
FUNC_MGT_MULTI_RES_FUNC
|
FUNC_MGT_
TIMELINE_FUNC
|
FUNC_MGT_
IMPLICIT_TS_FUNC
,
.
classification
=
FUNC_MGT_AGG_FUNC
|
FUNC_MGT_SELECT_FUNC
|
FUNC_MGT_MULTI_RES_FUNC
|
FUNC_MGT_IMPLICIT_TS_FUNC
,
.
translateFunc
=
translateFirstLastPartial
,
.
translateFunc
=
translateFirstLastPartial
,
.
getEnvFunc
=
getFirstLastFuncEnv
,
.
getEnvFunc
=
getFirstLastFuncEnv
,
.
initFunc
=
functionSetup
,
.
initFunc
=
functionSetup
,
...
@@ -2288,7 +2288,7 @@ const SBuiltinFuncDefinition funcMgtBuiltins[] = {
...
@@ -2288,7 +2288,7 @@ const SBuiltinFuncDefinition funcMgtBuiltins[] = {
{
{
.
name
=
"_first_merge"
,
.
name
=
"_first_merge"
,
.
type
=
FUNCTION_TYPE_FIRST_MERGE
,
.
type
=
FUNCTION_TYPE_FIRST_MERGE
,
.
classification
=
FUNC_MGT_AGG_FUNC
|
FUNC_MGT_SELECT_FUNC
|
FUNC_MGT_MULTI_RES_FUNC
|
FUNC_MGT_
TIMELINE_FUNC
|
FUNC_MGT_
IMPLICIT_TS_FUNC
,
.
classification
=
FUNC_MGT_AGG_FUNC
|
FUNC_MGT_SELECT_FUNC
|
FUNC_MGT_MULTI_RES_FUNC
|
FUNC_MGT_IMPLICIT_TS_FUNC
,
.
translateFunc
=
translateFirstLastMerge
,
.
translateFunc
=
translateFirstLastMerge
,
.
getEnvFunc
=
getFirstLastFuncEnv
,
.
getEnvFunc
=
getFirstLastFuncEnv
,
.
initFunc
=
functionSetup
,
.
initFunc
=
functionSetup
,
...
@@ -2299,7 +2299,7 @@ const SBuiltinFuncDefinition funcMgtBuiltins[] = {
...
@@ -2299,7 +2299,7 @@ const SBuiltinFuncDefinition funcMgtBuiltins[] = {
{
{
.
name
=
"last"
,
.
name
=
"last"
,
.
type
=
FUNCTION_TYPE_LAST
,
.
type
=
FUNCTION_TYPE_LAST
,
.
classification
=
FUNC_MGT_AGG_FUNC
|
FUNC_MGT_SELECT_FUNC
|
FUNC_MGT_MULTI_RES_FUNC
|
FUNC_MGT_
TIMELINE_FUNC
|
FUNC_MGT_
IMPLICIT_TS_FUNC
,
.
classification
=
FUNC_MGT_AGG_FUNC
|
FUNC_MGT_SELECT_FUNC
|
FUNC_MGT_MULTI_RES_FUNC
|
FUNC_MGT_IMPLICIT_TS_FUNC
,
.
translateFunc
=
translateFirstLast
,
.
translateFunc
=
translateFirstLast
,
.
getEnvFunc
=
getFirstLastFuncEnv
,
.
getEnvFunc
=
getFirstLastFuncEnv
,
.
initFunc
=
functionSetup
,
.
initFunc
=
functionSetup
,
...
@@ -2313,7 +2313,7 @@ const SBuiltinFuncDefinition funcMgtBuiltins[] = {
...
@@ -2313,7 +2313,7 @@ const SBuiltinFuncDefinition funcMgtBuiltins[] = {
{
{
.
name
=
"_last_partial"
,
.
name
=
"_last_partial"
,
.
type
=
FUNCTION_TYPE_LAST_PARTIAL
,
.
type
=
FUNCTION_TYPE_LAST_PARTIAL
,
.
classification
=
FUNC_MGT_AGG_FUNC
|
FUNC_MGT_SELECT_FUNC
|
FUNC_MGT_MULTI_RES_FUNC
|
FUNC_MGT_
TIMELINE_FUNC
|
FUNC_MGT_
IMPLICIT_TS_FUNC
,
.
classification
=
FUNC_MGT_AGG_FUNC
|
FUNC_MGT_SELECT_FUNC
|
FUNC_MGT_MULTI_RES_FUNC
|
FUNC_MGT_IMPLICIT_TS_FUNC
,
.
translateFunc
=
translateFirstLastPartial
,
.
translateFunc
=
translateFirstLastPartial
,
.
getEnvFunc
=
getFirstLastFuncEnv
,
.
getEnvFunc
=
getFirstLastFuncEnv
,
.
initFunc
=
functionSetup
,
.
initFunc
=
functionSetup
,
...
@@ -2324,7 +2324,7 @@ const SBuiltinFuncDefinition funcMgtBuiltins[] = {
...
@@ -2324,7 +2324,7 @@ const SBuiltinFuncDefinition funcMgtBuiltins[] = {
{
{
.
name
=
"_last_merge"
,
.
name
=
"_last_merge"
,
.
type
=
FUNCTION_TYPE_LAST_MERGE
,
.
type
=
FUNCTION_TYPE_LAST_MERGE
,
.
classification
=
FUNC_MGT_AGG_FUNC
|
FUNC_MGT_SELECT_FUNC
|
FUNC_MGT_MULTI_RES_FUNC
|
FUNC_MGT_
TIMELINE_FUNC
|
FUNC_MGT_
IMPLICIT_TS_FUNC
,
.
classification
=
FUNC_MGT_AGG_FUNC
|
FUNC_MGT_SELECT_FUNC
|
FUNC_MGT_MULTI_RES_FUNC
|
FUNC_MGT_IMPLICIT_TS_FUNC
,
.
translateFunc
=
translateFirstLastMerge
,
.
translateFunc
=
translateFirstLastMerge
,
.
getEnvFunc
=
getFirstLastFuncEnv
,
.
getEnvFunc
=
getFirstLastFuncEnv
,
.
initFunc
=
functionSetup
,
.
initFunc
=
functionSetup
,
...
...
source/libs/function/src/builtinsimpl.c
浏览文件 @
90348e52
...
@@ -476,16 +476,16 @@ int32_t functionFinalize(SqlFunctionCtx* pCtx, SSDataBlock* pBlock) {
...
@@ -476,16 +476,16 @@ int32_t functionFinalize(SqlFunctionCtx* pCtx, SSDataBlock* pBlock) {
int32_t
firstCombine
(
SqlFunctionCtx
*
pDestCtx
,
SqlFunctionCtx
*
pSourceCtx
)
{
int32_t
firstCombine
(
SqlFunctionCtx
*
pDestCtx
,
SqlFunctionCtx
*
pSourceCtx
)
{
SResultRowEntryInfo
*
pDResInfo
=
GET_RES_INFO
(
pDestCtx
);
SResultRowEntryInfo
*
pDResInfo
=
GET_RES_INFO
(
pDestCtx
);
char
*
pDBuf
=
GET_ROWCELL_INTERBUF
(
pDResInfo
);
SFirstLastRes
*
pDBuf
=
GET_ROWCELL_INTERBUF
(
pDResInfo
);
int32_t
type
=
pDestCtx
->
input
.
pData
[
0
]
->
info
.
type
;
int32_t
type
=
pDestCtx
->
input
.
pData
[
0
]
->
info
.
type
;
int32_t
bytes
=
pDestCtx
->
input
.
pData
[
0
]
->
info
.
bytes
;
int32_t
bytes
=
pDestCtx
->
input
.
pData
[
0
]
->
info
.
bytes
;
SResultRowEntryInfo
*
pSResInfo
=
GET_RES_INFO
(
pSourceCtx
);
SResultRowEntryInfo
*
pSResInfo
=
GET_RES_INFO
(
pSourceCtx
);
char
*
pSBuf
=
GET_ROWCELL_INTERBUF
(
pSResInfo
);
SFirstLastRes
*
pSBuf
=
GET_ROWCELL_INTERBUF
(
pSResInfo
);
if
(
pSResInfo
->
numOfRes
!=
0
&&
(
pDResInfo
->
numOfRes
==
0
||
*
(
TSKEY
*
)(
pDBuf
+
bytes
)
>
*
(
TSKEY
*
)(
pSBuf
+
bytes
)
))
{
if
(
pSResInfo
->
numOfRes
!=
0
&&
(
pDResInfo
->
numOfRes
==
0
||
pDBuf
->
ts
>
pSBuf
->
ts
))
{
memcpy
(
pDBuf
,
pSB
uf
,
bytes
);
memcpy
(
pDBuf
->
buf
,
pSBuf
->
b
uf
,
bytes
);
*
(
TSKEY
*
)(
pDBuf
+
bytes
)
=
*
(
TSKEY
*
)(
pSBuf
+
bytes
)
;
pDBuf
->
ts
=
pSBuf
->
ts
;
pDResInfo
->
numOfRes
=
1
;
pDResInfo
->
numOfRes
=
1
;
}
}
return
TSDB_CODE_SUCCESS
;
return
TSDB_CODE_SUCCESS
;
...
@@ -2465,8 +2465,8 @@ bool apercentileFunctionSetup(SqlFunctionCtx* pCtx, SResultRowEntryInfo* pResult
...
@@ -2465,8 +2465,8 @@ bool apercentileFunctionSetup(SqlFunctionCtx* pCtx, SResultRowEntryInfo* pResult
}
}
int32_t
apercentileFunction
(
SqlFunctionCtx
*
pCtx
)
{
int32_t
apercentileFunction
(
SqlFunctionCtx
*
pCtx
)
{
int32_t
numOfElems
=
0
;
int32_t
numOfElems
=
0
;
SResultRowEntryInfo
*
pResInfo
=
GET_RES_INFO
(
pCtx
);
SResultRowEntryInfo
*
pResInfo
=
GET_RES_INFO
(
pCtx
);
SInputColumnInfoData
*
pInput
=
&
pCtx
->
input
;
SInputColumnInfoData
*
pInput
=
&
pCtx
->
input
;
SColumnInfoData
*
pCol
=
pInput
->
pData
[
0
];
SColumnInfoData
*
pCol
=
pInput
->
pData
[
0
];
...
@@ -2502,7 +2502,7 @@ int32_t apercentileFunction(SqlFunctionCtx* pCtx) {
...
@@ -2502,7 +2502,7 @@ int32_t apercentileFunction(SqlFunctionCtx* pCtx) {
}
}
qDebug
(
"add %d elements into histogram, total:%d, numOfEntry:%d, %p"
,
numOfElems
,
pInfo
->
pHisto
->
numOfElems
,
qDebug
(
"add %d elements into histogram, total:%d, numOfEntry:%d, %p"
,
numOfElems
,
pInfo
->
pHisto
->
numOfElems
,
pInfo
->
pHisto
->
numOfEntries
,
pInfo
->
pHisto
);
pInfo
->
pHisto
->
numOfEntries
,
pInfo
->
pHisto
);
}
}
SET_VAL
(
pResInfo
,
numOfElems
,
1
);
SET_VAL
(
pResInfo
,
numOfElems
,
1
);
...
@@ -2542,18 +2542,17 @@ static void apercentileTransferInfo(SAPercentileInfo* pInput, SAPercentileInfo*
...
@@ -2542,18 +2542,17 @@ static void apercentileTransferInfo(SAPercentileInfo* pInput, SAPercentileInfo*
memcpy
(
pHisto
,
pInput
->
pHisto
,
sizeof
(
SHistogramInfo
)
+
sizeof
(
SHistBin
)
*
(
MAX_HISTOGRAM_BIN
+
1
));
memcpy
(
pHisto
,
pInput
->
pHisto
,
sizeof
(
SHistogramInfo
)
+
sizeof
(
SHistBin
)
*
(
MAX_HISTOGRAM_BIN
+
1
));
pHisto
->
elems
=
(
SHistBin
*
)((
char
*
)
pHisto
+
sizeof
(
SHistogramInfo
));
pHisto
->
elems
=
(
SHistBin
*
)((
char
*
)
pHisto
+
sizeof
(
SHistogramInfo
));
qDebug
(
"merge histo, total:%"
PRId64
", entry:%d, %p"
,
pHisto
->
numOfElems
,
pHisto
->
numOfEntries
,
pHisto
);
qDebug
(
"merge histo, total:%"
PRId64
", entry:%d, %p"
,
pHisto
->
numOfElems
,
pHisto
->
numOfEntries
,
pHisto
);
}
else
{
}
else
{
pHisto
->
elems
=
(
SHistBin
*
)((
char
*
)
pHisto
+
sizeof
(
SHistogramInfo
));
pHisto
->
elems
=
(
SHistBin
*
)((
char
*
)
pHisto
+
sizeof
(
SHistogramInfo
));
qDebug
(
"input histogram, elem:%"
PRId64
", entry:%d, %p"
,
pHisto
->
numOfElems
,
pHisto
->
numOfEntries
,
qDebug
(
"input histogram, elem:%"
PRId64
", entry:%d, %p"
,
pHisto
->
numOfElems
,
pHisto
->
numOfEntries
,
pInput
->
pHisto
);
pInput
->
pHisto
);
SHistogramInfo
*
pRes
=
tHistogramMerge
(
pHisto
,
pInput
->
pHisto
,
MAX_HISTOGRAM_BIN
);
SHistogramInfo
*
pRes
=
tHistogramMerge
(
pHisto
,
pInput
->
pHisto
,
MAX_HISTOGRAM_BIN
);
memcpy
(
pHisto
,
pRes
,
sizeof
(
SHistogramInfo
)
+
sizeof
(
SHistBin
)
*
MAX_HISTOGRAM_BIN
);
memcpy
(
pHisto
,
pRes
,
sizeof
(
SHistogramInfo
)
+
sizeof
(
SHistBin
)
*
MAX_HISTOGRAM_BIN
);
pHisto
->
elems
=
(
SHistBin
*
)((
char
*
)
pHisto
+
sizeof
(
SHistogramInfo
));
pHisto
->
elems
=
(
SHistBin
*
)((
char
*
)
pHisto
+
sizeof
(
SHistogramInfo
));
qDebug
(
"merge histo, total:%"
PRId64
", entry:%d, %p"
,
pHisto
->
numOfElems
,
pHisto
->
numOfEntries
,
qDebug
(
"merge histo, total:%"
PRId64
", entry:%d, %p"
,
pHisto
->
numOfElems
,
pHisto
->
numOfEntries
,
pHisto
);
pHisto
);
tHistogramDestroy
(
&
pRes
);
tHistogramDestroy
(
&
pRes
);
}
}
}
}
...
@@ -2580,7 +2579,8 @@ int32_t apercentileFunctionMerge(SqlFunctionCtx* pCtx) {
...
@@ -2580,7 +2579,8 @@ int32_t apercentileFunctionMerge(SqlFunctionCtx* pCtx) {
}
}
if
(
pInfo
->
algo
!=
APERCT_ALGO_TDIGEST
)
{
if
(
pInfo
->
algo
!=
APERCT_ALGO_TDIGEST
)
{
qDebug
(
"after merge, total:%d, numOfEntry:%d, %p"
,
pInfo
->
pHisto
->
numOfElems
,
pInfo
->
pHisto
->
numOfEntries
,
pInfo
->
pHisto
);
qDebug
(
"after merge, total:%d, numOfEntry:%d, %p"
,
pInfo
->
pHisto
->
numOfElems
,
pInfo
->
pHisto
->
numOfEntries
,
pInfo
->
pHisto
);
}
}
SET_VAL
(
pResInfo
,
1
,
1
);
SET_VAL
(
pResInfo
,
1
,
1
);
...
@@ -2602,7 +2602,8 @@ int32_t apercentileFinalize(SqlFunctionCtx* pCtx, SSDataBlock* pBlock) {
...
@@ -2602,7 +2602,8 @@ int32_t apercentileFinalize(SqlFunctionCtx* pCtx, SSDataBlock* pBlock) {
}
else
{
}
else
{
buildHistogramInfo
(
pInfo
);
buildHistogramInfo
(
pInfo
);
if
(
pInfo
->
pHisto
->
numOfElems
>
0
)
{
if
(
pInfo
->
pHisto
->
numOfElems
>
0
)
{
qDebug
(
"get the final res:%d, elements:%"
PRId64
", entry:%d"
,
pInfo
->
pHisto
->
numOfElems
,
pInfo
->
pHisto
->
numOfEntries
);
qDebug
(
"get the final res:%d, elements:%"
PRId64
", entry:%d"
,
pInfo
->
pHisto
->
numOfElems
,
pInfo
->
pHisto
->
numOfEntries
);
double
ratio
[]
=
{
pInfo
->
percent
};
double
ratio
[]
=
{
pInfo
->
percent
};
double
*
res
=
tHistogramUniform
(
pInfo
->
pHisto
,
ratio
,
1
);
double
*
res
=
tHistogramUniform
(
pInfo
->
pHisto
,
ratio
,
1
);
...
@@ -2994,16 +2995,16 @@ int32_t firstLastPartialFinalize(SqlFunctionCtx* pCtx, SSDataBlock* pBlock) {
...
@@ -2994,16 +2995,16 @@ int32_t firstLastPartialFinalize(SqlFunctionCtx* pCtx, SSDataBlock* pBlock) {
// todo rewrite:
// todo rewrite:
int32_t
lastCombine
(
SqlFunctionCtx
*
pDestCtx
,
SqlFunctionCtx
*
pSourceCtx
)
{
int32_t
lastCombine
(
SqlFunctionCtx
*
pDestCtx
,
SqlFunctionCtx
*
pSourceCtx
)
{
SResultRowEntryInfo
*
pDResInfo
=
GET_RES_INFO
(
pDestCtx
);
SResultRowEntryInfo
*
pDResInfo
=
GET_RES_INFO
(
pDestCtx
);
char
*
pDBuf
=
GET_ROWCELL_INTERBUF
(
pDResInfo
);
SFirstLastRes
*
pDBuf
=
GET_ROWCELL_INTERBUF
(
pDResInfo
);
int32_t
type
=
pDestCtx
->
input
.
pData
[
0
]
->
info
.
type
;
int32_t
type
=
pDestCtx
->
input
.
pData
[
0
]
->
info
.
type
;
int32_t
bytes
=
pDestCtx
->
input
.
pData
[
0
]
->
info
.
bytes
;
int32_t
bytes
=
pDestCtx
->
input
.
pData
[
0
]
->
info
.
bytes
;
SResultRowEntryInfo
*
pSResInfo
=
GET_RES_INFO
(
pSourceCtx
);
SResultRowEntryInfo
*
pSResInfo
=
GET_RES_INFO
(
pSourceCtx
);
char
*
pSBuf
=
GET_ROWCELL_INTERBUF
(
pSResInfo
);
SFirstLastRes
*
pSBuf
=
GET_ROWCELL_INTERBUF
(
pSResInfo
);
if
(
pSResInfo
->
numOfRes
!=
0
&&
(
pDResInfo
->
numOfRes
==
0
||
*
(
TSKEY
*
)(
pDBuf
+
bytes
)
<
*
(
TSKEY
*
)(
pSBuf
+
bytes
)
))
{
if
(
pSResInfo
->
numOfRes
!=
0
&&
(
pDResInfo
->
numOfRes
==
0
||
pDBuf
->
ts
<
pSBuf
->
ts
))
{
memcpy
(
pDBuf
,
pSB
uf
,
bytes
);
memcpy
(
pDBuf
->
buf
,
pSBuf
->
b
uf
,
bytes
);
*
(
TSKEY
*
)(
pDBuf
+
bytes
)
=
*
(
TSKEY
*
)(
pSBuf
+
bytes
)
;
pDBuf
->
ts
=
pSBuf
->
ts
;
pDResInfo
->
numOfRes
=
1
;
pDResInfo
->
numOfRes
=
1
;
}
}
return
TSDB_CODE_SUCCESS
;
return
TSDB_CODE_SUCCESS
;
...
@@ -4665,10 +4666,8 @@ int32_t csumFunction(SqlFunctionCtx* pCtx) {
...
@@ -4665,10 +4666,8 @@ int32_t csumFunction(SqlFunctionCtx* pCtx) {
SSumRes
*
pSumRes
=
GET_ROWCELL_INTERBUF
(
pResInfo
);
SSumRes
*
pSumRes
=
GET_ROWCELL_INTERBUF
(
pResInfo
);
SInputColumnInfoData
*
pInput
=
&
pCtx
->
input
;
SInputColumnInfoData
*
pInput
=
&
pCtx
->
input
;
TSKEY
*
tsList
=
(
int64_t
*
)
pInput
->
pPTS
->
pData
;
SColumnInfoData
*
pInputCol
=
pInput
->
pData
[
0
];
SColumnInfoData
*
pInputCol
=
pInput
->
pData
[
0
];
SColumnInfoData
*
pTsOutput
=
pCtx
->
pTsOutput
;
SColumnInfoData
*
pOutput
=
(
SColumnInfoData
*
)
pCtx
->
pOutput
;
SColumnInfoData
*
pOutput
=
(
SColumnInfoData
*
)
pCtx
->
pOutput
;
int32_t
numOfElems
=
0
;
int32_t
numOfElems
=
0
;
...
@@ -4704,11 +4703,6 @@ int32_t csumFunction(SqlFunctionCtx* pCtx) {
...
@@ -4704,11 +4703,6 @@ int32_t csumFunction(SqlFunctionCtx* pCtx) {
}
}
}
}
// TODO: remove this after pTsOutput is handled
if
(
pTsOutput
!=
NULL
)
{
colDataAppendInt64
(
pTsOutput
,
pos
,
&
tsList
[
i
]);
}
numOfElems
++
;
numOfElems
++
;
}
}
...
@@ -5205,8 +5199,8 @@ bool twaFunctionSetup(SqlFunctionCtx* pCtx, SResultRowEntryInfo* pResultInfo) {
...
@@ -5205,8 +5199,8 @@ bool twaFunctionSetup(SqlFunctionCtx* pCtx, SResultRowEntryInfo* pResultInfo) {
STwaInfo
*
pInfo
=
GET_ROWCELL_INTERBUF
(
GET_RES_INFO
(
pCtx
));
STwaInfo
*
pInfo
=
GET_ROWCELL_INTERBUF
(
GET_RES_INFO
(
pCtx
));
pInfo
->
isNull
=
false
;
pInfo
->
isNull
=
false
;
pInfo
->
p
.
key
=
INT64_MIN
;
pInfo
->
p
.
key
=
INT64_MIN
;
pInfo
->
win
=
TSWINDOW_INITIALIZER
;
pInfo
->
win
=
TSWINDOW_INITIALIZER
;
return
true
;
return
true
;
}
}
...
...
source/libs/function/src/tudf.c
浏览文件 @
90348e52
...
@@ -875,7 +875,7 @@ bool isUdfcUvMsgComplete(SClientConnBuf *connBuf);
...
@@ -875,7 +875,7 @@ bool isUdfcUvMsgComplete(SClientConnBuf *connBuf);
void
udfcUvHandleRsp
(
SClientUvConn
*
conn
);
void
udfcUvHandleRsp
(
SClientUvConn
*
conn
);
void
udfcUvHandleError
(
SClientUvConn
*
conn
);
void
udfcUvHandleError
(
SClientUvConn
*
conn
);
void
onUdfcPipeRead
(
uv_stream_t
*
client
,
ssize_t
nread
,
const
uv_buf_t
*
buf
);
void
onUdfcPipeRead
(
uv_stream_t
*
client
,
ssize_t
nread
,
const
uv_buf_t
*
buf
);
void
onUdfcPipe
t
Write
(
uv_write_t
*
write
,
int
status
);
void
onUdfcPipeWrite
(
uv_write_t
*
write
,
int
status
);
void
onUdfcPipeConnect
(
uv_connect_t
*
connect
,
int
status
);
void
onUdfcPipeConnect
(
uv_connect_t
*
connect
,
int
status
);
int32_t
udfcCreateUvTask
(
SClientUdfTask
*
task
,
int8_t
uvTaskType
,
SClientUvTaskNode
**
pUvTask
);
int32_t
udfcCreateUvTask
(
SClientUdfTask
*
task
,
int8_t
uvTaskType
,
SClientUvTaskNode
**
pUvTask
);
int32_t
udfcQueueUvTask
(
SClientUvTaskNode
*
uvTask
);
int32_t
udfcQueueUvTask
(
SClientUvTaskNode
*
uvTask
);
...
@@ -1226,7 +1226,7 @@ int32_t udfcGetUdfTaskResultFromUvTask(SClientUdfTask *task, SClientUvTaskNode *
...
@@ -1226,7 +1226,7 @@ int32_t udfcGetUdfTaskResultFromUvTask(SClientUdfTask *task, SClientUvTaskNode *
}
}
void
udfcAllocateBuffer
(
uv_handle_t
*
handle
,
size_t
suggestedSize
,
uv_buf_t
*
buf
)
{
void
udfcAllocateBuffer
(
uv_handle_t
*
handle
,
size_t
suggestedSize
,
uv_buf_t
*
buf
)
{
SClientUvConn
*
conn
=
handle
->
data
;
SClientUvConn
*
conn
=
handle
->
data
;
SClientConnBuf
*
connBuf
=
&
conn
->
readBuf
;
SClientConnBuf
*
connBuf
=
&
conn
->
readBuf
;
int32_t
msgHeadSize
=
sizeof
(
int32_t
)
+
sizeof
(
int64_t
);
int32_t
msgHeadSize
=
sizeof
(
int32_t
)
+
sizeof
(
int64_t
);
...
@@ -1244,6 +1244,9 @@ void udfcAllocateBuffer(uv_handle_t *handle, size_t suggestedSize, uv_buf_t *buf
...
@@ -1244,6 +1244,9 @@ void udfcAllocateBuffer(uv_handle_t *handle, size_t suggestedSize, uv_buf_t *buf
buf
->
base
=
NULL
;
buf
->
base
=
NULL
;
buf
->
len
=
0
;
buf
->
len
=
0
;
}
}
}
else
if
(
connBuf
->
total
==
-
1
&&
connBuf
->
len
<
msgHeadSize
)
{
buf
->
base
=
connBuf
->
buf
+
connBuf
->
len
;
buf
->
len
=
msgHeadSize
-
connBuf
->
len
;
}
else
{
}
else
{
connBuf
->
cap
=
connBuf
->
total
>
connBuf
->
cap
?
connBuf
->
total
:
connBuf
->
cap
;
connBuf
->
cap
=
connBuf
->
total
>
connBuf
->
cap
?
connBuf
->
total
:
connBuf
->
cap
;
void
*
resultBuf
=
taosMemoryRealloc
(
connBuf
->
buf
,
connBuf
->
cap
);
void
*
resultBuf
=
taosMemoryRealloc
(
connBuf
->
buf
,
connBuf
->
cap
);
...
@@ -1258,8 +1261,7 @@ void udfcAllocateBuffer(uv_handle_t *handle, size_t suggestedSize, uv_buf_t *buf
...
@@ -1258,8 +1261,7 @@ void udfcAllocateBuffer(uv_handle_t *handle, size_t suggestedSize, uv_buf_t *buf
}
}
}
}
fnTrace
(
"conn buf cap - len - total : %d - %d - %d"
,
connBuf
->
cap
,
connBuf
->
len
,
connBuf
->
total
);
fnDebug
(
"udfc uv alloc buffer: cap - len - total : %d - %d - %d"
,
connBuf
->
cap
,
connBuf
->
len
,
connBuf
->
total
);
}
}
bool
isUdfcUvMsgComplete
(
SClientConnBuf
*
connBuf
)
{
bool
isUdfcUvMsgComplete
(
SClientConnBuf
*
connBuf
)
{
...
@@ -1267,7 +1269,7 @@ bool isUdfcUvMsgComplete(SClientConnBuf *connBuf) {
...
@@ -1267,7 +1269,7 @@ bool isUdfcUvMsgComplete(SClientConnBuf *connBuf) {
connBuf
->
total
=
*
(
int32_t
*
)
(
connBuf
->
buf
);
connBuf
->
total
=
*
(
int32_t
*
)
(
connBuf
->
buf
);
}
}
if
(
connBuf
->
len
==
connBuf
->
cap
&&
connBuf
->
total
==
connBuf
->
cap
)
{
if
(
connBuf
->
len
==
connBuf
->
cap
&&
connBuf
->
total
==
connBuf
->
cap
)
{
fn
Trace
(
"udfc complete message is received, now handle it"
);
fn
Debug
(
"udfc complete message is received, now handle it"
);
return
true
;
return
true
;
}
}
return
false
;
return
false
;
...
@@ -1278,7 +1280,7 @@ void udfcUvHandleRsp(SClientUvConn *conn) {
...
@@ -1278,7 +1280,7 @@ void udfcUvHandleRsp(SClientUvConn *conn) {
int64_t
seqNum
=
*
(
int64_t
*
)
(
connBuf
->
buf
+
sizeof
(
int32_t
));
// msglen then seqnum
int64_t
seqNum
=
*
(
int64_t
*
)
(
connBuf
->
buf
+
sizeof
(
int32_t
));
// msglen then seqnum
if
(
QUEUE_EMPTY
(
&
conn
->
taskQueue
))
{
if
(
QUEUE_EMPTY
(
&
conn
->
taskQueue
))
{
fnError
(
"udfc no task waiting
for response on connection"
);
fnError
(
"udfc no task waiting
on connection. response seqnum:%"
PRId64
,
seqNum
);
return
;
return
;
}
}
bool
found
=
false
;
bool
found
=
false
;
...
@@ -1287,6 +1289,7 @@ void udfcUvHandleRsp(SClientUvConn *conn) {
...
@@ -1287,6 +1289,7 @@ void udfcUvHandleRsp(SClientUvConn *conn) {
SClientUvTaskNode
*
task
=
QUEUE_DATA
(
h
,
SClientUvTaskNode
,
connTaskQueue
);
SClientUvTaskNode
*
task
=
QUEUE_DATA
(
h
,
SClientUvTaskNode
,
connTaskQueue
);
while
(
h
!=
&
conn
->
taskQueue
)
{
while
(
h
!=
&
conn
->
taskQueue
)
{
fnDebug
(
"udfc handle response iterate through queue. uvTask:%d-%p"
,
task
->
seqNum
,
task
);
if
(
task
->
seqNum
==
seqNum
)
{
if
(
task
->
seqNum
==
seqNum
)
{
if
(
found
==
false
)
{
if
(
found
==
false
)
{
found
=
true
;
found
=
true
;
...
@@ -1315,6 +1318,7 @@ void udfcUvHandleRsp(SClientUvConn *conn) {
...
@@ -1315,6 +1318,7 @@ void udfcUvHandleRsp(SClientUvConn *conn) {
}
}
void
udfcUvHandleError
(
SClientUvConn
*
conn
)
{
void
udfcUvHandleError
(
SClientUvConn
*
conn
)
{
fnDebug
(
"handle error on conn: %p, pipe: %p"
,
conn
,
conn
->
pipe
);
while
(
!
QUEUE_EMPTY
(
&
conn
->
taskQueue
))
{
while
(
!
QUEUE_EMPTY
(
&
conn
->
taskQueue
))
{
QUEUE
*
h
=
QUEUE_HEAD
(
&
conn
->
taskQueue
);
QUEUE
*
h
=
QUEUE_HEAD
(
&
conn
->
taskQueue
);
SClientUvTaskNode
*
task
=
QUEUE_DATA
(
h
,
SClientUvTaskNode
,
connTaskQueue
);
SClientUvTaskNode
*
task
=
QUEUE_DATA
(
h
,
SClientUvTaskNode
,
connTaskQueue
);
...
@@ -1328,7 +1332,7 @@ void udfcUvHandleError(SClientUvConn *conn) {
...
@@ -1328,7 +1332,7 @@ void udfcUvHandleError(SClientUvConn *conn) {
}
}
void
onUdfcPipeRead
(
uv_stream_t
*
client
,
ssize_t
nread
,
const
uv_buf_t
*
buf
)
{
void
onUdfcPipeRead
(
uv_stream_t
*
client
,
ssize_t
nread
,
const
uv_buf_t
*
buf
)
{
fn
Trace
(
"udfc client %p, client read from pipe. nread: %zd"
,
client
,
nread
);
fn
Debug
(
"udfc client %p, client read from pipe. nread: %zd"
,
client
,
nread
);
if
(
nread
==
0
)
return
;
if
(
nread
==
0
)
return
;
SClientUvConn
*
conn
=
client
->
data
;
SClientUvConn
*
conn
=
client
->
data
;
...
@@ -1338,31 +1342,25 @@ void onUdfcPipeRead(uv_stream_t *client, ssize_t nread, const uv_buf_t *buf) {
...
@@ -1338,31 +1342,25 @@ void onUdfcPipeRead(uv_stream_t *client, ssize_t nread, const uv_buf_t *buf) {
if
(
isUdfcUvMsgComplete
(
connBuf
))
{
if
(
isUdfcUvMsgComplete
(
connBuf
))
{
udfcUvHandleRsp
(
conn
);
udfcUvHandleRsp
(
conn
);
}
}
}
}
if
(
nread
<
0
)
{
if
(
nread
<
0
)
{
fnError
(
"udfc client pipe %p read error: %zd
, %s
."
,
client
,
nread
,
uv_strerror
(
nread
));
fnError
(
"udfc client pipe %p read error: %zd
(%s)
."
,
client
,
nread
,
uv_strerror
(
nread
));
if
(
nread
==
UV_EOF
)
{
if
(
nread
==
UV_EOF
)
{
fnError
(
"
\t
udfc client pipe %p closed"
,
client
);
fnError
(
"
\t
udfc client pipe %p closed"
,
client
);
}
}
udfcUvHandleError
(
conn
);
udfcUvHandleError
(
conn
);
}
}
}
}
void
onUdfcPipetWrite
(
uv_write_t
*
write
,
int
status
)
{
void
onUdfcPipeWrite
(
uv_write_t
*
write
,
int
status
)
{
SClientUvTaskNode
*
uvTask
=
write
->
data
;
SClientUvConn
*
conn
=
write
->
data
;
uv_pipe_t
*
pipe
=
uvTask
->
pipe
;
if
(
status
<
0
)
{
fnTrace
(
"udfc client %p write length:%zu"
,
pipe
,
uvTask
->
reqBuf
.
len
);
fnError
(
"udfc client connection %p write failed. status: %d(%s)"
,
conn
,
status
,
uv_strerror
(
status
));
SClientUvConn
*
conn
=
pipe
->
data
;
if
(
status
==
0
)
{
QUEUE_INSERT_TAIL
(
&
conn
->
taskQueue
,
&
uvTask
->
connTaskQueue
);
}
else
{
fnError
(
"udfc client %p write error."
,
pipe
);
udfcUvHandleError
(
conn
);
udfcUvHandleError
(
conn
);
}
else
{
fnDebug
(
"udfc client connection %p write succeed"
,
conn
);
}
}
taosMemoryFree
(
write
);
taosMemoryFree
(
write
);
taosMemoryFree
(
uvTask
->
reqBuf
.
base
);
}
}
void
onUdfcPipeConnect
(
uv_connect_t
*
connect
,
int
status
)
{
void
onUdfcPipeConnect
(
uv_connect_t
*
connect
,
int
status
)
{
...
@@ -1419,7 +1417,7 @@ int32_t udfcCreateUvTask(SClientUdfTask *task, int8_t uvTaskType, SClientUvTaskN
...
@@ -1419,7 +1417,7 @@ int32_t udfcCreateUvTask(SClientUdfTask *task, int8_t uvTaskType, SClientUvTaskN
}
}
int32_t
udfcQueueUvTask
(
SClientUvTaskNode
*
uvTask
)
{
int32_t
udfcQueueUvTask
(
SClientUvTaskNode
*
uvTask
)
{
fn
Trace
(
"queue uv task to event loop, task: %d,
%p"
,
uvTask
->
type
,
uvTask
);
fn
Debug
(
"queue uv task to event loop, uvTask: %d-
%p"
,
uvTask
->
type
,
uvTask
);
SUdfcProxy
*
udfc
=
uvTask
->
udfc
;
SUdfcProxy
*
udfc
=
uvTask
->
udfc
;
uv_mutex_lock
(
&
udfc
->
taskQueueMutex
);
uv_mutex_lock
(
&
udfc
->
taskQueueMutex
);
QUEUE_INSERT_TAIL
(
&
udfc
->
taskQueue
,
&
uvTask
->
recvTaskQueue
);
QUEUE_INSERT_TAIL
(
&
udfc
->
taskQueue
,
&
uvTask
->
recvTaskQueue
);
...
@@ -1427,14 +1425,14 @@ int32_t udfcQueueUvTask(SClientUvTaskNode *uvTask) {
...
@@ -1427,14 +1425,14 @@ int32_t udfcQueueUvTask(SClientUvTaskNode *uvTask) {
uv_async_send
(
&
udfc
->
loopTaskAync
);
uv_async_send
(
&
udfc
->
loopTaskAync
);
uv_sem_wait
(
&
uvTask
->
taskSem
);
uv_sem_wait
(
&
uvTask
->
taskSem
);
fnInfo
(
"udfc uv
task finished. task: %d, %p"
,
uvTask
->
type
,
uvTask
);
fnInfo
(
"udfc uv
Task finished. uvTask:%"
PRId64
"-%d-%p"
,
uvTask
->
seqNum
,
uvTask
->
type
,
uvTask
);
uv_sem_destroy
(
&
uvTask
->
taskSem
);
uv_sem_destroy
(
&
uvTask
->
taskSem
);
return
0
;
return
0
;
}
}
int32_t
udfcStartUvTask
(
SClientUvTaskNode
*
uvTask
)
{
int32_t
udfcStartUvTask
(
SClientUvTaskNode
*
uvTask
)
{
fn
Trace
(
"event loop start uv task. task: %d, %p"
,
uvTask
->
type
,
uvTask
);
fn
Debug
(
"event loop start uv task. uvTask: %"
PRId64
"-%d-%p"
,
uvTask
->
seqNum
,
uvTask
->
type
,
uvTask
);
int32_t
code
=
0
;
int32_t
code
=
0
;
switch
(
uvTask
->
type
)
{
switch
(
uvTask
->
type
)
{
...
@@ -1465,10 +1463,12 @@ int32_t udfcStartUvTask(SClientUvTaskNode *uvTask) {
...
@@ -1465,10 +1463,12 @@ int32_t udfcStartUvTask(SClientUvTaskNode *uvTask) {
code
=
TSDB_CODE_UDF_PIPE_NO_PIPE
;
code
=
TSDB_CODE_UDF_PIPE_NO_PIPE
;
}
else
{
}
else
{
uv_write_t
*
write
=
taosMemoryMalloc
(
sizeof
(
uv_write_t
));
uv_write_t
*
write
=
taosMemoryMalloc
(
sizeof
(
uv_write_t
));
write
->
data
=
uvTask
;
write
->
data
=
pipe
->
data
;
int
err
=
uv_write
(
write
,
(
uv_stream_t
*
)
pipe
,
&
uvTask
->
reqBuf
,
1
,
onUdfcPipetWrite
);
QUEUE
*
connTaskQueue
=
&
((
SClientUvConn
*
)
pipe
->
data
)
->
taskQueue
;
QUEUE_INSERT_TAIL
(
connTaskQueue
,
&
uvTask
->
connTaskQueue
);
int
err
=
uv_write
(
write
,
(
uv_stream_t
*
)
pipe
,
&
uvTask
->
reqBuf
,
1
,
onUdfcPipeWrite
);
if
(
err
!=
0
)
{
if
(
err
!=
0
)
{
fnError
(
"udfc event loop start req
/rsp task uv_write failed. code: %s"
,
uv_strerror
(
err
));
fnError
(
"udfc event loop start req
_rsp task uv_write failed. uvtask: %p, code: %s"
,
uvTask
,
uv_strerror
(
err
));
}
}
code
=
err
;
code
=
err
;
}
}
...
@@ -1618,6 +1618,7 @@ int32_t udfcRunUdfUvTask(SClientUdfTask *task, int8_t uvTaskType) {
...
@@ -1618,6 +1618,7 @@ int32_t udfcRunUdfUvTask(SClientUdfTask *task, int8_t uvTaskType) {
SClientUvTaskNode
*
uvTask
=
NULL
;
SClientUvTaskNode
*
uvTask
=
NULL
;
udfcCreateUvTask
(
task
,
uvTaskType
,
&
uvTask
);
udfcCreateUvTask
(
task
,
uvTaskType
,
&
uvTask
);
fnDebug
(
"udfc client task: %p created uvTask: %p. pipe: %p"
,
task
,
uvTask
,
task
->
session
->
udfUvPipe
);
udfcQueueUvTask
(
uvTask
);
udfcQueueUvTask
(
uvTask
);
udfcGetUdfTaskResultFromUvTask
(
task
,
uvTask
);
udfcGetUdfTaskResultFromUvTask
(
task
,
uvTask
);
if
(
uvTaskType
==
UV_TASK_CONNECT
)
{
if
(
uvTaskType
==
UV_TASK_CONNECT
)
{
...
@@ -1625,6 +1626,8 @@ int32_t udfcRunUdfUvTask(SClientUdfTask *task, int8_t uvTaskType) {
...
@@ -1625,6 +1626,8 @@ int32_t udfcRunUdfUvTask(SClientUdfTask *task, int8_t uvTaskType) {
SClientUvConn
*
conn
=
uvTask
->
pipe
->
data
;
SClientUvConn
*
conn
=
uvTask
->
pipe
->
data
;
conn
->
session
=
task
->
session
;
conn
->
session
=
task
->
session
;
}
}
taosMemoryFree
(
uvTask
->
reqBuf
.
base
);
uvTask
->
reqBuf
.
base
=
NULL
;
taosMemoryFree
(
uvTask
);
taosMemoryFree
(
uvTask
);
uvTask
=
NULL
;
uvTask
=
NULL
;
return
task
->
errCode
;
return
task
->
errCode
;
...
@@ -1670,7 +1673,7 @@ int32_t doSetupUdf(char udfName[], UdfcFuncHandle *funcHandle) {
...
@@ -1670,7 +1673,7 @@ int32_t doSetupUdf(char udfName[], UdfcFuncHandle *funcHandle) {
int32_t
callUdf
(
UdfcFuncHandle
handle
,
int8_t
callType
,
SSDataBlock
*
input
,
SUdfInterBuf
*
state
,
SUdfInterBuf
*
state2
,
int32_t
callUdf
(
UdfcFuncHandle
handle
,
int8_t
callType
,
SSDataBlock
*
input
,
SUdfInterBuf
*
state
,
SUdfInterBuf
*
state2
,
SSDataBlock
*
output
,
SUdfInterBuf
*
newState
)
{
SSDataBlock
*
output
,
SUdfInterBuf
*
newState
)
{
fn
Trace
(
"udfc call udf. callType: %d, funcHandle: %p"
,
callType
,
handle
);
fn
Debug
(
"udfc call udf. callType: %d, funcHandle: %p"
,
callType
,
handle
);
SUdfcUvSession
*
session
=
(
SUdfcUvSession
*
)
handle
;
SUdfcUvSession
*
session
=
(
SUdfcUvSession
*
)
handle
;
if
(
session
->
udfUvPipe
==
NULL
)
{
if
(
session
->
udfUvPipe
==
NULL
)
{
fnError
(
"No pipe to udfd"
);
fnError
(
"No pipe to udfd"
);
...
...
source/libs/function/src/udfd.c
浏览文件 @
90348e52
...
@@ -671,6 +671,9 @@ void udfdAllocBuffer(uv_handle_t *handle, size_t suggestedSize, uv_buf_t *buf) {
...
@@ -671,6 +671,9 @@ void udfdAllocBuffer(uv_handle_t *handle, size_t suggestedSize, uv_buf_t *buf) {
fnError
(
"udfd can not allocate enough memory"
)
buf
->
base
=
NULL
;
fnError
(
"udfd can not allocate enough memory"
)
buf
->
base
=
NULL
;
buf
->
len
=
0
;
buf
->
len
=
0
;
}
}
}
else
if
(
ctx
->
inputTotal
==
-
1
&&
ctx
->
inputLen
<
msgHeadSize
)
{
buf
->
base
=
ctx
->
inputBuf
+
ctx
->
inputLen
;
buf
->
len
=
msgHeadSize
-
ctx
->
inputLen
;
}
else
{
}
else
{
ctx
->
inputCap
=
ctx
->
inputTotal
>
ctx
->
inputCap
?
ctx
->
inputTotal
:
ctx
->
inputCap
;
ctx
->
inputCap
=
ctx
->
inputTotal
>
ctx
->
inputCap
?
ctx
->
inputTotal
:
ctx
->
inputCap
;
void
*
inputBuf
=
taosMemoryRealloc
(
ctx
->
inputBuf
,
ctx
->
inputCap
);
void
*
inputBuf
=
taosMemoryRealloc
(
ctx
->
inputBuf
,
ctx
->
inputCap
);
...
...
source/libs/nodes/src/nodesCodeFuncs.c
浏览文件 @
90348e52
...
@@ -2667,6 +2667,7 @@ static int32_t jsonToExprNode(const SJson* pJson, void* pObj) {
...
@@ -2667,6 +2667,7 @@ static int32_t jsonToExprNode(const SJson* pJson, void* pObj) {
}
}
static
const
char
*
jkColumnTableId
=
"TableId"
;
static
const
char
*
jkColumnTableId
=
"TableId"
;
static
const
char
*
jkColumnTableType
=
"TableType"
;
static
const
char
*
jkColumnColId
=
"ColId"
;
static
const
char
*
jkColumnColId
=
"ColId"
;
static
const
char
*
jkColumnColType
=
"ColType"
;
static
const
char
*
jkColumnColType
=
"ColType"
;
static
const
char
*
jkColumnDbName
=
"DbName"
;
static
const
char
*
jkColumnDbName
=
"DbName"
;
...
@@ -2683,6 +2684,9 @@ static int32_t columnNodeToJson(const void* pObj, SJson* pJson) {
...
@@ -2683,6 +2684,9 @@ static int32_t columnNodeToJson(const void* pObj, SJson* pJson) {
if
(
TSDB_CODE_SUCCESS
==
code
)
{
if
(
TSDB_CODE_SUCCESS
==
code
)
{
code
=
tjsonAddIntegerToObject
(
pJson
,
jkColumnTableId
,
pNode
->
tableId
);
code
=
tjsonAddIntegerToObject
(
pJson
,
jkColumnTableId
,
pNode
->
tableId
);
}
}
if
(
TSDB_CODE_SUCCESS
==
code
)
{
code
=
tjsonAddIntegerToObject
(
pJson
,
jkColumnTableType
,
pNode
->
tableType
);
}
if
(
TSDB_CODE_SUCCESS
==
code
)
{
if
(
TSDB_CODE_SUCCESS
==
code
)
{
code
=
tjsonAddIntegerToObject
(
pJson
,
jkColumnColId
,
pNode
->
colId
);
code
=
tjsonAddIntegerToObject
(
pJson
,
jkColumnColId
,
pNode
->
colId
);
}
}
...
@@ -2718,6 +2722,9 @@ static int32_t jsonToColumnNode(const SJson* pJson, void* pObj) {
...
@@ -2718,6 +2722,9 @@ static int32_t jsonToColumnNode(const SJson* pJson, void* pObj) {
if
(
TSDB_CODE_SUCCESS
==
code
)
{
if
(
TSDB_CODE_SUCCESS
==
code
)
{
code
=
tjsonGetUBigIntValue
(
pJson
,
jkColumnTableId
,
&
pNode
->
tableId
);
code
=
tjsonGetUBigIntValue
(
pJson
,
jkColumnTableId
,
&
pNode
->
tableId
);
}
}
if
(
TSDB_CODE_SUCCESS
==
code
)
{
code
=
tjsonGetTinyIntValue
(
pJson
,
jkColumnTableType
,
&
pNode
->
tableType
);
}
if
(
TSDB_CODE_SUCCESS
==
code
)
{
if
(
TSDB_CODE_SUCCESS
==
code
)
{
code
=
tjsonGetSmallIntValue
(
pJson
,
jkColumnColId
,
&
pNode
->
colId
);
code
=
tjsonGetSmallIntValue
(
pJson
,
jkColumnColId
,
&
pNode
->
colId
);
}
}
...
...
source/libs/parser/src/parTranslater.c
浏览文件 @
90348e52
...
@@ -1237,7 +1237,7 @@ static void setFuncClassification(SNode* pCurrStmt, SFunctionNode* pFunc) {
...
@@ -1237,7 +1237,7 @@ static void setFuncClassification(SNode* pCurrStmt, SFunctionNode* pFunc) {
pSelect
->
hasTailFunc
=
pSelect
->
hasTailFunc
?
true
:
(
FUNCTION_TYPE_TAIL
==
pFunc
->
funcType
);
pSelect
->
hasTailFunc
=
pSelect
->
hasTailFunc
?
true
:
(
FUNCTION_TYPE_TAIL
==
pFunc
->
funcType
);
pSelect
->
hasInterpFunc
=
pSelect
->
hasInterpFunc
?
true
:
(
FUNCTION_TYPE_INTERP
==
pFunc
->
funcType
);
pSelect
->
hasInterpFunc
=
pSelect
->
hasInterpFunc
?
true
:
(
FUNCTION_TYPE_INTERP
==
pFunc
->
funcType
);
pSelect
->
hasLastRowFunc
=
pSelect
->
hasLastRowFunc
?
true
:
(
FUNCTION_TYPE_LAST_ROW
==
pFunc
->
funcType
);
pSelect
->
hasLastRowFunc
=
pSelect
->
hasLastRowFunc
?
true
:
(
FUNCTION_TYPE_LAST_ROW
==
pFunc
->
funcType
);
pSelect
->
hasTimeLineFunc
=
pSelect
->
has
LastRow
Func
?
true
:
fmIsTimelineFunc
(
pFunc
->
funcId
);
pSelect
->
hasTimeLineFunc
=
pSelect
->
has
TimeLine
Func
?
true
:
fmIsTimelineFunc
(
pFunc
->
funcId
);
}
}
}
}
...
...
source/libs/planner/src/planLogicCreater.c
浏览文件 @
90348e52
...
@@ -478,8 +478,9 @@ static int32_t createAggLogicNode(SLogicPlanContext* pCxt, SSelectStmt* pSelect,
...
@@ -478,8 +478,9 @@ static int32_t createAggLogicNode(SLogicPlanContext* pCxt, SSelectStmt* pSelect,
}
}
pAgg
->
hasLastRow
=
pSelect
->
hasLastRowFunc
;
pAgg
->
hasLastRow
=
pSelect
->
hasLastRowFunc
;
pAgg
->
hasTimeLineFunc
=
pSelect
->
hasTimeLineFunc
;
pAgg
->
node
.
groupAction
=
GROUP_ACTION_SET
;
pAgg
->
node
.
groupAction
=
GROUP_ACTION_SET
;
pAgg
->
node
.
requireDataOrder
=
DATA_ORDER_LEVEL_NONE
;
pAgg
->
node
.
requireDataOrder
=
pAgg
->
hasTimeLineFunc
?
DATA_ORDER_LEVEL_IN_GROUP
:
DATA_ORDER_LEVEL_NONE
;
pAgg
->
node
.
resultDataOrder
=
DATA_ORDER_LEVEL_NONE
;
pAgg
->
node
.
resultDataOrder
=
DATA_ORDER_LEVEL_NONE
;
int32_t
code
=
TSDB_CODE_SUCCESS
;
int32_t
code
=
TSDB_CODE_SUCCESS
;
...
@@ -928,7 +929,7 @@ static int32_t createDistinctLogicNode(SLogicPlanContext* pCxt, SSelectStmt* pSe
...
@@ -928,7 +929,7 @@ static int32_t createDistinctLogicNode(SLogicPlanContext* pCxt, SSelectStmt* pSe
int32_t
code
=
TSDB_CODE_SUCCESS
;
int32_t
code
=
TSDB_CODE_SUCCESS
;
// set grouyp keys, agg funcs and having conditions
// set grouyp keys, agg funcs and having conditions
SNodeList
*
pGroupKeys
=
NULL
;
SNodeList
*
pGroupKeys
=
NULL
;
SNode
*
pProjection
=
NULL
;
SNode
*
pProjection
=
NULL
;
FOREACH
(
pProjection
,
pSelect
->
pProjectionList
)
{
FOREACH
(
pProjection
,
pSelect
->
pProjectionList
)
{
code
=
nodesListMakeStrictAppend
(
&
pGroupKeys
,
createGroupingSetNode
(
pProjection
));
code
=
nodesListMakeStrictAppend
(
&
pGroupKeys
,
createGroupingSetNode
(
pProjection
));
if
(
TSDB_CODE_SUCCESS
!=
code
)
{
if
(
TSDB_CODE_SUCCESS
!=
code
)
{
...
...
source/libs/planner/src/planSpliter.c
浏览文件 @
90348e52
...
@@ -904,14 +904,6 @@ static int32_t stbSplSplitScanNodeWithPartTags(SSplitContext* pCxt, SStableSplit
...
@@ -904,14 +904,6 @@ static int32_t stbSplSplitScanNodeWithPartTags(SSplitContext* pCxt, SStableSplit
return
code
;
return
code
;
}
}
static
int32_t
stbSplSplitScanNode
(
SSplitContext
*
pCxt
,
SStableSplitInfo
*
pInfo
)
{
SScanLogicNode
*
pScan
=
(
SScanLogicNode
*
)
pInfo
->
pSplitNode
;
if
(
NULL
!=
pScan
->
pGroupTags
)
{
return
stbSplSplitScanNodeWithPartTags
(
pCxt
,
pInfo
);
}
return
stbSplSplitScanNodeWithoutPartTags
(
pCxt
,
pInfo
);
}
static
SNode
*
stbSplFindPrimaryKeyFromScan
(
SScanLogicNode
*
pScan
)
{
static
SNode
*
stbSplFindPrimaryKeyFromScan
(
SScanLogicNode
*
pScan
)
{
SNode
*
pCol
=
NULL
;
SNode
*
pCol
=
NULL
;
FOREACH
(
pCol
,
pScan
->
pScanCols
)
{
FOREACH
(
pCol
,
pScan
->
pScanCols
)
{
...
@@ -922,11 +914,12 @@ static SNode* stbSplFindPrimaryKeyFromScan(SScanLogicNode* pScan) {
...
@@ -922,11 +914,12 @@ static SNode* stbSplFindPrimaryKeyFromScan(SScanLogicNode* pScan) {
return
NULL
;
return
NULL
;
}
}
static
int32_t
stbSplSplitScanNodeForJoin
(
SSplitContext
*
pCxt
,
SLogicSubplan
*
pSubplan
,
SScanLogicNode
*
pScan
)
{
static
int32_t
stbSplSplitMergeScanNode
(
SSplitContext
*
pCxt
,
SLogicSubplan
*
pSubplan
,
SScanLogicNode
*
pScan
,
bool
groupSort
)
{
SNodeList
*
pMergeKeys
=
NULL
;
SNodeList
*
pMergeKeys
=
NULL
;
int32_t
code
=
stbSplCreateMergeKeysByPrimaryKey
(
stbSplFindPrimaryKeyFromScan
(
pScan
),
&
pMergeKeys
);
int32_t
code
=
stbSplCreateMergeKeysByPrimaryKey
(
stbSplFindPrimaryKeyFromScan
(
pScan
),
&
pMergeKeys
);
if
(
TSDB_CODE_SUCCESS
==
code
)
{
if
(
TSDB_CODE_SUCCESS
==
code
)
{
code
=
stbSplCreateMergeNode
(
pCxt
,
pSubplan
,
(
SLogicNode
*
)
pScan
,
pMergeKeys
,
(
SLogicNode
*
)
pScan
,
false
);
code
=
stbSplCreateMergeNode
(
pCxt
,
pSubplan
,
(
SLogicNode
*
)
pScan
,
pMergeKeys
,
(
SLogicNode
*
)
pScan
,
groupSort
);
}
}
if
(
TSDB_CODE_SUCCESS
==
code
)
{
if
(
TSDB_CODE_SUCCESS
==
code
)
{
code
=
nodesListMakeStrictAppend
(
&
pSubplan
->
pChildren
,
code
=
nodesListMakeStrictAppend
(
&
pSubplan
->
pChildren
,
...
@@ -937,12 +930,24 @@ static int32_t stbSplSplitScanNodeForJoin(SSplitContext* pCxt, SLogicSubplan* pS
...
@@ -937,12 +930,24 @@ static int32_t stbSplSplitScanNodeForJoin(SSplitContext* pCxt, SLogicSubplan* pS
return
code
;
return
code
;
}
}
static
int32_t
stbSplSplitScanNode
(
SSplitContext
*
pCxt
,
SStableSplitInfo
*
pInfo
)
{
SScanLogicNode
*
pScan
=
(
SScanLogicNode
*
)
pInfo
->
pSplitNode
;
if
(
SCAN_TYPE_TABLE_MERGE
==
pScan
->
scanType
)
{
pInfo
->
pSubplan
->
subplanType
=
SUBPLAN_TYPE_MERGE
;
return
stbSplSplitMergeScanNode
(
pCxt
,
pInfo
->
pSubplan
,
pScan
,
true
);
}
if
(
NULL
!=
pScan
->
pGroupTags
)
{
return
stbSplSplitScanNodeWithPartTags
(
pCxt
,
pInfo
);
}
return
stbSplSplitScanNodeWithoutPartTags
(
pCxt
,
pInfo
);
}
static
int32_t
stbSplSplitJoinNodeImpl
(
SSplitContext
*
pCxt
,
SLogicSubplan
*
pSubplan
,
SJoinLogicNode
*
pJoin
)
{
static
int32_t
stbSplSplitJoinNodeImpl
(
SSplitContext
*
pCxt
,
SLogicSubplan
*
pSubplan
,
SJoinLogicNode
*
pJoin
)
{
int32_t
code
=
TSDB_CODE_SUCCESS
;
int32_t
code
=
TSDB_CODE_SUCCESS
;
SNode
*
pChild
=
NULL
;
SNode
*
pChild
=
NULL
;
FOREACH
(
pChild
,
pJoin
->
node
.
pChildren
)
{
FOREACH
(
pChild
,
pJoin
->
node
.
pChildren
)
{
if
(
QUERY_NODE_LOGIC_PLAN_SCAN
==
nodeType
(
pChild
))
{
if
(
QUERY_NODE_LOGIC_PLAN_SCAN
==
nodeType
(
pChild
))
{
code
=
stbSplSplit
ScanNodeForJoin
(
pCxt
,
pSubplan
,
(
SScanLogicNode
*
)
pChild
);
code
=
stbSplSplit
MergeScanNode
(
pCxt
,
pSubplan
,
(
SScanLogicNode
*
)
pChild
,
false
);
}
else
if
(
QUERY_NODE_LOGIC_PLAN_JOIN
==
nodeType
(
pChild
))
{
}
else
if
(
QUERY_NODE_LOGIC_PLAN_JOIN
==
nodeType
(
pChild
))
{
code
=
stbSplSplitJoinNodeImpl
(
pCxt
,
pSubplan
,
(
SJoinLogicNode
*
)
pChild
);
code
=
stbSplSplitJoinNodeImpl
(
pCxt
,
pSubplan
,
(
SJoinLogicNode
*
)
pChild
);
}
else
{
}
else
{
...
...
source/libs/planner/src/planUtil.c
浏览文件 @
90348e52
...
@@ -124,7 +124,7 @@ int32_t replaceLogicNode(SLogicSubplan* pSubplan, SLogicNode* pOld, SLogicNode*
...
@@ -124,7 +124,7 @@ int32_t replaceLogicNode(SLogicSubplan* pSubplan, SLogicNode* pOld, SLogicNode*
}
}
static
int32_t
adjustScanDataRequirement
(
SScanLogicNode
*
pScan
,
EDataOrderLevel
requirement
)
{
static
int32_t
adjustScanDataRequirement
(
SScanLogicNode
*
pScan
,
EDataOrderLevel
requirement
)
{
if
(
SCAN_TYPE_TABLE
!=
pScan
->
scanType
||
SCAN_TYPE_TABLE_MERGE
!=
pScan
->
scanType
)
{
if
(
SCAN_TYPE_TABLE
!=
pScan
->
scanType
&&
SCAN_TYPE_TABLE_MERGE
!=
pScan
->
scanType
)
{
return
TSDB_CODE_SUCCESS
;
return
TSDB_CODE_SUCCESS
;
}
}
// The lowest sort level of scan output data is DATA_ORDER_LEVEL_IN_BLOCK
// The lowest sort level of scan output data is DATA_ORDER_LEVEL_IN_BLOCK
...
@@ -161,7 +161,9 @@ static int32_t adjustAggDataRequirement(SAggLogicNode* pAgg, EDataOrderLevel req
...
@@ -161,7 +161,9 @@ static int32_t adjustAggDataRequirement(SAggLogicNode* pAgg, EDataOrderLevel req
return
TSDB_CODE_PLAN_INTERNAL_ERROR
;
return
TSDB_CODE_PLAN_INTERNAL_ERROR
;
}
}
pAgg
->
node
.
resultDataOrder
=
requirement
;
pAgg
->
node
.
resultDataOrder
=
requirement
;
pAgg
->
node
.
requireDataOrder
=
requirement
;
if
(
pAgg
->
hasTimeLineFunc
)
{
pAgg
->
node
.
requireDataOrder
=
requirement
<
DATA_ORDER_LEVEL_IN_GROUP
?
DATA_ORDER_LEVEL_IN_GROUP
:
requirement
;
}
return
TSDB_CODE_SUCCESS
;
return
TSDB_CODE_SUCCESS
;
}
}
...
...
source/libs/planner/test/planBasicTest.cpp
浏览文件 @
90348e52
...
@@ -139,6 +139,10 @@ TEST_F(PlanBasicTest, timeLineFunc) {
...
@@ -139,6 +139,10 @@ TEST_F(PlanBasicTest, timeLineFunc) {
run
(
"SELECT CSUM(c1) FROM t1"
);
run
(
"SELECT CSUM(c1) FROM t1"
);
run
(
"SELECT CSUM(c1) FROM st1"
);
run
(
"SELECT CSUM(c1) FROM st1"
);
run
(
"SELECT TWA(c1) FROM t1"
);
run
(
"SELECT TWA(c1) FROM st1"
);
}
}
TEST_F
(
PlanBasicTest
,
multiResFunc
)
{
TEST_F
(
PlanBasicTest
,
multiResFunc
)
{
...
...
source/libs/planner/test/planPartByTest.cpp
浏览文件 @
90348e52
...
@@ -58,7 +58,19 @@ TEST_F(PlanPartitionByTest, withInterval) {
...
@@ -58,7 +58,19 @@ TEST_F(PlanPartitionByTest, withInterval) {
TEST_F
(
PlanPartitionByTest
,
withGroupBy
)
{
TEST_F
(
PlanPartitionByTest
,
withGroupBy
)
{
useDb
(
"root"
,
"test"
);
useDb
(
"root"
,
"test"
);
run
(
"
select count(*) from t1 partition by c1 group by
c2"
);
run
(
"
SELECT COUNT(*) FROM t1 PARTITION BY c1 GROUP BY
c2"
);
run
(
"SELECT TBNAME, c1 FROM st1 PARTITION BY TBNAME GROUP BY c1"
);
run
(
"SELECT TBNAME, c1 FROM st1 PARTITION BY TBNAME GROUP BY c1"
);
}
}
TEST_F
(
PlanPartitionByTest
,
withTimeLineFunc
)
{
useDb
(
"root"
,
"test"
);
run
(
"SELECT TWA(c1) FROM st1 PARTITION BY c1"
);
}
TEST_F
(
PlanPartitionByTest
,
withSlimit
)
{
useDb
(
"root"
,
"test"
);
run
(
"SELECT CSUM(c1) FROM st1 PARTITION BY TBNAME SLIMIT 1"
);
}
source/libs/sync/test/sh/a.sh
浏览文件 @
90348e52
...
@@ -22,7 +22,7 @@ done
...
@@ -22,7 +22,7 @@ done
echo
""
echo
""
echo
"generate vgId ..."
echo
"generate vgId ..."
cat
${
logpath
}
/log.dnode
*
|
grep
"vgId:"
|
grep
-v
ERROR |
awk
'{print $5}'
|
awk
-F
,
'{print $1}'
|
sort
|
uniq
>
${
logpath
}
/log.vgIds.tmp
cat
${
logpath
}
/log.dnode
*
|
grep
"vgId:"
|
grep
-v
ERROR |
awk
'{print $5}'
|
sort
|
uniq
>
${
logpath
}
/log.vgIds.tmp
echo
"all vgIds:"
>
${
logpath
}
/log.vgIds
echo
"all vgIds:"
>
${
logpath
}
/log.vgIds
cat
${
logpath
}
/log.dnode
*
|
grep
"vgId:"
|
grep
-v
ERROR |
awk
'{print $5}'
|
awk
-F
,
'{print $1}'
|
sort
|
uniq
>>
${
logpath
}
/log.vgIds
cat
${
logpath
}
/log.dnode
*
|
grep
"vgId:"
|
grep
-v
ERROR |
awk
'{print $5}'
|
awk
-F
,
'{print $1}'
|
sort
|
uniq
>>
${
logpath
}
/log.vgIds
for
dnode
in
`
ls
${
logpath
}
|
grep
dnode |
grep
-v
log
`
;
do
for
dnode
in
`
ls
${
logpath
}
|
grep
dnode |
grep
-v
log
`
;
do
...
...
source/util/src/tconfig.c
浏览文件 @
90348e52
...
@@ -626,6 +626,7 @@ void cfgDumpCfg(SConfig *pCfg, bool tsc, bool dump) {
...
@@ -626,6 +626,7 @@ void cfgDumpCfg(SConfig *pCfg, bool tsc, bool dump) {
int32_t
cfgLoadFromEnvVar
(
SConfig
*
pConfig
)
{
int32_t
cfgLoadFromEnvVar
(
SConfig
*
pConfig
)
{
char
*
line
=
NULL
,
*
name
,
*
value
,
*
value2
,
*
value3
;
char
*
line
=
NULL
,
*
name
,
*
value
,
*
value2
,
*
value3
;
int32_t
olen
,
vlen
,
vlen2
,
vlen3
;
int32_t
olen
,
vlen
,
vlen2
,
vlen3
;
int32_t
code
=
0
;
ssize_t
_bytes
=
0
;
ssize_t
_bytes
=
0
;
TdCmdPtr
pCmd
=
taosOpenCmd
(
"set"
);
TdCmdPtr
pCmd
=
taosOpenCmd
(
"set"
);
if
(
pCmd
==
NULL
)
{
if
(
pCmd
==
NULL
)
{
...
@@ -658,9 +659,12 @@ int32_t cfgLoadFromEnvVar(SConfig *pConfig) {
...
@@ -658,9 +659,12 @@ int32_t cfgLoadFromEnvVar(SConfig *pConfig) {
if
(
vlen3
!=
0
)
value3
[
vlen3
]
=
0
;
if
(
vlen3
!=
0
)
value3
[
vlen3
]
=
0
;
}
}
cfgSetItem
(
pConfig
,
name
,
value
,
CFG_STYPE_ENV_VAR
);
if
(
value2
!=
NULL
&&
value3
!=
NULL
&&
value2
[
0
]
!=
0
&&
value3
[
0
]
!=
0
&&
strcasecmp
(
name
,
"dataDir"
)
==
0
)
{
if
(
value2
!=
NULL
&&
value3
!=
NULL
&&
value2
[
0
]
!=
0
&&
value3
[
0
]
!=
0
&&
strcasecmp
(
name
,
"dataDir"
)
==
0
)
{
cfgSetTfsItem
(
pConfig
,
name
,
value
,
value2
,
value3
,
CFG_STYPE_ENV_VAR
);
code
=
cfgSetTfsItem
(
pConfig
,
name
,
value
,
value2
,
value3
,
CFG_STYPE_ENV_VAR
);
if
(
code
!=
0
&&
terrno
!=
TSDB_CODE_CFG_NOT_FOUND
)
break
;
}
else
{
code
=
cfgSetItem
(
pConfig
,
name
,
value
,
CFG_STYPE_ENV_VAR
);
if
(
code
!=
0
&&
terrno
!=
TSDB_CODE_CFG_NOT_FOUND
)
break
;
}
}
}
}
...
@@ -674,6 +678,7 @@ int32_t cfgLoadFromEnvVar(SConfig *pConfig) {
...
@@ -674,6 +678,7 @@ int32_t cfgLoadFromEnvVar(SConfig *pConfig) {
int32_t
cfgLoadFromEnvCmd
(
SConfig
*
pConfig
,
const
char
**
envCmd
)
{
int32_t
cfgLoadFromEnvCmd
(
SConfig
*
pConfig
,
const
char
**
envCmd
)
{
char
buf
[
1024
],
*
name
,
*
value
,
*
value2
,
*
value3
;
char
buf
[
1024
],
*
name
,
*
value
,
*
value2
,
*
value3
;
int32_t
olen
,
vlen
,
vlen2
,
vlen3
;
int32_t
olen
,
vlen
,
vlen2
,
vlen3
;
int32_t
code
=
0
;
int32_t
index
=
0
;
int32_t
index
=
0
;
if
(
envCmd
==
NULL
)
return
0
;
if
(
envCmd
==
NULL
)
return
0
;
while
(
envCmd
[
index
]
!=
NULL
)
{
while
(
envCmd
[
index
]
!=
NULL
)
{
...
@@ -700,9 +705,12 @@ int32_t cfgLoadFromEnvCmd(SConfig *pConfig, const char **envCmd) {
...
@@ -700,9 +705,12 @@ int32_t cfgLoadFromEnvCmd(SConfig *pConfig, const char **envCmd) {
if
(
vlen3
!=
0
)
value3
[
vlen3
]
=
0
;
if
(
vlen3
!=
0
)
value3
[
vlen3
]
=
0
;
}
}
cfgSetItem
(
pConfig
,
name
,
value
,
CFG_STYPE_ENV_CMD
);
if
(
value2
!=
NULL
&&
value3
!=
NULL
&&
value2
[
0
]
!=
0
&&
value3
[
0
]
!=
0
&&
strcasecmp
(
name
,
"dataDir"
)
==
0
)
{
if
(
value2
!=
NULL
&&
value3
!=
NULL
&&
value2
[
0
]
!=
0
&&
value3
[
0
]
!=
0
&&
strcasecmp
(
name
,
"dataDir"
)
==
0
)
{
cfgSetTfsItem
(
pConfig
,
name
,
value
,
value2
,
value3
,
CFG_STYPE_ENV_CMD
);
code
=
cfgSetTfsItem
(
pConfig
,
name
,
value
,
value2
,
value3
,
CFG_STYPE_ENV_CMD
);
if
(
code
!=
0
&&
terrno
!=
TSDB_CODE_CFG_NOT_FOUND
)
break
;
}
else
{
code
=
cfgSetItem
(
pConfig
,
name
,
value
,
CFG_STYPE_ENV_CMD
);
if
(
code
!=
0
&&
terrno
!=
TSDB_CODE_CFG_NOT_FOUND
)
break
;
}
}
}
}
...
@@ -713,6 +721,7 @@ int32_t cfgLoadFromEnvCmd(SConfig *pConfig, const char **envCmd) {
...
@@ -713,6 +721,7 @@ int32_t cfgLoadFromEnvCmd(SConfig *pConfig, const char **envCmd) {
int32_t
cfgLoadFromEnvFile
(
SConfig
*
pConfig
,
const
char
*
envFile
)
{
int32_t
cfgLoadFromEnvFile
(
SConfig
*
pConfig
,
const
char
*
envFile
)
{
char
*
line
=
NULL
,
*
name
,
*
value
,
*
value2
,
*
value3
;
char
*
line
=
NULL
,
*
name
,
*
value
,
*
value2
,
*
value3
;
int32_t
olen
,
vlen
,
vlen2
,
vlen3
;
int32_t
olen
,
vlen
,
vlen2
,
vlen3
;
int32_t
code
=
0
;
ssize_t
_bytes
=
0
;
ssize_t
_bytes
=
0
;
const
char
*
filepath
=
".env"
;
const
char
*
filepath
=
".env"
;
...
@@ -761,9 +770,12 @@ int32_t cfgLoadFromEnvFile(SConfig *pConfig, const char *envFile) {
...
@@ -761,9 +770,12 @@ int32_t cfgLoadFromEnvFile(SConfig *pConfig, const char *envFile) {
if
(
vlen3
!=
0
)
value3
[
vlen3
]
=
0
;
if
(
vlen3
!=
0
)
value3
[
vlen3
]
=
0
;
}
}
cfgSetItem
(
pConfig
,
name
,
value
,
CFG_STYPE_ENV_FILE
);
if
(
value2
!=
NULL
&&
value3
!=
NULL
&&
value2
[
0
]
!=
0
&&
value3
[
0
]
!=
0
&&
strcasecmp
(
name
,
"dataDir"
)
==
0
)
{
if
(
value2
!=
NULL
&&
value3
!=
NULL
&&
value2
[
0
]
!=
0
&&
value3
[
0
]
!=
0
&&
strcasecmp
(
name
,
"dataDir"
)
==
0
)
{
cfgSetTfsItem
(
pConfig
,
name
,
value
,
value2
,
value3
,
CFG_STYPE_ENV_FILE
);
code
=
cfgSetTfsItem
(
pConfig
,
name
,
value
,
value2
,
value3
,
CFG_STYPE_ENV_FILE
);
if
(
code
!=
0
&&
terrno
!=
TSDB_CODE_CFG_NOT_FOUND
)
break
;
}
else
{
code
=
cfgSetItem
(
pConfig
,
name
,
value
,
CFG_STYPE_ENV_FILE
);
if
(
code
!=
0
&&
terrno
!=
TSDB_CODE_CFG_NOT_FOUND
)
break
;
}
}
}
}
...
@@ -819,11 +831,12 @@ int32_t cfgLoadFromCfgFile(SConfig *pConfig, const char *filepath) {
...
@@ -819,11 +831,12 @@ int32_t cfgLoadFromCfgFile(SConfig *pConfig, const char *filepath) {
if
(
vlen3
!=
0
)
value3
[
vlen3
]
=
0
;
if
(
vlen3
!=
0
)
value3
[
vlen3
]
=
0
;
}
}
code
=
cfgSetItem
(
pConfig
,
name
,
value
,
CFG_STYPE_CFG_FILE
);
if
(
code
!=
0
&&
terrno
!=
TSDB_CODE_CFG_NOT_FOUND
)
break
;
if
(
value2
!=
NULL
&&
value3
!=
NULL
&&
value2
[
0
]
!=
0
&&
value3
[
0
]
!=
0
&&
strcasecmp
(
name
,
"dataDir"
)
==
0
)
{
if
(
value2
!=
NULL
&&
value3
!=
NULL
&&
value2
[
0
]
!=
0
&&
value3
[
0
]
!=
0
&&
strcasecmp
(
name
,
"dataDir"
)
==
0
)
{
code
=
cfgSetTfsItem
(
pConfig
,
name
,
value
,
value2
,
value3
,
CFG_STYPE_CFG_FILE
);
code
=
cfgSetTfsItem
(
pConfig
,
name
,
value
,
value2
,
value3
,
CFG_STYPE_CFG_FILE
);
if
(
code
!=
0
&&
terrno
!=
TSDB_CODE_CFG_NOT_FOUND
)
break
;
if
(
code
!=
0
&&
terrno
!=
TSDB_CODE_CFG_NOT_FOUND
)
break
;
}
else
{
code
=
cfgSetItem
(
pConfig
,
name
,
value
,
CFG_STYPE_CFG_FILE
);
if
(
code
!=
0
&&
terrno
!=
TSDB_CODE_CFG_NOT_FOUND
)
break
;
}
}
}
}
...
@@ -839,9 +852,75 @@ int32_t cfgLoadFromCfgFile(SConfig *pConfig, const char *filepath) {
...
@@ -839,9 +852,75 @@ int32_t cfgLoadFromCfgFile(SConfig *pConfig, const char *filepath) {
}
}
}
}
// int32_t cfgLoadFromCfgText(SConfig *pConfig, const char *configText) {
// char *line = NULL, *name, *value, *value2, *value3;
// int32_t olen, vlen, vlen2, vlen3;
// ssize_t _bytes = 0;
// int32_t code = 0;
// TdFilePtr pFile = taosOpenFile(filepath, TD_FILE_READ | TD_FILE_STREAM);
// if (pFile == NULL) {
// // success when the file does not exist
// if (errno == ENOENT) {
// terrno = TAOS_SYSTEM_ERROR(errno);
// uInfo("failed to load from cfg file %s since %s, use default parameters", filepath, terrstr());
// return 0;
// } else {
// uError("failed to load from cfg file %s since %s", filepath, terrstr());
// return -1;
// }
// }
// while (!taosEOFFile(pFile)) {
// name = value = value2 = value3 = NULL;
// olen = vlen = vlen2 = vlen3 = 0;
// _bytes = taosGetLineFile(pFile, &line);
// if (_bytes <= 0) {
// break;
// }
// if(line[_bytes - 1] == '\n') line[_bytes - 1] = 0;
// paGetToken(line, &name, &olen);
// if (olen == 0) continue;
// name[olen] = 0;
// paGetToken(name + olen + 1, &value, &vlen);
// if (vlen == 0) continue;
// value[vlen] = 0;
// paGetToken(value + vlen + 1, &value2, &vlen2);
// if (vlen2 != 0) {
// value2[vlen2] = 0;
// paGetToken(value2 + vlen2 + 1, &value3, &vlen3);
// if (vlen3 != 0) value3[vlen3] = 0;
// }
// code = cfgSetItem(pConfig, name, value, CFG_STYPE_CFG_FILE);
// if (code != 0 && terrno != TSDB_CODE_CFG_NOT_FOUND) break;
// if (value2 != NULL && value3 != NULL && value2[0] != 0 && value3[0] != 0 && strcasecmp(name, "dataDir") == 0) {
// code = cfgSetTfsItem(pConfig, name, value, value2, value3, CFG_STYPE_CFG_FILE);
// if (code != 0 && terrno != TSDB_CODE_CFG_NOT_FOUND) break;
// }
// }
// taosCloseFile(&pFile);
// if (line != NULL) taosMemoryFreeClear(line);
// if (code == 0 || (code != 0 && terrno == TSDB_CODE_CFG_NOT_FOUND)) {
// uInfo("load from cfg file %s success", filepath);
// return 0;
// } else {
// uError("failed to load from cfg file %s since %s", filepath, terrstr());
// return -1;
// }
// }
int32_t
cfgLoadFromApollUrl
(
SConfig
*
pConfig
,
const
char
*
url
)
{
int32_t
cfgLoadFromApollUrl
(
SConfig
*
pConfig
,
const
char
*
url
)
{
char
*
cfgLineBuf
=
NULL
,
*
name
,
*
value
,
*
value2
,
*
value3
;
char
*
cfgLineBuf
=
NULL
,
*
name
,
*
value
,
*
value2
,
*
value3
;
int32_t
olen
,
vlen
,
vlen2
,
vlen3
;
int32_t
olen
,
vlen
,
vlen2
,
vlen3
;
int32_t
code
=
0
;
if
(
url
==
NULL
||
strlen
(
url
)
==
0
)
{
if
(
url
==
NULL
||
strlen
(
url
)
==
0
)
{
uInfo
(
"fail to load apoll url"
);
uInfo
(
"fail to load apoll url"
);
return
0
;
return
0
;
...
@@ -916,9 +995,12 @@ int32_t cfgLoadFromApollUrl(SConfig *pConfig, const char *url) {
...
@@ -916,9 +995,12 @@ int32_t cfgLoadFromApollUrl(SConfig *pConfig, const char *url) {
paGetToken
(
value2
+
vlen2
+
1
,
&
value3
,
&
vlen3
);
paGetToken
(
value2
+
vlen2
+
1
,
&
value3
,
&
vlen3
);
if
(
vlen3
!=
0
)
value3
[
vlen3
]
=
0
;
if
(
vlen3
!=
0
)
value3
[
vlen3
]
=
0
;
}
}
cfgSetItem
(
pConfig
,
name
,
value
,
CFG_STYPE_APOLLO_URL
);
if
(
value2
!=
NULL
&&
value3
!=
NULL
&&
value2
[
0
]
!=
0
&&
value3
[
0
]
!=
0
&&
strcasecmp
(
name
,
"dataDir"
)
==
0
)
{
if
(
value2
!=
NULL
&&
value3
!=
NULL
&&
value2
[
0
]
!=
0
&&
value3
[
0
]
!=
0
&&
strcasecmp
(
name
,
"dataDir"
)
==
0
)
{
cfgSetTfsItem
(
pConfig
,
name
,
value
,
value2
,
value3
,
CFG_STYPE_APOLLO_URL
);
code
=
cfgSetTfsItem
(
pConfig
,
name
,
value
,
value2
,
value3
,
CFG_STYPE_APOLLO_URL
);
if
(
code
!=
0
&&
terrno
!=
TSDB_CODE_CFG_NOT_FOUND
)
break
;
}
else
{
code
=
cfgSetItem
(
pConfig
,
name
,
value
,
CFG_STYPE_APOLLO_URL
);
if
(
code
!=
0
&&
terrno
!=
TSDB_CODE_CFG_NOT_FOUND
)
break
;
}
}
}
}
}
}
...
...
source/util/src/terror.c
浏览文件 @
90348e52
...
@@ -336,6 +336,7 @@ TAOS_DEFINE_ERROR(TSDB_CODE_VND_TABLE_NOT_EXIST, "Table does not exists
...
@@ -336,6 +336,7 @@ TAOS_DEFINE_ERROR(TSDB_CODE_VND_TABLE_NOT_EXIST, "Table does not exists
TAOS_DEFINE_ERROR
(
TSDB_CODE_VND_INVALID_TABLE_ACTION
,
"Invalid table action"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_VND_INVALID_TABLE_ACTION
,
"Invalid table action"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_VND_COL_ALREADY_EXISTS
,
"Table column already exists"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_VND_COL_ALREADY_EXISTS
,
"Table column already exists"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_VND_TABLE_COL_NOT_EXISTS
,
"Table column not exists"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_VND_TABLE_COL_NOT_EXISTS
,
"Table column not exists"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_VND_COL_SUBSCRIBED
,
"Table column is subscribed"
)
// tsdb
// tsdb
TAOS_DEFINE_ERROR
(
TSDB_CODE_TDB_INVALID_TABLE_ID
,
"Invalid table ID"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_TDB_INVALID_TABLE_ID
,
"Invalid table ID"
)
...
...
tests/pytest/topic/topicQuery.py
已删除
100644 → 0
浏览文件 @
a243e267
###################################################################
# Copyright (c) 2016 by TAOS Technologies, Inc.
# All rights reserved.
#
# This file is proprietary and confidential to TAOS Technologies.
# No part of this file may be reproduced, stored, transmitted,
# disclosed or used in any form or by any means other than as
# expressly provided by the written permission from Jianhui Tao
#
###################################################################
# -*- coding: utf-8 -*-
from
util.log
import
tdLog
from
util.cases
import
tdCases
from
util.sql
import
tdSql
class
TDTestCase
:
def
init
(
self
,
conn
,
logSql
):
tdLog
.
debug
(
"start to execute %s"
%
__file__
)
tdSql
.
init
(
conn
.
cursor
(),
logSql
)
self
.
ts
=
1538548685000
def
run
(
self
):
tdSql
.
prepare
()
# test case for https://jira.taosdata.com:18080/browse/TD-3679
print
(
"==============step1"
)
tdSql
.
execute
(
"create topic tq_test partitions 10"
)
tdSql
.
execute
(
"insert into tq_test.p1(off, ts, content) values(0, %d, 'aaaa')"
%
self
.
ts
)
tdSql
.
execute
(
"insert into tq_test.p1(off, ts, content) values(1, %d, 'aaaa')"
%
(
self
.
ts
+
1
))
tdSql
.
execute
(
"insert into tq_test.p1(off, ts, content) values(2, %d, 'aaaa')"
%
(
self
.
ts
+
2
))
tdSql
.
execute
(
"insert into tq_test.p1(off, ts, content) values(3, %d, 'aaaa')"
%
(
self
.
ts
+
3
))
print
(
"==============step2"
)
tdSql
.
query
(
"select * from tq_test.p1"
)
tdSql
.
checkRows
(
4
)
tdSql
.
query
(
"select * from tq_test.p1 where ts >= %d"
%
self
.
ts
)
tdSql
.
checkRows
(
4
)
tdSql
.
query
(
"select * from tq_test.p1 where ts > %d"
%
self
.
ts
)
tdSql
.
checkRows
(
3
)
tdSql
.
query
(
"select * from tq_test.p1 where ts = %d"
%
self
.
ts
)
tdSql
.
checkRows
(
1
)
tdSql
.
execute
(
"use db"
)
tdSql
.
execute
(
"create table test(ts timestamp, start timestamp, value int)"
)
tdSql
.
execute
(
"insert into test values(%d, %d, 1)"
%
(
self
.
ts
,
self
.
ts
))
tdSql
.
execute
(
"insert into test values(%d, %d, 1)"
%
(
self
.
ts
+
1
,
self
.
ts
+
1
))
tdSql
.
execute
(
"insert into test values(%d, %d, 1)"
%
(
self
.
ts
+
2
,
self
.
ts
+
2
))
tdSql
.
execute
(
"insert into test values(%d, %d, 1)"
%
(
self
.
ts
+
3
,
self
.
ts
+
3
))
tdSql
.
query
(
"select * from test"
)
tdSql
.
checkRows
(
4
)
tdSql
.
query
(
"select * from test where ts >= %d"
%
self
.
ts
)
tdSql
.
checkRows
(
4
)
tdSql
.
query
(
"select * from test where ts > %d"
%
self
.
ts
)
tdSql
.
checkRows
(
3
)
tdSql
.
query
(
"select * from test where ts = %d"
%
self
.
ts
)
tdSql
.
checkRows
(
1
)
tdSql
.
query
(
"select * from test where start >= %d"
%
self
.
ts
)
tdSql
.
checkRows
(
4
)
tdSql
.
query
(
"select * from test where start > %d"
%
self
.
ts
)
tdSql
.
checkRows
(
3
)
tdSql
.
query
(
"select * from test where start = %d"
%
self
.
ts
)
tdSql
.
checkRows
(
1
)
def
stop
(
self
):
tdSql
.
close
()
tdLog
.
success
(
"%s successfully executed"
%
__file__
)
tdCases
.
addWindows
(
__file__
,
TDTestCase
())
tdCases
.
addLinux
(
__file__
,
TDTestCase
())
\ No newline at end of file
tests/script/jenkins/basic.txt
浏览文件 @
90348e52
...
@@ -89,13 +89,13 @@
...
@@ -89,13 +89,13 @@
./test.sh -f tsim/parser/alter_column.sim
./test.sh -f tsim/parser/alter_column.sim
./test.sh -f tsim/parser/alter_stable.sim
./test.sh -f tsim/parser/alter_stable.sim
./test.sh -f tsim/parser/alter.sim
./test.sh -f tsim/parser/alter.sim
# ./test.sh -f tsim/parser/alter1.sim
#
TD-17661
./test.sh -f tsim/parser/alter1.sim
./test.sh -f tsim/parser/auto_create_tb_drop_tb.sim
./test.sh -f tsim/parser/auto_create_tb_drop_tb.sim
./test.sh -f tsim/parser/auto_create_tb.sim
./test.sh -f tsim/parser/auto_create_tb.sim
./test.sh -f tsim/parser/between_and.sim
./test.sh -f tsim/parser/between_and.sim
./test.sh -f tsim/parser/binary_escapeCharacter.sim
./test.sh -f tsim/parser/binary_escapeCharacter.sim
# ./test.sh -f tsim/parser/col_arithmetic_operation.sim
#
TD-17738
./test.sh -f tsim/parser/col_arithmetic_operation.sim
# ./test.sh -f tsim/parser/columnValue.sim
#
TD-17661
./test.sh -f tsim/parser/columnValue.sim
./test.sh -f tsim/parser/commit.sim
./test.sh -f tsim/parser/commit.sim
# TD-17661 ./test.sh -f tsim/parser/condition.sim
# TD-17661 ./test.sh -f tsim/parser/condition.sim
./test.sh -f tsim/parser/constCol.sim
./test.sh -f tsim/parser/constCol.sim
...
@@ -112,9 +112,9 @@
...
@@ -112,9 +112,9 @@
./test.sh -f tsim/parser/fourArithmetic-basic.sim
./test.sh -f tsim/parser/fourArithmetic-basic.sim
# TD-17659 ./test.sh -f tsim/parser/function.sim
# TD-17659 ./test.sh -f tsim/parser/function.sim
./test.sh -f tsim/parser/groupby-basic.sim
./test.sh -f tsim/parser/groupby-basic.sim
#
./test.sh -f tsim/parser/groupby.sim
./test.sh -f tsim/parser/groupby.sim
# TD-17622 ./test.sh -f tsim/parser/having_child.sim
# TD-17622 ./test.sh -f tsim/parser/having_child.sim
# ./test.sh -f tsim/parser/having.sim
#
TD-17622
./test.sh -f tsim/parser/having.sim
./test.sh -f tsim/parser/import_commit1.sim
./test.sh -f tsim/parser/import_commit1.sim
./test.sh -f tsim/parser/import_commit2.sim
./test.sh -f tsim/parser/import_commit2.sim
./test.sh -f tsim/parser/import_commit3.sim
./test.sh -f tsim/parser/import_commit3.sim
...
@@ -122,49 +122,46 @@
...
@@ -122,49 +122,46 @@
./test.sh -f tsim/parser/import.sim
./test.sh -f tsim/parser/import.sim
./test.sh -f tsim/parser/insert_multiTbl.sim
./test.sh -f tsim/parser/insert_multiTbl.sim
./test.sh -f tsim/parser/insert_tb.sim
./test.sh -f tsim/parser/insert_tb.sim
# ./test.sh -f tsim/parser/interp.sim
#
TD-17038
./test.sh -f tsim/parser/interp.sim
./test.sh -f tsim/parser/join_manyblocks.sim
./test.sh -f tsim/parser/join_manyblocks.sim
# ./test.sh -f tsim/parser/join_multitables.sim
#
TD-17713
./test.sh -f tsim/parser/join_multitables.sim
# TD-17713 ./test.sh -f tsim/parser/join_multivnode.sim
# TD-17713 ./test.sh -f tsim/parser/join_multivnode.sim
# TD-17707 ./test.sh -f tsim/parser/join.sim
# TD-17707 ./test.sh -f tsim/parser/join.sim
./test.sh -f tsim/parser/last_cache.sim
./test.sh -f tsim/parser/last_cache.sim
./test.sh -f tsim/parser/last_groupby.sim
./test.sh -f tsim/parser/last_groupby.sim
# TD-17
675
./test.sh -f tsim/parser/lastrow.sim
# TD-17
722
./test.sh -f tsim/parser/lastrow.sim
./test.sh -f tsim/parser/like.sim
./test.sh -f tsim/parser/like.sim
# ./test.sh -f tsim/parser/limit.sim
#
TD-17464
./test.sh -f tsim/parser/limit.sim
# ./test.sh -f tsim/parser/limit1.sim
#
TD-17464
./test.sh -f tsim/parser/limit1.sim
# ./test.sh -f tsim/parser/limit2.sim
#
TD-17623
./test.sh -f tsim/parser/limit2.sim
./test.sh -f tsim/parser/mixed_blocks.sim
./test.sh -f tsim/parser/mixed_blocks.sim
./test.sh -f tsim/parser/nchar.sim
./test.sh -f tsim/parser/nchar.sim
# TD-17703 ./test.sh -f tsim/parser/nestquery.sim
# TD-17703 ./test.sh -f tsim/parser/nestquery.sim
# ./test.sh -f tsim/parser/null_char.sim
#
TD-17685
./test.sh -f tsim/parser/null_char.sim
./test.sh -f tsim/parser/precision_ns.sim
./test.sh -f tsim/parser/precision_ns.sim
./test.sh -f tsim/parser/projection_limit_offset.sim
./test.sh -f tsim/parser/projection_limit_offset.sim
./test.sh -f tsim/parser/regex.sim
./test.sh -f tsim/parser/regex.sim
./test.sh -f tsim/parser/select_across_vnodes.sim
./test.sh -f tsim/parser/select_across_vnodes.sim
./test.sh -f tsim/parser/select_distinct_tag.sim
./test.sh -f tsim/parser/select_distinct_tag.sim
./test.sh -f tsim/parser/select_from_cache_disk.sim
./test.sh -f tsim/parser/select_from_cache_disk.sim
# ./test.sh -f tsim/parser/select_with_tags.sim
#
TD-17659
./test.sh -f tsim/parser/select_with_tags.sim
./test.sh -f tsim/parser/selectResNum.sim
./test.sh -f tsim/parser/selectResNum.sim
# TD-17685 ./test.sh -f tsim/parser/set_tag_vals.sim
# TD-17685 ./test.sh -f tsim/parser/set_tag_vals.sim
./test.sh -f tsim/parser/single_row_in_tb.sim
./test.sh -f tsim/parser/single_row_in_tb.sim
# TD-17684 ./test.sh -f tsim/parser/sliding.sim
# TD-17684 ./test.sh -f tsim/parser/sliding.sim
# ./test.sh -f tsim/parser/slimit_alter_tags.sim
#
TD-17722
./test.sh -f tsim/parser/slimit_alter_tags.sim
# ./test.sh -f tsim/parser/slimit.sim
#
TD-17722
./test.sh -f tsim/parser/slimit.sim
# ./test.sh -f tsim/parser/slimit1.sim
#
TD-17722
./test.sh -f tsim/parser/slimit1.sim
./test.sh -f tsim/parser/stableOp.sim
./test.sh -f tsim/parser/stableOp.sim
# ./test.sh -f tsim/parser/tags_dynamically_specifiy.sim
#
TD-17661
./test.sh -f tsim/parser/tags_dynamically_specifiy.sim
# ./test.sh -f tsim/parser/tags_filter.sim
#
TD-17661
./test.sh -f tsim/parser/tags_filter.sim
./test.sh -f tsim/parser/tbnameIn.sim
./test.sh -f tsim/parser/tbnameIn.sim
./test.sh -f tsim/parser/timestamp.sim
./test.sh -f tsim/parser/timestamp.sim
./test.sh -f tsim/parser/top_groupby.sim
./test.sh -f tsim/parser/top_groupby.sim
./test.sh -f tsim/parser/topbot.sim
./test.sh -f tsim/parser/topbot.sim
# ./test.sh -f tsim/parser/udf_dll_stable.sim
# ./test.sh -f tsim/parser/udf_dll.sim
# ./test.sh -f tsim/parser/udf.sim
./test.sh -f tsim/parser/union.sim
./test.sh -f tsim/parser/union.sim
# TD-17704 ./test.sh -f tsim/parser/union_sysinfo.sim
# TD-17704 ./test.sh -f tsim/parser/union_sysinfo.sim
# ./test.sh -f tsim/parser/where.sim
#
TD-17661
./test.sh -f tsim/parser/where.sim
# ---- query
# ---- query
./test.sh -f tsim/query/interval.sim
./test.sh -f tsim/query/interval.sim
...
@@ -325,7 +322,7 @@
...
@@ -325,7 +322,7 @@
./test.sh -f tsim/vnode/stable_replica3_vnode3.sim
./test.sh -f tsim/vnode/stable_replica3_vnode3.sim
# --- sync
# --- sync
#
./test.sh -f tsim/sync/3Replica1VgElect.sim
./test.sh -f tsim/sync/3Replica1VgElect.sim
./test.sh -f tsim/sync/3Replica5VgElect.sim
./test.sh -f tsim/sync/3Replica5VgElect.sim
./test.sh -f tsim/sync/oneReplica1VgElect.sim
./test.sh -f tsim/sync/oneReplica1VgElect.sim
./test.sh -f tsim/sync/oneReplica5VgElect.sim
./test.sh -f tsim/sync/oneReplica5VgElect.sim
...
@@ -423,18 +420,18 @@
...
@@ -423,18 +420,18 @@
./test.sh -f tsim/tag/bool_binary.sim
./test.sh -f tsim/tag/bool_binary.sim
./test.sh -f tsim/tag/bool_int.sim
./test.sh -f tsim/tag/bool_int.sim
./test.sh -f tsim/tag/bool.sim
./test.sh -f tsim/tag/bool.sim
# ./test.sh -f tsim/tag/change.sim
#
TD-17661
./test.sh -f tsim/tag/change.sim
#
./test.sh -f tsim/tag/column.sim
./test.sh -f tsim/tag/column.sim
#
./test.sh -f tsim/tag/commit.sim
./test.sh -f tsim/tag/commit.sim
# ./test.sh -f tsim/tag/create.sim
#
TD-17661
./test.sh -f tsim/tag/create.sim
# /test.sh -f tsim/tag/delete.sim
#
TD-17661 .
/test.sh -f tsim/tag/delete.sim
# ./test.sh -f tsim/tag/double.sim
#
TD-17661
./test.sh -f tsim/tag/double.sim
# ./test.sh -f tsim/tag/filter.sim
#
TD-17661
./test.sh -f tsim/tag/filter.sim
# TD-17407 ./test.sh -f tsim/tag/float.sim
# TD-17407 ./test.sh -f tsim/tag/float.sim
./test.sh -f tsim/tag/int_binary.sim
./test.sh -f tsim/tag/int_binary.sim
./test.sh -f tsim/tag/int_float.sim
./test.sh -f tsim/tag/int_float.sim
./test.sh -f tsim/tag/int.sim
./test.sh -f tsim/tag/int.sim
# ./test.sh -f tsim/tag/set.sim
#
TD-17661
./test.sh -f tsim/tag/set.sim
./test.sh -f tsim/tag/smallint.sim
./test.sh -f tsim/tag/smallint.sim
./test.sh -f tsim/tag/tinyint.sim
./test.sh -f tsim/tag/tinyint.sim
...
...
tests/script/tsim/parser/col_arithmetic_query.sim
浏览文件 @
90348e52
...
@@ -36,28 +36,22 @@ sql select c1 *( 2 / 3 ), c1/c1 from $tb order by ts asc;
...
@@ -36,28 +36,22 @@ sql select c1 *( 2 / 3 ), c1/c1 from $tb order by ts asc;
if $rows != 10000 then
if $rows != 10000 then
return -1
return -1
endi
endi
if $data00 != 0.000000000 then
if $data00 != 0.000000000 then
return -1
return -1
endi
endi
#if $data01 != -nan then
#if $data01 != -nan then
# print expect -nan, actual: $data01
# print expect -nan, actual: $data01
# return -1
# return -1
#endi
#endi
if $data10 != 0.666666667 then
if $data10 != 0.666666667 then
return -1
return -1
endi
endi
if $data11 != 1.000000000 then
if $data11 != 1.000000000 then
return -1
return -1
endi
endi
if $data90 != 6.000000000 then
if $data90 != 6.000000000 then
return -1
return -1
endi
endi
if $data91 != 1.000000000 then
if $data91 != 1.000000000 then
return -1
return -1
endi
endi
...
@@ -66,65 +60,49 @@ sql select (c1 * 2) % 7.9, c1*1, c1*1*1, c1*c1, c1*c1*c1 from $tb order by ts de
...
@@ -66,65 +60,49 @@ sql select (c1 * 2) % 7.9, c1*1, c1*1*1, c1*c1, c1*c1*c1 from $tb order by ts de
if $rows != 10000 then
if $rows != 10000 then
return -1
return -1
endi
endi
if $data00 != 2.200000000 then
if $data00 != 2.200000000 then
print expect 2.200000000, actual:$data00
print expect 2.200000000, actual:$data00
return -1
return -1
endi
endi
if $data01 != 9.000000000 then
if $data01 != 9.000000000 then
return -1
return -1
endi
endi
if $data02 != 9.000000000 then
if $data02 != 9.000000000 then
return -1
return -1
endi
endi
if $data03 != 81.000000000 then
if $data03 != 81.000000000 then
return -1
return -1
endi
endi
if $data04 != 729.000000000 then
if $data04 != 729.000000000 then
return -1
return -1
endi
endi
if $data10 != 0.200000000 then
if $data10 != 0.200000000 then
return -1
return -1
endi
endi
if $data11 != 8.000000000 then
if $data11 != 8.000000000 then
return -1
return -1
endi
endi
if $data12 != 8.000000000 then
if $data12 != 8.000000000 then
return -1
return -1
endi
endi
if $data13 != 64.000000000 then
if $data13 != 64.000000000 then
return -1
return -1
endi
endi
if $data14 != 512.000000000 then
if $data14 != 512.000000000 then
return -1
return -1
endi
endi
if $data90 != 0.000000000 then
if $data90 != 0.000000000 then
return -1
return -1
endi
endi
if $data91 != 0.000000000 then
if $data91 != 0.000000000 then
return -1
return -1
endi
endi
if $data92 != 0.000000000 then
if $data92 != 0.000000000 then
return -1
return -1
endi
endi
if $data93 != 0.000000000 then
if $data93 != 0.000000000 then
return -1
return -1
endi
endi
if $data94 != 0.000000000 then
if $data94 != 0.000000000 then
return -1
return -1
endi
endi
...
@@ -134,20 +112,16 @@ sql select c1 * c2 /4 from $tb where ts < 1537166000000 and ts > 1537156000000
...
@@ -134,20 +112,16 @@ sql select c1 * c2 /4 from $tb where ts < 1537166000000 and ts > 1537156000000
if $rows != 17 then
if $rows != 17 then
return -1
return -1
endi
endi
if $data00 != 12.250000000 then
if $data00 != 12.250000000 then
return -1
return -1
endi
endi
if $data10 != 16.000000000 then
if $data10 != 16.000000000 then
return -1
return -1
endi
endi
if $data20 != 20.250000000 then
if $data20 != 20.250000000 then
print expect 20.250000000, actual:$data21
print expect 20.250000000, actual:$data21
return -1
return -1
endi
endi
if $data30 != 0.000000000 then
if $data30 != 0.000000000 then
return -1
return -1
endi
endi
...
@@ -180,47 +154,36 @@ sql select c2-c1*1.1, c3/c2, c4*c3, c5%c4, (c6+c4)%22, c2-c2 from $tb
...
@@ -180,47 +154,36 @@ sql select c2-c1*1.1, c3/c2, c4*c3, c5%c4, (c6+c4)%22, c2-c2 from $tb
if $rows != 10000 then
if $rows != 10000 then
return -1
return -1
endi
endi
if $data00 != 0.000000000 then
if $data00 != 0.000000000 then
return -1
return -1
endi
endi
#if $data01 != -nan then
#if $data01 != -nan then
# return -1
# return -1
#endi
#endi
if $data02 != 0.000000000 then
if $data02 != 0.000000000 then
return -1
return -1
endi
endi
if $data03 != NULL then
if $data03 != NULL then
return -1
return -1
endi
endi
if $data04 != 0.000000000 then
if $data04 != 0.000000000 then
return -1
return -1
endi
endi
if $data05 != 0.000000000 then
if $data05 != 0.000000000 then
return -1
return -1
endi
endi
if $data90 != -0.900000000 then
if $data90 != -0.900000000 then
return -1
return -1
endi
endi
if $data91 != 1.000000000 then
if $data91 != 1.000000000 then
return -1
return -1
endi
endi
if $data92 != 81.000000000 then
if $data92 != 81.000000000 then
return -1
return -1
endi
endi
if $data93 != 0.000000000 then
if $data93 != 0.000000000 then
return -1
return -1
endi
endi
if $data94 != 18.000000000 then
if $data94 != 18.000000000 then
return -1
return -1
endi
endi
...
@@ -237,10 +200,8 @@ sql select c8+c7, c9+c9+c8+c7/c6 from $tb
...
@@ -237,10 +200,8 @@ sql select c8+c7, c9+c9+c8+c7/c6 from $tb
# arithmetic expression in join [d.7]==================================================
# arithmetic expression in join [d.7]==================================================
# arithmetic expression in union [d.8]=================================================
# arithmetic expression in union [d.8]=================================================
# arithmetic expression in group by [d.9]==============================================
# arithmetic expression in group by [d.9]==============================================
# in group by tag, not support for normal table
# in group by tag, not support for normal table
sql_error select c5*99 from $tb group by t1
sql_error select c5*99 from $tb group by t1
...
@@ -248,17 +209,14 @@ sql_error select c5*99 from $tb group by t1
...
@@ -248,17 +209,14 @@ sql_error select c5*99 from $tb group by t1
# in group by column
# in group by column
sql_error select c6-(c6+c3)*12 from $tb group by c3;
sql_error select c6-(c6+c3)*12 from $tb group by c3;
# limit offset [d.10]==================================================================
# limit offset [d.10]==================================================================
sql select c6 * c1 + 12 from $tb limit 12 offset 99;
sql select c6 * c1 + 12 from $tb limit 12 offset 99;
if $rows != 12 then
if $rows != 12 then
return -1
return -1
endi
endi
if $data00 != 93.000000000 then
if $data00 != 93.000000000 then
return -1
return -1
endi
endi
if $data90 != 76.000000000 then
if $data90 != 76.000000000 then
return -1
return -1
endi
endi
...
@@ -267,7 +225,6 @@ sql select c4 / 99.123 from $tb limit 10 offset 9999;
...
@@ -267,7 +225,6 @@ sql select c4 / 99.123 from $tb limit 10 offset 9999;
if $rows != 1 then
if $rows != 1 then
return -1
return -1
endi
endi
if $data00 != 0.090796283 then
if $data00 != 0.090796283 then
return -1
return -1
endi
endi
...
@@ -283,27 +240,21 @@ sql select c1, c2+c6, 12.9876545678, 1, 1.1 from $tb
...
@@ -283,27 +240,21 @@ sql select c1, c2+c6, 12.9876545678, 1, 1.1 from $tb
if $rows != 10000 then
if $rows != 10000 then
return -1
return -1
endi
endi
if $data00 != 0 then
if $data00 != 0 then
return -1
return -1
endi
endi
if $data01 != 0.000000000 then
if $data01 != 0.000000000 then
return -1
return -1
endi
endi
if $data02 != 12.987654568 then
if $data02 != 12.987654568 then
return -1
return -1
endi
endi
if $data03 != 1 then
if $data03 != 1 then
return -1
return -1
endi
endi
if $data04 != 1.100000000 then
if $data04 != 1.100000000 then
return -1
return -1
endi
endi
if $data10 != 1 then
if $data10 != 1 then
return -1
return -1
endi
endi
...
@@ -313,27 +264,21 @@ sql select c1, c2+c6, 12.9876545678, 1, 1.1 from $tb where c1<2
...
@@ -313,27 +264,21 @@ sql select c1, c2+c6, 12.9876545678, 1, 1.1 from $tb where c1<2
if $rows != 2000 then
if $rows != 2000 then
return -1
return -1
endi
endi
if $data00 != 0 then
if $data00 != 0 then
return -1
return -1
endi
endi
if $data01 != 0.000000000 then
if $data01 != 0.000000000 then
return -1
return -1
endi
endi
if $data02 != 12.987654568 then
if $data02 != 12.987654568 then
return -1
return -1
endi
endi
if $data03 != 1 then
if $data03 != 1 then
return -1
return -1
endi
endi
if $data10 != 1 then
if $data10 != 1 then
return -1
return -1
endi
endi
if $data20 != 0 then
if $data20 != 0 then
return -1
return -1
endi
endi
...
@@ -377,7 +322,6 @@ sql select first(c1) * ( 2 / 3 ) from $stb order by ts asc;
...
@@ -377,7 +322,6 @@ sql select first(c1) * ( 2 / 3 ) from $stb order by ts asc;
if $rows != 1 then
if $rows != 1 then
return -1
return -1
endi
endi
if $data00 != 0.000000000 then
if $data00 != 0.000000000 then
return -1
return -1
endi
endi
...
@@ -386,7 +330,6 @@ sql select first(c1) * (2/99) from $stb order by ts desc;
...
@@ -386,7 +330,6 @@ sql select first(c1) * (2/99) from $stb order by ts desc;
if $rows != 1 then
if $rows != 1 then
return -1
return -1
endi
endi
if $data00 != 0.000000000 then
if $data00 != 0.000000000 then
return -1
return -1
endi
endi
...
@@ -395,15 +338,12 @@ sql select (count(c1) * 2) % 7.9, (count(c1) * 2), ( count(1)*2) from $stb
...
@@ -395,15 +338,12 @@ sql select (count(c1) * 2) % 7.9, (count(c1) * 2), ( count(1)*2) from $stb
if $rows != 1 then
if $rows != 1 then
return -1
return -1
endi
endi
if $data00 != 1.800000000 then
if $data00 != 1.800000000 then
return -1
return -1
endi
endi
if $data01 != 100000.000000000 then
if $data01 != 100000.000000000 then
return -1
return -1
endi
endi
if $data02 != 200000.000000000 then
if $data02 != 200000.000000000 then
return -1
return -1
endi
endi
...
@@ -412,16 +352,13 @@ sql select spread( c1 )/44, spread(c1), 0.204545455 * 44 from $stb
...
@@ -412,16 +352,13 @@ sql select spread( c1 )/44, spread(c1), 0.204545455 * 44 from $stb
if $rows != 1 then
if $rows != 1 then
return -1
return -1
endi
endi
if $data00 != 0.204545455 then
if $data00 != 0.204545455 then
print expect 0.204545455, actual: $data00
print expect 0.204545455, actual: $data00
return -1
return -1
endi
endi
if $data01 != 9.000000000 then
if $data01 != 9.000000000 then
return -1
return -1
endi
endi
if $data02 != 9.000000020 then
if $data02 != 9.000000020 then
return -1
return -1
endi
endi
...
@@ -431,27 +368,21 @@ sql select min(c1) * max(c2) /4, sum(c1) * apercentile(c2, 20), apercentile(c4,
...
@@ -431,27 +368,21 @@ sql select min(c1) * max(c2) /4, sum(c1) * apercentile(c2, 20), apercentile(c4,
if $rows != 1 then
if $rows != 1 then
return -1
return -1
endi
endi
if $data00 != 0.000000000 then
if $data00 != 0.000000000 then
return -1
return -1
endi
endi
if $data01 != 225000.000000000 then
if $data01 != 225000.000000000 then
return -1
return -1
endi
endi
if $data02 != 8.077777778 then
if $data02 != 8.077777778 then
return -1
return -1
endi
endi
if $data03 != NULL then
if $data03 != NULL then
return -1
return -1
endi
endi
if $data04 != 0.444444444 then
if $data04 != 0.444444444 then
return -1
return -1
endi
endi
if $data05 != 450000.000000000 then
if $data05 != 450000.000000000 then
return -1
return -1
endi
endi
...
@@ -487,35 +418,29 @@ sql_error select top(c1, 99) - bottom(c1, 99) from $stb
...
@@ -487,35 +418,29 @@ sql_error select top(c1, 99) - bottom(c1, 99) from $stb
sql select c2-c1, c3/c2, c4*c3, c5%c4, c6+99%22 from $stb
sql select c2-c1, c3/c2, c4*c3, c5%c4, c6+99%22 from $stb
# error case, ts/bool/binary/nchar not support arithmetic expression
# error case, ts/bool/binary/nchar not support arithmetic expression
sql
select first(c7)*12 from $stb
sql select first(c7)*12 from $stb
sql
select last(c8)/55 from $stb
sql select last(c8)/55 from $stb
sql
_error
select last_row(c9) + last_row(c8) from $stb
sql select last_row(c9) + last_row(c8) from $stb
# arithmetic expression in join [d.7]===============================================================
# arithmetic expression in join [d.7]===============================================================
# arithmetic expression in union [d.8]===============================================================
# arithmetic expression in union [d.8]===============================================================
# arithmetic expression in group by [d.9]===============================================================
# arithmetic expression in group by [d.9]===============================================================
# in group by tag
# in group by tag
sql select avg(c4)*99
from $stb group
by t1
sql select avg(c4)*99
, t1 from $stb group by t1 order
by t1
if $rows != 10 then
if $rows != 10 then
return -1
return -1
endi
endi
if $data00 != 445.500000000 then
if $data00 != 445.500000000 then
return -1
return -1
endi
endi
if $data01 != 0 then
if $data01 != 0 then
return -1
return -1
endi
endi
if $data90 != 445.500000000 then
if $data90 != 445.500000000 then
return -1
return -1
endi
endi
if $data91 != 9 then
if $data91 != 9 then
return -1
return -1
endi
endi
...
@@ -550,22 +475,19 @@ endi
...
@@ -550,22 +475,19 @@ endi
# return -1
# return -1
#endi
#endi
#
#
sql
_error
select first(c6) - last(c6) *12 / count(*) from $stb group by c3;
sql select first(c6) - last(c6) *12 / count(*) from $stb group by c3;
sql select first(c6) - last(c6) *12 / count(*) from $stb group by c5;
sql select first(c6) - last(c6) *12 / count(*) from $stb group by c5
order by c5
;
if $rows != 1
0
then
if $rows != 1
1
then
return -1
return -1
endi
endi
if $data10 != 0.000000000 then
if $data00 != 0.000000000 then
return -1
return -1
endi
endi
if $data20 != 0.997600000 then
if $data10 != 0.997600000 then
return -1
return -1
endi
endi
if $data90 != 7.980800000 then
if $data90 != 8.978400000 then
return -1
return -1
endi
endi
...
@@ -574,7 +496,6 @@ sql select first(c6) - sum(c6) + 12 from $stb limit 12 offset 0;
...
@@ -574,7 +496,6 @@ sql select first(c6) - sum(c6) + 12 from $stb limit 12 offset 0;
if $rows != 1 then
if $rows != 1 then
return -1
return -1
endi
endi
if $data00 != -449988.000000000 then
if $data00 != -449988.000000000 then
return -1
return -1
endi
endi
...
@@ -604,10 +525,8 @@ sql_error select first(c1) from $stb fill(value, 20);
...
@@ -604,10 +525,8 @@ sql_error select first(c1) from $stb fill(value, 20);
# constant column. [d.13]===============================================================
# constant column. [d.13]===============================================================
# column value filter [d.14]===============================================================
# column value filter [d.14]===============================================================
# tag filter. [d.15]===============================================================
# tag filter. [d.15]===============================================================
sql select sum(c2)+99 from $stb where t1=12;
sql select sum(c2)+99 from $stb where t1=12;
...
@@ -633,7 +552,6 @@ sql select avg(c2)*count(c2), sum(c3)-first(c3), last(c4)+9 from $stb interval(1
...
@@ -633,7 +552,6 @@ sql select avg(c2)*count(c2), sum(c3)-first(c3), last(c4)+9 from $stb interval(1
if $rows != 10000 then
if $rows != 10000 then
return -1
return -1
endi
endi
if $data00 != @18-09-17 09:00:00.000@ then
if $data00 != @18-09-17 09:00:00.000@ then
return -1
return -1
endi
endi
...
@@ -645,11 +563,9 @@ sql_error select first(c7)- last(c1) from $tb interval(2y)
...
@@ -645,11 +563,9 @@ sql_error select first(c7)- last(c1) from $tb interval(2y)
# first/last query [d.19]===============================================================
# first/last query [d.19]===============================================================
# multiple retrieve [d.20]===============================================================
# multiple retrieve [d.20]===============================================================
sql select c2-c2 from $tb
sql select c2-c2 from $tb
sql select first(c1)-last(c1), spread(c2), max(c3) - min(c3), avg(c4)*count(c4) from $tb
sql select first(c1)-last(c1), spread(c2), max(c3) - min(c3), avg(c4)*count(c4) from $tb
...
...
tests/script/tsim/parser/columnValue_bigint.sim
浏览文件 @
90348e52
sleep 100
sql connect
sql connect
sql create database if not exists db
sql create database if not exists db
sql use db
sql use db
...
...
tests/script/tsim/parser/columnValue_bool.sim
浏览文件 @
90348e52
sleep 100
sql connect
sql connect
sql create database if not exists db
sql create database if not exists db
sql use db
sql use db
...
...
tests/script/tsim/parser/columnValue_double.sim
浏览文件 @
90348e52
####
sleep 100
sql connect
sql connect
sql create database if not exists db
sql create database if not exists db
sql use db
sql use db
...
...
tests/script/tsim/parser/columnValue_float.sim
浏览文件 @
90348e52
####
sleep 100
sql connect
sql connect
sql create database if not exists db
sql create database if not exists db
sql use db
sql use db
...
...
tests/script/tsim/parser/columnValue_int.sim
浏览文件 @
90348e52
sleep 100
sql connect
sql connect
sql create database if not exists db
sql create database if not exists db
sql use db
sql use db
...
...
tests/script/tsim/parser/columnValue_smallint.sim
浏览文件 @
90348e52
sleep 100
sql connect
sql create database if not exists db
sql create database if not exists db
sql use db
sql use db
...
...
tests/script/tsim/parser/columnValue_tinyint.sim
浏览文件 @
90348e52
sleep 100
sql connect
sql create database if not exists db
sql create database if not exists db
sql use db
sql use db
...
...
tests/script/tsim/parser/columnValue_unsign.sim
浏览文件 @
90348e52
sleep 100
sql connect
sql create database if not exists db
sql create database if not exists db
sql use db
sql use db
...
...
tests/script/tsim/parser/first_last_query.sim
浏览文件 @
90348e52
sleep 100
sql connect
sql connect
$dbPrefix = first_db
$dbPrefix = first_db
...
...
tests/script/tsim/parser/groupby-basic.sim
浏览文件 @
90348e52
...
@@ -3,25 +3,6 @@ system sh/deploy.sh -n dnode1 -i 1
...
@@ -3,25 +3,6 @@ system sh/deploy.sh -n dnode1 -i 1
system sh/exec.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
sql connect
sql connect
$loop_cnt = 0
check_dnode_ready:
$loop_cnt = $loop_cnt + 1
sleep 200
if $loop_cnt == 10 then
print ====> dnode not ready!
return -1
endi
sql show dnodes
print ===> $rows $data00 $data01 $data02 $data03 $data04 $data05
if $data00 != 1 then
return -1
endi
if $data04 != ready then
goto check_dnode_ready
endi
sql connect
$dbPrefix = group_db
$dbPrefix = group_db
$tbPrefix = group_tb
$tbPrefix = group_tb
$mtPrefix = group_mt
$mtPrefix = group_mt
...
@@ -80,8 +61,6 @@ while $i < $tbNum
...
@@ -80,8 +61,6 @@ while $i < $tbNum
$tstart = 1640966400000
$tstart = 1640966400000
endw
endw
sleep 100
$i1 = 1
$i1 = 1
$i2 = 0
$i2 = 0
...
@@ -752,12 +731,7 @@ sql insert into tm1 values('2020-2-1 1:1:1', 2, 10);
...
@@ -752,12 +731,7 @@ sql insert into tm1 values('2020-2-1 1:1:1', 2, 10);
sql insert into tm1 values('2020-2-1 1:1:2', 2, 20);
sql insert into tm1 values('2020-2-1 1:1:2', 2, 20);
system sh/exec.sh -n dnode1 -s stop -x SIGINT
system sh/exec.sh -n dnode1 -s stop -x SIGINT
sleep 100
system sh/exec.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
sleep 100
sql connect
sleep 100
sql use group_db0;
sql use group_db0;
print =========================>TD-4894
print =========================>TD-4894
...
...
tests/script/tsim/parser/interp_test.sim
浏览文件 @
90348e52
sleep 100
sql connect
sql connect
$dbPrefix = intp_db
$dbPrefix = intp_db
...
...
tests/script/tsim/parser/join.sim
浏览文件 @
90348e52
...
@@ -54,8 +54,6 @@ while $i < $tbNum
...
@@ -54,8 +54,6 @@ while $i < $tbNum
$tstart = 100000
$tstart = 100000
endw
endw
sleep 100
$tstart = 100000
$tstart = 100000
$mt = $mtPrefix . 1 . $i
$mt = $mtPrefix . 1 . $i
sql create table $mt (ts timestamp, c1 int, c2 float, c3 bigint, c4 smallint, c5 tinyint, c6 double, c7 bool, c8 binary(10), c9 nchar(9)) TAGS(t1 int, t2 binary(12), t3 int)
sql create table $mt (ts timestamp, c1 int, c2 float, c3 bigint, c4 smallint, c5 tinyint, c6 double, c7 bool, c8 binary(10), c9 nchar(9)) TAGS(t1 int, t2 binary(12), t3 int)
...
@@ -99,8 +97,6 @@ while $i < $tbNum
...
@@ -99,8 +97,6 @@ while $i < $tbNum
$tstart = 100000
$tstart = 100000
endw
endw
sleep 100
$i1 = 1
$i1 = 1
$i2 = 0
$i2 = 0
...
...
tests/script/tsim/parser/limit.sim
浏览文件 @
90348e52
...
@@ -62,11 +62,8 @@ run tsim/parser/limit_stb.sim
...
@@ -62,11 +62,8 @@ run tsim/parser/limit_stb.sim
print ================== restart server to commit data into disk
print ================== restart server to commit data into disk
system sh/exec.sh -n dnode1 -s stop -x SIGINT
system sh/exec.sh -n dnode1 -s stop -x SIGINT
sleep 500
system sh/exec.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
print ================== server restart completed
print ================== server restart completed
sql connect
sleep 100
run tsim/parser/limit_tb.sim
run tsim/parser/limit_tb.sim
run tsim/parser/limit_stb.sim
run tsim/parser/limit_stb.sim
...
...
tests/script/tsim/parser/limit1.sim
浏览文件 @
90348e52
...
@@ -18,7 +18,7 @@ $stb = $stbPrefix . $i
...
@@ -18,7 +18,7 @@ $stb = $stbPrefix . $i
sql drop database $db -x step1
sql drop database $db -x step1
step1:
step1:
sql create database $db
cache 16
sql create database $db
print ====== create tables
print ====== create tables
sql use $db
sql use $db
sql create table $stb (ts timestamp, c1 int, c2 bigint, c3 float, c4 double, c5 smallint, c6 tinyint, c7 bool, c8 binary(10), c9 nchar(10)) tags(t1 int)
sql create table $stb (ts timestamp, c1 int, c2 bigint, c3 float, c4 double, c5 smallint, c6 tinyint, c7 bool, c8 binary(10), c9 nchar(10)) tags(t1 int)
...
...
tests/script/tsim/parser/limit1_tb.sim
浏览文件 @
90348e52
...
@@ -370,7 +370,8 @@ sql select top(c1, 1) from $tb where ts >= $ts0 and ts <= $tsu limit 5 offset 1
...
@@ -370,7 +370,8 @@ sql select top(c1, 1) from $tb where ts >= $ts0 and ts <= $tsu limit 5 offset 1
if $rows != 0 then
if $rows != 0 then
return -1
return -1
endi
endi
sql select top(c1, 5) from $tb where ts >= $ts0 and ts <= $tsu limit 3 offset 1
sql select ts, top(c1, 5) from $tb where ts >= $ts0 and ts <= $tsu order by ts limit 3 offset 1
if $rows != 3 then
if $rows != 3 then
return -1
return -1
endi
endi
...
@@ -392,6 +393,7 @@ endi
...
@@ -392,6 +393,7 @@ endi
if $data21 != 9 then
if $data21 != 9 then
return -1
return -1
endi
endi
sql select top(c1, 5) from $tb where ts >= $ts0 and ts <= $tsu limit 3 offset 5
sql select top(c1, 5) from $tb where ts >= $ts0 and ts <= $tsu limit 3 offset 5
if $rows != 0 then
if $rows != 0 then
return -1
return -1
...
@@ -401,7 +403,8 @@ sql select bottom(c1, 1) from $tb where ts >= $ts0 and ts <= $tsu limit 5 offset
...
@@ -401,7 +403,8 @@ sql select bottom(c1, 1) from $tb where ts >= $ts0 and ts <= $tsu limit 5 offset
if $rows != 0 then
if $rows != 0 then
return -1
return -1
endi
endi
sql select bottom(c1, 5) from $tb where ts >= $ts0 and ts <= $tsu limit 3 offset 1
sql select ts, bottom(c1, 5) from $tb where ts >= $ts0 and ts <= $tsu order by ts limit 3 offset 1
if $rows != 3 then
if $rows != 3 then
return -1
return -1
endi
endi
...
...
tests/script/tsim/parser/limit2.sim
浏览文件 @
90348e52
...
@@ -61,11 +61,10 @@ while $i < $halfNum
...
@@ -61,11 +61,10 @@ while $i < $halfNum
endw
endw
print ====== tables created
print ====== tables created
#
run tsim/parser/limit2_query.sim
run tsim/parser/limit2_query.sim
print ================== restart server to commit data into disk
print ================== restart server to commit data into disk
system sh/exec.sh -n dnode1 -s stop -x SIGINT
system sh/exec.sh -n dnode1 -s stop -x SIGINT
sleep 100
system sh/exec.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
print ================== server restart completed
print ================== server restart completed
...
...
tests/script/tsim/parser/limit2_query.sim
浏览文件 @
90348e52
...
@@ -27,8 +27,8 @@ print select count(*) from $stb where t1 > $val1 and t1 < $val2 group by t1, t2,
...
@@ -27,8 +27,8 @@ print select count(*) from $stb where t1 > $val1 and t1 < $val2 group by t1, t2,
sql select count(*), t1, t2, t3, t4, t5, t6 from $stb where t1 > $val1 and t1 < $val2 group by t1, t2, t3, t4, t5, t6 order by t1 asc limit 1 offset 0
sql select count(*), t1, t2, t3, t4, t5, t6 from $stb where t1 > $val1 and t1 < $val2 group by t1, t2, t3, t4, t5, t6 order by t1 asc limit 1 offset 0
$val = $tbNum - 3
$val = $tbNum - 3
print $rows
$val
print $rows
if $rows !=
$val
then
if $rows !=
1
then
return -1
return -1
endi
endi
if $data00 != $rowNum then
if $data00 != $rowNum then
...
@@ -51,7 +51,7 @@ if $data05 != 2 then
...
@@ -51,7 +51,7 @@ if $data05 != 2 then
return -1
return -1
endi
endi
sql select count(*)
from $stb where t2 like '%' and t1 > 2 and t1 < 5 group by t3, t4 order by t3 desc limit 1
offset 0
sql select count(*)
, t3, t4 from $stb where t2 like '%' and t1 > 2 and t1 < 5 group by t3, t4 order by t3 desc limit 2
offset 0
if $rows != 2 then
if $rows != 2 then
return -1
return -1
endi
endi
...
@@ -70,15 +70,17 @@ endi
...
@@ -70,15 +70,17 @@ endi
if $data12 != 3 then
if $data12 != 3 then
return -1
return -1
endi
endi
sql select count(*) from $stb where t2 like '%' and t1 > 2 and t1 < 5 group by t3, t4 order by t3 desc limit 1 offset 1
sql select count(*) from $stb where t2 like '%' and t1 > 2 and t1 < 5 group by t3, t4 order by t3 desc limit 1 offset 1
if $rows !=
0
then
if $rows !=
1
then
return -1
return -1
endi
endi
## TBASE-348
## TBASE-348
sql_error select count(*) from $stb where t1 like 1
sql_error select count(*) from $stb where t1 like 1
##### aggregation on tb + where + fill + limit offset
##### aggregation on tb + where + fill + limit offset
sql select max(c1) from $tb where ts >= $ts0 and ts <= $tsu interval(5m) fill(value, -1, -2) limit 10 offset 1
sql select
_wstart,
max(c1) from $tb where ts >= $ts0 and ts <= $tsu interval(5m) fill(value, -1, -2) limit 10 offset 1
if $rows != 10 then
if $rows != 10 then
return -1
return -1
endi
endi
...
...
tests/script/tsim/parser/limit_tb.sim
浏览文件 @
90348e52
...
@@ -358,8 +358,8 @@ endi
...
@@ -358,8 +358,8 @@ endi
print ========> TD-6017
print ========> TD-6017
sql select * from (select ts, top(c1, 5) from $tb where ts >= $ts0 and ts <= $tsu order by ts desc limit 3 offset 1)
sql select * from (select ts, top(c1, 5) from $tb where ts >= $ts0 and ts <= $tsu order by ts desc limit 3 offset 1)
sql select top(c1, 5) from $tb where ts >= $ts0 and ts <= $tsu order by ts desc limit 3 offset 1
sql select t
s, t
op(c1, 5) from $tb where ts >= $ts0 and ts <= $tsu order by ts desc limit 3 offset 1
print select top(c1, 5) from $tb where ts >= $ts0 and ts <= $tsu order by ts desc limit 3 offset 1
print select t
s, t
op(c1, 5) from $tb where ts >= $ts0 and ts <= $tsu order by ts desc limit 3 offset 1
print $data00 $data01
print $data00 $data01
print $data10 $data11
print $data10 $data11
print $data20 $data21
print $data20 $data21
...
@@ -386,7 +386,7 @@ if $data21 != 6 then
...
@@ -386,7 +386,7 @@ if $data21 != 6 then
return -1
return -1
endi
endi
sql select top(c1, 5) from $tb where ts >= $ts0 and ts <= $tsu order by ts asc limit 3 offset 1
sql select t
s, t
op(c1, 5) from $tb where ts >= $ts0 and ts <= $tsu order by ts asc limit 3 offset 1
if $rows != 3 then
if $rows != 3 then
return -1
return -1
endi
endi
...
@@ -418,7 +418,7 @@ sql select bottom(c1, 1) from $tb where ts >= $ts0 and ts <= $tsu limit 5 offset
...
@@ -418,7 +418,7 @@ sql select bottom(c1, 1) from $tb where ts >= $ts0 and ts <= $tsu limit 5 offset
if $rows != 0 then
if $rows != 0 then
return -1
return -1
endi
endi
sql select
bottom(c1, 5) from $tb where ts >= $ts0 and ts <= $tsu
limit 3 offset 1
sql select
ts, bottom(c1, 5) from $tb where ts >= $ts0 and ts <= $tsu order by ts
limit 3 offset 1
if $rows != 3 then
if $rows != 3 then
return -1
return -1
endi
endi
...
@@ -482,7 +482,7 @@ endi
...
@@ -482,7 +482,7 @@ endi
if $data41 != 4 then
if $data41 != 4 then
return -1
return -1
endi
endi
sql select max(c1), max(c2), max(c3), max(c4), max(c5), max(c6) from $tb where ts >= $ts0 and ts <= $tsu interval(5m) limit 5 offset 1
sql select
_wstart,
max(c1), max(c2), max(c3), max(c4), max(c5), max(c6) from $tb where ts >= $ts0 and ts <= $tsu interval(5m) limit 5 offset 1
if $rows != 5 then
if $rows != 5 then
return -1
return -1
endi
endi
...
@@ -518,7 +518,7 @@ if $data41 != 5 then
...
@@ -518,7 +518,7 @@ if $data41 != 5 then
endi
endi
## TBASE-334
## TBASE-334
sql select max(c1), max(c2), max(c3), max(c4), max(c5), max(c6) from $tb where ts >= $ts0 and ts <= $tsu interval(30m) limit 2 offset 1
sql select
_wstart,
max(c1), max(c2), max(c3), max(c4), max(c5), max(c6) from $tb where ts >= $ts0 and ts <= $tsu interval(30m) limit 2 offset 1
if $rows != 2 then
if $rows != 2 then
return -1
return -1
endi
endi
...
@@ -634,7 +634,8 @@ sql select stddev(c1), stddev(c2), stddev(c3), stddev(c4), stddev(c5), stddev(c6
...
@@ -634,7 +634,8 @@ sql select stddev(c1), stddev(c2), stddev(c3), stddev(c4), stddev(c5), stddev(c6
if $rows != 0 then
if $rows != 0 then
return -1
return -1
endi
endi
sql select stddev(c1), stddev(c2), stddev(c3), stddev(c4), stddev(c5), stddev(c6) from $tb where ts >= $ts0 and ts <= $tsu interval(30m) limit 5 offset 1
sql select _wstart, stddev(c1), stddev(c2), stddev(c3), stddev(c4), stddev(c5), stddev(c6) from $tb where ts >= $ts0 and ts <= $tsu interval(30m) limit 5 offset 1
if $rows != 3 then
if $rows != 3 then
return -1
return -1
endi
endi
...
@@ -670,6 +671,7 @@ endi
...
@@ -670,6 +671,7 @@ endi
if $data31 != 3 then
if $data31 != 3 then
return -1
return -1
endi
endi
sql select count(c1), count(c2), count(c3), count(c4), count(c5), count(c6) from $tb where ts >= $ts0 and ts <= $tsu interval(27m) limit 5 offset 1
sql select count(c1), count(c2), count(c3), count(c4), count(c5), count(c6) from $tb where ts >= $ts0 and ts <= $tsu interval(27m) limit 5 offset 1
if $rows != 3 then
if $rows != 3 then
return -1
return -1
...
@@ -707,7 +709,8 @@ sql select first(c1), first(c2), first(c3), first(c4), first(c5), first(c6) from
...
@@ -707,7 +709,8 @@ sql select first(c1), first(c2), first(c3), first(c4), first(c5), first(c6) from
if $rows != 0 then
if $rows != 0 then
return -1
return -1
endi
endi
sql select first(c1), first(c2), first(c3), first(c4), first(c5), first(c6) from $tb where ts >= $ts0 and ts <= $tsu interval(30m) limit 3 offset 1
sql select _wstart, first(c1), first(c2), first(c3), first(c4), first(c5), first(c6) from $tb where ts >= $ts0 and ts <= $tsu interval(30m) limit 3 offset 1
if $rows != 3 then
if $rows != 3 then
return -1
return -1
endi
endi
...
@@ -721,7 +724,6 @@ if $data23 != 9.00000 then
...
@@ -721,7 +724,6 @@ if $data23 != 9.00000 then
return -1
return -1
endi
endi
sql select last(c1), last(c2), last(c3), last(c4), last(c5), last(c6) from $tb where ts >= $ts0 and ts <= $tsu limit 5 offset 1
sql select last(c1), last(c2), last(c3), last(c4), last(c5), last(c6) from $tb where ts >= $ts0 and ts <= $tsu limit 5 offset 1
if $rows != 0 then
if $rows != 0 then
return -1
return -1
...
...
tests/script/tsim/parser/projection_limit_offset.sim
浏览文件 @
90348e52
...
@@ -62,8 +62,6 @@ while $i < $half
...
@@ -62,8 +62,6 @@ while $i < $half
$tstart = 100000
$tstart = 100000
endw
endw
sleep 100
$i1 = 1
$i1 = 1
$i2 = 0
$i2 = 0
...
...
tests/script/tsim/parser/single_row_in_tb.sim
浏览文件 @
90348e52
...
@@ -28,7 +28,6 @@ run tsim/parser/single_row_in_tb_query.sim
...
@@ -28,7 +28,6 @@ run tsim/parser/single_row_in_tb_query.sim
print ================== restart server to commit data into disk
print ================== restart server to commit data into disk
system sh/exec.sh -n dnode1 -s stop -x SIGINT
system sh/exec.sh -n dnode1 -s stop -x SIGINT
sleep 500
system sh/exec.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
print ================== server restart completed
print ================== server restart completed
...
...
tests/script/tsim/parser/slimit1.sim
浏览文件 @
90348e52
...
@@ -52,11 +52,9 @@ run tsim/parser/slimit1_query.sim
...
@@ -52,11 +52,9 @@ run tsim/parser/slimit1_query.sim
print ================== restart server to commit data into disk
print ================== restart server to commit data into disk
system sh/exec.sh -n dnode1 -s stop -x SIGINT
system sh/exec.sh -n dnode1 -s stop -x SIGINT
sleep 500
system sh/exec.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
print ================== server restart completed
print ================== server restart completed
sql connect
sql connect
sleep 100
run tsim/parser/slimit1_query.sim
run tsim/parser/slimit1_query.sim
...
...
tests/script/tsim/parser/slimit1_query.sim
浏览文件 @
90348e52
sleep 100
sql connect
sql connect
$dbPrefix = slm_alt_tg_db
$dbPrefix = slm_alt_tg_db
...
...
tests/script/tsim/parser/slimit_alter_tags.sim
浏览文件 @
90348e52
system sh/stop_dnodes.sh
system sh/stop_dnodes.sh
system sh/deploy.sh -n dnode1 -i 1
system sh/deploy.sh -n dnode1 -i 1
system sh/cfg.sh -n dnode1 -c walLevel -v 1
system sh/cfg.sh -n dnode1 -c maxtablesPerVnode -v 2
system sh/exec.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
sleep 100
sql connect
sql connect
$dbPrefix = slm_alt_tg_db
$dbPrefix = slm_alt_tg_db
...
@@ -93,7 +89,6 @@ if $data02 != tb0 then
...
@@ -93,7 +89,6 @@ if $data02 != tb0 then
return -1
return -1
endi
endi
sleep 500
sql reset query cache
sql reset query cache
sql select count(*), first(ts) from stb group by tg_added order by tg_added asc slimit 5 soffset 3
sql select count(*), first(ts) from stb group by tg_added order by tg_added asc slimit 5 soffset 3
if $rows != 5 then
if $rows != 5 then
...
@@ -171,11 +166,8 @@ endi
...
@@ -171,11 +166,8 @@ endi
print ================== restart server to commit data into disk
print ================== restart server to commit data into disk
system sh/exec.sh -n dnode1 -s stop -x SIGINT
system sh/exec.sh -n dnode1 -s stop -x SIGINT
sleep 500
system sh/exec.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
print ================== server restart completed
print ================== server restart completed
sql connect
sleep 100
sql use $db
sql use $db
### repeat above queries
### repeat above queries
...
...
tests/script/tsim/parser/slimit_query.sim
浏览文件 @
90348e52
sleep 100
sql connect
sql connect
$dbPrefix = slm_db
$dbPrefix = slm_db
...
...
tests/script/tsim/parser/union.sim
浏览文件 @
90348e52
...
@@ -95,9 +95,6 @@ while $i < $tbNum
...
@@ -95,9 +95,6 @@ while $i < $tbNum
$j = $j + 1
$j = $j + 1
endw
endw
print sleep 1sec.
sleep 100
$i = 1
$i = 1
$tb = $tbPrefix . $i
$tb = $tbPrefix . $i
...
...
tests/script/tsim/stream/sliding.sim
浏览文件 @
90348e52
...
@@ -367,7 +367,7 @@ if $data32 != 8 then
...
@@ -367,7 +367,7 @@ if $data32 != 8 then
endi
endi
#$loop_all = 0
#$loop_all = 0
#looptest:
#
=
looptest:
sql drop database IF EXISTS test2;
sql drop database IF EXISTS test2;
sql drop stream IF EXISTS streams21;
sql drop stream IF EXISTS streams21;
...
@@ -511,6 +511,6 @@ endi
...
@@ -511,6 +511,6 @@ endi
$loop_all = $loop_all + 1
$loop_all = $loop_all + 1
print ============loop_all=$loop_all
print ============loop_all=$loop_all
#goto looptest
#
=
goto looptest
system sh/stop_dnodes.sh
system sh/stop_dnodes.sh
\ No newline at end of file
tests/script/tsim/tag/column.sim
浏览文件 @
90348e52
...
@@ -31,7 +31,7 @@ sql create table $tb using $mt tags( 0, '0' )
...
@@ -31,7 +31,7 @@ sql create table $tb using $mt tags( 0, '0' )
$i = 1
$i = 1
$tb = $tbPrefix . $i
$tb = $tbPrefix . $i
sql create table $tb using $mt tags( 1,
1
)
sql create table $tb using $mt tags( 1,
'1'
)
$i = 2
$i = 2
$tb = $tbPrefix . $i
$tb = $tbPrefix . $i
...
@@ -39,7 +39,7 @@ sql create table $tb using $mt tags( '2', '2' )
...
@@ -39,7 +39,7 @@ sql create table $tb using $mt tags( '2', '2' )
$i = 3
$i = 3
$tb = $tbPrefix . $i
$tb = $tbPrefix . $i
sql create table $tb using $mt tags( '3',
3
)
sql create table $tb using $mt tags( '3',
'3'
)
sql show tables
sql show tables
if $rows != 4 then
if $rows != 4 then
...
@@ -54,7 +54,7 @@ sql insert into $tb values(now, 0, '0')
...
@@ -54,7 +54,7 @@ sql insert into $tb values(now, 0, '0')
$i = 1
$i = 1
$tb = $tbPrefix . $i
$tb = $tbPrefix . $i
sql insert into $tb values(now, 1,
1
)
sql insert into $tb values(now, 1,
'1'
)
$i = 2
$i = 2
$tb = $tbPrefix . $i
$tb = $tbPrefix . $i
...
@@ -62,7 +62,7 @@ sql insert into $tb values(now, '2', '2')
...
@@ -62,7 +62,7 @@ sql insert into $tb values(now, '2', '2')
$i = 3
$i = 3
$tb = $tbPrefix . $i
$tb = $tbPrefix . $i
sql insert into $tb values(now, '3',
3
)
sql insert into $tb values(now, '3',
'3'
)
print =============== step4
print =============== step4
sql select * from $mt where tgcol2 = '1'
sql select * from $mt where tgcol2 = '1'
...
...
tests/script/tsim/tag/commit.sim
浏览文件 @
90348e52
...
@@ -249,8 +249,8 @@ sql alter table $mt add tag tgcol6 binary(10)
...
@@ -249,8 +249,8 @@ sql alter table $mt add tag tgcol6 binary(10)
sql reset query cache
sql reset query cache
sql alter table $tb set tag tgcol4=false
sql alter table $tb set tag tgcol4=false
sql alter table $tb set tag tgcol5=
5
sql alter table $tb set tag tgcol5=
'5'
sql alter table $tb set tag tgcol6=
6
sql alter table $tb set tag tgcol6=
'6'
sql reset query cache
sql reset query cache
sql select * from $mt where tgcol5 = '5'
sql select * from $mt where tgcol5 = '5'
...
@@ -321,7 +321,7 @@ if $data04 != 3 then
...
@@ -321,7 +321,7 @@ if $data04 != 3 then
return -1
return -1
endi
endi
sql alter table $mt
chang
e tag tgcol1 tgcol4
sql alter table $mt
renam
e tag tgcol1 tgcol4
sql alter table $mt drop tag tgcol2
sql alter table $mt drop tag tgcol2
sql alter table $mt drop tag tgcol3
sql alter table $mt drop tag tgcol3
sql alter table $mt add tag tgcol5 bigint
sql alter table $mt add tag tgcol5 bigint
...
@@ -382,14 +382,14 @@ if $data04 != 3 then
...
@@ -382,14 +382,14 @@ if $data04 != 3 then
return -1
return -1
endi
endi
sql alter table $mt
chang
e tag tgcol1 tgcol4
sql alter table $mt
renam
e tag tgcol1 tgcol4
sql alter table $mt drop tag tgcol2
sql alter table $mt drop tag tgcol2
sql alter table $mt drop tag tgcol3
sql alter table $mt drop tag tgcol3
sql alter table $mt add tag tgcol5 binary(17)
sql alter table $mt add tag tgcol5 binary(17)
sql alter table $mt add tag tgcol6 bool
sql alter table $mt add tag tgcol6 bool
sql reset query cache
sql reset query cache
sql alter table $tb set tag tgcol4=4
sql alter table $tb set tag tgcol4=4
sql alter table $tb set tag tgcol5=
5
sql alter table $tb set tag tgcol5=
'5'
sql alter table $tb set tag tgcol6=1
sql alter table $tb set tag tgcol6=1
sql reset query cache
sql reset query cache
...
@@ -423,7 +423,7 @@ $i = 9
...
@@ -423,7 +423,7 @@ $i = 9
$mt = $mtPrefix . $i
$mt = $mtPrefix . $i
$tb = $tbPrefix . $i
$tb = $tbPrefix . $i
sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol1 double, tgcol2 binary(10), tgcol3 binary(10))
sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol1 double, tgcol2 binary(10), tgcol3 binary(10))
sql create table $tb using $mt tags( 1,
2
, '3' )
sql create table $tb using $mt tags( 1,
'2'
, '3' )
sql insert into $tb values(now, 1)
sql insert into $tb values(now, 1)
sql select * from $mt where tgcol2 = '2'
sql select * from $mt where tgcol2 = '2'
if $rows != 1 then
if $rows != 1 then
...
@@ -442,7 +442,7 @@ if $data04 != 3 then
...
@@ -442,7 +442,7 @@ if $data04 != 3 then
return -1
return -1
endi
endi
sql alter table $mt
chang
e tag tgcol1 tgcol4
sql alter table $mt
renam
e tag tgcol1 tgcol4
sql alter table $mt drop tag tgcol2
sql alter table $mt drop tag tgcol2
sql alter table $mt drop tag tgcol3
sql alter table $mt drop tag tgcol3
sql alter table $mt add tag tgcol5 bool
sql alter table $mt add tag tgcol5 bool
...
@@ -506,7 +506,7 @@ if $data05 != 4 then
...
@@ -506,7 +506,7 @@ if $data05 != 4 then
return -1
return -1
endi
endi
sql alter table $mt
chang
e tag tgcol1 tgcol4 -x step103
sql alter table $mt
renam
e tag tgcol1 tgcol4 -x step103
return -1
return -1
step103:
step103:
...
@@ -518,7 +518,7 @@ sql alter table $mt add tag tgcol4 binary(10)
...
@@ -518,7 +518,7 @@ sql alter table $mt add tag tgcol4 binary(10)
sql alter table $mt add tag tgcol5 bool
sql alter table $mt add tag tgcol5 bool
sql reset query cache
sql reset query cache
sql alter table $tb set tag tgcol4=
4
sql alter table $tb set tag tgcol4=
'4'
sql alter table $tb set tag tgcol5=false
sql alter table $tb set tag tgcol5=false
sql reset query cache
sql reset query cache
...
@@ -580,7 +580,7 @@ if $data06 != 5 then
...
@@ -580,7 +580,7 @@ if $data06 != 5 then
return -1
return -1
endi
endi
sql alter table $mt
chang
e tag tgcol1 tgcol4 -x step114
sql alter table $mt
renam
e tag tgcol1 tgcol4 -x step114
return -1
return -1
step114:
step114:
...
@@ -596,9 +596,9 @@ sql alter table $mt add tag tgcol7 bigint
...
@@ -596,9 +596,9 @@ sql alter table $mt add tag tgcol7 bigint
sql alter table $mt add tag tgcol8 smallint
sql alter table $mt add tag tgcol8 smallint
sql reset query cache
sql reset query cache
sql alter table $tb set tag tgcol4=
4
sql alter table $tb set tag tgcol4=
'4'
sql alter table $tb set tag tgcol5=5
sql alter table $tb set tag tgcol5=5
sql alter table $tb set tag tgcol6=
6
sql alter table $tb set tag tgcol6=
'6'
sql alter table $tb set tag tgcol7=7
sql alter table $tb set tag tgcol7=7
sql alter table $tb set tag tgcol8=8
sql alter table $tb set tag tgcol8=8
sql reset query cache
sql reset query cache
...
@@ -685,11 +685,11 @@ sql alter table $mt add tag tgcol5 bigint
...
@@ -685,11 +685,11 @@ sql alter table $mt add tag tgcol5 bigint
sql reset query cache
sql reset query cache
sql alter table $tb set tag tgcol1=false
sql alter table $tb set tag tgcol1=false
sql alter table $tb set tag tgcol2=
5
sql alter table $tb set tag tgcol2=
'5'
sql alter table $tb set tag tgcol3=4
sql alter table $tb set tag tgcol3=4
sql alter table $tb set tag tgcol4=
3
sql alter table $tb set tag tgcol4=
'3'
sql alter table $tb set tag tgcol5=2
sql alter table $tb set tag tgcol5=2
sql alter table $tb set tag tgcol6=
1
sql alter table $tb set tag tgcol6=
'1'
sql reset query cache
sql reset query cache
sql select * from $mt where tgcol4 = '3'
sql select * from $mt where tgcol4 = '3'
...
@@ -781,8 +781,8 @@ sql alter table $mt add tag tgcol4 int
...
@@ -781,8 +781,8 @@ sql alter table $mt add tag tgcol4 int
sql alter table $mt add tag tgcol6 bigint
sql alter table $mt add tag tgcol6 bigint
sql reset query cache
sql reset query cache
sql alter table $tb set tag tgcol1=
7
sql alter table $tb set tag tgcol1=
'7'
sql alter table $tb set tag tgcol2=
8
sql alter table $tb set tag tgcol2=
'8'
sql alter table $tb set tag tgcol3=9
sql alter table $tb set tag tgcol3=9
sql alter table $tb set tag tgcol4=10
sql alter table $tb set tag tgcol4=10
sql alter table $tb set tag tgcol5=11
sql alter table $tb set tag tgcol5=11
...
@@ -817,9 +817,7 @@ if $data07 != 12 then
...
@@ -817,9 +817,7 @@ if $data07 != 12 then
endi
endi
system sh/exec.sh -n dnode1 -s stop -x SIGINT
system sh/exec.sh -n dnode1 -s stop -x SIGINT
sleep 3000
system sh/exec.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
sleep 3000
print =============== step1
print =============== step1
$i = 0
$i = 0
...
...
tests/system-test/2-query/csum.py
浏览文件 @
90348e52
...
@@ -28,7 +28,7 @@ from util.dnodes import *
...
@@ -28,7 +28,7 @@ from util.dnodes import *
class
TDTestCase
:
class
TDTestCase
:
def
init
(
self
,
conn
,
logSql
):
def
init
(
self
,
conn
,
logSql
):
tdLog
.
debug
(
"start to execute %s"
%
__file__
)
tdLog
.
debug
(
"start to execute %s"
%
__file__
)
tdSql
.
init
(
conn
.
cursor
())
tdSql
.
init
(
conn
.
cursor
()
,
logSql
)
def
csum_query_form
(
self
,
col
=
"c1"
,
alias
=
""
,
table_expr
=
"t1"
,
condition
=
""
):
def
csum_query_form
(
self
,
col
=
"c1"
,
alias
=
""
,
table_expr
=
"t1"
,
condition
=
""
):
...
...
tests/system-test/7-tmq/schema.py
浏览文件 @
90348e52
...
@@ -358,8 +358,8 @@ class TDTestCase:
...
@@ -358,8 +358,8 @@ class TDTestCase:
tdSql
.
error
(
"alter table %s.%s modify column c2 binary(40)"
%
(
parameterDict
[
'dbName'
],
parameterDict
[
'stbName'
]))
tdSql
.
error
(
"alter table %s.%s modify column c2 binary(40)"
%
(
parameterDict
[
'dbName'
],
parameterDict
[
'stbName'
]))
tdSql
.
error
(
"alter table %s.%s modify tag t2 binary(40)"
%
(
parameterDict
[
'dbName'
],
parameterDict
[
'stbName'
]))
tdSql
.
error
(
"alter table %s.%s modify tag t2 binary(40)"
%
(
parameterDict
[
'dbName'
],
parameterDict
[
'stbName'
]))
tdSql
.
error
(
"alter table %s.%s set tag t1=20"
%
(
parameterDict
[
'dbName'
],
ctbName
))
tdSql
.
query
(
"alter table %s.%s set tag t1=20"
%
(
parameterDict
[
'dbName'
],
ctbName
))
tdSql
.
error
(
"alter table %s.%s set tag t2='20'"
%
(
parameterDict
[
'dbName'
],
ctbName
))
tdSql
.
query
(
"alter table %s.%s set tag t2='20'"
%
(
parameterDict
[
'dbName'
],
ctbName
))
tdSql
.
error
(
"alter table %s.%s rename column c1 c1new"
%
(
parameterDict
[
'dbName'
],
parameterDict
[
'stbName'
]))
tdSql
.
error
(
"alter table %s.%s rename column c1 c1new"
%
(
parameterDict
[
'dbName'
],
parameterDict
[
'stbName'
]))
tdSql
.
error
(
"alter table %s.%s rename column c2 c2new"
%
(
parameterDict
[
'dbName'
],
parameterDict
[
'stbName'
]))
tdSql
.
error
(
"alter table %s.%s rename column c2 c2new"
%
(
parameterDict
[
'dbName'
],
parameterDict
[
'stbName'
]))
...
@@ -374,13 +374,13 @@ class TDTestCase:
...
@@ -374,13 +374,13 @@ class TDTestCase:
tdSql
.
query
(
"alter table %s.%s set tag t4='20'"
%
(
parameterDict
[
'dbName'
],
ctbName
))
tdSql
.
query
(
"alter table %s.%s set tag t4='20'"
%
(
parameterDict
[
'dbName'
],
ctbName
))
tdSql
.
query
(
"alter table %s.%s set tag t5='20'"
%
(
parameterDict
[
'dbName'
],
ctbName
))
tdSql
.
query
(
"alter table %s.%s set tag t5='20'"
%
(
parameterDict
[
'dbName'
],
ctbName
))
tdSql
.
query
(
"alter table %s.%s rename column c3 c3new"
%
(
parameterDict
[
'dbName'
],
parameterDict
[
'stbName'
]))
tdSql
.
error
(
"alter table %s.%s rename column c3 c3new"
%
(
parameterDict
[
'dbName'
],
parameterDict
[
'stbName'
]))
tdSql
.
query
(
"alter table %s.%s rename column c4 c4new"
%
(
parameterDict
[
'dbName'
],
parameterDict
[
'stbName'
]))
tdSql
.
error
(
"alter table %s.%s rename column c4 c4new"
%
(
parameterDict
[
'dbName'
],
parameterDict
[
'stbName'
]))
tdSql
.
query
(
"alter table %s.%s rename tag t3 t3new"
%
(
parameterDict
[
'dbName'
],
parameterDict
[
'stbName'
]))
tdSql
.
query
(
"alter table %s.%s rename tag t3 t3new"
%
(
parameterDict
[
'dbName'
],
parameterDict
[
'stbName'
]))
tdSql
.
query
(
"alter table %s.%s rename tag t4 t4new"
%
(
parameterDict
[
'dbName'
],
parameterDict
[
'stbName'
]))
tdSql
.
query
(
"alter table %s.%s rename tag t4 t4new"
%
(
parameterDict
[
'dbName'
],
parameterDict
[
'stbName'
]))
tdSql
.
query
(
"alter table %s.%s drop column c3
new
"
%
(
parameterDict
[
'dbName'
],
parameterDict
[
'stbName'
]))
tdSql
.
query
(
"alter table %s.%s drop column c3"
%
(
parameterDict
[
'dbName'
],
parameterDict
[
'stbName'
]))
tdSql
.
query
(
"alter table %s.%s drop column c4
new
"
%
(
parameterDict
[
'dbName'
],
parameterDict
[
'stbName'
]))
tdSql
.
query
(
"alter table %s.%s drop column c4"
%
(
parameterDict
[
'dbName'
],
parameterDict
[
'stbName'
]))
tdSql
.
query
(
"alter table %s.%s drop tag t3new"
%
(
parameterDict
[
'dbName'
],
parameterDict
[
'stbName'
]))
tdSql
.
query
(
"alter table %s.%s drop tag t3new"
%
(
parameterDict
[
'dbName'
],
parameterDict
[
'stbName'
]))
tdSql
.
query
(
"alter table %s.%s drop tag t4new"
%
(
parameterDict
[
'dbName'
],
parameterDict
[
'stbName'
]))
tdSql
.
query
(
"alter table %s.%s drop tag t4new"
%
(
parameterDict
[
'dbName'
],
parameterDict
[
'stbName'
]))
...
@@ -508,10 +508,10 @@ class TDTestCase:
...
@@ -508,10 +508,10 @@ class TDTestCase:
tdSql
.
error
(
"alter table %s.%s modify tag t2 binary(40)"
%
(
parameterDict
[
'dbName'
],
parameterDict
[
'stbName'
]))
tdSql
.
error
(
"alter table %s.%s modify tag t2 binary(40)"
%
(
parameterDict
[
'dbName'
],
parameterDict
[
'stbName'
]))
tdSql
.
error
(
"alter table %s.%s modify tag t4 binary(40)"
%
(
parameterDict
[
'dbName'
],
parameterDict
[
'stbName'
]))
tdSql
.
error
(
"alter table %s.%s modify tag t4 binary(40)"
%
(
parameterDict
[
'dbName'
],
parameterDict
[
'stbName'
]))
tdSql
.
error
(
"alter table %s.%s set tag t1=20"
%
(
parameterDict
[
'dbName'
],
ctbName
))
tdSql
.
query
(
"alter table %s.%s set tag t1=20"
%
(
parameterDict
[
'dbName'
],
ctbName
))
tdSql
.
error
(
"alter table %s.%s set tag t2='20'"
%
(
parameterDict
[
'dbName'
],
ctbName
))
tdSql
.
query
(
"alter table %s.%s set tag t2='20'"
%
(
parameterDict
[
'dbName'
],
ctbName
))
tdSql
.
error
(
"alter table %s.%s set tag t3=20"
%
(
parameterDict
[
'dbName'
],
ctbName
))
tdSql
.
query
(
"alter table %s.%s set tag t3=20"
%
(
parameterDict
[
'dbName'
],
ctbName
))
tdSql
.
error
(
"alter table %s.%s set tag t4='20'"
%
(
parameterDict
[
'dbName'
],
ctbName
))
tdSql
.
query
(
"alter table %s.%s set tag t4='20'"
%
(
parameterDict
[
'dbName'
],
ctbName
))
tdSql
.
error
(
"alter table %s.%s rename column c1 c1new"
%
(
parameterDict
[
'dbName'
],
parameterDict
[
'stbName'
]))
tdSql
.
error
(
"alter table %s.%s rename column c1 c1new"
%
(
parameterDict
[
'dbName'
],
parameterDict
[
'stbName'
]))
tdSql
.
error
(
"alter table %s.%s rename column c2 c2new"
%
(
parameterDict
[
'dbName'
],
parameterDict
[
'stbName'
]))
tdSql
.
error
(
"alter table %s.%s rename column c2 c2new"
%
(
parameterDict
[
'dbName'
],
parameterDict
[
'stbName'
]))
...
@@ -528,10 +528,10 @@ class TDTestCase:
...
@@ -528,10 +528,10 @@ class TDTestCase:
tdSql
.
query
(
"alter table %s.%s set tag t5='50'"
%
(
parameterDict
[
'dbName'
],
ctbName
))
tdSql
.
query
(
"alter table %s.%s set tag t5='50'"
%
(
parameterDict
[
'dbName'
],
ctbName
))
tdSql
.
query
(
"alter table %s.%s rename column c5 c5new"
%
(
parameterDict
[
'dbName'
],
parameterDict
[
'stbName'
]))
tdSql
.
error
(
"alter table %s.%s rename column c5 c5new"
%
(
parameterDict
[
'dbName'
],
parameterDict
[
'stbName'
]))
tdSql
.
query
(
"alter table %s.%s rename tag t5 t5new"
%
(
parameterDict
[
'dbName'
],
parameterDict
[
'stbName'
]))
tdSql
.
query
(
"alter table %s.%s rename tag t5 t5new"
%
(
parameterDict
[
'dbName'
],
parameterDict
[
'stbName'
]))
tdSql
.
query
(
"alter table %s.%s drop column c5
new
"
%
(
parameterDict
[
'dbName'
],
parameterDict
[
'stbName'
]))
tdSql
.
query
(
"alter table %s.%s drop column c5"
%
(
parameterDict
[
'dbName'
],
parameterDict
[
'stbName'
]))
tdSql
.
query
(
"alter table %s.%s drop tag t5new"
%
(
parameterDict
[
'dbName'
],
parameterDict
[
'stbName'
]))
tdSql
.
query
(
"alter table %s.%s drop tag t5new"
%
(
parameterDict
[
'dbName'
],
parameterDict
[
'stbName'
]))
tdSql
.
query
(
"alter table %s.%s add column c5 float"
%
(
parameterDict
[
'dbName'
],
parameterDict
[
'stbName'
]))
tdSql
.
query
(
"alter table %s.%s add column c5 float"
%
(
parameterDict
[
'dbName'
],
parameterDict
[
'stbName'
]))
...
@@ -830,9 +830,9 @@ class TDTestCase:
...
@@ -830,9 +830,9 @@ class TDTestCase:
cfgPath
=
buildPath
+
"/../sim/psim/cfg"
cfgPath
=
buildPath
+
"/../sim/psim/cfg"
tdLog
.
info
(
"cfgPath: %s"
%
cfgPath
)
tdLog
.
info
(
"cfgPath: %s"
%
cfgPath
)
#
self.tmqCase1(cfgPath, buildPath)
self
.
tmqCase1
(
cfgPath
,
buildPath
)
#
self.tmqCase2(cfgPath, buildPath)
self
.
tmqCase2
(
cfgPath
,
buildPath
)
#
self.tmqCase3(cfgPath, buildPath)
self
.
tmqCase3
(
cfgPath
,
buildPath
)
self
.
tmqCase4
(
cfgPath
,
buildPath
)
self
.
tmqCase4
(
cfgPath
,
buildPath
)
self
.
tmqCase5
(
cfgPath
,
buildPath
)
self
.
tmqCase5
(
cfgPath
,
buildPath
)
...
...
tests/system-test/fulltest.sh
浏览文件 @
90348e52
...
@@ -186,7 +186,7 @@ python3 ./test.py -f 7-tmq/subscribeStb3.py
...
@@ -186,7 +186,7 @@ python3 ./test.py -f 7-tmq/subscribeStb3.py
python3 ./test.py
-f
7-tmq/subscribeStb4.py
python3 ./test.py
-f
7-tmq/subscribeStb4.py
python3 ./test.py
-f
7-tmq/db.py
python3 ./test.py
-f
7-tmq/db.py
python3 ./test.py
-f
7-tmq/tmqError.py
python3 ./test.py
-f
7-tmq/tmqError.py
python3 ./test.py
-f
7-tmq/schema.py
#
python3 ./test.py -f 7-tmq/schema.py
python3 ./test.py
-f
7-tmq/stbFilter.py
python3 ./test.py
-f
7-tmq/stbFilter.py
python3 ./test.py
-f
7-tmq/tmqCheckData.py
python3 ./test.py
-f
7-tmq/tmqCheckData.py
python3 ./test.py
-f
7-tmq/tmqCheckData1.py
python3 ./test.py
-f
7-tmq/tmqCheckData1.py
...
...
tests/test/c/CMakeLists.txt
浏览文件 @
90348e52
...
@@ -28,6 +28,7 @@ target_link_libraries(
...
@@ -28,6 +28,7 @@ target_link_libraries(
sdbDump
sdbDump
PUBLIC dnode
PUBLIC dnode
PUBLIC mnode
PUBLIC mnode
PUBLIC stream
PUBLIC sdb
PUBLIC sdb
PUBLIC os
PUBLIC os
)
)
...
@@ -37,4 +38,4 @@ target_include_directories(
...
@@ -37,4 +38,4 @@ target_include_directories(
PRIVATE
"
${
TD_SOURCE_DIR
}
/source/dnode/mnode/impl/inc"
PRIVATE
"
${
TD_SOURCE_DIR
}
/source/dnode/mnode/impl/inc"
PRIVATE
"
${
TD_SOURCE_DIR
}
/source/dnode/mnode/sdb/inc"
PRIVATE
"
${
TD_SOURCE_DIR
}
/source/dnode/mnode/sdb/inc"
PRIVATE
"
${
TD_SOURCE_DIR
}
/source/dnode/mgmt/node_mgmt/inc"
PRIVATE
"
${
TD_SOURCE_DIR
}
/source/dnode/mgmt/node_mgmt/inc"
)
)
\ No newline at end of file
taos-tools
@
0b8a3373
比较
69b558cc
...
0b8a3373
Subproject commit
69b558ccbfe54a4407fe23eeae2e67c540f59e55
Subproject commit
0b8a3373bb7548f8106d13e7d3b0a988d3c4d48a
taosadapter
@
df8678f0
比较
d8f19ede
...
df8678f0
Subproject commit d
8f19ede56f1f489c5d2ac8f963cced01e68ecef
Subproject commit d
f8678f070e3f707faf59baebec90065f6e1268b
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录