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

Reply via email to