Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
84f0dfd6
T
TDengine
项目概览
taosdata
/
TDengine
大约 2 年 前同步成功
通知
1193
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看板
提交
84f0dfd6
编写于
7月 10, 2023
作者:
L
liuyao
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
stream operator checkpoint
上级
5940bbfb
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
24 addition
and
18 deletion
+24
-18
source/dnode/vnode/src/tq/tqSink.c
source/dnode/vnode/src/tq/tqSink.c
+2
-0
source/libs/executor/inc/executorInt.h
source/libs/executor/inc/executorInt.h
+13
-12
source/libs/executor/src/scanoperator.c
source/libs/executor/src/scanoperator.c
+5
-2
source/libs/executor/src/timewindowoperator.c
source/libs/executor/src/timewindowoperator.c
+4
-4
未找到文件。
source/dnode/vnode/src/tq/tqSink.c
浏览文件 @
84f0dfd6
...
@@ -274,6 +274,8 @@ void tqSinkToTablePipeline(SStreamTask* pTask, void* vnode, int64_t ver, void* d
...
@@ -274,6 +274,8 @@ void tqSinkToTablePipeline(SStreamTask* pTask, void* vnode, int64_t ver, void* d
tagArray
=
taosArrayDestroy
(
tagArray
);
tagArray
=
taosArrayDestroy
(
tagArray
);
taosArrayDestroyEx
(
crTblArray
,
(
FDelete
)
tdDestroySVCreateTbReq
);
taosArrayDestroyEx
(
crTblArray
,
(
FDelete
)
tdDestroySVCreateTbReq
);
crTblArray
=
NULL
;
crTblArray
=
NULL
;
}
else
if
(
pDataBlock
->
info
.
type
==
STREAM_CHECKPOINT
)
{
continue
;
}
else
{
}
else
{
SSubmitTbData
tbData
=
{
0
};
SSubmitTbData
tbData
=
{
0
};
tqDebug
(
"tq sink pipe, convert block:%d, rows:%d"
,
i
,
rows
);
tqDebug
(
"tq sink pipe, convert block:%d, rows:%d"
,
i
,
rows
);
...
...
source/libs/executor/inc/executorInt.h
浏览文件 @
84f0dfd6
...
@@ -327,24 +327,24 @@ typedef struct SStreamScanInfo {
...
@@ -327,24 +327,24 @@ typedef struct SStreamScanInfo {
SExprSupp
tagCalSup
;
SExprSupp
tagCalSup
;
int32_t
primaryTsIndex
;
// primary time stamp slot id
int32_t
primaryTsIndex
;
// primary time stamp slot id
SReadHandle
readHandle
;
SReadHandle
readHandle
;
SInterval
interval
;
// if the upstream is an interval operator, the interval info is also kept here.
SInterval
interval
;
// if the upstream is an interval operator, the interval info is also kept here.
SColMatchInfo
matchInfo
;
SColMatchInfo
matchInfo
;
SArray
*
pBlockLists
;
// multiple SSDatablock.
SArray
*
pBlockLists
;
// multiple SSDatablock.
SSDataBlock
*
pRes
;
// result SSDataBlock
SSDataBlock
*
pRes
;
// result SSDataBlock
SSDataBlock
*
pUpdateRes
;
// update SSDataBlock
SSDataBlock
*
pUpdateRes
;
// update SSDataBlock
int32_t
updateResIndex
;
int32_t
updateResIndex
;
int32_t
blockType
;
// current block type
int32_t
blockType
;
// current block type
int32_t
validBlockIndex
;
// Is current data has returned?
int32_t
validBlockIndex
;
// Is current data has returned?
uint64_t
numOfExec
;
// execution times
uint64_t
numOfExec
;
// execution times
STqReader
*
tqReader
;
STqReader
*
tqReader
;
uint64_t
groupId
;
uint64_t
groupId
;
struct
SUpdateInfo
*
pUpdateInfo
;
struct
SUpdateInfo
*
pUpdateInfo
;
EStreamScanMode
scanMode
;
EStreamScanMode
scanMode
;
struct
SOperatorInfo
*
pStreamScanOp
;
struct
SOperatorInfo
*
pStreamScanOp
;
struct
SOperatorInfo
*
pTableScanOp
;
struct
SOperatorInfo
*
pTableScanOp
;
SArray
*
childIds
;
SArray
*
childIds
;
SWindowSupporter
windowSup
;
SWindowSupporter
windowSup
;
SPartitionBySupporter
partitionSup
;
SPartitionBySupporter
partitionSup
;
...
@@ -366,12 +366,13 @@ typedef struct SStreamScanInfo {
...
@@ -366,12 +366,13 @@ typedef struct SStreamScanInfo {
int32_t
blockRecoverTotCnt
;
int32_t
blockRecoverTotCnt
;
SSDataBlock
*
pRecoverRes
;
SSDataBlock
*
pRecoverRes
;
SSDataBlock
*
pCreateTbRes
;
SSDataBlock
*
pCreateTbRes
;
int8_t
igCheckUpdate
;
int8_t
igCheckUpdate
;
int8_t
igExpired
;
int8_t
igExpired
;
void
*
pState
;
//
void
void
*
pState
;
//
void
SStoreTqReader
readerFn
;
SStoreTqReader
readerFn
;
SStateStore
stateStore
;
SStateStore
stateStore
;
SSDataBlock
*
pCheckpointRes
;
}
SStreamScanInfo
;
}
SStreamScanInfo
;
typedef
struct
{
typedef
struct
{
...
...
source/libs/executor/src/scanoperator.c
浏览文件 @
84f0dfd6
...
@@ -1769,7 +1769,7 @@ int32_t streamScanOperatorEncode(SStreamScanInfo* pInfo, void** pBuff) {
...
@@ -1769,7 +1769,7 @@ int32_t streamScanOperatorEncode(SStreamScanInfo* pInfo, void** pBuff) {
void
streamScanOperatorSaveCheckpoint
(
SStreamScanInfo
*
pInfo
)
{
void
streamScanOperatorSaveCheckpoint
(
SStreamScanInfo
*
pInfo
)
{
void
*
pBuf
=
NULL
;
void
*
pBuf
=
NULL
;
int32_t
len
=
streamScanOperatorEncode
(
pInfo
,
pBuf
);
int32_t
len
=
streamScanOperatorEncode
(
pInfo
,
&
pBuf
);
pInfo
->
stateStore
.
streamStateSaveInfo
(
pInfo
->
pState
,
STREAM_SCAN_OP_CHECKPOINT_NAME
,
strlen
(
STREAM_SCAN_OP_CHECKPOINT_NAME
),
pBuf
,
len
);
pInfo
->
stateStore
.
streamStateSaveInfo
(
pInfo
->
pState
,
STREAM_SCAN_OP_CHECKPOINT_NAME
,
strlen
(
STREAM_SCAN_OP_CHECKPOINT_NAME
),
pBuf
,
len
);
}
}
...
@@ -2188,7 +2188,7 @@ FETCH_NEXT_BLOCK:
...
@@ -2188,7 +2188,7 @@ FETCH_NEXT_BLOCK:
pAPI
->
stateStore
.
streamStateDeleteCheckPoint
(
pInfo
->
pState
,
pInfo
->
twAggSup
.
maxTs
-
pInfo
->
twAggSup
.
deleteMark
);
pAPI
->
stateStore
.
streamStateDeleteCheckPoint
(
pInfo
->
pState
,
pInfo
->
twAggSup
.
maxTs
-
pInfo
->
twAggSup
.
deleteMark
);
}
}
printDataBlock
(
pBlock
,
"stream scan ck"
);
printDataBlock
(
pBlock
,
"stream scan ck"
);
return
p
Block
;
return
p
Info
->
pCheckpointRes
;
}
}
return
NULL
;
return
NULL
;
...
@@ -2356,6 +2356,8 @@ static void destroyStreamScanOperatorInfo(void* param) {
...
@@ -2356,6 +2356,8 @@ static void destroyStreamScanOperatorInfo(void* param) {
blockDataDestroy
(
pStreamScan
->
pUpdateDataRes
);
blockDataDestroy
(
pStreamScan
->
pUpdateDataRes
);
blockDataDestroy
(
pStreamScan
->
pCreateTbRes
);
blockDataDestroy
(
pStreamScan
->
pCreateTbRes
);
taosArrayDestroy
(
pStreamScan
->
pBlockLists
);
taosArrayDestroy
(
pStreamScan
->
pBlockLists
);
blockDataDestroy
(
pStreamScan
->
pCheckpointRes
);
taosMemoryFree
(
pStreamScan
);
taosMemoryFree
(
pStreamScan
);
}
}
...
@@ -2573,6 +2575,7 @@ SOperatorInfo* createStreamScanOperatorInfo(SReadHandle* pHandle, STableScanPhys
...
@@ -2573,6 +2575,7 @@ SOperatorInfo* createStreamScanOperatorInfo(SReadHandle* pHandle, STableScanPhys
pInfo
->
pState
=
NULL
;
pInfo
->
pState
=
NULL
;
pInfo
->
stateStore
=
pTaskInfo
->
storageAPI
.
stateStore
;
pInfo
->
stateStore
=
pTaskInfo
->
storageAPI
.
stateStore
;
pInfo
->
readerFn
=
pTaskInfo
->
storageAPI
.
tqReaderFn
;
pInfo
->
readerFn
=
pTaskInfo
->
storageAPI
.
tqReaderFn
;
pInfo
->
pCheckpointRes
=
createSpecialDataBlock
(
STREAM_CHECKPOINT
);
// for stream
// for stream
if
(
pTaskInfo
->
streamInfo
.
pState
)
{
if
(
pTaskInfo
->
streamInfo
.
pState
)
{
...
...
source/libs/executor/src/timewindowoperator.c
浏览文件 @
84f0dfd6
...
@@ -2828,7 +2828,7 @@ static SSDataBlock* doStreamFinalIntervalAgg(SOperatorInfo* pOperator) {
...
@@ -2828,7 +2828,7 @@ static SSDataBlock* doStreamFinalIntervalAgg(SOperatorInfo* pOperator) {
qDebug
(
"===stream===return data:%s. recv datablock num:%"
PRIu64
,
qDebug
(
"===stream===return data:%s. recv datablock num:%"
PRIu64
,
IS_FINAL_OP
(
pInfo
)
?
"interval final"
:
"interval semi"
,
pInfo
->
numOfDatapack
);
IS_FINAL_OP
(
pInfo
)
?
"interval final"
:
"interval semi"
,
pInfo
->
numOfDatapack
);
pInfo
->
numOfDatapack
=
0
;
pInfo
->
numOfDatapack
=
0
;
break
;
continue
;
}
else
{
}
else
{
ASSERTS
(
pBlock
->
info
.
type
==
STREAM_INVALID
,
"invalid SSDataBlock type"
);
ASSERTS
(
pBlock
->
info
.
type
==
STREAM_INVALID
,
"invalid SSDataBlock type"
);
}
}
...
@@ -3953,7 +3953,7 @@ static SSDataBlock* doStreamSessionAgg(SOperatorInfo* pOperator) {
...
@@ -3953,7 +3953,7 @@ static SSDataBlock* doStreamSessionAgg(SOperatorInfo* pOperator) {
pAggSup
->
stateStore
.
streamStateCommit
(
pAggSup
->
pState
);
pAggSup
->
stateStore
.
streamStateCommit
(
pAggSup
->
pState
);
setStreamDataVersion
(
pOperator
->
pTaskInfo
,
pInfo
->
dataVersion
,
pAggSup
->
pState
->
checkPointId
);
setStreamDataVersion
(
pOperator
->
pTaskInfo
,
pInfo
->
dataVersion
,
pAggSup
->
pState
->
checkPointId
);
copyDataBlock
(
pInfo
->
pCheckpointRes
,
pBlock
);
copyDataBlock
(
pInfo
->
pCheckpointRes
,
pBlock
);
break
;
continue
;
}
else
{
}
else
{
ASSERTS
(
pBlock
->
info
.
type
==
STREAM_NORMAL
||
pBlock
->
info
.
type
==
STREAM_INVALID
,
"invalid SSDataBlock type"
);
ASSERTS
(
pBlock
->
info
.
type
==
STREAM_NORMAL
||
pBlock
->
info
.
type
==
STREAM_INVALID
,
"invalid SSDataBlock type"
);
}
}
...
@@ -4255,7 +4255,7 @@ static SSDataBlock* doStreamSessionSemiAgg(SOperatorInfo* pOperator) {
...
@@ -4255,7 +4255,7 @@ static SSDataBlock* doStreamSessionSemiAgg(SOperatorInfo* pOperator) {
pAggSup
->
stateStore
.
streamStateCommit
(
pAggSup
->
pState
);
pAggSup
->
stateStore
.
streamStateCommit
(
pAggSup
->
pState
);
setStreamDataVersion
(
pOperator
->
pTaskInfo
,
pInfo
->
dataVersion
,
pAggSup
->
pState
->
checkPointId
);
setStreamDataVersion
(
pOperator
->
pTaskInfo
,
pInfo
->
dataVersion
,
pAggSup
->
pState
->
checkPointId
);
pOperator
->
status
=
OP_RES_TO_RETURN
;
pOperator
->
status
=
OP_RES_TO_RETURN
;
break
;
continue
;
}
else
{
}
else
{
ASSERTS
(
pBlock
->
info
.
type
==
STREAM_NORMAL
||
pBlock
->
info
.
type
==
STREAM_INVALID
,
"invalid SSDataBlock type"
);
ASSERTS
(
pBlock
->
info
.
type
==
STREAM_NORMAL
||
pBlock
->
info
.
type
==
STREAM_INVALID
,
"invalid SSDataBlock type"
);
}
}
...
@@ -5543,7 +5543,7 @@ static SSDataBlock* doStreamIntervalAgg(SOperatorInfo* pOperator) {
...
@@ -5543,7 +5543,7 @@ static SSDataBlock* doStreamIntervalAgg(SOperatorInfo* pOperator) {
copyDataBlock
(
pInfo
->
pCheckpointRes
,
pBlock
);
copyDataBlock
(
pInfo
->
pCheckpointRes
,
pBlock
);
qDebug
(
"===stream===return data:single interval. recv datablock num:%"
PRIu64
,
pInfo
->
numOfDatapack
);
qDebug
(
"===stream===return data:single interval. recv datablock num:%"
PRIu64
,
pInfo
->
numOfDatapack
);
pInfo
->
numOfDatapack
=
0
;
pInfo
->
numOfDatapack
=
0
;
break
;
continue
;
}
else
{
}
else
{
ASSERTS
(
pBlock
->
info
.
type
==
STREAM_NORMAL
||
pBlock
->
info
.
type
==
STREAM_INVALID
,
"invalid SSDataBlock type"
);
ASSERTS
(
pBlock
->
info
.
type
==
STREAM_NORMAL
||
pBlock
->
info
.
type
==
STREAM_INVALID
,
"invalid SSDataBlock type"
);
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录