Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
17debe6a
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看板
提交
17debe6a
编写于
7月 10, 2023
作者:
H
Haojun Liao
浏览文件
操作
浏览文件
下载
差异文件
Merge remote-tracking branch 'origin/enh/triggerCheckPoint2' into enh/triggerCheckPoint2
上级
16ee72ab
ee196a88
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
32 addition
and
19 deletion
+32
-19
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
+6
-3
source/libs/executor/src/timewindowoperator.c
source/libs/executor/src/timewindowoperator.c
+11
-4
未找到文件。
source/dnode/vnode/src/tq/tqSink.c
浏览文件 @
17debe6a
...
...
@@ -274,6 +274,8 @@ void tqSinkToTablePipeline(SStreamTask* pTask, void* vnode, int64_t ver, void* d
tagArray
=
taosArrayDestroy
(
tagArray
);
taosArrayDestroyEx
(
crTblArray
,
(
FDelete
)
tdDestroySVCreateTbReq
);
crTblArray
=
NULL
;
}
else
if
(
pDataBlock
->
info
.
type
==
STREAM_CHECKPOINT
)
{
continue
;
}
else
{
SSubmitTbData
tbData
=
{
0
};
tqDebug
(
"tq sink pipe, convert block:%d, rows:%d"
,
i
,
rows
);
...
...
source/libs/executor/inc/executorInt.h
浏览文件 @
17debe6a
...
...
@@ -327,24 +327,24 @@ typedef struct SStreamScanInfo {
SExprSupp
tagCalSup
;
int32_t
primaryTsIndex
;
// primary time stamp slot id
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
;
SArray
*
pBlockLists
;
// multiple SSDatablock.
SSDataBlock
*
pRes
;
// result SSDataBlock
SSDataBlock
*
pUpdateRes
;
// update SSDataBlock
SArray
*
pBlockLists
;
// multiple SSDatablock.
SSDataBlock
*
pRes
;
// result SSDataBlock
SSDataBlock
*
pUpdateRes
;
// update SSDataBlock
int32_t
updateResIndex
;
int32_t
blockType
;
// current block type
int32_t
validBlockIndex
;
// Is current data has returned?
uint64_t
numOfExec
;
// execution times
STqReader
*
tqReader
;
uint64_t
groupId
;
uint64_t
groupId
;
struct
SUpdateInfo
*
pUpdateInfo
;
EStreamScanMode
scanMode
;
struct
SOperatorInfo
*
pStreamScanOp
;
struct
SOperatorInfo
*
pTableScanOp
;
struct
SOperatorInfo
*
pStreamScanOp
;
struct
SOperatorInfo
*
pTableScanOp
;
SArray
*
childIds
;
SWindowSupporter
windowSup
;
SPartitionBySupporter
partitionSup
;
...
...
@@ -366,12 +366,13 @@ typedef struct SStreamScanInfo {
int32_t
blockRecoverTotCnt
;
SSDataBlock
*
pRecoverRes
;
SSDataBlock
*
pCreateTbRes
;
int8_t
igCheckUpdate
;
int8_t
igExpired
;
void
*
pState
;
//
void
SSDataBlock
*
pCreateTbRes
;
int8_t
igCheckUpdate
;
int8_t
igExpired
;
void
*
pState
;
//
void
SStoreTqReader
readerFn
;
SStateStore
stateStore
;
SStateStore
stateStore
;
SSDataBlock
*
pCheckpointRes
;
}
SStreamScanInfo
;
typedef
struct
{
...
...
source/libs/executor/src/scanoperator.c
浏览文件 @
17debe6a
...
...
@@ -1769,8 +1769,9 @@ int32_t streamScanOperatorEncode(SStreamScanInfo* pInfo, void** pBuff) {
void
streamScanOperatorSaveCheckpoint
(
SStreamScanInfo
*
pInfo
)
{
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
);
taosMemoryFree
(
pBuf
);
}
// other properties are recovered from the execution plan
...
...
@@ -2185,10 +2186,9 @@ FETCH_NEXT_BLOCK:
if
(
pBlock
->
info
.
type
==
STREAM_CHECKPOINT
)
{
streamScanOperatorSaveCheckpoint
(
pInfo
);
pAPI
->
stateStore
.
streamStateCommit
(
pInfo
->
pState
);
pAPI
->
stateStore
.
streamStateDeleteCheckPoint
(
pInfo
->
pState
,
pInfo
->
twAggSup
.
maxTs
-
pInfo
->
twAggSup
.
deleteMark
);
}
printDataBlock
(
pBlock
,
"stream scan ck"
);
return
p
Block
;
return
p
Info
->
pCheckpointRes
;
}
return
NULL
;
...
...
@@ -2356,6 +2356,8 @@ static void destroyStreamScanOperatorInfo(void* param) {
blockDataDestroy
(
pStreamScan
->
pUpdateDataRes
);
blockDataDestroy
(
pStreamScan
->
pCreateTbRes
);
taosArrayDestroy
(
pStreamScan
->
pBlockLists
);
blockDataDestroy
(
pStreamScan
->
pCheckpointRes
);
taosMemoryFree
(
pStreamScan
);
}
...
...
@@ -2573,6 +2575,7 @@ SOperatorInfo* createStreamScanOperatorInfo(SReadHandle* pHandle, STableScanPhys
pInfo
->
pState
=
NULL
;
pInfo
->
stateStore
=
pTaskInfo
->
storageAPI
.
stateStore
;
pInfo
->
readerFn
=
pTaskInfo
->
storageAPI
.
tqReaderFn
;
pInfo
->
pCheckpointRes
=
createSpecialDataBlock
(
STREAM_CHECKPOINT
);
// for stream
if
(
pTaskInfo
->
streamInfo
.
pState
)
{
...
...
source/libs/executor/src/timewindowoperator.c
浏览文件 @
17debe6a
...
...
@@ -2673,6 +2673,7 @@ void doStreamIntervalSaveCheckpoint(SOperatorInfo* pOperator) {
len
=
doStreamIntervalEncodeOpState
(
&
pBuf
,
pOperator
);
pInfo
->
stateStore
.
streamStateSaveInfo
(
pInfo
->
pState
,
STREAM_INTERVAL_OP_CHECKPOINT_NAME
,
strlen
(
STREAM_INTERVAL_OP_CHECKPOINT_NAME
),
buf
,
len
);
taosMemoryFree
(
buf
);
}
static
SSDataBlock
*
doStreamFinalIntervalAgg
(
SOperatorInfo
*
pOperator
)
{
...
...
@@ -2828,7 +2829,7 @@ static SSDataBlock* doStreamFinalIntervalAgg(SOperatorInfo* pOperator) {
qDebug
(
"===stream===return data:%s. recv datablock num:%"
PRIu64
,
IS_FINAL_OP
(
pInfo
)
?
"interval final"
:
"interval semi"
,
pInfo
->
numOfDatapack
);
pInfo
->
numOfDatapack
=
0
;
break
;
continue
;
}
else
{
ASSERTS
(
pBlock
->
info
.
type
==
STREAM_INVALID
,
"invalid SSDataBlock type"
);
}
...
...
@@ -3953,7 +3954,7 @@ static SSDataBlock* doStreamSessionAgg(SOperatorInfo* pOperator) {
pAggSup
->
stateStore
.
streamStateCommit
(
pAggSup
->
pState
);
setStreamDataVersion
(
pOperator
->
pTaskInfo
,
pInfo
->
dataVersion
,
pAggSup
->
pState
->
checkPointId
);
copyDataBlock
(
pInfo
->
pCheckpointRes
,
pBlock
);
break
;
continue
;
}
else
{
ASSERTS
(
pBlock
->
info
.
type
==
STREAM_NORMAL
||
pBlock
->
info
.
type
==
STREAM_INVALID
,
"invalid SSDataBlock type"
);
}
...
...
@@ -4255,7 +4256,7 @@ static SSDataBlock* doStreamSessionSemiAgg(SOperatorInfo* pOperator) {
pAggSup
->
stateStore
.
streamStateCommit
(
pAggSup
->
pState
);
setStreamDataVersion
(
pOperator
->
pTaskInfo
,
pInfo
->
dataVersion
,
pAggSup
->
pState
->
checkPointId
);
pOperator
->
status
=
OP_RES_TO_RETURN
;
break
;
continue
;
}
else
{
ASSERTS
(
pBlock
->
info
.
type
==
STREAM_NORMAL
||
pBlock
->
info
.
type
==
STREAM_INVALID
,
"invalid SSDataBlock type"
);
}
...
...
@@ -4675,6 +4676,12 @@ static SSDataBlock* doStreamStateAgg(SOperatorInfo* pOperator) {
continue
;
}
else
if
(
pBlock
->
info
.
type
==
STREAM_CREATE_CHILD_TABLE
)
{
return
pBlock
;
}
else
if
(
pBlock
->
info
.
type
==
STREAM_CHECKPOINT
)
{
doStreamSessionSaveCheckpoint
(
pOperator
);
pInfo
->
streamAggSup
.
stateStore
.
streamStateCommit
(
pInfo
->
streamAggSup
.
pState
);
setStreamDataVersion
(
pOperator
->
pTaskInfo
,
pInfo
->
dataVersion
,
pInfo
->
streamAggSup
.
pState
->
checkPointId
);
copyDataBlock
(
pInfo
->
pCheckpointRes
,
pBlock
);
continue
;
}
else
{
ASSERTS
(
pBlock
->
info
.
type
==
STREAM_NORMAL
||
pBlock
->
info
.
type
==
STREAM_INVALID
,
"invalid SSDataBlock type"
);
}
...
...
@@ -5543,7 +5550,7 @@ static SSDataBlock* doStreamIntervalAgg(SOperatorInfo* pOperator) {
copyDataBlock
(
pInfo
->
pCheckpointRes
,
pBlock
);
qDebug
(
"===stream===return data:single interval. recv datablock num:%"
PRIu64
,
pInfo
->
numOfDatapack
);
pInfo
->
numOfDatapack
=
0
;
break
;
continue
;
}
else
{
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.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录