-
Notifications
You must be signed in to change notification settings - Fork 3.7k
[fix](nerieds) avoid redundant enumeration same LogicalProject in memo #38317
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
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 |
| topProject.getProjects().forEach(expr -> topUsedExprIds.addAll(expr.getInputSlotExprIds())); | ||
| 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 |
| 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.