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 <[email protected]>
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: [email protected]
For additional commands, e-mail: [email protected]