-
Notifications
You must be signed in to change notification settings - Fork 3.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[fix](nerieds) avoid redundant enumeration same LogicalProject in memo #38317
Conversation
Thank you for your contribution to Apache Doris. Since 2024-03-18, the Document has been moved to doris-website. |
run buildall |
TPC-H: Total hot run time: 39443 ms
|
TPC-DS: Total hot run time: 171186 ms
|
ClickBench: Total hot run time: 30.92 s
|
5749ce5
to
99517db
Compare
run buildall |
99517db
to
49b2ee9
Compare
run buildall |
TPC-H: Total hot run time: 39914 ms
|
TPC-DS: Total hot run time: 170295 ms
|
ClickBench: Total hot run time: 30.29 s
|
49b2ee9
to
7cd492a
Compare
run buildall |
960d886
to
2c32bd4
Compare
2c32bd4
to
eea4e2e
Compare
run buildall |
@@ -98,7 +98,7 @@ public Rule build() { | |||
newTopHashConjuncts.forEach(expr -> topUsedExprIds.addAll(expr.getInputSlotExprIds())); | |||
newTopOtherConjuncts.forEach(expr -> topUsedExprIds.addAll(expr.getInputSlotExprIds())); | |||
Plan left = CBOUtils.newProject(topUsedExprIds, newBottomJoin); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
why not apply this for both sides? Means left side's new project is a must?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
we need a project between join and join
TPC-H: Total hot run time: 40687 ms
|
TPC-DS: Total hot run time: 170460 ms
|
ClickBench: Total hot run time: 31.7 s
|
run cloud_p0 |
run cloud_p0 |
@@ -74,6 +74,11 @@ public final void execute() throws AnalysisException { | |||
GroupExpressionMatching groupExpressionMatching | |||
= new GroupExpressionMatching(rule.getPattern(), groupExpression); | |||
for (Plan plan : groupExpressionMatching) { | |||
if (rule.isExploration() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
if the checking is moved here, can the logic in getJoinRules be removed?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
no, in OptimizeGroupExpressionJob we could avoid generate ApplyRuleJob at all. so remove it will generate many useless job to slow down planning
PR approved by anyone and no changes requested. |
PR approved by at least one committer and no changes requested. |
#38317) 1. use set to compare project 2. use map to store enforcer 3. avoid genarate useless project under bottom join when do join reorder
apache#38317) 1. use set to compare project 2. use map to store enforcer 3. avoid genarate useless project under bottom join when do join reorder
No description provided.