diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/processor/post/CommonSubExpressionOpt.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/processor/post/CommonSubExpressionOpt.java index 194116cf31..44e65dee1c 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/processor/post/CommonSubExpressionOpt.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/processor/post/CommonSubExpressionOpt.java @@ -51,10 +51,12 @@ import java.util.Set; public class CommonSubExpressionOpt extends PlanPostProcessor { @Override public PhysicalProject visitPhysicalProject(PhysicalProject project, CascadesContext ctx) { - - List> multiLayers = computeMultiLayerProjections( - project.getInputSlots(), project.getProjects()); - project.setMultiLayerProjects(multiLayers); + project.child().accept(this, ctx); + if (!project.hasPushedDownToProjectionFunctions()) { + List> multiLayers = computeMultiLayerProjections( + project.getInputSlots(), project.getProjects()); + project.setMultiLayerProjects(multiLayers); + } return project; } @@ -66,15 +68,6 @@ public class CommonSubExpressionOpt extends PlanPostProcessor { for (Expression expr : projects) { expr.accept(collector, null); } - Map commonExprToAliasMap = new HashMap<>(); - collector.commonExprByDepth.values().stream().flatMap(expressions -> expressions.stream()) - .forEach(expression -> { - if (expression instanceof Alias) { - commonExprToAliasMap.put(expression, (Alias) expression); - } else { - commonExprToAliasMap.put(expression, new Alias(expression)); - } - }); Map aliasMap = new HashMap<>(); if (!collector.commonExprByDepth.isEmpty()) { for (int i = 1; i <= collector.commonExprByDepth.size(); i++) { diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalProject.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalProject.java index e8472b6af2..a88ef8dc50 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalProject.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalProject.java @@ -85,9 +85,13 @@ public class PhysicalProject extends PhysicalUnary layer = multiLayerProjects.get(i); + cse.append("l").append(i).append("(").append(layer).append(")"); + } return Utils.toSqlString("PhysicalProject[" + id.asInt() + "]" + getGroupIdWithPrefix(), - "stats", statistics, "projects", projects - + "stats", statistics, "projects", projects, "multi_proj", cse.toString() ); }