Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
34e0a8df
TDengine
项目概览
taosdata
/
TDengine
大约 1 年 前同步成功
通知
1184
Star
22015
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看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
34e0a8df
编写于
5月 06, 2023
作者:
D
dapan1121
提交者:
GitHub
5月 06, 2023
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #21191 from taosdata/fix/TD-23997
fix: projection merge issue
上级
510dbc24
1f25cc57
变更
2
显示空白变更内容
内联
并排
Showing
2 changed file
with
17 addition
and
3 deletion
+17
-3
source/libs/planner/src/planLogicCreater.c
source/libs/planner/src/planLogicCreater.c
+1
-1
source/libs/planner/src/planOptimizer.c
source/libs/planner/src/planOptimizer.c
+16
-2
未找到文件。
source/libs/planner/src/planLogicCreater.c
浏览文件 @
34e0a8df
...
...
@@ -1070,7 +1070,7 @@ static int32_t createProjectLogicNode(SLogicPlanContext* pCxt, SSelectStmt* pSel
TSWAP
(
pProject
->
node
.
pLimit
,
pSelect
->
pLimit
);
TSWAP
(
pProject
->
node
.
pSlimit
,
pSelect
->
pSlimit
);
pProject
->
ignoreGroupId
=
pSelect
->
isSubquery
?
true
:
(
NULL
==
pSelect
->
pPartitionByList
);
pProject
->
ignoreGroupId
=
(
pSelect
->
isSubquery
&&
NULL
==
pProject
->
node
.
pLimit
&&
NULL
==
pProject
->
node
.
pSlimit
)
?
true
:
(
NULL
==
pSelect
->
pPartitionByList
);
pProject
->
node
.
groupAction
=
(
!
pSelect
->
isSubquery
&&
pCxt
->
pPlanCxt
->
streamQuery
)
?
GROUP_ACTION_KEEP
:
GROUP_ACTION_CLEAR
;
pProject
->
node
.
requireDataOrder
=
DATA_ORDER_LEVEL_NONE
;
...
...
source/libs/planner/src/planOptimizer.c
浏览文件 @
34e0a8df
...
...
@@ -2351,6 +2351,17 @@ static EDealRes mergeProjectionsExpr(SNode** pNode, void* pContext) {
return
DEAL_RES_CONTINUE
;
}
static
int32_t
mergeProjectionsLogicNode
(
SLogicNode
*
pDstNode
,
SLogicNode
*
pSrcNode
)
{
SProjectLogicNode
*
pDstPro
=
(
SProjectLogicNode
*
)
pDstNode
;
SProjectLogicNode
*
pSrcPro
=
(
SProjectLogicNode
*
)
pSrcNode
;
if
(
!
pSrcPro
->
ignoreGroupId
)
{
pDstPro
->
ignoreGroupId
=
pSrcPro
->
ignoreGroupId
;
}
return
TSDB_CODE_SUCCESS
;
}
static
int32_t
mergeProjectsOptimizeImpl
(
SOptimizeContext
*
pCxt
,
SLogicSubplan
*
pLogicSubplan
,
SLogicNode
*
pSelfNode
)
{
SLogicNode
*
pChild
=
(
SLogicNode
*
)
nodesListGetNode
(
pSelfNode
->
pChildren
,
0
);
...
...
@@ -2360,8 +2371,11 @@ static int32_t mergeProjectsOptimizeImpl(SOptimizeContext* pCxt, SLogicSubplan*
if
(
TSDB_CODE_SUCCESS
==
code
)
{
if
(
1
==
LIST_LENGTH
(
pChild
->
pChildren
))
{
code
=
mergeProjectionsLogicNode
(
pSelfNode
,
pChild
);
if
(
TSDB_CODE_SUCCESS
==
code
)
{
SLogicNode
*
pGrandChild
=
(
SLogicNode
*
)
nodesListGetNode
(
pChild
->
pChildren
,
0
);
code
=
replaceLogicNode
(
pLogicSubplan
,
pChild
,
pGrandChild
);
}
}
else
{
// no grand child
NODES_CLEAR_LIST
(
pSelfNode
->
pChildren
);
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录