This is an automated email from the ASF dual-hosted git repository. lingmiao pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push: new 0a36c34326 [feature](nereids) costAndEnforcerJob interim solution (#10468) 0a36c34326 is described below commit 0a36c34326beed2bcb8df73d805bdd3c9e39a1e6 Author: zhengshiJ <32082872+zhengs...@users.noreply.github.com> AuthorDate: Tue Jun 28 18:45:23 2022 +0800 [feature](nereids) costAndEnforcerJob interim solution (#10468) In order to complete the ssb test, temporarily increase the implementation of costAndEnforcerJob, and create an OptimizeGroupjob for all children of the group. --- .../doris/nereids/jobs/cascades/CostAndEnforcerJob.java | 11 ++++++++++- .../src/main/java/org/apache/doris/nereids/memo/Group.java | 12 +++++++++++- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/cascades/CostAndEnforcerJob.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/cascades/CostAndEnforcerJob.java index a739f70e1d..e7f71b3f3e 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/cascades/CostAndEnforcerJob.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/cascades/CostAndEnforcerJob.java @@ -20,6 +20,7 @@ package org.apache.doris.nereids.jobs.cascades; import org.apache.doris.nereids.PlannerContext; import org.apache.doris.nereids.jobs.Job; import org.apache.doris.nereids.jobs.JobType; +import org.apache.doris.nereids.memo.Group; import org.apache.doris.nereids.memo.GroupExpression; import org.apache.doris.nereids.trees.plans.Plan; @@ -36,6 +37,14 @@ public class CostAndEnforcerJob extends Job<Plan> { @Override public void execute() { - // TODO + for (Group childGroup : groupExpression.children()) { + if (!childGroup.isHasCost()) { + // TODO: interim solution + pushTask(new CostAndEnforcerJob(this.groupExpression, context)); + pushTask(new OptimizeGroupJob(childGroup, context)); + childGroup.setHasCost(true); + return; + } + } } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/memo/Group.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/memo/Group.java index 929d8c86fe..bff2f8cd7d 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/memo/Group.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/memo/Group.java @@ -27,6 +27,7 @@ import org.apache.doris.nereids.trees.plans.physical.PhysicalPlan; import com.google.common.base.Preconditions; import com.google.common.collect.Lists; +import com.google.common.collect.Maps; import java.util.List; import java.util.Map; @@ -45,9 +46,10 @@ public class Group { // Map of cost lower bounds // Map required plan props to cost lower bound of corresponding plan - private Map<PhysicalProperties, Pair<Double, GroupExpression>> lowestCostPlans; + private Map<PhysicalProperties, Pair<Double, GroupExpression>> lowestCostPlans = Maps.newHashMap(); private double costLowerBound = -1; private boolean isExplored = false; + private boolean hasCost = false; /** * Constructor for Group. @@ -68,6 +70,14 @@ public class Group { return groupId; } + public boolean isHasCost() { + return hasCost; + } + + public void setHasCost(boolean hasCost) { + this.hasCost = hasCost; + } + /** * Add new {@link GroupExpression} into this group. * --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org