Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
d5bc02c1
T
TDengine
项目概览
taosdata
/
TDengine
1 年多 前同步成功
通知
1187
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看板
提交
d5bc02c1
编写于
2月 02, 2023
作者:
D
dapan1121
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat: support force fill
上级
d88f1efe
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
12 addition
and
4 deletion
+12
-4
source/libs/executor/src/filloperator.c
source/libs/executor/src/filloperator.c
+10
-4
source/libs/parser/inc/sql.y
source/libs/parser/inc/sql.y
+2
-0
未找到文件。
source/libs/executor/src/filloperator.c
浏览文件 @
d5bc02c1
...
...
@@ -456,7 +456,8 @@ void* destroyStreamFillLinearInfo(SStreamFillLinearInfo* pFillLinear) {
return
NULL
;
}
void
*
destroyStreamFillInfo
(
SStreamFillInfo
*
pFillInfo
)
{
if
(
pFillInfo
->
type
==
TSDB_FILL_SET_VALUE
||
pFillInfo
->
type
==
TSDB_FILL_NULL
)
{
if
(
pFillInfo
->
type
==
TSDB_FILL_SET_VALUE
||
pFillInfo
->
type
==
TSDB_FILL_SET_VALUE_F
pFillInfo
->
type
==
TSDB_FILL_NULL
||
pFillInfo
->
type
==
TSDB_FILL_NULL_F
)
{
taosMemoryFreeClear
(
pFillInfo
->
pResRow
->
pRowVal
);
taosMemoryFreeClear
(
pFillInfo
->
pResRow
);
}
...
...
@@ -661,7 +662,9 @@ void setDeleteFillValueInfo(TSKEY start, TSKEY end, SStreamFillSupporter* pFillS
pFillInfo
->
pos
=
FILL_POS_INVALID
;
switch
(
pFillInfo
->
type
)
{
case
TSDB_FILL_NULL
:
case
TSDB_FILL_NULL_F
:
case
TSDB_FILL_SET_VALUE
:
case
TSDB_FILL_SET_VALUE_F
:
break
;
case
TSDB_FILL_PREV
:
pFillInfo
->
pResRow
=
&
pFillSup
->
prev
;
...
...
@@ -720,7 +723,9 @@ void setFillValueInfo(SSDataBlock* pBlock, TSKEY ts, int32_t rowId, SStreamFillS
pFillInfo
->
pos
=
FILL_POS_INVALID
;
switch
(
pFillInfo
->
type
)
{
case
TSDB_FILL_NULL
:
case
TSDB_FILL_SET_VALUE
:
{
case
TSDB_FILL_NULL_F
:
case
TSDB_FILL_SET_VALUE
:
case
TSDB_FILL_SET_VALUE_F
:
{
if
(
pFillSup
->
prev
.
key
==
pFillInfo
->
preRowKey
)
{
resetFillWindow
(
&
pFillSup
->
prev
);
}
...
...
@@ -1360,7 +1365,8 @@ SStreamFillInfo* initStreamFillInfo(SStreamFillSupporter* pFillSup, SSDataBlock*
pFillInfo
->
pLinearInfo
->
winIndex
=
0
;
pFillInfo
->
pResRow
=
NULL
;
if
(
pFillSup
->
type
==
TSDB_FILL_SET_VALUE
||
pFillSup
->
type
==
TSDB_FILL_NULL
)
{
if
(
pFillSup
->
type
==
TSDB_FILL_SET_VALUE
||
pFillSup
->
type
==
TSDB_FILL_SET_VALUE_F
||
pFillSup
->
type
==
TSDB_FILL_NULL
||
pFillSup
->
type
==
TSDB_FILL_NULL_F
)
{
pFillInfo
->
pResRow
=
taosMemoryCalloc
(
1
,
sizeof
(
SResultRowData
));
pFillInfo
->
pResRow
->
key
=
INT64_MIN
;
pFillInfo
->
pResRow
->
pRowVal
=
taosMemoryCalloc
(
1
,
pFillSup
->
rowSize
);
...
...
@@ -1405,7 +1411,7 @@ SOperatorInfo* createStreamFillOperatorInfo(SOperatorInfo* downstream, SStreamFi
goto
_error
;
}
if
(
pInfo
->
pFillInfo
->
type
==
TSDB_FILL_SET_VALUE
)
{
if
(
pInfo
->
pFillInfo
->
type
==
TSDB_FILL_SET_VALUE
||
pInfo
->
pFillInfo
->
type
==
TSDB_FILL_SET_VALUE_F
)
{
for
(
int32_t
i
=
0
;
i
<
pInfo
->
pFillSup
->
numOfAllCols
;
++
i
)
{
SFillColInfo
*
pFillCol
=
pInfo
->
pFillSup
->
pAllColInfo
+
i
;
int32_t
slotId
=
GET_DEST_SLOT_ID
(
pFillCol
);
...
...
source/libs/parser/inc/sql.y
浏览文件 @
d5bc02c1
...
...
@@ -978,12 +978,14 @@ sliding_opt(A) ::= SLIDING NK_LP duration_literal(B) NK_RP.
fill_opt(A) ::= . { A = NULL; }
fill_opt(A) ::= FILL NK_LP fill_mode(B) NK_RP. { A = createFillNode(pCxt, B, NULL); }
fill_opt(A) ::= FILL NK_LP VALUE NK_COMMA literal_list(B) NK_RP. { A = createFillNode(pCxt, FILL_MODE_VALUE, createNodeListNode(pCxt, B)); }
fill_opt(A) ::= FILL NK_LP VALUE_F NK_COMMA literal_list(B) NK_RP. { A = createFillNode(pCxt, FILL_MODE_VALUE_F, createNodeListNode(pCxt, B)); }
%type fill_mode { EFillMode }
%destructor fill_mode { }
fill_mode(A) ::= NONE. { A = FILL_MODE_NONE; }
fill_mode(A) ::= PREV. { A = FILL_MODE_PREV; }
fill_mode(A) ::= NULL. { A = FILL_MODE_NULL; }
fill_mode(A) ::= NULL_F. { A = FILL_MODE_NULL_F; }
fill_mode(A) ::= LINEAR. { A = FILL_MODE_LINEAR; }
fill_mode(A) ::= NEXT. { A = FILL_MODE_NEXT; }
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录