Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
5a1681d9
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看板
提交
5a1681d9
编写于
5月 05, 2023
作者:
G
Ganlin Zhao
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix data block not properly saved
上级
7b01cad0
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
12 addition
and
6 deletion
+12
-6
source/libs/executor/src/timesliceoperator.c
source/libs/executor/src/timesliceoperator.c
+12
-6
未找到文件。
source/libs/executor/src/timesliceoperator.c
浏览文件 @
5a1681d9
...
@@ -39,7 +39,7 @@ typedef struct STimeSliceOperatorInfo {
...
@@ -39,7 +39,7 @@ typedef struct STimeSliceOperatorInfo {
int64_t
prevTs
;
int64_t
prevTs
;
bool
prevTsSet
;
bool
prevTsSet
;
uint64_t
groupId
;
uint64_t
groupId
;
SSDataBlock
*
p
Current
GroupRes
;
SSDataBlock
*
p
Prev
GroupRes
;
SSDataBlock
*
pNextGroupRes
;
SSDataBlock
*
pNextGroupRes
;
}
STimeSliceOperatorInfo
;
}
STimeSliceOperatorInfo
;
...
@@ -640,6 +640,11 @@ static void genInterpAfterDataBlock(STimeSliceOperatorInfo* pSliceInfo, SOperato
...
@@ -640,6 +640,11 @@ static void genInterpAfterDataBlock(STimeSliceOperatorInfo* pSliceInfo, SOperato
}
}
}
}
static
void
copyPrevGroupDataBlock
(
SSDataBlock
*
pDstBlock
,
SSDataBlock
*
pSrcBlock
)
{
blockDataCleanup
(
pDstBlock
);
assignOneDataBlock
(
pDstBlock
,
pSrcBlock
);
}
static
void
resetTimesliceInfo
(
STimeSliceOperatorInfo
*
pSliceInfo
)
{
static
void
resetTimesliceInfo
(
STimeSliceOperatorInfo
*
pSliceInfo
)
{
pSliceInfo
->
current
=
pSliceInfo
->
win
.
skey
;
pSliceInfo
->
current
=
pSliceInfo
->
win
.
skey
;
pSliceInfo
->
prevTsSet
=
false
;
pSliceInfo
->
prevTsSet
=
false
;
...
@@ -667,7 +672,7 @@ static SSDataBlock* doTimeslice(SOperatorInfo* pOperator) {
...
@@ -667,7 +672,7 @@ static SSDataBlock* doTimeslice(SOperatorInfo* pOperator) {
if
(
pSliceInfo
->
pNextGroupRes
!=
NULL
)
{
if
(
pSliceInfo
->
pNextGroupRes
!=
NULL
)
{
setInputDataBlock
(
pSup
,
pSliceInfo
->
pNextGroupRes
,
order
,
MAIN_SCAN
,
true
);
setInputDataBlock
(
pSup
,
pSliceInfo
->
pNextGroupRes
,
order
,
MAIN_SCAN
,
true
);
doTimesliceImpl
(
pOperator
,
pSliceInfo
,
pSliceInfo
->
pNextGroupRes
,
pTaskInfo
);
doTimesliceImpl
(
pOperator
,
pSliceInfo
,
pSliceInfo
->
pNextGroupRes
,
pTaskInfo
);
pSliceInfo
->
pCurrentGroupRes
=
pSliceInfo
->
pNextGroupRes
;
copyPrevGroupDataBlock
(
pSliceInfo
->
pPrevGroupRes
,
pSliceInfo
->
pNextGroupRes
)
;
pSliceInfo
->
pNextGroupRes
=
NULL
;
pSliceInfo
->
pNextGroupRes
=
NULL
;
}
}
...
@@ -701,13 +706,13 @@ static SSDataBlock* doTimeslice(SOperatorInfo* pOperator) {
...
@@ -701,13 +706,13 @@ static SSDataBlock* doTimeslice(SOperatorInfo* pOperator) {
// the pDataBlock are always the same one, no need to call this again
// the pDataBlock are always the same one, no need to call this again
setInputDataBlock
(
pSup
,
pBlock
,
order
,
MAIN_SCAN
,
true
);
setInputDataBlock
(
pSup
,
pBlock
,
order
,
MAIN_SCAN
,
true
);
doTimesliceImpl
(
pOperator
,
pSliceInfo
,
pBlock
,
pTaskInfo
);
doTimesliceImpl
(
pOperator
,
pSliceInfo
,
pBlock
,
pTaskInfo
);
pSliceInfo
->
pCurrentGroupRes
=
pBlock
;
copyPrevGroupDataBlock
(
pSliceInfo
->
pPrevGroupRes
,
pBlock
)
;
}
}
// check if need to interpolate after last datablock
// check if need to interpolate after last datablock
// except for fill(next), fill(linear)
// except for fill(next), fill(linear)
genInterpAfterDataBlock
(
pSliceInfo
,
pOperator
,
pSliceInfo
->
p
Current
GroupRes
,
genInterpAfterDataBlock
(
pSliceInfo
,
pOperator
,
pSliceInfo
->
p
Prev
GroupRes
,
pSliceInfo
->
p
Current
GroupRes
->
info
.
rows
-
1
);
pSliceInfo
->
p
Prev
GroupRes
->
info
.
rows
-
1
);
doFilter
(
pResBlock
,
pOperator
->
exprSupp
.
pFilterInfo
,
NULL
);
doFilter
(
pResBlock
,
pOperator
->
exprSupp
.
pFilterInfo
,
NULL
);
if
(
pOperator
->
status
==
OP_EXEC_DONE
)
{
if
(
pOperator
->
status
==
OP_EXEC_DONE
)
{
...
@@ -771,8 +776,8 @@ SOperatorInfo* createTimeSliceOperatorInfo(SOperatorInfo* downstream, SPhysiNode
...
@@ -771,8 +776,8 @@ SOperatorInfo* createTimeSliceOperatorInfo(SOperatorInfo* downstream, SPhysiNode
pInfo
->
prevTsSet
=
false
;
pInfo
->
prevTsSet
=
false
;
pInfo
->
prevTs
=
0
;
pInfo
->
prevTs
=
0
;
pInfo
->
groupId
=
0
;
pInfo
->
groupId
=
0
;
pInfo
->
pPrevGroupRes
=
createDataBlock
();
pInfo
->
pNextGroupRes
=
NULL
;
pInfo
->
pNextGroupRes
=
NULL
;
pInfo
->
pCurrentGroupRes
=
NULL
;
if
(
downstream
->
operatorType
==
QUERY_NODE_PHYSICAL_PLAN_TABLE_SCAN
)
{
if
(
downstream
->
operatorType
==
QUERY_NODE_PHYSICAL_PLAN_TABLE_SCAN
)
{
STableScanInfo
*
pScanInfo
=
(
STableScanInfo
*
)
downstream
->
info
;
STableScanInfo
*
pScanInfo
=
(
STableScanInfo
*
)
downstream
->
info
;
...
@@ -801,6 +806,7 @@ void destroyTimeSliceOperatorInfo(void* param) {
...
@@ -801,6 +806,7 @@ void destroyTimeSliceOperatorInfo(void* param) {
STimeSliceOperatorInfo
*
pInfo
=
(
STimeSliceOperatorInfo
*
)
param
;
STimeSliceOperatorInfo
*
pInfo
=
(
STimeSliceOperatorInfo
*
)
param
;
pInfo
->
pRes
=
blockDataDestroy
(
pInfo
->
pRes
);
pInfo
->
pRes
=
blockDataDestroy
(
pInfo
->
pRes
);
pInfo
->
pPrevGroupRes
=
blockDataDestroy
(
pInfo
->
pPrevGroupRes
);
for
(
int32_t
i
=
0
;
i
<
taosArrayGetSize
(
pInfo
->
pPrevRow
);
++
i
)
{
for
(
int32_t
i
=
0
;
i
<
taosArrayGetSize
(
pInfo
->
pPrevRow
);
++
i
)
{
SGroupKeys
*
pKey
=
taosArrayGet
(
pInfo
->
pPrevRow
,
i
);
SGroupKeys
*
pKey
=
taosArrayGet
(
pInfo
->
pPrevRow
,
i
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录