Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
0c744e86
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看板
未验证
提交
0c744e86
编写于
5月 12, 2023
作者:
D
dapan1121
提交者:
GitHub
5月 12, 2023
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #21258 from taosdata/szhou/fix-td24084
fix: bypass projection pruning if union set op and subquery
上级
d33d63fc
d8a7e140
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
28 addition
and
0 deletion
+28
-0
source/libs/parser/src/parCalcConst.c
source/libs/parser/src/parCalcConst.c
+3
-0
source/libs/planner/src/planner.c
source/libs/planner/src/planner.c
+8
-0
tests/script/tsim/query/unionall_as_table.sim
tests/script/tsim/query/unionall_as_table.sim
+17
-0
未找到文件。
source/libs/parser/src/parCalcConst.c
浏览文件 @
0c744e86
...
...
@@ -388,6 +388,9 @@ static bool isSetUselessCol(SSetOperator* pSetOp, int32_t index, SExprNode* pPro
}
static
int32_t
calcConstSetOpProjections
(
SCalcConstContext
*
pCxt
,
SSetOperator
*
pSetOp
,
bool
subquery
)
{
if
(
subquery
&&
pSetOp
->
opType
==
SET_OP_TYPE_UNION
)
{
return
TSDB_CODE_SUCCESS
;
}
int32_t
index
=
0
;
SNode
*
pProj
=
NULL
;
WHERE_EACH
(
pProj
,
pSetOp
->
pProjectionList
)
{
...
...
source/libs/planner/src/planner.c
浏览文件 @
0c744e86
...
...
@@ -19,6 +19,14 @@
#include "scalar.h"
#include "tglobal.h"
static
void
debugPrintNode
(
SNode
*
pNode
)
{
char
*
pStr
=
NULL
;
nodesNodeToString
(
pNode
,
false
,
&
pStr
,
NULL
);
printf
(
"%s
\n
"
,
pStr
);
taosMemoryFree
(
pStr
);
return
;
}
static
void
dumpQueryPlan
(
SQueryPlan
*
pPlan
)
{
if
(
!
tsQueryPlannerTrace
)
{
return
;
...
...
tests/script/tsim/query/unionall_as_table.sim
浏览文件 @
0c744e86
...
...
@@ -25,4 +25,21 @@ if $data05 != @0021001@ then
return -1
endi
sql create table st (ts timestamp, f int) tags (t int);
sql insert into ct1 using st tags(1) values(now, 1)(now+1s, 2)
sql insert into ct2 using st tags(2) values(now+2s, 3)(now+3s, 4)
sql select count(*) from (select * from ct1 union all select * from ct2)
if $rows != 1 then
return -1
endi
if $data00 != 4 then
return -1
endi
sql select count(*) from (select * from ct1 union select * from ct2)
if $rows != 1 then
return -1
endi
if $data00 != 4 then
return -1
endi
system sh/exec.sh -n dnode1 -s stop -x SIGINT
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录