From 2783b27788dcf954976ab0b91abee2dd39780c4b Mon Sep 17 00:00:00 2001 From: jakevin Date: Fri, 7 Apr 2023 12:38:53 +0800 Subject: [PATCH] [fix](Nereids): fix LogicalProject withXXX(). (#18441) --- .../org/apache/doris/nereids/cost/Cost.java | 11 +++----- .../nereids/rules/analysis/BindRelation.java | 2 +- .../rules/rewrite/logical/AdjustNullable.java | 2 +- .../trees/plans/logical/LogicalProject.java | 26 +++++++++---------- 4 files changed, 18 insertions(+), 23 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/cost/Cost.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/cost/Cost.java index 431da3bac2..18dfbad5e0 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/cost/Cost.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/cost/Cost.java @@ -25,12 +25,12 @@ import org.apache.doris.qe.ConnectContext; * according different operator */ public interface Cost { - public double getValue(); + double getValue(); /** * This is for calculating the cost in simplifier */ - public static Cost withRowCount(double rowCount) { + static Cost withRowCount(double rowCount) { if (ConnectContext.get().getSessionVariable().getEnableNewCostModel()) { return new CostV2(0, rowCount, 0); } @@ -40,17 +40,14 @@ public interface Cost { /** * return zero cost */ - public static Cost zero() { + static Cost zero() { if (ConnectContext.get().getSessionVariable().getEnableNewCostModel()) { return CostV2.zero(); } return CostV1.zero(); } - /** - * return infinite cost - */ - public static Cost infinite() { + static Cost infinite() { if (ConnectContext.get().getSessionVariable().getEnableNewCostModel()) { return CostV2.infinite(); } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/BindRelation.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/BindRelation.java index 6af7d2e78f..cfabf0a7bb 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/BindRelation.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/BindRelation.java @@ -201,7 +201,7 @@ public class BindRelation extends OneAnalysisRuleFactory { scan = scan.withPreAggStatus(PreAggStatus.off( Column.DELETE_SIGN + " is used as conjuncts.")); } - return new LogicalFilter(Sets.newHashSet(conjunct), scan); + return new LogicalFilter<>(Sets.newHashSet(conjunct), scan); } return scan; } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/AdjustNullable.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/AdjustNullable.java index 83f096586d..dac174720d 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/AdjustNullable.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/AdjustNullable.java @@ -80,7 +80,7 @@ public class AdjustNullable implements RewriteRuleFactory { RuleType.ADJUST_NULLABLE_ON_PROJECT.build(logicalProject().then(project -> { Map exprIdSlotMap = collectChildrenOutputMap(project); List newProjects = updateExpressions(project.getProjects(), exprIdSlotMap); - return project.withProjects(newProjects).recomputeLogicalProperties(); + return project.withProjects(newProjects); })), RuleType.ADJUST_NULLABLE_ON_REPEAT.build(logicalRepeat().then(repeat -> { Map exprIdSlotMap = collectChildrenOutputMap(repeat); diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalProject.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalProject.java index e707528581..514fc74340 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalProject.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalProject.java @@ -155,26 +155,12 @@ public class LogicalProject extends LogicalUnary withEliminate(boolean isEliminate) { - return new LogicalProject<>(projects, excepts, isEliminate, child(), isDistinct); - } - - public LogicalProject withProjects(List projects) { - return new LogicalProject<>(projects, excepts, canEliminate, - Optional.empty(), Optional.of(getLogicalProperties()), child(), isDistinct); - } - @Override public LogicalProject withChildren(List children) { Preconditions.checkArgument(children.size() == 1); return new LogicalProject<>(projects, excepts, canEliminate, children.get(0), isDistinct); } - public LogicalProject withProjectsAndChild(List projects, Plan child) { - return new LogicalProject<>(projects, excepts, canEliminate, - Optional.empty(), Optional.empty(), child, isDistinct); - } - @Override public LogicalProject withGroupExpression(Optional groupExpression) { return new LogicalProject<>(projects, excepts, canEliminate, @@ -187,6 +173,18 @@ public class LogicalProject extends LogicalUnary withEliminate(boolean isEliminate) { + return new LogicalProject<>(projects, excepts, isEliminate, child(), isDistinct); + } + + public LogicalProject withProjects(List projects) { + return new LogicalProject<>(projects, excepts, canEliminate, child(), isDistinct); + } + + public LogicalProject withProjectsAndChild(List projects, Plan child) { + return new LogicalProject<>(projects, excepts, canEliminate, child, isDistinct); + } + public boolean canEliminate() { return canEliminate; }