diff --git a/.github/workflows/labeler/scope-label-conf.yml b/.github/workflows/labeler/scope-label-conf.yml index 0e798240ba7b23..c547094a935445 100644 --- a/.github/workflows/labeler/scope-label-conf.yml +++ b/.github/workflows/labeler/scope-label-conf.yml @@ -31,6 +31,9 @@ kind/test: area/vectorization: - be/src/vec/**/* +area/nereids: + - fe/fe-core/src/main/java/org/apache/doris/nereids/**/* + area/planner: - fe/fe-core/src/main/java/org/apache/doris/planner/**/* - fe/fe-core/src/main/java/org/apache/doris/analysis/**/* diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/Job.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/Job.java index dacafdfafab6b5..bb38cf4943dcef 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/Job.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/Job.java @@ -19,7 +19,7 @@ import org.apache.doris.common.AnalysisException; import org.apache.doris.nereids.PlannerContext; -import org.apache.doris.nereids.memo.PlanReference; +import org.apache.doris.nereids.memo.GroupExpression; import org.apache.doris.nereids.rules.Rule; import org.apache.doris.nereids.rules.RuleSet; import org.apache.doris.nereids.trees.plans.Plan; @@ -46,7 +46,7 @@ public RuleSet getRuleSet() { return context.getOptimizerContext().getRuleSet(); } - public void prunedInvalidRules(PlanReference planReference, List> candidateRules) { + public void prunedInvalidRules(GroupExpression groupExpression, List> candidateRules) { } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/cascades/ApplyRuleJob.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/cascades/ApplyRuleJob.java index 264f9030c6b5bd..75ba54a9079aa4 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/cascades/ApplyRuleJob.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/cascades/ApplyRuleJob.java @@ -21,7 +21,7 @@ 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.PlanReference; +import org.apache.doris.nereids.memo.GroupExpression; import org.apache.doris.nereids.pattern.PatternMatching; import org.apache.doris.nereids.rules.Rule; import org.apache.doris.nereids.trees.plans.Plan; @@ -30,30 +30,30 @@ import java.util.List; /** - * Job to apply rule on {@link PlanReference}. + * Job to apply rule on {@link GroupExpression}. */ public class ApplyRuleJob extends Job { - private final PlanReference planReference; + private final GroupExpression groupExpression; private final Rule rule; private final boolean exploredOnly; /** * Constructor of ApplyRuleJob. * - * @param planReference apply rule on this {@link PlanReference} + * @param groupExpression apply rule on this {@link GroupExpression} * @param rule rule to be applied * @param context context of optimization */ - public ApplyRuleJob(PlanReference planReference, Rule rule, PlannerContext context) { + public ApplyRuleJob(GroupExpression groupExpression, Rule rule, PlannerContext context) { super(JobType.APPLY_RULE, context); - this.planReference = planReference; + this.groupExpression = groupExpression; this.rule = rule; this.exploredOnly = false; } @Override public void execute() throws AnalysisException { - if (planReference.hasExplored(rule)) { + if (groupExpression.hasExplored(rule)) { return; } @@ -65,20 +65,20 @@ public void execute() throws AnalysisException { } List newPlanList = rule.transform(plan, context); for (Plan newPlan : newPlanList) { - PlanReference newReference = context.getOptimizerContext().getMemo() - .newPlanReference(newPlan, planReference.getParent()); + GroupExpression newGroupExpression = context.getOptimizerContext().getMemo() + .newGroupExpression(newPlan, groupExpression.getParent()); // TODO need to check return is a new Reference, other wise will be into a dead loop if (newPlan instanceof LogicalPlan) { - pushTask(new DeriveStatsJob(newReference, context)); + pushTask(new DeriveStatsJob(newGroupExpression, context)); if (exploredOnly) { - pushTask(new ExplorePlanJob(newReference, context)); + pushTask(new ExplorePlanJob(newGroupExpression, context)); } - pushTask(new OptimizePlanJob(newReference, context)); + pushTask(new OptimizePlanJob(newGroupExpression, context)); } else { - pushTask(new CostAndEnforcerJob(newReference, context)); + pushTask(new CostAndEnforcerJob(newGroupExpression, context)); } } } - planReference.setExplored(rule); + groupExpression.setExplored(rule); } } 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 2711f4679a911b..73d299220dc473 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,17 +20,17 @@ 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.PlanReference; +import org.apache.doris.nereids.memo.GroupExpression; /** * Job to compute cost and add enforcer. */ public class CostAndEnforcerJob extends Job { - private final PlanReference planReference; + private final GroupExpression groupExpression; - public CostAndEnforcerJob(PlanReference planReference, PlannerContext context) { + public CostAndEnforcerJob(GroupExpression groupExpression, PlannerContext context) { super(JobType.OPTIMIZE_CHILDREN, context); - this.planReference = planReference; + this.groupExpression = groupExpression; } @Override diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/cascades/DeriveStatsJob.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/cascades/DeriveStatsJob.java index 59bd9744a2652d..716141e3ec4239 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/cascades/DeriveStatsJob.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/cascades/DeriveStatsJob.java @@ -21,24 +21,24 @@ 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.PlanReference; +import org.apache.doris.nereids.memo.GroupExpression; /** - * Job to derive stats for {@link PlanReference} in {@link org.apache.doris.nereids.memo.Memo}. + * Job to derive stats for {@link GroupExpression} in {@link org.apache.doris.nereids.memo.Memo}. */ public class DeriveStatsJob extends Job { - private final PlanReference planReference; + private final GroupExpression groupExpression; private boolean deriveChildren; /** * Constructor for DeriveStatsJob. * - * @param planReference Derive stats on this {@link PlanReference} + * @param groupExpression Derive stats on this {@link GroupExpression} * @param context context of optimization */ - public DeriveStatsJob(PlanReference planReference, PlannerContext context) { + public DeriveStatsJob(GroupExpression groupExpression, PlannerContext context) { super(JobType.DERIVE_STATS, context); - this.planReference = planReference; + this.groupExpression = groupExpression; this.deriveChildren = false; } @@ -49,7 +49,7 @@ public DeriveStatsJob(PlanReference planReference, PlannerContext context) { */ public DeriveStatsJob(DeriveStatsJob other) { super(JobType.DERIVE_STATS, other.context); - this.planReference = other.planReference; + this.groupExpression = other.groupExpression; this.deriveChildren = other.deriveChildren; } @@ -58,14 +58,14 @@ public void execute() { if (!deriveChildren) { deriveChildren = true; pushTask(new DeriveStatsJob(this)); - for (Group childSet : planReference.getChildren()) { + for (Group childSet : groupExpression.getChildren()) { if (!childSet.getLogicalPlanList().isEmpty()) { pushTask(new DeriveStatsJob(childSet.getLogicalPlanList().get(0), context)); } } } else { // TODO: derive stat here - planReference.setStatDerived(true); + groupExpression.setStatDerived(true); } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/cascades/ExploreGroupJob.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/cascades/ExploreGroupJob.java index 2bac5493f09926..447f8fafc76f35 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/cascades/ExploreGroupJob.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/cascades/ExploreGroupJob.java @@ -21,7 +21,7 @@ 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.PlanReference; +import org.apache.doris.nereids.memo.GroupExpression; /** * Job to explore {@link Group} in {@link org.apache.doris.nereids.memo.Memo}. @@ -45,8 +45,8 @@ public void execute() { if (group.isExplored()) { return; } - for (PlanReference planReference : group.getLogicalPlanList()) { - pushTask(new ExplorePlanJob(planReference, context)); + for (GroupExpression groupExpression : group.getLogicalPlanList()) { + pushTask(new ExplorePlanJob(groupExpression, context)); } group.setExplored(true); } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/cascades/ExplorePlanJob.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/cascades/ExplorePlanJob.java index 59439674166bc4..a825b4edf29c8c 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/cascades/ExplorePlanJob.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/cascades/ExplorePlanJob.java @@ -21,7 +21,7 @@ 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.PlanReference; +import org.apache.doris.nereids.memo.GroupExpression; import org.apache.doris.nereids.pattern.Pattern; import org.apache.doris.nereids.rules.Rule; import org.apache.doris.nereids.trees.plans.Plan; @@ -30,34 +30,34 @@ import java.util.List; /** - * Job to explore {@link PlanReference} in {@link org.apache.doris.nereids.memo.Memo}. + * Job to explore {@link GroupExpression} in {@link org.apache.doris.nereids.memo.Memo}. */ public class ExplorePlanJob extends Job { - private final PlanReference planReference; + private final GroupExpression groupExpression; /** * Constructor for ExplorePlanJob. * - * @param planReference {@link PlanReference} to be explored + * @param groupExpression {@link GroupExpression} to be explored * @param context context of optimization */ - public ExplorePlanJob(PlanReference planReference, PlannerContext context) { + public ExplorePlanJob(GroupExpression groupExpression, PlannerContext context) { super(JobType.EXPLORE_PLAN, context); - this.planReference = planReference; + this.groupExpression = groupExpression; } @Override public void execute() { List> explorationRules = getRuleSet().getExplorationRules(); - prunedInvalidRules(planReference, explorationRules); + prunedInvalidRules(groupExpression, explorationRules); explorationRules.sort(Comparator.comparingInt(o -> o.getRulePromise().promise())); for (Rule rule : explorationRules) { - pushTask(new ApplyRuleJob(planReference, rule, context)); + pushTask(new ApplyRuleJob(groupExpression, rule, context)); for (int i = 0; i < rule.getPattern().children().size(); ++i) { Pattern childPattern = rule.getPattern().child(i); if (childPattern.arity() > 0) { - Group childSet = planReference.getChildren().get(i); + Group childSet = groupExpression.getChildren().get(i); pushTask(new ExploreGroupJob(childSet, context)); } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/cascades/OptimizeGroupJob.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/cascades/OptimizeGroupJob.java index 1b2676c8320e9d..78a07becbbdb66 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/cascades/OptimizeGroupJob.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/cascades/OptimizeGroupJob.java @@ -21,7 +21,7 @@ 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.PlanReference; +import org.apache.doris.nereids.memo.GroupExpression; /** * Job to optimize {@link Group} in {@link org.apache.doris.nereids.memo.Memo}. @@ -41,12 +41,12 @@ public void execute() { return; } if (!group.isExplored()) { - for (PlanReference logicalPlanReference : group.getLogicalPlanList()) { - context.getOptimizerContext().pushTask(new OptimizePlanJob(logicalPlanReference, context)); + for (GroupExpression logicalGroupExpression : group.getLogicalPlanList()) { + context.getOptimizerContext().pushTask(new OptimizePlanJob(logicalGroupExpression, context)); } } - for (PlanReference physicalPlanReference : group.getPhysicalPlanList()) { - context.getOptimizerContext().pushTask(new CostAndEnforcerJob(physicalPlanReference, context)); + for (GroupExpression physicalGroupExpression : group.getPhysicalPlanList()) { + context.getOptimizerContext().pushTask(new CostAndEnforcerJob(physicalGroupExpression, context)); } group.setExplored(true); } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/cascades/OptimizePlanJob.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/cascades/OptimizePlanJob.java index 4bb7964997e4f9..6cbe8019d1517e 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/cascades/OptimizePlanJob.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/cascades/OptimizePlanJob.java @@ -21,7 +21,7 @@ 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.PlanReference; +import org.apache.doris.nereids.memo.GroupExpression; import org.apache.doris.nereids.pattern.Pattern; import org.apache.doris.nereids.rules.Rule; import org.apache.doris.nereids.trees.plans.Plan; @@ -34,11 +34,11 @@ * Job to optimize {@link org.apache.doris.nereids.trees.plans.Plan} in {@link org.apache.doris.nereids.memo.Memo}. */ public class OptimizePlanJob extends Job { - private final PlanReference planReference; + private final GroupExpression groupExpression; - public OptimizePlanJob(PlanReference planReference, PlannerContext context) { + public OptimizePlanJob(GroupExpression groupExpression, PlannerContext context) { super(JobType.OPTIMIZE_PLAN, context); - this.planReference = planReference; + this.groupExpression = groupExpression; } @Override @@ -46,21 +46,21 @@ public void execute() { List> validRules = new ArrayList<>(); List> explorationRules = getRuleSet().getExplorationRules(); List> implementationRules = getRuleSet().getImplementationRules(); - prunedInvalidRules(planReference, explorationRules); - prunedInvalidRules(planReference, implementationRules); + prunedInvalidRules(groupExpression, explorationRules); + prunedInvalidRules(groupExpression, implementationRules); validRules.addAll(explorationRules); validRules.addAll(implementationRules); validRules.sort(Comparator.comparingInt(o -> o.getRulePromise().promise())); for (Rule rule : validRules) { - pushTask(new ApplyRuleJob(planReference, rule, context)); + pushTask(new ApplyRuleJob(groupExpression, rule, context)); // If child_pattern has any more children (i.e non-leaf), then we will explore the // child before applying the rule. (assumes task pool is effectively a stack) for (int i = 0; i < rule.getPattern().children().size(); ++i) { Pattern childPattern = rule.getPattern().child(i); if (childPattern.arity() > 0) { - Group childSet = planReference.getChildren().get(i); + Group childSet = groupExpression.getChildren().get(i); pushTask(new ExploreGroupJob(childSet, context)); } } 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 8a4555548ec800..b12751567abf03 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 @@ -36,32 +36,32 @@ public class Group { private final GroupId groupId = GroupId.newPlanSetId(); - private final List logicalPlanList = Lists.newArrayList(); - private final List physicalPlanList = Lists.newArrayList(); + private final List logicalPlanList = Lists.newArrayList(); + private final List physicalPlanList = Lists.newArrayList(); private final LogicalProperties logicalProperties; - private Map> lowestCostPlans; + private Map> lowestCostPlans; private double costLowerBound = -1; private boolean isExplored = false; /** * Constructor for Group. * - * @param planReference first {@link PlanReference} in this Group + * @param groupExpression first {@link GroupExpression} in this Group */ - public Group(PlanReference planReference) { - if (planReference.getPlan() instanceof LogicalPlan) { - this.logicalPlanList.add(planReference); + public Group(GroupExpression groupExpression) { + if (groupExpression.getPlan() instanceof LogicalPlan) { + this.logicalPlanList.add(groupExpression); } else { - this.physicalPlanList.add(planReference); + this.physicalPlanList.add(groupExpression); } logicalProperties = new LogicalProperties(); try { - logicalProperties.setOutput(planReference.getPlan().getOutput()); + logicalProperties.setOutput(groupExpression.getPlan().getOutput()); } catch (UnboundException e) { throw new RuntimeException(e); } - planReference.setParent(this); + groupExpression.setParent(this); } public GroupId getGroupId() { @@ -69,18 +69,18 @@ public GroupId getGroupId() { } /** - * Add new {@link PlanReference} into this group. + * Add new {@link GroupExpression} into this group. * - * @param planReference {@link PlanReference} to be added - * @return added {@link PlanReference} + * @param groupExpression {@link GroupExpression} to be added + * @return added {@link GroupExpression} */ - public PlanReference addPlanReference(PlanReference planReference) { - if (planReference.getPlan() instanceof LogicalPlan) { - logicalPlanList.add(planReference); + public GroupExpression addGroupExpression(GroupExpression groupExpression) { + if (groupExpression.getPlan() instanceof LogicalPlan) { + logicalPlanList.add(groupExpression); } else { - physicalPlanList.add(planReference); + physicalPlanList.add(groupExpression); } - return planReference; + return groupExpression; } public double getCostLowerBound() { @@ -91,11 +91,11 @@ public void setCostLowerBound(double costLowerBound) { this.costLowerBound = costLowerBound; } - public List getLogicalPlanList() { + public List getLogicalPlanList() { return logicalPlanList; } - public List getPhysicalPlanList() { + public List getPhysicalPlanList() { return physicalPlanList; } @@ -116,9 +116,9 @@ public void setExplored(boolean explored) { * which meeting the physical property constraints in this Group. * * @param physicalProperties the physical property constraints - * @return {@link Optional} of cost and {@link PlanReference} of physical plan pair. + * @return {@link Optional} of cost and {@link GroupExpression} of physical plan pair. */ - public Optional> getLowestCostPlan(PhysicalProperties physicalProperties) { + public Optional> getLowestCostPlan(PhysicalProperties physicalProperties) { if (physicalProperties == null || CollectionUtils.isEmpty(lowestCostPlans)) { return Optional.empty(); } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/memo/PlanReference.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/memo/GroupExpression.java similarity index 92% rename from fe/fe-core/src/main/java/org/apache/doris/nereids/memo/PlanReference.java rename to fe/fe-core/src/main/java/org/apache/doris/nereids/memo/GroupExpression.java index 2b3b79e0387a9c..dd30aec39a2bfd 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/memo/PlanReference.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/memo/GroupExpression.java @@ -29,29 +29,28 @@ /** * Representation for group expression in cascades optimizer. */ -public class PlanReference { +public class GroupExpression { private Group parent; private List children; private final Plan plan; private final BitSet ruleMasks; private boolean statDerived; - public PlanReference(Plan plan) { + public GroupExpression(Plan plan) { this(plan, Lists.newArrayList()); } /** - * Constructor for PlanReference. + * Constructor for GroupExpression. * * @param plan {@link Plan} to reference * @param children children groups in memo */ - public PlanReference(Plan plan, List children) { + public GroupExpression(Plan plan, List children) { this.plan = plan; this.children = children; this.ruleMasks = new BitSet(RuleType.SENTINEL.ordinal()); this.statDerived = false; - plan.setPlanReference(this); } public void addChild(Group child) { diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/memo/Memo.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/memo/Memo.java index a5ce5432bbdee8..0741f7f439b1d5 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/memo/Memo.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/memo/Memo.java @@ -21,19 +21,21 @@ import org.apache.doris.nereids.trees.plans.logical.LogicalPlan; import com.google.common.collect.Lists; +import com.google.common.collect.Sets; import java.util.List; +import java.util.Set; /** * Representation for memo in cascades optimizer. */ public class Memo { private final List groups = Lists.newArrayList(); - private final List planReferences = Lists.newArrayList(); + private final Set groupExpressions = Sets.newHashSet(); private Group rootSet; public void initialize(LogicalPlan plan) { - rootSet = newPlanReference(plan, null).getParent(); + rootSet = newGroupExpression(plan, null).getParent(); } public Group getRootSet() { @@ -43,31 +45,37 @@ public Group getRootSet() { /** * Add plan to Memo. * - * @param plan {@link Plan} to be added + * @param plan {@link Plan} to be added * @param target target group to add plan. null to generate new Group * @return Reference of plan in Memo */ // TODO: need to merge PlanRefSet if new PlanRef is same with some one already in memo - public PlanReference newPlanReference(Plan plan, Group target) { - if (plan.getPlanReference() != null) { - return plan.getPlanReference(); - } - List childReferences = Lists.newArrayList(); + public GroupExpression newGroupExpression(Plan plan, Group target) { + List childGroupExpr = Lists.newArrayList(); for (Plan childrenPlan : plan.children()) { - childReferences.add(newPlanReference(childrenPlan, null)); + childGroupExpr.add(newGroupExpression(childrenPlan, null)); + } + GroupExpression newGroupExpression = new GroupExpression(plan); + for (GroupExpression childReference : childGroupExpr) { + newGroupExpression.addChild(childReference.getParent()); } - PlanReference newPlanReference = new PlanReference(plan); - planReferences.add(newPlanReference); - for (PlanReference childReference : childReferences) { - newPlanReference.addChild(childReference.getParent()); + + return insertGroupExpression(newGroupExpression, target); + } + + private GroupExpression insertGroupExpression(GroupExpression groupExpression, Group target) { + if (groupExpressions.contains(groupExpression)) { + return groupExpression; } + groupExpressions.add(groupExpression); + if (target != null) { - target.addPlanReference(newPlanReference); + target.addGroupExpression(groupExpression); } else { - Group group = new Group(newPlanReference); + Group group = new Group(groupExpression); groups.add(group); } - return newPlanReference; + return groupExpression; } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/AbstractPlan.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/AbstractPlan.java index a16ff1b4f6f2cc..5ce38b34e71412 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/AbstractPlan.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/AbstractPlan.java @@ -18,7 +18,6 @@ package org.apache.doris.nereids.trees.plans; import org.apache.doris.nereids.exceptions.UnboundException; -import org.apache.doris.nereids.memo.PlanReference; import org.apache.doris.nereids.trees.AbstractTreeNode; import org.apache.doris.nereids.trees.NodeType; import org.apache.doris.nereids.trees.expressions.Slot; @@ -37,7 +36,6 @@ public abstract class AbstractPlan> extends AbstractTreeNode implements Plan { - protected PlanReference planReference; protected List output; public AbstractPlan(NodeType type, Plan...children) { @@ -47,16 +45,6 @@ public AbstractPlan(NodeType type, Plan...children) { @Override public abstract List getOutput() throws UnboundException; - @Override - public PlanReference getPlanReference() { - return planReference; - } - - @Override - public void setPlanReference(PlanReference planReference) { - this.planReference = planReference; - } - @Override public List children() { return (List) children; diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/Plan.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/Plan.java index 92a98a13fc60c5..a40b3a8be5c10d 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/Plan.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/Plan.java @@ -18,7 +18,6 @@ package org.apache.doris.nereids.trees.plans; import org.apache.doris.nereids.exceptions.UnboundException; -import org.apache.doris.nereids.memo.PlanReference; import org.apache.doris.nereids.trees.TreeNode; import org.apache.doris.nereids.trees.expressions.Slot; @@ -31,10 +30,6 @@ public interface Plan> extends TreeNode getOutput() throws UnboundException; - PlanReference getPlanReference(); - - void setPlanReference(PlanReference planReference); - String treeString(); @Override