Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
fdb94e3d
TDengine
项目概览
taosdata
/
TDengine
大约 2 年 前同步成功
通知
1193
Star
22018
Fork
4786
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
fdb94e3d
编写于
8月 19, 2022
作者:
H
Hui Li
提交者:
GitHub
8月 19, 2022
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #16213 from taosdata/fix/TD-18487
fix(query): restrict interp input type to numerical type only
上级
cd6c9def
823fbf9f
变更
34
显示空白变更内容
内联
并排
Showing
34 changed file
with
326 addition
and
297 deletion
+326
-297
source/libs/function/src/builtins.c
source/libs/function/src/builtins.c
+10
-4
tests/script/tsim/alter/cached_schema_after_alter.sim
tests/script/tsim/alter/cached_schema_after_alter.sim
+18
-18
tests/script/tsim/alter/dnode.sim
tests/script/tsim/alter/dnode.sim
+2
-2
tests/script/tsim/alter/table.sim
tests/script/tsim/alter/table.sim
+1
-1
tests/script/tsim/bnode/basic1.sim
tests/script/tsim/bnode/basic1.sim
+23
-23
tests/script/tsim/compress/commitlog.sim
tests/script/tsim/compress/commitlog.sim
+10
-10
tests/script/tsim/compress/compress.sim
tests/script/tsim/compress/compress.sim
+10
-10
tests/script/tsim/compress/compress2.sim
tests/script/tsim/compress/compress2.sim
+10
-10
tests/script/tsim/compress/uncompress.sim
tests/script/tsim/compress/uncompress.sim
+10
-10
tests/script/tsim/db/alter_option.sim
tests/script/tsim/db/alter_option.sim
+17
-17
tests/script/tsim/db/alter_replica_13.sim
tests/script/tsim/db/alter_replica_13.sim
+5
-5
tests/script/tsim/db/alter_replica_31.sim
tests/script/tsim/db/alter_replica_31.sim
+5
-5
tests/script/tsim/db/back_insert.sim
tests/script/tsim/db/back_insert.sim
+5
-5
tests/script/tsim/db/basic1.sim
tests/script/tsim/db/basic1.sim
+12
-12
tests/script/tsim/db/basic2.sim
tests/script/tsim/db/basic2.sim
+4
-4
tests/script/tsim/db/basic3.sim
tests/script/tsim/db/basic3.sim
+4
-4
tests/script/tsim/db/basic4.sim
tests/script/tsim/db/basic4.sim
+27
-27
tests/script/tsim/db/basic5.sim
tests/script/tsim/db/basic5.sim
+4
-4
tests/script/tsim/db/basic6.sim
tests/script/tsim/db/basic6.sim
+35
-35
tests/script/tsim/db/commit.sim
tests/script/tsim/db/commit.sim
+4
-4
tests/script/tsim/db/delete_reuse1.sim
tests/script/tsim/db/delete_reuse1.sim
+8
-8
tests/script/tsim/db/delete_reuse2.sim
tests/script/tsim/db/delete_reuse2.sim
+12
-12
tests/script/tsim/db/delete_reusevnode.sim
tests/script/tsim/db/delete_reusevnode.sim
+5
-5
tests/script/tsim/db/delete_reusevnode2.sim
tests/script/tsim/db/delete_reusevnode2.sim
+1
-1
tests/script/tsim/db/delete_writing1.sim
tests/script/tsim/db/delete_writing1.sim
+6
-6
tests/script/tsim/db/delete_writing2.sim
tests/script/tsim/db/delete_writing2.sim
+8
-8
tests/script/tsim/db/dropdnodes.sim
tests/script/tsim/db/dropdnodes.sim
+8
-8
tests/script/tsim/db/keep.sim
tests/script/tsim/db/keep.sim
+8
-8
tests/script/tsim/db/len.sim
tests/script/tsim/db/len.sim
+12
-12
tests/script/tsim/db/repeat.sim
tests/script/tsim/db/repeat.sim
+1
-1
tests/script/tsim/db/show_create_db.sim
tests/script/tsim/db/show_create_db.sim
+4
-4
tests/script/tsim/db/show_create_table.sim
tests/script/tsim/db/show_create_table.sim
+12
-12
tests/script/tsim/db/tables.sim
tests/script/tsim/db/tables.sim
+2
-2
tests/system-test/2-query/interp.py
tests/system-test/2-query/interp.py
+23
-0
未找到文件。
source/libs/function/src/builtins.c
浏览文件 @
fdb94e3d
...
@@ -1503,11 +1503,17 @@ static int32_t translateInterp(SFunctionNode* pFunc, char* pErrBuf, int32_t len)
...
@@ -1503,11 +1503,17 @@ static int32_t translateInterp(SFunctionNode* pFunc, char* pErrBuf, int32_t len)
return
invaildFuncParaNumErrMsg
(
pErrBuf
,
len
,
pFunc
->
functionName
);
return
invaildFuncParaNumErrMsg
(
pErrBuf
,
len
,
pFunc
->
functionName
);
}
}
uint8_t
nodeType
=
nodeType
(
nodesListGetNode
(
pFunc
->
pParameterList
,
0
));
uint8_t
paraType
=
((
SExprNode
*
)
nodesListGetNode
(
pFunc
->
pParameterList
,
0
))
->
resType
.
type
;
if
(
!
IS_NUMERIC_TYPE
(
paraType
)
||
QUERY_NODE_VALUE
==
nodeType
)
{
return
invaildFuncParaTypeErrMsg
(
pErrBuf
,
len
,
pFunc
->
functionName
);
}
if
(
3
<=
numOfParams
)
{
if
(
3
<=
numOfParams
)
{
int64_t
timeVal
[
2
]
=
{
0
};
int64_t
timeVal
[
2
]
=
{
0
};
for
(
int32_t
i
=
1
;
i
<
3
;
++
i
)
{
for
(
int32_t
i
=
1
;
i
<
3
;
++
i
)
{
uint8_t
nodeType
=
nodeType
(
nodesListGetNode
(
pFunc
->
pParameterList
,
i
));
nodeType
=
nodeType
(
nodesListGetNode
(
pFunc
->
pParameterList
,
i
));
uint8_t
paraType
=
((
SExprNode
*
)
nodesListGetNode
(
pFunc
->
pParameterList
,
i
))
->
resType
.
type
;
paraType
=
((
SExprNode
*
)
nodesListGetNode
(
pFunc
->
pParameterList
,
i
))
->
resType
.
type
;
if
(
!
IS_VAR_DATA_TYPE
(
paraType
)
||
QUERY_NODE_VALUE
!=
nodeType
)
{
if
(
!
IS_VAR_DATA_TYPE
(
paraType
)
||
QUERY_NODE_VALUE
!=
nodeType
)
{
return
invaildFuncParaTypeErrMsg
(
pErrBuf
,
len
,
pFunc
->
functionName
);
return
invaildFuncParaTypeErrMsg
(
pErrBuf
,
len
,
pFunc
->
functionName
);
}
}
...
@@ -1525,8 +1531,8 @@ static int32_t translateInterp(SFunctionNode* pFunc, char* pErrBuf, int32_t len)
...
@@ -1525,8 +1531,8 @@ static int32_t translateInterp(SFunctionNode* pFunc, char* pErrBuf, int32_t len)
}
}
if
(
4
==
numOfParams
)
{
if
(
4
==
numOfParams
)
{
uint8_t
nodeType
=
nodeType
(
nodesListGetNode
(
pFunc
->
pParameterList
,
3
));
nodeType
=
nodeType
(
nodesListGetNode
(
pFunc
->
pParameterList
,
3
));
uint8_t
paraType
=
((
SExprNode
*
)
nodesListGetNode
(
pFunc
->
pParameterList
,
3
))
->
resType
.
type
;
paraType
=
((
SExprNode
*
)
nodesListGetNode
(
pFunc
->
pParameterList
,
3
))
->
resType
.
type
;
if
(
!
IS_INTEGER_TYPE
(
paraType
)
||
QUERY_NODE_VALUE
!=
nodeType
)
{
if
(
!
IS_INTEGER_TYPE
(
paraType
)
||
QUERY_NODE_VALUE
!=
nodeType
)
{
return
invaildFuncParaTypeErrMsg
(
pErrBuf
,
len
,
pFunc
->
functionName
);
return
invaildFuncParaTypeErrMsg
(
pErrBuf
,
len
,
pFunc
->
functionName
);
}
}
...
...
tests/script/tsim/alter/cached_schema_after_alter.sim
浏览文件 @
fdb94e3d
tests/script/tsim/alter/dnode.sim
浏览文件 @
fdb94e3d
tests/script/tsim/alter/table.sim
浏览文件 @
fdb94e3d
tests/script/tsim/bnode/basic1.sim
浏览文件 @
fdb94e3d
tests/script/tsim/compress/commitlog.sim
浏览文件 @
fdb94e3d
tests/script/tsim/compress/compress.sim
浏览文件 @
fdb94e3d
tests/script/tsim/compress/compress2.sim
浏览文件 @
fdb94e3d
tests/script/tsim/compress/uncompress.sim
浏览文件 @
fdb94e3d
tests/script/tsim/db/alter_option.sim
浏览文件 @
fdb94e3d
tests/script/tsim/db/alter_replica_13.sim
浏览文件 @
fdb94e3d
tests/script/tsim/db/alter_replica_31.sim
浏览文件 @
fdb94e3d
tests/script/tsim/db/back_insert.sim
浏览文件 @
fdb94e3d
tests/script/tsim/db/basic1.sim
浏览文件 @
fdb94e3d
tests/script/tsim/db/basic2.sim
浏览文件 @
fdb94e3d
tests/script/tsim/db/basic3.sim
浏览文件 @
fdb94e3d
tests/script/tsim/db/basic4.sim
浏览文件 @
fdb94e3d
tests/script/tsim/db/basic5.sim
浏览文件 @
fdb94e3d
tests/script/tsim/db/basic6.sim
浏览文件 @
fdb94e3d
tests/script/tsim/db/commit.sim
浏览文件 @
fdb94e3d
tests/script/tsim/db/delete_reuse1.sim
浏览文件 @
fdb94e3d
tests/script/tsim/db/delete_reuse2.sim
浏览文件 @
fdb94e3d
tests/script/tsim/db/delete_reusevnode.sim
浏览文件 @
fdb94e3d
tests/script/tsim/db/delete_reusevnode2.sim
浏览文件 @
fdb94e3d
tests/script/tsim/db/delete_writing1.sim
浏览文件 @
fdb94e3d
tests/script/tsim/db/delete_writing2.sim
浏览文件 @
fdb94e3d
tests/script/tsim/db/dropdnodes.sim
浏览文件 @
fdb94e3d
tests/script/tsim/db/keep.sim
浏览文件 @
fdb94e3d
tests/script/tsim/db/len.sim
浏览文件 @
fdb94e3d
tests/script/tsim/db/repeat.sim
浏览文件 @
fdb94e3d
tests/script/tsim/db/show_create_db.sim
浏览文件 @
fdb94e3d
tests/script/tsim/db/show_create_table.sim
浏览文件 @
fdb94e3d
tests/script/tsim/db/tables.sim
浏览文件 @
fdb94e3d
tests/system-test/2-query/interp.py
浏览文件 @
fdb94e3d
...
@@ -551,6 +551,29 @@ class TDTestCase:
...
@@ -551,6 +551,29 @@ class TDTestCase:
tdSql
.
checkData
(
0
,
0
,
15
)
tdSql
.
checkData
(
0
,
0
,
15
)
tdSql
.
checkData
(
1
,
0
,
15
)
tdSql
.
checkData
(
1
,
0
,
15
)
tdLog
.
printNoPrefix
(
"==========step9:test error cases"
)
tdSql
.
error
(
f
"select interp(c0) from
{
dbname
}
.
{
tbname
}
"
)
tdSql
.
error
(
f
"select interp(c0) from
{
dbname
}
.
{
tbname
}
range('2020-02-10 00:00:05', '2020-02-15 00:00:05')"
)
tdSql
.
error
(
f
"select interp(c0) from
{
dbname
}
.
{
tbname
}
range('2020-02-10 00:00:05', '2020-02-15 00:00:05') every(1d)"
)
tdSql
.
error
(
f
"select interp(c0) from
{
dbname
}
.
{
tbname
}
range('2020-02-10 00:00:05', '2020-02-15 00:00:05') fill(null)"
)
tdSql
.
error
(
f
"select interp(c0) from
{
dbname
}
.
{
tbname
}
every(1s) fill(null)"
)
tdSql
.
error
(
f
"select interp(c0) from
{
dbname
}
.
{
tbname
}
where ts >= '2020-02-10 00:00:05' and ts <= '2020-02-15 00:00:05' every(1s) fill(null)"
)
# input can only be numerical types
tdSql
.
error
(
f
"select interp(ts) from
{
dbname
}
.
{
tbname
}
range('2020-02-10 00:00:05', '2020-02-15 00:00:05') every(1d) fill(null)"
)
tdSql
.
error
(
f
"select interp(c6) from
{
dbname
}
.
{
tbname
}
range('2020-02-10 00:00:05', '2020-02-15 00:00:05') every(1d) fill(null)"
)
tdSql
.
error
(
f
"select interp(c7) from
{
dbname
}
.
{
tbname
}
range('2020-02-10 00:00:05', '2020-02-15 00:00:05') every(1d) fill(null)"
)
tdSql
.
error
(
f
"select interp(c8) from
{
dbname
}
.
{
tbname
}
range('2020-02-10 00:00:05', '2020-02-15 00:00:05') every(1d) fill(null)"
)
# input can only be columns
tdSql
.
error
(
f
"select interp(1) from
{
dbname
}
.
{
tbname
}
range('2020-02-10 00:00:05', '2020-02-15 00:00:05') every(1d) fill(null)"
)
tdSql
.
error
(
f
"select interp(1.5) from
{
dbname
}
.
{
tbname
}
range('2020-02-10 00:00:05', '2020-02-15 00:00:05') every(1d) fill(null)"
)
tdSql
.
error
(
f
"select interp(true) from
{
dbname
}
.
{
tbname
}
range('2020-02-10 00:00:05', '2020-02-15 00:00:05') every(1d) fill(null)"
)
tdSql
.
error
(
f
"select interp(false) from
{
dbname
}
.
{
tbname
}
range('2020-02-10 00:00:05', '2020-02-15 00:00:05') every(1d) fill(null)"
)
tdSql
.
error
(
f
"select interp('abcd') from
{
dbname
}
.
{
tbname
}
range('2020-02-10 00:00:05', '2020-02-15 00:00:05') every(1d) fill(null)"
)
tdSql
.
error
(
f
"select interp('中文字符') from
{
dbname
}
.
{
tbname
}
range('2020-02-10 00:00:05', '2020-02-15 00:00:05') every(1d) fill(null)"
)
def
stop
(
self
):
def
stop
(
self
):
tdSql
.
close
()
tdSql
.
close
()
tdLog
.
success
(
f
"
{
__file__
}
successfully executed"
)
tdLog
.
success
(
f
"
{
__file__
}
successfully executed"
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录