Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
cb0f1f53
T
TDengine
项目概览
taosdata
/
TDengine
1 年多 前同步成功
通知
1185
Star
22016
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看板
提交
cb0f1f53
编写于
11月 16, 2022
作者:
X
Xiaoyu Wang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
enh: fill value supports implicit type conversion
上级
78378845
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
12 addition
and
12 deletion
+12
-12
source/libs/parser/src/parTranslater.c
source/libs/parser/src/parTranslater.c
+11
-11
tests/script/tsim/parser/fill_stb.sim
tests/script/tsim/parser/fill_stb.sim
+1
-1
未找到文件。
source/libs/parser/src/parTranslater.c
浏览文件 @
cb0f1f53
...
...
@@ -2762,17 +2762,17 @@ static bool needFill(SNode* pNode) {
return
hasFillFunc
;
}
static
bool
mismatchFillDataType
(
SDataType
origDt
,
SDataType
fillDt
)
{
if
(
TSDB_DATA_TYPE_NULL
==
fillDt
.
type
)
{
return
false
;
}
if
(
IS_NUMERIC_TYPE
(
origDt
.
type
)
&&
!
IS_NUMERIC_TYPE
(
fillDt
.
type
))
{
return
true
;
static
int32_t
convertFillValue
(
STranslateContext
*
pCxt
,
SDataType
dt
,
SNodeList
*
pValues
,
int32_t
index
)
{
SListCell
*
pCell
=
nodesListGetCell
(
pValues
,
index
);
if
(
dataTypeEqual
(
&
dt
,
&
((
SExprNode
*
)
pCell
->
pNode
)
->
resType
))
{
return
TSDB_CODE_SUCCESS
;
}
if
(
IS_VAR_DATA_TYPE
(
origDt
.
type
)
&&
!
IS_VAR_DATA_TYPE
(
fillDt
.
type
))
{
return
true
;
SNode
*
pCaseFunc
=
NULL
;
int32_t
code
=
createCastFunc
(
pCxt
,
pCell
->
pNode
,
dt
,
&
pCaseFunc
);
if
(
TSDB_CODE_SUCCESS
==
code
)
{
pCell
->
pNode
=
pCaseFunc
;
}
return
fals
e
;
return
cod
e
;
}
static
int32_t
checkFillValues
(
STranslateContext
*
pCxt
,
SFillNode
*
pFill
,
SNodeList
*
pProjectionList
)
{
...
...
@@ -2788,8 +2788,8 @@ static int32_t checkFillValues(STranslateContext* pCxt, SFillNode* pFill, SNodeL
if
(
fillNo
>=
LIST_LENGTH
(
pFillValues
->
pNodeList
))
{
return
generateSyntaxErrMsgExt
(
&
pCxt
->
msgBuf
,
TSDB_CODE_PAR_WRONG_VALUE_TYPE
,
"Filled values number mismatch"
);
}
if
(
mismatchFillDataType
(((
SExprNode
*
)
pProject
)
->
resType
,
((
SExprNode
*
)
nodesListGetNode
(
pFillValues
->
pNodeList
,
fillNo
))
->
resType
))
{
if
(
TSDB_CODE_SUCCESS
!=
convertFillValue
(
pCxt
,
((
SExprNode
*
)
pProject
)
->
resType
,
pFillValues
->
pNodeList
,
fillNo
))
{
return
generateSyntaxErrMsgExt
(
&
pCxt
->
msgBuf
,
TSDB_CODE_PAR_WRONG_VALUE_TYPE
,
"Filled data type mismatch"
);
}
++
fillNo
;
...
...
tests/script/tsim/parser/fill_stb.sim
浏览文件 @
cb0f1f53
...
...
@@ -354,7 +354,7 @@ endi
## NULL fill
print fill(NULL)
print select _wstart, max(c1), min(c2), avg(c3), sum(c4), count(c5), first(c7), last(c8), first(c9) from $stb where ts >= $ts0 and ts <= $tsu and t1 > 4 partition by t1 interval(5m) fill(value, NULL) limit 5
print select _wstart, max(c1), min(c2), avg(c3), sum(c4), count(c5), first(c7), last(c8), first(c9) from $stb where ts >= $ts0 and ts <= $tsu and t1 > 4 partition by t1 interval(5m) fill(value, NULL
, NULL, NULL, NULL, NULL, NULL, NULL, NULL
) limit 5
sql select _wstart, max(c1), min(c2), avg(c3), sum(c4), count(c5), first(c7), last(c8), first(c9) from $stb where ts >= $ts0 and ts <= $tsu and t1 > 4 partition by t1 interval(5m) fill(NULL) limit 5
if $rows != 25 then
return -1
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录