This is an automated email from the ASF dual-hosted git repository.

morrysnow 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 c56d3237e8e [opt](Nereids) remove canEliminate flag on LogicalProject 
(#24362)
c56d3237e8e is described below

commit c56d3237e8e70c161f3812cab2d8ff97f887bb0e
Author: morrySnow <101034200+morrys...@users.noreply.github.com>
AuthorDate: Mon Sep 18 12:22:33 2023 +0800

    [opt](Nereids) remove canEliminate flag on LogicalProject (#24362)
    
    since we have three infrastructure to ensure changing input column order
    not lead to wrong result, we could remove this flag on LogicalProject to
    eliminate project as mush as possible and let code clear.
    
    1. output list in ResultSink node
    2. regular children output in SetOperation node
    3. producer to consumer slot id map in CteConsumer
---
 .../java/org/apache/doris/nereids/memo/Memo.java   | 13 ++-
 .../rules/rewrite/EliminateUnnecessaryProject.java | 56 +++---------
 .../doris/nereids/rules/rewrite/MergeProjects.java |  9 +-
 .../trees/plans/logical/LogicalProject.java        | 45 +++-------
 .../rewrite/EliminateUnnecessaryProjectTest.java   |  6 +-
 .../nereids/trees/plans/PlanToStringTest.java      |  2 +-
 .../org/apache/doris/nereids/util/PlanChecker.java |  7 ++
 .../data/nereids_ssb_shape_sf100_p0/shape/q2.1.out | 33 ++++----
 .../data/nereids_ssb_shape_sf100_p0/shape/q2.2.out | 45 +++++-----
 .../data/nereids_ssb_shape_sf100_p0/shape/q2.3.out | 45 +++++-----
 .../nereids_tpcds_shape_sf100_p0/shape/query10.out | 70 +++++++--------
 .../nereids_tpcds_shape_sf100_p0/shape/query16.out | 61 +++++++------
 .../nereids_tpcds_shape_sf100_p0/shape/query19.out | 59 +++++++------
 .../nereids_tpcds_shape_sf100_p0/shape/query3.out  | 33 ++++----
 .../nereids_tpcds_shape_sf100_p0/shape/query31.out | 48 +++++------
 .../nereids_tpcds_shape_sf100_p0/shape/query35.out | 80 ++++++++---------
 .../nereids_tpcds_shape_sf100_p0/shape/query38.out | 99 +++++++++++-----------
 .../nereids_tpcds_shape_sf100_p0/shape/query52.out | 29 +++----
 .../nereids_tpcds_shape_sf100_p0/shape/query55.out | 29 +++----
 .../nereids_tpcds_shape_sf100_p0/shape/query59.out | 19 ++---
 .../nereids_tpcds_shape_sf100_p0/shape/query71.out | 83 +++++++++---------
 .../nereids_tpcds_shape_sf100_p0/shape/query87.out | 99 +++++++++++-----------
 .../nereids_tpcds_shape_sf100_p0/shape/query94.out | 53 ++++++------
 .../nereids_tpcds_shape_sf100_p0/shape/query95.out | 49 ++++++-----
 .../nereids_tpch_shape_sf1000_p0/shape/q10.out     | 41 +++++----
 .../data/nereids_tpch_shape_sf1000_p0/shape/q3.out | 33 ++++----
 .../data/nereids_tpch_shape_sf500_p0/shape/q10.out | 41 +++++----
 .../data/nereids_tpch_shape_sf500_p0/shape/q3.out  | 33 ++++----
 .../nereids_tpcds_shape_sf100_p0/rf/ds_rf10.groovy |  2 +-
 .../nereids_tpcds_shape_sf100_p0/rf/ds_rf35.groovy |  2 +-
 .../nereids_tpcds_shape_sf100_p0/rf/ds_rf95.groovy |  2 +-
 31 files changed, 577 insertions(+), 649 deletions(-)

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 d3a5d8a4889..41e2cd912b7 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
@@ -138,8 +138,8 @@ public class Memo {
 
     private Plan skipProject(Plan plan, Group targetGroup) {
         // Some top project can't be eliminated
-        if (plan instanceof LogicalProject && ((LogicalProject<?>) 
plan).canEliminate()) {
-            LogicalProject<Plan> logicalProject = (LogicalProject<Plan>) plan;
+        if (plan instanceof LogicalProject) {
+            LogicalProject<?> logicalProject = (LogicalProject<?>) plan;
             if (targetGroup != root) {
                 if 
(logicalProject.getOutputSet().equals(logicalProject.child().getOutputSet())) {
                     return skipProject(logicalProject.child(), targetGroup);
@@ -155,7 +155,7 @@ public class Memo {
 
     private Plan skipProjectGetChild(Plan plan) {
         if (plan instanceof LogicalProject) {
-            LogicalProject<Plan> logicalProject = (LogicalProject<Plan>) plan;
+            LogicalProject<?> logicalProject = (LogicalProject<?>) plan;
             Plan child = logicalProject.child();
             if (logicalProject.getOutputSet().equals(child.getOutputSet())) {
                 return skipProjectGetChild(child);
@@ -915,7 +915,7 @@ public class Memo {
         int prefix = 0;
         for (GroupExpression groupExpression : 
extractGroupExpressionContainsProp(group, prop)) {
             List<Pair<Long, Double>> possiblePlans = 
rankGroupExpression(groupExpression, prop);
-            if (possiblePlans.size() != 0 && rank - prefix <= 
possiblePlans.get(possiblePlans.size() - 1).first) {
+            if (!possiblePlans.isEmpty() && rank - prefix <= 
possiblePlans.get(possiblePlans.size() - 1).first) {
                 return unrankGroupExpression(groupExpression, prop, rank - 
prefix);
             }
             prefix += possiblePlans.size();
@@ -944,10 +944,9 @@ public class Memo {
             childrenPlan.add(unrankGroup(groupExpression.child(i), 
properties.get(i), childrenRanks.get(i)));
         }
         Plan plan = groupExpression.getPlan().withChildren(childrenPlan);
-        PhysicalPlan physicalPlan = ((PhysicalPlan) 
plan).withPhysicalPropertiesAndStats(
+        return ((PhysicalPlan) plan).withPhysicalPropertiesAndStats(
                 groupExpression.getOutputProperties(prop),
                 groupExpression.getOwnerGroup().getStatistics());
-        return physicalPlan;
     }
 
     /**
@@ -957,7 +956,7 @@ public class Memo {
      * 2: [2%1, 2%(1*2)]
      */
     private List<Long> extractChildRanks(long rank, List<List<Pair<Long, 
Double>>> children) {
-        Preconditions.checkArgument(children.size() > 0);
+        Preconditions.checkArgument(!children.isEmpty(), "children should not 
empty in extractChildRanks");
         int factor = children.get(0).size();
         List<Long> indices = new ArrayList<>();
         for (int i = 0; i < children.size() - 1; i++) {
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/EliminateUnnecessaryProject.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/EliminateUnnecessaryProject.java
index adb355f94db..852c6f5ea21 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/EliminateUnnecessaryProject.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/EliminateUnnecessaryProject.java
@@ -23,8 +23,6 @@ import 
org.apache.doris.nereids.trees.expressions.StatementScopeIdGenerator;
 import org.apache.doris.nereids.trees.plans.Plan;
 import org.apache.doris.nereids.trees.plans.logical.LogicalEmptyRelation;
 import org.apache.doris.nereids.trees.plans.logical.LogicalProject;
-import org.apache.doris.nereids.trees.plans.logical.LogicalSetOperation;
-import org.apache.doris.nereids.trees.plans.logical.OutputSavePoint;
 import org.apache.doris.nereids.trees.plans.visitor.CustomRewriter;
 
 import java.util.ArrayList;
@@ -39,62 +37,34 @@ public class EliminateUnnecessaryProject implements 
CustomRewriter {
 
     @Override
     public Plan rewriteRoot(Plan plan, JobContext jobContext) {
-        return rewrite(plan, false);
+        return rewrite(plan);
     }
 
-    private Plan rewrite(Plan plan, boolean outputSavePoint) {
-        if (plan instanceof LogicalSetOperation) {
-            return rewriteLogicalSetOperation((LogicalSetOperation) plan, 
outputSavePoint);
-        } else if (plan instanceof LogicalProject) {
-            return rewriteProject((LogicalProject) plan, outputSavePoint);
-        } else if (plan instanceof OutputSavePoint) {
-            return rewriteChildren(plan, true);
+    private Plan rewrite(Plan plan) {
+        if (plan instanceof LogicalProject) {
+            return rewriteProject((LogicalProject<?>) plan);
         } else {
-            return rewriteChildren(plan, outputSavePoint);
+            return rewriteChildren(plan);
         }
     }
 
-    private Plan rewriteProject(LogicalProject<Plan> project, boolean 
outputSavePoint) {
+    private Plan rewriteProject(LogicalProject<?> project) {
         if (project.child() instanceof LogicalEmptyRelation) {
             // eliminate unnecessary project
             return new 
LogicalEmptyRelation(StatementScopeIdGenerator.newRelationId(), 
project.getProjects());
-        } else if (project.canEliminate() && outputSavePoint
-                && 
project.getOutputSet().equals(project.child().getOutputSet())) {
+        } else if 
(project.getOutputSet().equals(project.child().getOutputSet())) {
             // eliminate unnecessary project
-            return rewrite(project.child(), outputSavePoint);
-        } else if (project.canEliminate() && 
project.getOutput().equals(project.child().getOutput())) {
-            // eliminate unnecessary project
-            return rewrite(project.child(), outputSavePoint);
+            return rewrite(project.child());
         } else {
-            return rewriteChildren(project, true);
+            return rewriteChildren(project);
         }
     }
 
-    private Plan rewriteLogicalSetOperation(LogicalSetOperation set, boolean 
outputSavePoint) {
-        if (set.arity() == 2) {
-            Plan left = set.child(0);
-            Plan right = set.child(1);
-            boolean changed = false;
-            if (isCanEliminateProject(left)) {
-                changed = true;
-                left = ((LogicalProject) left).withEliminate(false);
-            }
-            if (isCanEliminateProject(right)) {
-                changed = true;
-                right = ((LogicalProject) right).withEliminate(false);
-            }
-            if (changed) {
-                set = (LogicalSetOperation) set.withChildren(left, right);
-            }
-        }
-        return rewriteChildren(set, outputSavePoint);
-    }
-
-    private Plan rewriteChildren(Plan plan, boolean outputSavePoint) {
+    private Plan rewriteChildren(Plan plan) {
         List<Plan> newChildren = new ArrayList<>();
         boolean hasNewChildren = false;
         for (Plan child : plan.children()) {
-            Plan newChild = rewrite(child, outputSavePoint);
+            Plan newChild = rewrite(child);
             if (newChild != child) {
                 hasNewChildren = true;
             }
@@ -102,8 +72,4 @@ public class EliminateUnnecessaryProject implements 
CustomRewriter {
         }
         return hasNewChildren ? plan.withChildren(newChildren) : plan;
     }
-
-    private static boolean isCanEliminateProject(Plan plan) {
-        return plan instanceof LogicalProject && ((LogicalProject<?>) 
plan).canEliminate();
-    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/MergeProjects.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/MergeProjects.java
index 96e506ec144..6452b4e0ba6 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/MergeProjects.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/MergeProjects.java
@@ -45,14 +45,13 @@ public class MergeProjects extends OneRewriteRuleFactory {
         return logicalProject(logicalProject())
                 .whenNot(project -> 
containsWindowExpression(project.getProjects())
                         && 
containsWindowExpression(project.child().getProjects()))
-                .then(project -> 
mergeProjects(project)).toRule(RuleType.MERGE_PROJECTS);
+                
.then(MergeProjects::mergeProjects).toRule(RuleType.MERGE_PROJECTS);
     }
 
-    public static Plan mergeProjects(LogicalProject project) {
-        LogicalProject<? extends Plan> childProject = (LogicalProject) 
project.child();
+    public static Plan mergeProjects(LogicalProject<?> project) {
+        LogicalProject<? extends Plan> childProject = (LogicalProject<?>) 
project.child();
         List<NamedExpression> projectExpressions = 
project.mergeProjections(childProject);
-        LogicalProject newProject = childProject.canEliminate() ? project : 
childProject;
-        return newProject.withProjectsAndChild(projectExpressions, 
childProject.child(0));
+        return project.withProjectsAndChild(projectExpressions, 
childProject.child(0));
     }
 
     private boolean containsWindowExpression(List<NamedExpression> 
expressions) {
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 5b58c305b16..283d0976730 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
@@ -49,37 +49,30 @@ public class LogicalProject<CHILD_TYPE extends Plan> 
extends LogicalUnary<CHILD_
     private final List<NamedExpression> projects;
     private final List<NamedExpression> excepts;
     private final boolean isDistinct;
-    // For project nodes under union, erasure cannot be configured, so add 
this flag.
-    private final boolean canEliminate;
 
     public LogicalProject(List<NamedExpression> projects, CHILD_TYPE child) {
-        this(projects, ImmutableList.of(), false, true, child);
+        this(projects, ImmutableList.of(), false, child);
     }
 
     /**
      * only for test.
      */
     public LogicalProject(List<NamedExpression> projects, 
List<NamedExpression> excepts, CHILD_TYPE child) {
-        this(projects, excepts, false, true, child);
+        this(projects, excepts, false, child);
     }
 
     public LogicalProject(List<NamedExpression> projects, boolean isDistinct, 
CHILD_TYPE child) {
-        this(projects, ImmutableList.of(), isDistinct, true, child);
+        this(projects, ImmutableList.of(), isDistinct, child);
     }
 
     public LogicalProject(List<NamedExpression> projects, 
List<NamedExpression> excepts,
             boolean isDistinct, CHILD_TYPE child) {
-        this(projects, excepts, isDistinct, true, child);
-    }
-
-    private LogicalProject(List<NamedExpression> projects, 
List<NamedExpression> excepts,
-            boolean isDistinct, boolean canEliminate, CHILD_TYPE child) {
-        this(projects, excepts, isDistinct, canEliminate, Optional.empty(), 
Optional.empty(), child);
+        this(projects, excepts, isDistinct, Optional.empty(), 
Optional.empty(), child);
     }
 
     private LogicalProject(List<NamedExpression> projects, 
List<NamedExpression> excepts, boolean isDistinct,
-            boolean canEliminate, Optional<GroupExpression> groupExpression,
-            Optional<LogicalProperties> logicalProperties, CHILD_TYPE child) {
+            Optional<GroupExpression> groupExpression, 
Optional<LogicalProperties> logicalProperties,
+            CHILD_TYPE child) {
         super(PlanType.LOGICAL_PROJECT, groupExpression, logicalProperties, 
child);
         Preconditions.checkArgument(projects != null, "projects can not be 
null");
         // only ColumnPrune rule may produce empty projects, this happens in 
rewrite phase
@@ -91,7 +84,6 @@ public class LogicalProject<CHILD_TYPE extends Plan> extends 
LogicalUnary<CHILD_
                 : projects;
         this.excepts = ImmutableList.copyOf(excepts);
         this.isDistinct = isDistinct;
-        this.canEliminate = canEliminate;
     }
 
     /**
@@ -124,8 +116,7 @@ public class LogicalProject<CHILD_TYPE extends Plan> 
extends LogicalUnary<CHILD_
         return Utils.toSqlString("LogicalProject[" + id.asInt() + "]",
                 "distinct", isDistinct,
                 "projects", projects,
-                "excepts", excepts,
-                "canEliminate", canEliminate
+                "excepts", excepts
         );
     }
 
@@ -150,7 +141,6 @@ public class LogicalProject<CHILD_TYPE extends Plan> 
extends LogicalUnary<CHILD_
         LogicalProject<?> that = (LogicalProject<?>) o;
         boolean equal = projects.equals(that.projects)
                 && excepts.equals(that.excepts)
-                && canEliminate == that.canEliminate
                 && isDistinct == that.isDistinct;
         // TODO: should add exprId for UnBoundStar and BoundStar for equality 
comparison
         if (!projects.isEmpty() && (projects.get(0) instanceof UnboundStar || 
projects.get(0) instanceof BoundStar)) {
@@ -161,18 +151,18 @@ public class LogicalProject<CHILD_TYPE extends Plan> 
extends LogicalUnary<CHILD_
 
     @Override
     public int hashCode() {
-        return Objects.hash(projects, canEliminate);
+        return Objects.hash(projects);
     }
 
     @Override
     public LogicalProject<Plan> withChildren(List<Plan> children) {
         Preconditions.checkArgument(children.size() == 1);
-        return new LogicalProject<>(projects, excepts, isDistinct, 
canEliminate, children.get(0));
+        return new LogicalProject<>(projects, excepts, isDistinct, 
children.get(0));
     }
 
     @Override
     public LogicalProject<Plan> withGroupExpression(Optional<GroupExpression> 
groupExpression) {
-        return new LogicalProject<>(projects, excepts, isDistinct, 
canEliminate,
+        return new LogicalProject<>(projects, excepts, isDistinct,
                 groupExpression, Optional.of(getLogicalProperties()), child());
     }
 
@@ -180,30 +170,22 @@ public class LogicalProject<CHILD_TYPE extends Plan> 
extends LogicalUnary<CHILD_
     public Plan withGroupExprLogicalPropChildren(Optional<GroupExpression> 
groupExpression,
             Optional<LogicalProperties> logicalProperties, List<Plan> 
children) {
         Preconditions.checkArgument(children.size() == 1);
-        return new LogicalProject<>(projects, excepts, isDistinct, 
canEliminate,
+        return new LogicalProject<>(projects, excepts, isDistinct,
                 groupExpression, logicalProperties, children.get(0));
     }
 
-    public LogicalProject<Plan> withEliminate(boolean isEliminate) {
-        return new LogicalProject<>(projects, excepts, isDistinct, 
isEliminate, child());
-    }
-
     public LogicalProject<Plan> withProjects(List<NamedExpression> projects) {
-        return new LogicalProject<>(projects, excepts, isDistinct, 
canEliminate, child());
+        return new LogicalProject<>(projects, excepts, isDistinct, child());
     }
 
     public LogicalProject<Plan> withProjectsAndChild(List<NamedExpression> 
projects, Plan child) {
-        return new LogicalProject<>(projects, excepts, isDistinct, 
canEliminate, child);
+        return new LogicalProject<>(projects, excepts, isDistinct, child);
     }
 
     public boolean isDistinct() {
         return isDistinct;
     }
 
-    public boolean canEliminate() {
-        return canEliminate;
-    }
-
     @Override
     public List<NamedExpression> getOutputs() {
         return projects;
@@ -220,7 +202,6 @@ public class LogicalProject<CHILD_TYPE extends Plan> 
extends LogicalUnary<CHILD_
         JSONObject properties = new JSONObject();
         properties.put("Projects", projects.toString());
         properties.put("Excepts", excepts.toString());
-        properties.put("CanEliminate", canEliminate);
         properties.put("IsDistinct", isDistinct);
         logicalProject.put("Properties", properties);
         return logicalProject;
diff --git 
a/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/rewrite/EliminateUnnecessaryProjectTest.java
 
b/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/rewrite/EliminateUnnecessaryProjectTest.java
index 548a7dd0689..15eccdd8f23 100644
--- 
a/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/rewrite/EliminateUnnecessaryProjectTest.java
+++ 
b/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/rewrite/EliminateUnnecessaryProjectTest.java
@@ -61,7 +61,7 @@ class EliminateUnnecessaryProjectTest extends 
TestWithFeService implements MemoP
 
         PlanChecker.from(MemoTestUtils.createConnectContext(), 
unnecessaryProject)
                 .customRewrite(new EliminateUnnecessaryProject())
-                .matchesFromRoot(logicalFilter(logicalProject()));
+                .matchesFromRoot(logicalFilter(logicalOlapScan()));
     }
 
     @Test
@@ -76,14 +76,14 @@ class EliminateUnnecessaryProjectTest extends 
TestWithFeService implements MemoP
     }
 
     @Test
-    void testNotEliminateTopProjectWhenOutputNotEquals() {
+    void testEliminateTopProjectWhenOutputNotEquals() {
         LogicalPlan necessaryProject = new 
LogicalPlanBuilder(PlanConstructor.newLogicalOlapScan(0, "t1", 0))
                 .project(ImmutableList.of(1, 0))
                 .build();
 
         PlanChecker.from(MemoTestUtils.createConnectContext(), 
necessaryProject)
                 .customRewrite(new EliminateUnnecessaryProject())
-                .matchesFromRoot(logicalProject());
+                .notMatchesFromRoot(logicalProject());
     }
 
     @Test
diff --git 
a/fe/fe-core/src/test/java/org/apache/doris/nereids/trees/plans/PlanToStringTest.java
 
b/fe/fe-core/src/test/java/org/apache/doris/nereids/trees/plans/PlanToStringTest.java
index 7d9594c73ba..53c938d8493 100644
--- 
a/fe/fe-core/src/test/java/org/apache/doris/nereids/trees/plans/PlanToStringTest.java
+++ 
b/fe/fe-core/src/test/java/org/apache/doris/nereids/trees/plans/PlanToStringTest.java
@@ -91,7 +91,7 @@ public class PlanToStringTest {
         LogicalProject<Plan> plan = new LogicalProject<>(ImmutableList.of(
                 new SlotReference(new ExprId(0), "a", BigIntType.INSTANCE, 
true, Lists.newArrayList())), child);
 
-        
Assertions.assertTrue(plan.toString().matches("LogicalProject\\[\\d+\\] \\( 
distinct=false, projects=\\[a#\\d+], excepts=\\[], canEliminate=true \\)"));
+        
Assertions.assertTrue(plan.toString().matches("LogicalProject\\[\\d+\\] \\( 
distinct=false, projects=\\[a#\\d+], excepts=\\[] \\)"));
     }
 
     @Test
diff --git 
a/fe/fe-core/src/test/java/org/apache/doris/nereids/util/PlanChecker.java 
b/fe/fe-core/src/test/java/org/apache/doris/nereids/util/PlanChecker.java
index 254b6d5a981..9274fdd0abd 100644
--- a/fe/fe-core/src/test/java/org/apache/doris/nereids/util/PlanChecker.java
+++ b/fe/fe-core/src/test/java/org/apache/doris/nereids/util/PlanChecker.java
@@ -457,6 +457,13 @@ public class PlanChecker {
         return this;
     }
 
+    public PlanChecker notMatchesFromRoot(PatternDescriptor<? extends Plan> 
patternDesc) {
+        Memo memo = cascadesContext.getMemo();
+        assertMatches(memo, () -> !(new 
GroupExpressionMatching(patternDesc.pattern,
+                memo.getRoot().getLogicalExpression()).iterator().hasNext()));
+        return this;
+    }
+
     public PlanChecker matches(PatternDescriptor<? extends Plan> patternDesc) {
         Memo memo = cascadesContext.getMemo();
         checkSlotFromChildren(memo);
diff --git a/regression-test/data/nereids_ssb_shape_sf100_p0/shape/q2.1.out 
b/regression-test/data/nereids_ssb_shape_sf100_p0/shape/q2.1.out
index f8cbe1787f6..44e69762301 100644
--- a/regression-test/data/nereids_ssb_shape_sf100_p0/shape/q2.1.out
+++ b/regression-test/data/nereids_ssb_shape_sf100_p0/shape/q2.1.out
@@ -4,25 +4,24 @@ PhysicalResultSink
 --PhysicalQuickSort
 ----PhysicalDistribute
 ------PhysicalQuickSort
---------PhysicalProject
-----------hashAgg[GLOBAL]
-------------PhysicalDistribute
---------------hashAgg[LOCAL]
-----------------PhysicalProject
-------------------hashJoin[INNER_JOIN](lineorder.lo_orderdate = 
dates.d_datekey)
---------------------hashJoin[INNER_JOIN](lineorder.lo_suppkey = 
supplier.s_suppkey)
-----------------------hashJoin[INNER_JOIN](lineorder.lo_partkey = 
part.p_partkey)
-------------------------PhysicalProject
---------------------------PhysicalOlapScan[lineorder]
-------------------------PhysicalDistribute
---------------------------PhysicalProject
-----------------------------filter((part.p_category = 'MFGR#12'))
-------------------------------PhysicalOlapScan[part]
+--------hashAgg[GLOBAL]
+----------PhysicalDistribute
+------------hashAgg[LOCAL]
+--------------PhysicalProject
+----------------hashJoin[INNER_JOIN](lineorder.lo_orderdate = dates.d_datekey)
+------------------hashJoin[INNER_JOIN](lineorder.lo_suppkey = 
supplier.s_suppkey)
+--------------------hashJoin[INNER_JOIN](lineorder.lo_partkey = part.p_partkey)
+----------------------PhysicalProject
+------------------------PhysicalOlapScan[lineorder]
 ----------------------PhysicalDistribute
 ------------------------PhysicalProject
---------------------------filter((supplier.s_region = 'AMERICA'))
-----------------------------PhysicalOlapScan[supplier]
+--------------------------filter((part.p_category = 'MFGR#12'))
+----------------------------PhysicalOlapScan[part]
 --------------------PhysicalDistribute
 ----------------------PhysicalProject
-------------------------PhysicalOlapScan[dates]
+------------------------filter((supplier.s_region = 'AMERICA'))
+--------------------------PhysicalOlapScan[supplier]
+------------------PhysicalDistribute
+--------------------PhysicalProject
+----------------------PhysicalOlapScan[dates]
 
diff --git a/regression-test/data/nereids_ssb_shape_sf100_p0/shape/q2.2.out 
b/regression-test/data/nereids_ssb_shape_sf100_p0/shape/q2.2.out
index de0b1d9ce05..7f5570465b9 100644
--- a/regression-test/data/nereids_ssb_shape_sf100_p0/shape/q2.2.out
+++ b/regression-test/data/nereids_ssb_shape_sf100_p0/shape/q2.2.out
@@ -4,28 +4,27 @@ PhysicalResultSink
 --PhysicalQuickSort
 ----PhysicalDistribute
 ------PhysicalQuickSort
---------PhysicalProject
-----------hashAgg[GLOBAL]
-------------PhysicalDistribute
---------------hashAgg[LOCAL]
-----------------PhysicalProject
-------------------hashJoin[INNER_JOIN](lineorder.lo_orderdate = 
dates.d_datekey)
---------------------PhysicalDistribute
-----------------------PhysicalProject
-------------------------hashJoin[INNER_JOIN](lineorder.lo_suppkey = 
supplier.s_suppkey)
---------------------------PhysicalDistribute
-----------------------------hashJoin[INNER_JOIN](lineorder.lo_partkey = 
part.p_partkey)
-------------------------------PhysicalProject
---------------------------------PhysicalOlapScan[lineorder]
-------------------------------PhysicalDistribute
---------------------------------PhysicalProject
-----------------------------------filter((part.p_brand >= 
'MFGR#2221')(part.p_brand <= 'MFGR#2228'))
-------------------------------------PhysicalOlapScan[part]
---------------------------PhysicalDistribute
+--------hashAgg[GLOBAL]
+----------PhysicalDistribute
+------------hashAgg[LOCAL]
+--------------PhysicalProject
+----------------hashJoin[INNER_JOIN](lineorder.lo_orderdate = dates.d_datekey)
+------------------PhysicalDistribute
+--------------------PhysicalProject
+----------------------hashJoin[INNER_JOIN](lineorder.lo_suppkey = 
supplier.s_suppkey)
+------------------------PhysicalDistribute
+--------------------------hashJoin[INNER_JOIN](lineorder.lo_partkey = 
part.p_partkey)
 ----------------------------PhysicalProject
-------------------------------filter((supplier.s_region = 'ASIA'))
---------------------------------PhysicalOlapScan[supplier]
---------------------PhysicalDistribute
-----------------------PhysicalProject
-------------------------PhysicalOlapScan[dates]
+------------------------------PhysicalOlapScan[lineorder]
+----------------------------PhysicalDistribute
+------------------------------PhysicalProject
+--------------------------------filter((part.p_brand >= 
'MFGR#2221')(part.p_brand <= 'MFGR#2228'))
+----------------------------------PhysicalOlapScan[part]
+------------------------PhysicalDistribute
+--------------------------PhysicalProject
+----------------------------filter((supplier.s_region = 'ASIA'))
+------------------------------PhysicalOlapScan[supplier]
+------------------PhysicalDistribute
+--------------------PhysicalProject
+----------------------PhysicalOlapScan[dates]
 
diff --git a/regression-test/data/nereids_ssb_shape_sf100_p0/shape/q2.3.out 
b/regression-test/data/nereids_ssb_shape_sf100_p0/shape/q2.3.out
index 17b70822a93..10955aaf229 100644
--- a/regression-test/data/nereids_ssb_shape_sf100_p0/shape/q2.3.out
+++ b/regression-test/data/nereids_ssb_shape_sf100_p0/shape/q2.3.out
@@ -4,28 +4,27 @@ PhysicalResultSink
 --PhysicalQuickSort
 ----PhysicalDistribute
 ------PhysicalQuickSort
---------PhysicalProject
-----------hashAgg[GLOBAL]
-------------PhysicalDistribute
---------------hashAgg[LOCAL]
-----------------PhysicalProject
-------------------hashJoin[INNER_JOIN](lineorder.lo_orderdate = 
dates.d_datekey)
---------------------PhysicalDistribute
-----------------------PhysicalProject
-------------------------hashJoin[INNER_JOIN](lineorder.lo_suppkey = 
supplier.s_suppkey)
---------------------------PhysicalDistribute
-----------------------------hashJoin[INNER_JOIN](lineorder.lo_partkey = 
part.p_partkey)
-------------------------------PhysicalProject
---------------------------------PhysicalOlapScan[lineorder]
-------------------------------PhysicalDistribute
---------------------------------PhysicalProject
-----------------------------------filter((part.p_brand = 'MFGR#2239'))
-------------------------------------PhysicalOlapScan[part]
---------------------------PhysicalDistribute
+--------hashAgg[GLOBAL]
+----------PhysicalDistribute
+------------hashAgg[LOCAL]
+--------------PhysicalProject
+----------------hashJoin[INNER_JOIN](lineorder.lo_orderdate = dates.d_datekey)
+------------------PhysicalDistribute
+--------------------PhysicalProject
+----------------------hashJoin[INNER_JOIN](lineorder.lo_suppkey = 
supplier.s_suppkey)
+------------------------PhysicalDistribute
+--------------------------hashJoin[INNER_JOIN](lineorder.lo_partkey = 
part.p_partkey)
 ----------------------------PhysicalProject
-------------------------------filter((supplier.s_region = 'EUROPE'))
---------------------------------PhysicalOlapScan[supplier]
---------------------PhysicalDistribute
-----------------------PhysicalProject
-------------------------PhysicalOlapScan[dates]
+------------------------------PhysicalOlapScan[lineorder]
+----------------------------PhysicalDistribute
+------------------------------PhysicalProject
+--------------------------------filter((part.p_brand = 'MFGR#2239'))
+----------------------------------PhysicalOlapScan[part]
+------------------------PhysicalDistribute
+--------------------------PhysicalProject
+----------------------------filter((supplier.s_region = 'EUROPE'))
+------------------------------PhysicalOlapScan[supplier]
+------------------PhysicalDistribute
+--------------------PhysicalProject
+----------------------PhysicalOlapScan[dates]
 
diff --git 
a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query10.out 
b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query10.out
index df38625cf15..f9fa345be63 100644
--- a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query10.out
+++ b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query10.out
@@ -9,26 +9,26 @@ PhysicalResultSink
 ------------PhysicalDistribute
 --------------hashAgg[LOCAL]
 ----------------PhysicalProject
-------------------filter(($c$1 OR $c$2))
---------------------hashJoin[LEFT_SEMI_JOIN](c.c_customer_sk = 
catalog_sales.cs_ship_customer_sk)
-----------------------hashJoin[LEFT_SEMI_JOIN](c.c_customer_sk = 
web_sales.ws_bill_customer_sk)
-------------------------PhysicalDistribute
+------------------hashJoin[RIGHT_SEMI_JOIN](c.c_customer_sk = 
store_sales.ss_customer_sk)
+--------------------PhysicalDistribute
+----------------------PhysicalProject
+------------------------hashJoin[INNER_JOIN](store_sales.ss_sold_date_sk = 
date_dim.d_date_sk)
 --------------------------PhysicalProject
-----------------------------hashJoin[INNER_JOIN](customer_demographics.cd_demo_sk
 = c.c_current_cdemo_sk)
-------------------------------PhysicalOlapScan[customer_demographics]
-------------------------------PhysicalDistribute
---------------------------------PhysicalProject
-----------------------------------hashJoin[RIGHT_SEMI_JOIN](c.c_customer_sk = 
store_sales.ss_customer_sk)
-------------------------------------PhysicalDistribute
---------------------------------------PhysicalProject
-----------------------------------------hashJoin[INNER_JOIN](store_sales.ss_sold_date_sk
 = date_dim.d_date_sk)
-------------------------------------------PhysicalProject
---------------------------------------------PhysicalOlapScan[store_sales]
-------------------------------------------PhysicalDistribute
---------------------------------------------PhysicalProject
-----------------------------------------------filter((date_dim.d_moy <= 
4)(date_dim.d_moy >= 1)(date_dim.d_year = 2001))
-------------------------------------------------PhysicalOlapScan[date_dim]
-------------------------------------PhysicalDistribute
+----------------------------PhysicalOlapScan[store_sales]
+--------------------------PhysicalDistribute
+----------------------------PhysicalProject
+------------------------------filter((date_dim.d_moy >= 1)(date_dim.d_moy <= 
4)(date_dim.d_year = 2001))
+--------------------------------PhysicalOlapScan[date_dim]
+--------------------PhysicalProject
+----------------------filter(($c$1 OR $c$2))
+------------------------hashJoin[LEFT_SEMI_JOIN](c.c_customer_sk = 
catalog_sales.cs_ship_customer_sk)
+--------------------------hashJoin[LEFT_SEMI_JOIN](c.c_customer_sk = 
web_sales.ws_bill_customer_sk)
+----------------------------PhysicalDistribute
+------------------------------PhysicalProject
+--------------------------------hashJoin[INNER_JOIN](customer_demographics.cd_demo_sk
 = c.c_current_cdemo_sk)
+----------------------------------PhysicalOlapScan[customer_demographics]
+----------------------------------PhysicalDistribute
+------------------------------------PhysicalProject
 --------------------------------------hashJoin[INNER_JOIN](c.c_current_addr_sk 
= ca.ca_address_sk)
 ----------------------------------------PhysicalProject
 ------------------------------------------PhysicalOlapScan[customer]
@@ -36,22 +36,22 @@ PhysicalResultSink
 ------------------------------------------PhysicalProject
 --------------------------------------------filter(ca_county IN ('Storey 
County', 'Marquette County', 'Warren County', 'Cochran County', 'Kandiyohi 
County'))
 
----------------------------------------------PhysicalOlapScan[customer_address]
-------------------------PhysicalDistribute
---------------------------PhysicalProject
-----------------------------hashJoin[INNER_JOIN](web_sales.ws_sold_date_sk = 
date_dim.d_date_sk)
-------------------------------PhysicalProject
---------------------------------PhysicalOlapScan[web_sales]
-------------------------------PhysicalDistribute
---------------------------------PhysicalProject
-----------------------------------filter((date_dim.d_moy <= 4)(date_dim.d_moy 
>= 1)(date_dim.d_year = 2001))
-------------------------------------PhysicalOlapScan[date_dim]
-----------------------PhysicalDistribute
-------------------------PhysicalProject
---------------------------hashJoin[INNER_JOIN](catalog_sales.cs_sold_date_sk = 
date_dim.d_date_sk)
-----------------------------PhysicalProject
-------------------------------PhysicalOlapScan[catalog_sales]
 ----------------------------PhysicalDistribute
 ------------------------------PhysicalProject
---------------------------------filter((date_dim.d_moy >= 1)(date_dim.d_moy <= 
4)(date_dim.d_year = 2001))
-----------------------------------PhysicalOlapScan[date_dim]
+--------------------------------hashJoin[INNER_JOIN](web_sales.ws_sold_date_sk 
= date_dim.d_date_sk)
+----------------------------------PhysicalProject
+------------------------------------PhysicalOlapScan[web_sales]
+----------------------------------PhysicalDistribute
+------------------------------------PhysicalProject
+--------------------------------------filter((date_dim.d_moy >= 
1)(date_dim.d_year = 2001)(date_dim.d_moy <= 4))
+----------------------------------------PhysicalOlapScan[date_dim]
+--------------------------PhysicalDistribute
+----------------------------PhysicalProject
+------------------------------hashJoin[INNER_JOIN](catalog_sales.cs_sold_date_sk
 = date_dim.d_date_sk)
+--------------------------------PhysicalProject
+----------------------------------PhysicalOlapScan[catalog_sales]
+--------------------------------PhysicalDistribute
+----------------------------------PhysicalProject
+------------------------------------filter((date_dim.d_moy >= 
1)(date_dim.d_moy <= 4)(date_dim.d_year = 2001))
+--------------------------------------PhysicalOlapScan[date_dim]
 
diff --git 
a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query16.out 
b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query16.out
index 43abdade0fe..7167ef0b0c3 100644
--- a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query16.out
+++ b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query16.out
@@ -3,37 +3,36 @@
 PhysicalResultSink
 --PhysicalTopN
 ----PhysicalTopN
-------PhysicalProject
---------hashAgg[DISTINCT_GLOBAL]
-----------PhysicalDistribute
-------------hashAgg[DISTINCT_LOCAL]
---------------hashAgg[GLOBAL]
-----------------hashAgg[LOCAL]
-------------------PhysicalProject
---------------------hashJoin[RIGHT_SEMI_JOIN](cs1.cs_order_number = 
cs2.cs_order_number)( not (cs_warehouse_sk = cs_warehouse_sk))
-----------------------PhysicalDistribute
-------------------------PhysicalProject
---------------------------PhysicalOlapScan[catalog_sales]
-----------------------hashJoin[INNER_JOIN](cs1.cs_call_center_sk = 
call_center.cc_call_center_sk)
-------------------------hashJoin[RIGHT_ANTI_JOIN](cs1.cs_order_number = 
cr1.cr_order_number)
---------------------------PhysicalDistribute
-----------------------------PhysicalProject
-------------------------------PhysicalOlapScan[catalog_returns]
---------------------------PhysicalDistribute
-----------------------------hashJoin[INNER_JOIN](cs1.cs_ship_date_sk = 
date_dim.d_date_sk)
-------------------------------hashJoin[INNER_JOIN](cs1.cs_ship_addr_sk = 
customer_address.ca_address_sk)
---------------------------------PhysicalProject
-----------------------------------PhysicalOlapScan[catalog_sales]
---------------------------------PhysicalDistribute
-----------------------------------PhysicalProject
-------------------------------------filter((cast(ca_state as VARCHAR(*)) = 
'WV'))
---------------------------------------PhysicalOlapScan[customer_address]
-------------------------------PhysicalDistribute
---------------------------------PhysicalProject
-----------------------------------filter((date_dim.d_date <= 
2002-05-31)(date_dim.d_date >= 2002-04-01))
-------------------------------------PhysicalOlapScan[date_dim]
+------hashAgg[DISTINCT_GLOBAL]
+--------PhysicalDistribute
+----------hashAgg[DISTINCT_LOCAL]
+------------hashAgg[GLOBAL]
+--------------hashAgg[LOCAL]
+----------------PhysicalProject
+------------------hashJoin[RIGHT_SEMI_JOIN](cs1.cs_order_number = 
cs2.cs_order_number)( not (cs_warehouse_sk = cs_warehouse_sk))
+--------------------PhysicalDistribute
+----------------------PhysicalProject
+------------------------PhysicalOlapScan[catalog_sales]
+--------------------hashJoin[INNER_JOIN](cs1.cs_call_center_sk = 
call_center.cc_call_center_sk)
+----------------------hashJoin[RIGHT_ANTI_JOIN](cs1.cs_order_number = 
cr1.cr_order_number)
 ------------------------PhysicalDistribute
 --------------------------PhysicalProject
-----------------------------filter(cc_county IN ('Ziebach County', 'Luce 
County', 'Richland County', 'Daviess County', 'Barrow County'))
-------------------------------PhysicalOlapScan[call_center]
+----------------------------PhysicalOlapScan[catalog_returns]
+------------------------PhysicalDistribute
+--------------------------hashJoin[INNER_JOIN](cs1.cs_ship_date_sk = 
date_dim.d_date_sk)
+----------------------------hashJoin[INNER_JOIN](cs1.cs_ship_addr_sk = 
customer_address.ca_address_sk)
+------------------------------PhysicalProject
+--------------------------------PhysicalOlapScan[catalog_sales]
+------------------------------PhysicalDistribute
+--------------------------------PhysicalProject
+----------------------------------filter((cast(ca_state as VARCHAR(*)) = 'WV'))
+------------------------------------PhysicalOlapScan[customer_address]
+----------------------------PhysicalDistribute
+------------------------------PhysicalProject
+--------------------------------filter((date_dim.d_date <= 
2002-05-31)(date_dim.d_date >= 2002-04-01))
+----------------------------------PhysicalOlapScan[date_dim]
+----------------------PhysicalDistribute
+------------------------PhysicalProject
+--------------------------filter(cc_county IN ('Ziebach County', 'Luce 
County', 'Richland County', 'Daviess County', 'Barrow County'))
+----------------------------PhysicalOlapScan[call_center]
 
diff --git 
a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query19.out 
b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query19.out
index f01f7b5a8e5..5164ce7840a 100644
--- a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query19.out
+++ b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query19.out
@@ -4,37 +4,36 @@ PhysicalResultSink
 --PhysicalTopN
 ----PhysicalDistribute
 ------PhysicalTopN
---------PhysicalProject
-----------hashAgg[GLOBAL]
-------------PhysicalDistribute
---------------hashAgg[LOCAL]
-----------------PhysicalProject
-------------------hashJoin[INNER_JOIN](store_sales.ss_store_sk = 
store.s_store_sk)( not (substring(ca_zip, 1, 5) = substring(s_zip, 1, 5)))
---------------------PhysicalProject
-----------------------hashJoin[INNER_JOIN](customer.c_current_addr_sk = 
customer_address.ca_address_sk)
+--------hashAgg[GLOBAL]
+----------PhysicalDistribute
+------------hashAgg[LOCAL]
+--------------PhysicalProject
+----------------hashJoin[INNER_JOIN](store_sales.ss_store_sk = 
store.s_store_sk)( not (substring(ca_zip, 1, 5) = substring(s_zip, 1, 5)))
+------------------PhysicalProject
+--------------------hashJoin[INNER_JOIN](customer.c_current_addr_sk = 
customer_address.ca_address_sk)
+----------------------PhysicalProject
+------------------------PhysicalOlapScan[customer_address]
+----------------------PhysicalDistribute
 ------------------------PhysicalProject
---------------------------PhysicalOlapScan[customer_address]
-------------------------PhysicalDistribute
---------------------------PhysicalProject
-----------------------------hashJoin[INNER_JOIN](store_sales.ss_customer_sk = 
customer.c_customer_sk)
-------------------------------PhysicalDistribute
---------------------------------PhysicalProject
-----------------------------------PhysicalOlapScan[customer]
-------------------------------PhysicalDistribute
---------------------------------PhysicalProject
-----------------------------------hashJoin[INNER_JOIN](date_dim.d_date_sk = 
store_sales.ss_sold_date_sk)
-------------------------------------hashJoin[INNER_JOIN](store_sales.ss_item_sk
 = item.i_item_sk)
---------------------------------------PhysicalProject
-----------------------------------------PhysicalOlapScan[store_sales]
---------------------------------------PhysicalDistribute
-----------------------------------------PhysicalProject
-------------------------------------------filter((item.i_manager_id = 2))
---------------------------------------------PhysicalOlapScan[item]
+--------------------------hashJoin[INNER_JOIN](store_sales.ss_customer_sk = 
customer.c_customer_sk)
+----------------------------PhysicalDistribute
+------------------------------PhysicalProject
+--------------------------------PhysicalOlapScan[customer]
+----------------------------PhysicalDistribute
+------------------------------PhysicalProject
+--------------------------------hashJoin[INNER_JOIN](date_dim.d_date_sk = 
store_sales.ss_sold_date_sk)
+----------------------------------hashJoin[INNER_JOIN](store_sales.ss_item_sk 
= item.i_item_sk)
+------------------------------------PhysicalProject
+--------------------------------------PhysicalOlapScan[store_sales]
 ------------------------------------PhysicalDistribute
 --------------------------------------PhysicalProject
-----------------------------------------filter((date_dim.d_moy = 
12)(date_dim.d_year = 1999))
-------------------------------------------PhysicalOlapScan[date_dim]
---------------------PhysicalDistribute
-----------------------PhysicalProject
-------------------------PhysicalOlapScan[store]
+----------------------------------------filter((item.i_manager_id = 2))
+------------------------------------------PhysicalOlapScan[item]
+----------------------------------PhysicalDistribute
+------------------------------------PhysicalProject
+--------------------------------------filter((date_dim.d_moy = 
12)(date_dim.d_year = 1999))
+----------------------------------------PhysicalOlapScan[date_dim]
+------------------PhysicalDistribute
+--------------------PhysicalProject
+----------------------PhysicalOlapScan[store]
 
diff --git a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query3.out 
b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query3.out
index fc17a5bab55..60ed4b442ce 100644
--- a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query3.out
+++ b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query3.out
@@ -4,22 +4,21 @@ PhysicalResultSink
 --PhysicalTopN
 ----PhysicalDistribute
 ------PhysicalTopN
---------PhysicalProject
-----------hashAgg[GLOBAL]
-------------PhysicalDistribute
---------------hashAgg[LOCAL]
-----------------PhysicalProject
-------------------hashJoin[INNER_JOIN](dt.d_date_sk = 
store_sales.ss_sold_date_sk)
---------------------PhysicalDistribute
-----------------------hashJoin[INNER_JOIN](store_sales.ss_item_sk = 
item.i_item_sk)
-------------------------PhysicalProject
---------------------------PhysicalOlapScan[store_sales]
-------------------------PhysicalDistribute
---------------------------PhysicalProject
-----------------------------filter((item.i_manufact_id = 816))
-------------------------------PhysicalOlapScan[item]
---------------------PhysicalDistribute
+--------hashAgg[GLOBAL]
+----------PhysicalDistribute
+------------hashAgg[LOCAL]
+--------------PhysicalProject
+----------------hashJoin[INNER_JOIN](dt.d_date_sk = 
store_sales.ss_sold_date_sk)
+------------------PhysicalDistribute
+--------------------hashJoin[INNER_JOIN](store_sales.ss_item_sk = 
item.i_item_sk)
 ----------------------PhysicalProject
-------------------------filter((dt.d_moy = 11))
---------------------------PhysicalOlapScan[date_dim]
+------------------------PhysicalOlapScan[store_sales]
+----------------------PhysicalDistribute
+------------------------PhysicalProject
+--------------------------filter((item.i_manufact_id = 816))
+----------------------------PhysicalOlapScan[item]
+------------------PhysicalDistribute
+--------------------PhysicalProject
+----------------------filter((dt.d_moy = 11))
+------------------------PhysicalOlapScan[date_dim]
 
diff --git 
a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query31.out 
b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query31.out
index 953ca425f06..83184d7b609 100644
--- a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query31.out
+++ b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query31.out
@@ -2,44 +2,42 @@
 -- !ds_shape_31 --
 PhysicalCteAnchor ( cteId=CTEId#0 )
 --PhysicalCteProducer ( cteId=CTEId#0 )
-----PhysicalProject
+----hashAgg[GLOBAL]
+------PhysicalDistribute
+--------hashAgg[LOCAL]
+----------PhysicalProject
+------------hashJoin[INNER_JOIN](store_sales.ss_addr_sk = 
customer_address.ca_address_sk)
+--------------PhysicalDistribute
+----------------PhysicalProject
+------------------hashJoin[INNER_JOIN](store_sales.ss_sold_date_sk = 
date_dim.d_date_sk)
+--------------------PhysicalProject
+----------------------PhysicalOlapScan[store_sales]
+--------------------PhysicalDistribute
+----------------------PhysicalProject
+------------------------filter(d_qoy IN (1, 2, 3)(ss.d_year = 2000))
+--------------------------PhysicalOlapScan[date_dim]
+--------------PhysicalDistribute
+----------------PhysicalProject
+------------------PhysicalOlapScan[customer_address]
+--PhysicalCteAnchor ( cteId=CTEId#1 )
+----PhysicalCteProducer ( cteId=CTEId#1 )
 ------hashAgg[GLOBAL]
 --------PhysicalDistribute
 ----------hashAgg[LOCAL]
 ------------PhysicalProject
---------------hashJoin[INNER_JOIN](store_sales.ss_addr_sk = 
customer_address.ca_address_sk)
+--------------hashJoin[INNER_JOIN](web_sales.ws_bill_addr_sk = 
customer_address.ca_address_sk)
 ----------------PhysicalDistribute
 ------------------PhysicalProject
---------------------hashJoin[INNER_JOIN](store_sales.ss_sold_date_sk = 
date_dim.d_date_sk)
+--------------------hashJoin[INNER_JOIN](web_sales.ws_sold_date_sk = 
date_dim.d_date_sk)
 ----------------------PhysicalProject
-------------------------PhysicalOlapScan[store_sales]
+------------------------PhysicalOlapScan[web_sales]
 ----------------------PhysicalDistribute
 ------------------------PhysicalProject
---------------------------filter(d_qoy IN (1, 2, 3)(ss.d_year = 2000))
+--------------------------filter((ws.d_year = 2000)d_qoy IN (1, 2, 3))
 ----------------------------PhysicalOlapScan[date_dim]
 ----------------PhysicalDistribute
 ------------------PhysicalProject
 --------------------PhysicalOlapScan[customer_address]
---PhysicalCteAnchor ( cteId=CTEId#1 )
-----PhysicalCteProducer ( cteId=CTEId#1 )
-------PhysicalProject
---------hashAgg[GLOBAL]
-----------PhysicalDistribute
-------------hashAgg[LOCAL]
---------------PhysicalProject
-----------------hashJoin[INNER_JOIN](web_sales.ws_bill_addr_sk = 
customer_address.ca_address_sk)
-------------------PhysicalDistribute
---------------------PhysicalProject
-----------------------hashJoin[INNER_JOIN](web_sales.ws_sold_date_sk = 
date_dim.d_date_sk)
-------------------------PhysicalProject
---------------------------PhysicalOlapScan[web_sales]
-------------------------PhysicalDistribute
---------------------------PhysicalProject
-----------------------------filter((ws.d_year = 2000)d_qoy IN (1, 2, 3))
-------------------------------PhysicalOlapScan[date_dim]
-------------------PhysicalDistribute
---------------------PhysicalProject
-----------------------PhysicalOlapScan[customer_address]
 ----PhysicalResultSink
 ------PhysicalQuickSort
 --------PhysicalDistribute
diff --git 
a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query35.out 
b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query35.out
index 1a1d022d75b..8b3fcceebe9 100644
--- a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query35.out
+++ b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query35.out
@@ -9,51 +9,51 @@ PhysicalResultSink
 ------------PhysicalDistribute
 --------------hashAgg[LOCAL]
 ----------------PhysicalProject
-------------------filter(($c$1 OR $c$2))
---------------------hashJoin[LEFT_SEMI_JOIN](c.c_customer_sk = 
catalog_sales.cs_ship_customer_sk)
-----------------------hashJoin[LEFT_SEMI_JOIN](c.c_customer_sk = 
web_sales.ws_bill_customer_sk)
-------------------------PhysicalDistribute
+------------------hashJoin[RIGHT_SEMI_JOIN](c.c_customer_sk = 
store_sales.ss_customer_sk)
+--------------------PhysicalDistribute
+----------------------PhysicalProject
+------------------------hashJoin[INNER_JOIN](store_sales.ss_sold_date_sk = 
date_dim.d_date_sk)
 --------------------------PhysicalProject
-----------------------------hashJoin[INNER_JOIN](customer_demographics.cd_demo_sk
 = c.c_current_cdemo_sk)
-------------------------------PhysicalDistribute
---------------------------------PhysicalProject
-----------------------------------hashJoin[INNER_JOIN](c.c_current_addr_sk = 
ca.ca_address_sk)
-------------------------------------PhysicalDistribute
---------------------------------------hashJoin[RIGHT_SEMI_JOIN](c.c_customer_sk
 = store_sales.ss_customer_sk)
+----------------------------PhysicalOlapScan[store_sales]
+--------------------------PhysicalDistribute
+----------------------------PhysicalProject
+------------------------------filter((date_dim.d_qoy < 4)(date_dim.d_year = 
2001))
+--------------------------------PhysicalOlapScan[date_dim]
+--------------------PhysicalProject
+----------------------filter(($c$1 OR $c$2))
+------------------------hashJoin[LEFT_SEMI_JOIN](c.c_customer_sk = 
catalog_sales.cs_ship_customer_sk)
+--------------------------hashJoin[LEFT_SEMI_JOIN](c.c_customer_sk = 
web_sales.ws_bill_customer_sk)
+----------------------------PhysicalDistribute
+------------------------------PhysicalProject
+--------------------------------hashJoin[INNER_JOIN](customer_demographics.cd_demo_sk
 = c.c_current_cdemo_sk)
+----------------------------------PhysicalDistribute
+------------------------------------PhysicalProject
+--------------------------------------hashJoin[INNER_JOIN](c.c_current_addr_sk 
= ca.ca_address_sk)
 ----------------------------------------PhysicalDistribute
 ------------------------------------------PhysicalProject
---------------------------------------------hashJoin[INNER_JOIN](store_sales.ss_sold_date_sk
 = date_dim.d_date_sk)
-----------------------------------------------PhysicalProject
-------------------------------------------------PhysicalOlapScan[store_sales]
-----------------------------------------------PhysicalDistribute
-------------------------------------------------PhysicalProject
---------------------------------------------------filter((date_dim.d_qoy < 
4)(date_dim.d_year = 2001))
-----------------------------------------------------PhysicalOlapScan[date_dim]
+--------------------------------------------PhysicalOlapScan[customer]
 ----------------------------------------PhysicalDistribute
 ------------------------------------------PhysicalProject
---------------------------------------------PhysicalOlapScan[customer]
-------------------------------------PhysicalDistribute
---------------------------------------PhysicalProject
-----------------------------------------PhysicalOlapScan[customer_address]
-------------------------------PhysicalDistribute
---------------------------------PhysicalProject
-----------------------------------PhysicalOlapScan[customer_demographics]
-------------------------PhysicalDistribute
---------------------------PhysicalProject
-----------------------------hashJoin[INNER_JOIN](web_sales.ws_sold_date_sk = 
date_dim.d_date_sk)
-------------------------------PhysicalProject
---------------------------------PhysicalOlapScan[web_sales]
-------------------------------PhysicalDistribute
---------------------------------PhysicalProject
-----------------------------------filter((date_dim.d_qoy < 4)(date_dim.d_year 
= 2001))
-------------------------------------PhysicalOlapScan[date_dim]
-----------------------PhysicalDistribute
-------------------------PhysicalProject
---------------------------hashJoin[INNER_JOIN](catalog_sales.cs_sold_date_sk = 
date_dim.d_date_sk)
-----------------------------PhysicalProject
-------------------------------PhysicalOlapScan[catalog_sales]
+--------------------------------------------PhysicalOlapScan[customer_address]
+----------------------------------PhysicalDistribute
+------------------------------------PhysicalProject
+--------------------------------------PhysicalOlapScan[customer_demographics]
 ----------------------------PhysicalDistribute
 ------------------------------PhysicalProject
---------------------------------filter((date_dim.d_qoy < 4)(date_dim.d_year = 
2001))
-----------------------------------PhysicalOlapScan[date_dim]
+--------------------------------hashJoin[INNER_JOIN](web_sales.ws_sold_date_sk 
= date_dim.d_date_sk)
+----------------------------------PhysicalProject
+------------------------------------PhysicalOlapScan[web_sales]
+----------------------------------PhysicalDistribute
+------------------------------------PhysicalProject
+--------------------------------------filter((date_dim.d_qoy < 
4)(date_dim.d_year = 2001))
+----------------------------------------PhysicalOlapScan[date_dim]
+--------------------------PhysicalDistribute
+----------------------------PhysicalProject
+------------------------------hashJoin[INNER_JOIN](catalog_sales.cs_sold_date_sk
 = date_dim.d_date_sk)
+--------------------------------PhysicalProject
+----------------------------------PhysicalOlapScan[catalog_sales]
+--------------------------------PhysicalDistribute
+----------------------------------PhysicalProject
+------------------------------------filter((date_dim.d_qoy < 
4)(date_dim.d_year = 2001))
+--------------------------------------PhysicalOlapScan[date_dim]
 
diff --git 
a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query38.out 
b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query38.out
index 3b8e5596cc2..d8ce696005c 100644
--- a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query38.out
+++ b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query38.out
@@ -8,58 +8,55 @@ PhysicalResultSink
 ----------hashAgg[LOCAL]
 ------------PhysicalProject
 --------------PhysicalIntersect
-----------------PhysicalProject
-------------------hashAgg[GLOBAL]
---------------------PhysicalDistribute
-----------------------hashAgg[LOCAL]
-------------------------PhysicalProject
---------------------------hashJoin[INNER_JOIN](store_sales.ss_customer_sk = 
customer.c_customer_sk)
-----------------------------PhysicalDistribute
-------------------------------PhysicalProject
---------------------------------hashJoin[INNER_JOIN](store_sales.ss_sold_date_sk
 = date_dim.d_date_sk)
+----------------hashAgg[GLOBAL]
+------------------PhysicalDistribute
+--------------------hashAgg[LOCAL]
+----------------------PhysicalProject
+------------------------hashJoin[INNER_JOIN](store_sales.ss_customer_sk = 
customer.c_customer_sk)
+--------------------------PhysicalDistribute
+----------------------------PhysicalProject
+------------------------------hashJoin[INNER_JOIN](store_sales.ss_sold_date_sk 
= date_dim.d_date_sk)
+--------------------------------PhysicalProject
+----------------------------------PhysicalOlapScan[store_sales]
+--------------------------------PhysicalDistribute
 ----------------------------------PhysicalProject
-------------------------------------PhysicalOlapScan[store_sales]
-----------------------------------PhysicalDistribute
-------------------------------------PhysicalProject
---------------------------------------filter((date_dim.d_month_seq <= 
1194)(date_dim.d_month_seq >= 1183))
-----------------------------------------PhysicalOlapScan[date_dim]
-----------------------------PhysicalDistribute
-------------------------------PhysicalProject
---------------------------------PhysicalOlapScan[customer]
-----------------PhysicalProject
-------------------hashAgg[GLOBAL]
---------------------PhysicalDistribute
-----------------------hashAgg[LOCAL]
-------------------------PhysicalProject
---------------------------hashJoin[INNER_JOIN](catalog_sales.cs_bill_customer_sk
 = customer.c_customer_sk)
-----------------------------PhysicalDistribute
-------------------------------PhysicalProject
---------------------------------hashJoin[INNER_JOIN](catalog_sales.cs_sold_date_sk
 = date_dim.d_date_sk)
+------------------------------------filter((date_dim.d_month_seq <= 
1194)(date_dim.d_month_seq >= 1183))
+--------------------------------------PhysicalOlapScan[date_dim]
+--------------------------PhysicalDistribute
+----------------------------PhysicalProject
+------------------------------PhysicalOlapScan[customer]
+----------------hashAgg[GLOBAL]
+------------------PhysicalDistribute
+--------------------hashAgg[LOCAL]
+----------------------PhysicalProject
+------------------------hashJoin[INNER_JOIN](catalog_sales.cs_bill_customer_sk 
= customer.c_customer_sk)
+--------------------------PhysicalDistribute
+----------------------------PhysicalProject
+------------------------------hashJoin[INNER_JOIN](catalog_sales.cs_sold_date_sk
 = date_dim.d_date_sk)
+--------------------------------PhysicalProject
+----------------------------------PhysicalOlapScan[catalog_sales]
+--------------------------------PhysicalDistribute
 ----------------------------------PhysicalProject
-------------------------------------PhysicalOlapScan[catalog_sales]
-----------------------------------PhysicalDistribute
-------------------------------------PhysicalProject
---------------------------------------filter((date_dim.d_month_seq <= 
1194)(date_dim.d_month_seq >= 1183))
-----------------------------------------PhysicalOlapScan[date_dim]
-----------------------------PhysicalDistribute
-------------------------------PhysicalProject
---------------------------------PhysicalOlapScan[customer]
-----------------PhysicalProject
-------------------hashAgg[GLOBAL]
---------------------PhysicalDistribute
-----------------------hashAgg[LOCAL]
-------------------------PhysicalProject
---------------------------hashJoin[INNER_JOIN](web_sales.ws_bill_customer_sk = 
customer.c_customer_sk)
-----------------------------PhysicalDistribute
-------------------------------PhysicalProject
---------------------------------hashJoin[INNER_JOIN](web_sales.ws_sold_date_sk 
= date_dim.d_date_sk)
+------------------------------------filter((date_dim.d_month_seq <= 
1194)(date_dim.d_month_seq >= 1183))
+--------------------------------------PhysicalOlapScan[date_dim]
+--------------------------PhysicalDistribute
+----------------------------PhysicalProject
+------------------------------PhysicalOlapScan[customer]
+----------------hashAgg[GLOBAL]
+------------------PhysicalDistribute
+--------------------hashAgg[LOCAL]
+----------------------PhysicalProject
+------------------------hashJoin[INNER_JOIN](web_sales.ws_bill_customer_sk = 
customer.c_customer_sk)
+--------------------------PhysicalDistribute
+----------------------------PhysicalProject
+------------------------------hashJoin[INNER_JOIN](web_sales.ws_sold_date_sk = 
date_dim.d_date_sk)
+--------------------------------PhysicalProject
+----------------------------------PhysicalOlapScan[web_sales]
+--------------------------------PhysicalDistribute
 ----------------------------------PhysicalProject
-------------------------------------PhysicalOlapScan[web_sales]
-----------------------------------PhysicalDistribute
-------------------------------------PhysicalProject
---------------------------------------filter((date_dim.d_month_seq <= 
1194)(date_dim.d_month_seq >= 1183))
-----------------------------------------PhysicalOlapScan[date_dim]
-----------------------------PhysicalDistribute
-------------------------------PhysicalProject
---------------------------------PhysicalOlapScan[customer]
+------------------------------------filter((date_dim.d_month_seq <= 
1194)(date_dim.d_month_seq >= 1183))
+--------------------------------------PhysicalOlapScan[date_dim]
+--------------------------PhysicalDistribute
+----------------------------PhysicalProject
+------------------------------PhysicalOlapScan[customer]
 
diff --git 
a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query52.out 
b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query52.out
index 4bf2ceed3dc..66ea8b18734 100644
--- a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query52.out
+++ b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query52.out
@@ -4,21 +4,20 @@ PhysicalResultSink
 --PhysicalTopN
 ----PhysicalDistribute
 ------PhysicalTopN
---------PhysicalProject
-----------hashAgg[GLOBAL]
-------------PhysicalDistribute
---------------hashAgg[LOCAL]
-----------------PhysicalProject
-------------------hashJoin[INNER_JOIN](dt.d_date_sk = 
store_sales.ss_sold_date_sk)
---------------------hashJoin[INNER_JOIN](store_sales.ss_item_sk = 
item.i_item_sk)
-----------------------PhysicalProject
-------------------------PhysicalOlapScan[store_sales]
-----------------------PhysicalDistribute
-------------------------PhysicalProject
---------------------------filter((item.i_manager_id = 1))
-----------------------------PhysicalOlapScan[item]
+--------hashAgg[GLOBAL]
+----------PhysicalDistribute
+------------hashAgg[LOCAL]
+--------------PhysicalProject
+----------------hashJoin[INNER_JOIN](dt.d_date_sk = 
store_sales.ss_sold_date_sk)
+------------------hashJoin[INNER_JOIN](store_sales.ss_item_sk = item.i_item_sk)
+--------------------PhysicalProject
+----------------------PhysicalOlapScan[store_sales]
 --------------------PhysicalDistribute
 ----------------------PhysicalProject
-------------------------filter((dt.d_moy = 12)(dt.d_year = 2002))
---------------------------PhysicalOlapScan[date_dim]
+------------------------filter((item.i_manager_id = 1))
+--------------------------PhysicalOlapScan[item]
+------------------PhysicalDistribute
+--------------------PhysicalProject
+----------------------filter((dt.d_moy = 12)(dt.d_year = 2002))
+------------------------PhysicalOlapScan[date_dim]
 
diff --git 
a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query55.out 
b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query55.out
index 90db0b7ca05..1215eb4637b 100644
--- a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query55.out
+++ b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query55.out
@@ -4,21 +4,20 @@ PhysicalResultSink
 --PhysicalTopN
 ----PhysicalDistribute
 ------PhysicalTopN
---------PhysicalProject
-----------hashAgg[GLOBAL]
-------------PhysicalDistribute
---------------hashAgg[LOCAL]
-----------------PhysicalProject
-------------------hashJoin[INNER_JOIN](date_dim.d_date_sk = 
store_sales.ss_sold_date_sk)
---------------------hashJoin[INNER_JOIN](store_sales.ss_item_sk = 
item.i_item_sk)
-----------------------PhysicalProject
-------------------------PhysicalOlapScan[store_sales]
-----------------------PhysicalDistribute
-------------------------PhysicalProject
---------------------------filter((item.i_manager_id = 100))
-----------------------------PhysicalOlapScan[item]
+--------hashAgg[GLOBAL]
+----------PhysicalDistribute
+------------hashAgg[LOCAL]
+--------------PhysicalProject
+----------------hashJoin[INNER_JOIN](date_dim.d_date_sk = 
store_sales.ss_sold_date_sk)
+------------------hashJoin[INNER_JOIN](store_sales.ss_item_sk = item.i_item_sk)
+--------------------PhysicalProject
+----------------------PhysicalOlapScan[store_sales]
 --------------------PhysicalDistribute
 ----------------------PhysicalProject
-------------------------filter((date_dim.d_moy = 12)(date_dim.d_year = 2000))
---------------------------PhysicalOlapScan[date_dim]
+------------------------filter((item.i_manager_id = 100))
+--------------------------PhysicalOlapScan[item]
+------------------PhysicalDistribute
+--------------------PhysicalProject
+----------------------filter((date_dim.d_moy = 12)(date_dim.d_year = 2000))
+------------------------PhysicalOlapScan[date_dim]
 
diff --git 
a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query59.out 
b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query59.out
index 9f57ca69941..74f0058cc1f 100644
--- a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query59.out
+++ b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query59.out
@@ -2,17 +2,16 @@
 -- !ds_shape_59 --
 PhysicalCteAnchor ( cteId=CTEId#0 )
 --PhysicalCteProducer ( cteId=CTEId#0 )
-----PhysicalProject
-------hashAgg[GLOBAL]
---------PhysicalDistribute
-----------hashAgg[LOCAL]
-------------PhysicalProject
---------------hashJoin[INNER_JOIN](date_dim.d_date_sk = 
store_sales.ss_sold_date_sk)
+----hashAgg[GLOBAL]
+------PhysicalDistribute
+--------hashAgg[LOCAL]
+----------PhysicalProject
+------------hashJoin[INNER_JOIN](date_dim.d_date_sk = 
store_sales.ss_sold_date_sk)
+--------------PhysicalProject
+----------------PhysicalOlapScan[store_sales]
+--------------PhysicalDistribute
 ----------------PhysicalProject
-------------------PhysicalOlapScan[store_sales]
-----------------PhysicalDistribute
-------------------PhysicalProject
---------------------PhysicalOlapScan[date_dim]
+------------------PhysicalOlapScan[date_dim]
 --PhysicalResultSink
 ----PhysicalTopN
 ------PhysicalDistribute
diff --git 
a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query71.out 
b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query71.out
index 54922e2623d..d52d1ff6ae7 100644
--- a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query71.out
+++ b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query71.out
@@ -4,49 +4,48 @@ PhysicalResultSink
 --PhysicalQuickSort
 ----PhysicalDistribute
 ------PhysicalQuickSort
---------PhysicalProject
-----------hashAgg[GLOBAL]
-------------PhysicalDistribute
---------------hashAgg[LOCAL]
-----------------PhysicalProject
-------------------hashJoin[INNER_JOIN](tmp.time_sk = time_dim.t_time_sk)
---------------------PhysicalDistribute
-----------------------hashJoin[INNER_JOIN](tmp.sold_item_sk = item.i_item_sk)
-------------------------PhysicalDistribute
---------------------------PhysicalUnion
-----------------------------PhysicalDistribute
-------------------------------PhysicalProject
---------------------------------hashJoin[INNER_JOIN](date_dim.d_date_sk = 
web_sales.ws_sold_date_sk)
+--------hashAgg[GLOBAL]
+----------PhysicalDistribute
+------------hashAgg[LOCAL]
+--------------PhysicalProject
+----------------hashJoin[INNER_JOIN](tmp.time_sk = time_dim.t_time_sk)
+------------------PhysicalDistribute
+--------------------hashJoin[INNER_JOIN](tmp.sold_item_sk = item.i_item_sk)
+----------------------PhysicalDistribute
+------------------------PhysicalUnion
+--------------------------PhysicalDistribute
+----------------------------PhysicalProject
+------------------------------hashJoin[INNER_JOIN](date_dim.d_date_sk = 
web_sales.ws_sold_date_sk)
+--------------------------------PhysicalProject
+----------------------------------PhysicalOlapScan[web_sales]
+--------------------------------PhysicalDistribute
 ----------------------------------PhysicalProject
-------------------------------------PhysicalOlapScan[web_sales]
-----------------------------------PhysicalDistribute
-------------------------------------PhysicalProject
---------------------------------------filter((date_dim.d_moy = 
12)(date_dim.d_year = 1998))
-----------------------------------------PhysicalOlapScan[date_dim]
-----------------------------PhysicalDistribute
-------------------------------PhysicalProject
---------------------------------hashJoin[INNER_JOIN](date_dim.d_date_sk = 
catalog_sales.cs_sold_date_sk)
+------------------------------------filter((date_dim.d_moy = 
12)(date_dim.d_year = 1998))
+--------------------------------------PhysicalOlapScan[date_dim]
+--------------------------PhysicalDistribute
+----------------------------PhysicalProject
+------------------------------hashJoin[INNER_JOIN](date_dim.d_date_sk = 
catalog_sales.cs_sold_date_sk)
+--------------------------------PhysicalProject
+----------------------------------PhysicalOlapScan[catalog_sales]
+--------------------------------PhysicalDistribute
 ----------------------------------PhysicalProject
-------------------------------------PhysicalOlapScan[catalog_sales]
-----------------------------------PhysicalDistribute
-------------------------------------PhysicalProject
---------------------------------------filter((date_dim.d_moy = 
12)(date_dim.d_year = 1998))
-----------------------------------------PhysicalOlapScan[date_dim]
-----------------------------PhysicalDistribute
-------------------------------PhysicalProject
---------------------------------hashJoin[INNER_JOIN](date_dim.d_date_sk = 
store_sales.ss_sold_date_sk)
+------------------------------------filter((date_dim.d_moy = 
12)(date_dim.d_year = 1998))
+--------------------------------------PhysicalOlapScan[date_dim]
+--------------------------PhysicalDistribute
+----------------------------PhysicalProject
+------------------------------hashJoin[INNER_JOIN](date_dim.d_date_sk = 
store_sales.ss_sold_date_sk)
+--------------------------------PhysicalProject
+----------------------------------PhysicalOlapScan[store_sales]
+--------------------------------PhysicalDistribute
 ----------------------------------PhysicalProject
-------------------------------------PhysicalOlapScan[store_sales]
-----------------------------------PhysicalDistribute
-------------------------------------PhysicalProject
---------------------------------------filter((date_dim.d_moy = 
12)(date_dim.d_year = 1998))
-----------------------------------------PhysicalOlapScan[date_dim]
-------------------------PhysicalDistribute
---------------------------PhysicalProject
-----------------------------filter((item.i_manager_id = 1))
-------------------------------PhysicalOlapScan[item]
---------------------PhysicalDistribute
-----------------------PhysicalProject
-------------------------filter(((cast(t_meal_time as VARCHAR(*)) = 
'breakfast') OR (cast(t_meal_time as VARCHAR(*)) = 'dinner')))
---------------------------PhysicalOlapScan[time_dim]
+------------------------------------filter((date_dim.d_moy = 
12)(date_dim.d_year = 1998))
+--------------------------------------PhysicalOlapScan[date_dim]
+----------------------PhysicalDistribute
+------------------------PhysicalProject
+--------------------------filter((item.i_manager_id = 1))
+----------------------------PhysicalOlapScan[item]
+------------------PhysicalDistribute
+--------------------PhysicalProject
+----------------------filter(((cast(t_meal_time as VARCHAR(*)) = 'breakfast') 
OR (cast(t_meal_time as VARCHAR(*)) = 'dinner')))
+------------------------PhysicalOlapScan[time_dim]
 
diff --git 
a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query87.out 
b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query87.out
index c42693e374c..fcf6c2b80ac 100644
--- a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query87.out
+++ b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query87.out
@@ -6,58 +6,55 @@ PhysicalResultSink
 ------hashAgg[LOCAL]
 --------PhysicalProject
 ----------PhysicalExcept
-------------PhysicalProject
---------------hashAgg[GLOBAL]
-----------------PhysicalDistribute
-------------------hashAgg[LOCAL]
---------------------PhysicalProject
-----------------------hashJoin[INNER_JOIN](store_sales.ss_customer_sk = 
customer.c_customer_sk)
-------------------------PhysicalDistribute
---------------------------PhysicalProject
-----------------------------hashJoin[INNER_JOIN](store_sales.ss_sold_date_sk = 
date_dim.d_date_sk)
+------------hashAgg[GLOBAL]
+--------------PhysicalDistribute
+----------------hashAgg[LOCAL]
+------------------PhysicalProject
+--------------------hashJoin[INNER_JOIN](store_sales.ss_customer_sk = 
customer.c_customer_sk)
+----------------------PhysicalDistribute
+------------------------PhysicalProject
+--------------------------hashJoin[INNER_JOIN](store_sales.ss_sold_date_sk = 
date_dim.d_date_sk)
+----------------------------PhysicalProject
+------------------------------PhysicalOlapScan[store_sales]
+----------------------------PhysicalDistribute
 ------------------------------PhysicalProject
---------------------------------PhysicalOlapScan[store_sales]
-------------------------------PhysicalDistribute
---------------------------------PhysicalProject
-----------------------------------filter((date_dim.d_month_seq >= 
1184)(date_dim.d_month_seq <= 1195))
-------------------------------------PhysicalOlapScan[date_dim]
-------------------------PhysicalDistribute
---------------------------PhysicalProject
-----------------------------PhysicalOlapScan[customer]
-------------PhysicalProject
---------------hashAgg[GLOBAL]
-----------------PhysicalDistribute
-------------------hashAgg[LOCAL]
---------------------PhysicalProject
-----------------------hashJoin[INNER_JOIN](catalog_sales.cs_bill_customer_sk = 
customer.c_customer_sk)
-------------------------PhysicalDistribute
---------------------------PhysicalProject
-----------------------------hashJoin[INNER_JOIN](catalog_sales.cs_sold_date_sk 
= date_dim.d_date_sk)
+--------------------------------filter((date_dim.d_month_seq >= 
1184)(date_dim.d_month_seq <= 1195))
+----------------------------------PhysicalOlapScan[date_dim]
+----------------------PhysicalDistribute
+------------------------PhysicalProject
+--------------------------PhysicalOlapScan[customer]
+------------hashAgg[GLOBAL]
+--------------PhysicalDistribute
+----------------hashAgg[LOCAL]
+------------------PhysicalProject
+--------------------hashJoin[INNER_JOIN](catalog_sales.cs_bill_customer_sk = 
customer.c_customer_sk)
+----------------------PhysicalDistribute
+------------------------PhysicalProject
+--------------------------hashJoin[INNER_JOIN](catalog_sales.cs_sold_date_sk = 
date_dim.d_date_sk)
+----------------------------PhysicalProject
+------------------------------PhysicalOlapScan[catalog_sales]
+----------------------------PhysicalDistribute
 ------------------------------PhysicalProject
---------------------------------PhysicalOlapScan[catalog_sales]
-------------------------------PhysicalDistribute
---------------------------------PhysicalProject
-----------------------------------filter((date_dim.d_month_seq >= 
1184)(date_dim.d_month_seq <= 1195))
-------------------------------------PhysicalOlapScan[date_dim]
-------------------------PhysicalDistribute
---------------------------PhysicalProject
-----------------------------PhysicalOlapScan[customer]
-------------PhysicalProject
---------------hashAgg[GLOBAL]
-----------------PhysicalDistribute
-------------------hashAgg[LOCAL]
---------------------PhysicalProject
-----------------------hashJoin[INNER_JOIN](web_sales.ws_bill_customer_sk = 
customer.c_customer_sk)
-------------------------PhysicalDistribute
---------------------------PhysicalProject
-----------------------------hashJoin[INNER_JOIN](web_sales.ws_sold_date_sk = 
date_dim.d_date_sk)
+--------------------------------filter((date_dim.d_month_seq >= 
1184)(date_dim.d_month_seq <= 1195))
+----------------------------------PhysicalOlapScan[date_dim]
+----------------------PhysicalDistribute
+------------------------PhysicalProject
+--------------------------PhysicalOlapScan[customer]
+------------hashAgg[GLOBAL]
+--------------PhysicalDistribute
+----------------hashAgg[LOCAL]
+------------------PhysicalProject
+--------------------hashJoin[INNER_JOIN](web_sales.ws_bill_customer_sk = 
customer.c_customer_sk)
+----------------------PhysicalDistribute
+------------------------PhysicalProject
+--------------------------hashJoin[INNER_JOIN](web_sales.ws_sold_date_sk = 
date_dim.d_date_sk)
+----------------------------PhysicalProject
+------------------------------PhysicalOlapScan[web_sales]
+----------------------------PhysicalDistribute
 ------------------------------PhysicalProject
---------------------------------PhysicalOlapScan[web_sales]
-------------------------------PhysicalDistribute
---------------------------------PhysicalProject
-----------------------------------filter((date_dim.d_month_seq <= 
1195)(date_dim.d_month_seq >= 1184))
-------------------------------------PhysicalOlapScan[date_dim]
-------------------------PhysicalDistribute
---------------------------PhysicalProject
-----------------------------PhysicalOlapScan[customer]
+--------------------------------filter((date_dim.d_month_seq <= 
1195)(date_dim.d_month_seq >= 1184))
+----------------------------------PhysicalOlapScan[date_dim]
+----------------------PhysicalDistribute
+------------------------PhysicalProject
+--------------------------PhysicalOlapScan[customer]
 
diff --git 
a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query94.out 
b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query94.out
index 863a0879b24..970cc6eb7c4 100644
--- a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query94.out
+++ b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query94.out
@@ -3,37 +3,36 @@
 PhysicalResultSink
 --PhysicalTopN
 ----PhysicalTopN
-------PhysicalProject
---------hashAgg[DISTINCT_GLOBAL]
-----------PhysicalDistribute
-------------hashAgg[DISTINCT_LOCAL]
---------------hashAgg[GLOBAL]
-----------------hashAgg[LOCAL]
-------------------PhysicalProject
---------------------hashJoin[RIGHT_SEMI_JOIN](ws1.ws_order_number = 
ws2.ws_order_number)( not (ws_warehouse_sk = ws_warehouse_sk))
+------hashAgg[DISTINCT_GLOBAL]
+--------PhysicalDistribute
+----------hashAgg[DISTINCT_LOCAL]
+------------hashAgg[GLOBAL]
+--------------hashAgg[LOCAL]
+----------------PhysicalProject
+------------------hashJoin[RIGHT_SEMI_JOIN](ws1.ws_order_number = 
ws2.ws_order_number)( not (ws_warehouse_sk = ws_warehouse_sk))
+--------------------PhysicalDistribute
+----------------------PhysicalProject
+------------------------PhysicalOlapScan[web_sales]
+--------------------hashJoin[RIGHT_ANTI_JOIN](ws1.ws_order_number = 
wr1.wr_order_number)
 ----------------------PhysicalDistribute
 ------------------------PhysicalProject
---------------------------PhysicalOlapScan[web_sales]
-----------------------hashJoin[RIGHT_ANTI_JOIN](ws1.ws_order_number = 
wr1.wr_order_number)
-------------------------PhysicalDistribute
---------------------------PhysicalProject
-----------------------------PhysicalOlapScan[web_returns]
-------------------------PhysicalDistribute
---------------------------hashJoin[INNER_JOIN](ws1.ws_web_site_sk = 
web_site.web_site_sk)
-----------------------------hashJoin[INNER_JOIN](ws1.ws_ship_date_sk = 
date_dim.d_date_sk)
-------------------------------hashJoin[INNER_JOIN](ws1.ws_ship_addr_sk = 
customer_address.ca_address_sk)
---------------------------------PhysicalProject
-----------------------------------PhysicalOlapScan[web_sales]
---------------------------------PhysicalDistribute
-----------------------------------PhysicalProject
-------------------------------------filter((cast(ca_state as VARCHAR(*)) = 
'OK'))
---------------------------------------PhysicalOlapScan[customer_address]
+--------------------------PhysicalOlapScan[web_returns]
+----------------------PhysicalDistribute
+------------------------hashJoin[INNER_JOIN](ws1.ws_web_site_sk = 
web_site.web_site_sk)
+--------------------------hashJoin[INNER_JOIN](ws1.ws_ship_date_sk = 
date_dim.d_date_sk)
+----------------------------hashJoin[INNER_JOIN](ws1.ws_ship_addr_sk = 
customer_address.ca_address_sk)
+------------------------------PhysicalProject
+--------------------------------PhysicalOlapScan[web_sales]
 ------------------------------PhysicalDistribute
 --------------------------------PhysicalProject
-----------------------------------filter((date_dim.d_date <= 
2000-04-01)(date_dim.d_date >= 2000-02-01))
-------------------------------------PhysicalOlapScan[date_dim]
+----------------------------------filter((cast(ca_state as VARCHAR(*)) = 'OK'))
+------------------------------------PhysicalOlapScan[customer_address]
 ----------------------------PhysicalDistribute
 ------------------------------PhysicalProject
---------------------------------filter((cast(web_company_name as VARCHAR(*)) = 
'pri'))
-----------------------------------PhysicalOlapScan[web_site]
+--------------------------------filter((date_dim.d_date <= 
2000-04-01)(date_dim.d_date >= 2000-02-01))
+----------------------------------PhysicalOlapScan[date_dim]
+--------------------------PhysicalDistribute
+----------------------------PhysicalProject
+------------------------------filter((cast(web_company_name as VARCHAR(*)) = 
'pri'))
+--------------------------------PhysicalOlapScan[web_site]
 
diff --git 
a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query95.out 
b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query95.out
index 2c6ebe0d7be..f4b0cac3393 100644
--- a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query95.out
+++ b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query95.out
@@ -13,13 +13,16 @@ PhysicalCteAnchor ( cteId=CTEId#0 )
 --PhysicalResultSink
 ----PhysicalTopN
 ------PhysicalTopN
---------PhysicalProject
-----------hashAgg[DISTINCT_GLOBAL]
-------------PhysicalDistribute
---------------hashAgg[DISTINCT_LOCAL]
-----------------hashAgg[GLOBAL]
-------------------hashAgg[LOCAL]
---------------------PhysicalProject
+--------hashAgg[DISTINCT_GLOBAL]
+----------PhysicalDistribute
+------------hashAgg[DISTINCT_LOCAL]
+--------------hashAgg[GLOBAL]
+----------------hashAgg[LOCAL]
+------------------PhysicalProject
+--------------------hashJoin[RIGHT_SEMI_JOIN](ws1.ws_order_number = 
ws_wh.ws_order_number)
+----------------------PhysicalDistribute
+------------------------PhysicalProject
+--------------------------PhysicalCteConsumer ( cteId=CTEId#0 )
 ----------------------hashJoin[RIGHT_SEMI_JOIN](ws1.ws_order_number = 
web_returns.wr_order_number)
 ------------------------PhysicalProject
 --------------------------hashJoin[INNER_JOIN](web_returns.wr_order_number = 
ws_wh.ws_order_number)
@@ -29,26 +32,22 @@ PhysicalCteAnchor ( cteId=CTEId#0 )
 ----------------------------PhysicalDistribute
 ------------------------------PhysicalProject
 --------------------------------PhysicalOlapScan[web_returns]
-------------------------hashJoin[RIGHT_SEMI_JOIN](ws1.ws_order_number = 
ws_wh.ws_order_number)
---------------------------PhysicalDistribute
-----------------------------PhysicalProject
-------------------------------PhysicalCteConsumer ( cteId=CTEId#0 )
---------------------------PhysicalDistribute
-----------------------------hashJoin[INNER_JOIN](ws1.ws_web_site_sk = 
web_site.web_site_sk)
-------------------------------hashJoin[INNER_JOIN](ws1.ws_ship_date_sk = 
date_dim.d_date_sk)
---------------------------------hashJoin[INNER_JOIN](ws1.ws_ship_addr_sk = 
customer_address.ca_address_sk)
-----------------------------------PhysicalProject
-------------------------------------PhysicalOlapScan[web_sales]
-----------------------------------PhysicalDistribute
-------------------------------------PhysicalProject
---------------------------------------filter((cast(ca_state as VARCHAR(*)) = 
'NC'))
-----------------------------------------PhysicalOlapScan[customer_address]
+------------------------PhysicalDistribute
+--------------------------hashJoin[INNER_JOIN](ws1.ws_web_site_sk = 
web_site.web_site_sk)
+----------------------------hashJoin[INNER_JOIN](ws1.ws_ship_date_sk = 
date_dim.d_date_sk)
+------------------------------hashJoin[INNER_JOIN](ws1.ws_ship_addr_sk = 
customer_address.ca_address_sk)
+--------------------------------PhysicalProject
+----------------------------------PhysicalOlapScan[web_sales]
 --------------------------------PhysicalDistribute
 ----------------------------------PhysicalProject
-------------------------------------filter((date_dim.d_date >= 
1999-02-01)(date_dim.d_date <= 1999-04-02))
---------------------------------------PhysicalOlapScan[date_dim]
+------------------------------------filter((cast(ca_state as VARCHAR(*)) = 
'NC'))
+--------------------------------------PhysicalOlapScan[customer_address]
 ------------------------------PhysicalDistribute
 --------------------------------PhysicalProject
-----------------------------------filter((cast(web_company_name as VARCHAR(*)) 
= 'pri'))
-------------------------------------PhysicalOlapScan[web_site]
+----------------------------------filter((date_dim.d_date >= 
1999-02-01)(date_dim.d_date <= 1999-04-02))
+------------------------------------PhysicalOlapScan[date_dim]
+----------------------------PhysicalDistribute
+------------------------------PhysicalProject
+--------------------------------filter((cast(web_company_name as VARCHAR(*)) = 
'pri'))
+----------------------------------PhysicalOlapScan[web_site]
 
diff --git a/regression-test/data/nereids_tpch_shape_sf1000_p0/shape/q10.out 
b/regression-test/data/nereids_tpch_shape_sf1000_p0/shape/q10.out
index bbf108f0aed..d71a0ef61c5 100644
--- a/regression-test/data/nereids_tpch_shape_sf1000_p0/shape/q10.out
+++ b/regression-test/data/nereids_tpch_shape_sf1000_p0/shape/q10.out
@@ -4,26 +4,25 @@ PhysicalResultSink
 --PhysicalTopN
 ----PhysicalDistribute
 ------PhysicalTopN
---------PhysicalProject
-----------hashAgg[GLOBAL]
-------------PhysicalDistribute
---------------hashAgg[LOCAL]
-----------------PhysicalProject
-------------------hashJoin[INNER_JOIN](lineitem.l_orderkey = orders.o_orderkey)
---------------------PhysicalProject
-----------------------filter((lineitem.l_returnflag = 'R'))
-------------------------PhysicalOlapScan[lineitem]
---------------------PhysicalDistribute
-----------------------hashJoin[INNER_JOIN](customer.c_nationkey = 
nation.n_nationkey)
-------------------------PhysicalProject
---------------------------hashJoin[INNER_JOIN](customer.c_custkey = 
orders.o_custkey)
-----------------------------PhysicalProject
-------------------------------PhysicalOlapScan[customer]
-----------------------------PhysicalDistribute
-------------------------------PhysicalProject
---------------------------------filter((orders.o_orderdate < 
1994-01-01)(orders.o_orderdate >= 1993-10-01))
-----------------------------------PhysicalOlapScan[orders]
-------------------------PhysicalDistribute
+--------hashAgg[GLOBAL]
+----------PhysicalDistribute
+------------hashAgg[LOCAL]
+--------------PhysicalProject
+----------------hashJoin[INNER_JOIN](lineitem.l_orderkey = orders.o_orderkey)
+------------------PhysicalProject
+--------------------filter((lineitem.l_returnflag = 'R'))
+----------------------PhysicalOlapScan[lineitem]
+------------------PhysicalDistribute
+--------------------hashJoin[INNER_JOIN](customer.c_nationkey = 
nation.n_nationkey)
+----------------------PhysicalProject
+------------------------hashJoin[INNER_JOIN](customer.c_custkey = 
orders.o_custkey)
 --------------------------PhysicalProject
-----------------------------PhysicalOlapScan[nation]
+----------------------------PhysicalOlapScan[customer]
+--------------------------PhysicalDistribute
+----------------------------PhysicalProject
+------------------------------filter((orders.o_orderdate < 
1994-01-01)(orders.o_orderdate >= 1993-10-01))
+--------------------------------PhysicalOlapScan[orders]
+----------------------PhysicalDistribute
+------------------------PhysicalProject
+--------------------------PhysicalOlapScan[nation]
 
diff --git a/regression-test/data/nereids_tpch_shape_sf1000_p0/shape/q3.out 
b/regression-test/data/nereids_tpch_shape_sf1000_p0/shape/q3.out
index da651e12cda..04cec030a0f 100644
--- a/regression-test/data/nereids_tpch_shape_sf1000_p0/shape/q3.out
+++ b/regression-test/data/nereids_tpch_shape_sf1000_p0/shape/q3.out
@@ -4,22 +4,21 @@ PhysicalResultSink
 --PhysicalTopN
 ----PhysicalDistribute
 ------PhysicalTopN
---------PhysicalProject
-----------hashAgg[LOCAL]
-------------PhysicalProject
---------------hashJoin[INNER_JOIN](lineitem.l_orderkey = orders.o_orderkey)
+--------hashAgg[LOCAL]
+----------PhysicalProject
+------------hashJoin[INNER_JOIN](lineitem.l_orderkey = orders.o_orderkey)
+--------------PhysicalProject
+----------------filter((lineitem.l_shipdate > 1995-03-15))
+------------------PhysicalOlapScan[lineitem]
+--------------PhysicalDistribute
 ----------------PhysicalProject
-------------------filter((lineitem.l_shipdate > 1995-03-15))
---------------------PhysicalOlapScan[lineitem]
-----------------PhysicalDistribute
-------------------PhysicalProject
---------------------hashJoin[INNER_JOIN](customer.c_custkey = orders.o_custkey)
-----------------------PhysicalDistribute
-------------------------PhysicalProject
---------------------------filter((orders.o_orderdate < 1995-03-15))
-----------------------------PhysicalOlapScan[orders]
-----------------------PhysicalDistribute
-------------------------PhysicalProject
---------------------------filter((customer.c_mktsegment = 'BUILDING'))
-----------------------------PhysicalOlapScan[customer]
+------------------hashJoin[INNER_JOIN](customer.c_custkey = orders.o_custkey)
+--------------------PhysicalDistribute
+----------------------PhysicalProject
+------------------------filter((orders.o_orderdate < 1995-03-15))
+--------------------------PhysicalOlapScan[orders]
+--------------------PhysicalDistribute
+----------------------PhysicalProject
+------------------------filter((customer.c_mktsegment = 'BUILDING'))
+--------------------------PhysicalOlapScan[customer]
 
diff --git a/regression-test/data/nereids_tpch_shape_sf500_p0/shape/q10.out 
b/regression-test/data/nereids_tpch_shape_sf500_p0/shape/q10.out
index bbf108f0aed..d71a0ef61c5 100644
--- a/regression-test/data/nereids_tpch_shape_sf500_p0/shape/q10.out
+++ b/regression-test/data/nereids_tpch_shape_sf500_p0/shape/q10.out
@@ -4,26 +4,25 @@ PhysicalResultSink
 --PhysicalTopN
 ----PhysicalDistribute
 ------PhysicalTopN
---------PhysicalProject
-----------hashAgg[GLOBAL]
-------------PhysicalDistribute
---------------hashAgg[LOCAL]
-----------------PhysicalProject
-------------------hashJoin[INNER_JOIN](lineitem.l_orderkey = orders.o_orderkey)
---------------------PhysicalProject
-----------------------filter((lineitem.l_returnflag = 'R'))
-------------------------PhysicalOlapScan[lineitem]
---------------------PhysicalDistribute
-----------------------hashJoin[INNER_JOIN](customer.c_nationkey = 
nation.n_nationkey)
-------------------------PhysicalProject
---------------------------hashJoin[INNER_JOIN](customer.c_custkey = 
orders.o_custkey)
-----------------------------PhysicalProject
-------------------------------PhysicalOlapScan[customer]
-----------------------------PhysicalDistribute
-------------------------------PhysicalProject
---------------------------------filter((orders.o_orderdate < 
1994-01-01)(orders.o_orderdate >= 1993-10-01))
-----------------------------------PhysicalOlapScan[orders]
-------------------------PhysicalDistribute
+--------hashAgg[GLOBAL]
+----------PhysicalDistribute
+------------hashAgg[LOCAL]
+--------------PhysicalProject
+----------------hashJoin[INNER_JOIN](lineitem.l_orderkey = orders.o_orderkey)
+------------------PhysicalProject
+--------------------filter((lineitem.l_returnflag = 'R'))
+----------------------PhysicalOlapScan[lineitem]
+------------------PhysicalDistribute
+--------------------hashJoin[INNER_JOIN](customer.c_nationkey = 
nation.n_nationkey)
+----------------------PhysicalProject
+------------------------hashJoin[INNER_JOIN](customer.c_custkey = 
orders.o_custkey)
 --------------------------PhysicalProject
-----------------------------PhysicalOlapScan[nation]
+----------------------------PhysicalOlapScan[customer]
+--------------------------PhysicalDistribute
+----------------------------PhysicalProject
+------------------------------filter((orders.o_orderdate < 
1994-01-01)(orders.o_orderdate >= 1993-10-01))
+--------------------------------PhysicalOlapScan[orders]
+----------------------PhysicalDistribute
+------------------------PhysicalProject
+--------------------------PhysicalOlapScan[nation]
 
diff --git a/regression-test/data/nereids_tpch_shape_sf500_p0/shape/q3.out 
b/regression-test/data/nereids_tpch_shape_sf500_p0/shape/q3.out
index da651e12cda..04cec030a0f 100644
--- a/regression-test/data/nereids_tpch_shape_sf500_p0/shape/q3.out
+++ b/regression-test/data/nereids_tpch_shape_sf500_p0/shape/q3.out
@@ -4,22 +4,21 @@ PhysicalResultSink
 --PhysicalTopN
 ----PhysicalDistribute
 ------PhysicalTopN
---------PhysicalProject
-----------hashAgg[LOCAL]
-------------PhysicalProject
---------------hashJoin[INNER_JOIN](lineitem.l_orderkey = orders.o_orderkey)
+--------hashAgg[LOCAL]
+----------PhysicalProject
+------------hashJoin[INNER_JOIN](lineitem.l_orderkey = orders.o_orderkey)
+--------------PhysicalProject
+----------------filter((lineitem.l_shipdate > 1995-03-15))
+------------------PhysicalOlapScan[lineitem]
+--------------PhysicalDistribute
 ----------------PhysicalProject
-------------------filter((lineitem.l_shipdate > 1995-03-15))
---------------------PhysicalOlapScan[lineitem]
-----------------PhysicalDistribute
-------------------PhysicalProject
---------------------hashJoin[INNER_JOIN](customer.c_custkey = orders.o_custkey)
-----------------------PhysicalDistribute
-------------------------PhysicalProject
---------------------------filter((orders.o_orderdate < 1995-03-15))
-----------------------------PhysicalOlapScan[orders]
-----------------------PhysicalDistribute
-------------------------PhysicalProject
---------------------------filter((customer.c_mktsegment = 'BUILDING'))
-----------------------------PhysicalOlapScan[customer]
+------------------hashJoin[INNER_JOIN](customer.c_custkey = orders.o_custkey)
+--------------------PhysicalDistribute
+----------------------PhysicalProject
+------------------------filter((orders.o_orderdate < 1995-03-15))
+--------------------------PhysicalOlapScan[orders]
+--------------------PhysicalDistribute
+----------------------PhysicalProject
+------------------------filter((customer.c_mktsegment = 'BUILDING'))
+--------------------------PhysicalOlapScan[customer]
 
diff --git 
a/regression-test/suites/nereids_tpcds_shape_sf100_p0/rf/ds_rf10.groovy 
b/regression-test/suites/nereids_tpcds_shape_sf100_p0/rf/ds_rf10.groovy
index 015f5555c07..124c3be5d6d 100644
--- a/regression-test/suites/nereids_tpcds_shape_sf100_p0/rf/ds_rf10.groovy
+++ b/regression-test/suites/nereids_tpcds_shape_sf100_p0/rf/ds_rf10.groovy
@@ -109,5 +109,5 @@ limit 100;
     // File file = new File(outFile)
     // file.write(getRuntimeFilters(plan))
     
-     
assertEquals("RF5[c_current_cdemo_sk->[cd_demo_sk],RF4[c_customer_sk->[ss_customer_sk],RF3[d_date_sk->[ss_sold_date_sk],RF2[ca_address_sk->[c_current_addr_sk],RF1[d_date_sk->[ws_sold_date_sk],RF0[d_date_sk->[cs_sold_date_sk]",
 getRuntimeFilters(plan))
+     
assertEquals("RF5[c_customer_sk->[ss_customer_sk],RF4[d_date_sk->[ss_sold_date_sk],RF3[c_current_cdemo_sk->[cd_demo_sk],RF2[ca_address_sk->[c_current_addr_sk],RF1[d_date_sk->[ws_sold_date_sk],RF0[d_date_sk->[cs_sold_date_sk]",
 getRuntimeFilters(plan))
 }
diff --git 
a/regression-test/suites/nereids_tpcds_shape_sf100_p0/rf/ds_rf35.groovy 
b/regression-test/suites/nereids_tpcds_shape_sf100_p0/rf/ds_rf35.groovy
index 34ea54beea1..d4110b005ce 100644
--- a/regression-test/suites/nereids_tpcds_shape_sf100_p0/rf/ds_rf35.groovy
+++ b/regression-test/suites/nereids_tpcds_shape_sf100_p0/rf/ds_rf35.groovy
@@ -108,5 +108,5 @@ suite("ds_rf35") {
     // File file = new File(outFile)
     // file.write(getRuntimeFilters(plan))
     
-     
assertEquals("RF5[cd_demo_sk->[c_current_cdemo_sk],RF4[ca_address_sk->[c_current_addr_sk],RF3[c_customer_sk->[ss_customer_sk],RF2[d_date_sk->[ss_sold_date_sk],RF1[d_date_sk->[ws_sold_date_sk],RF0[d_date_sk->[cs_sold_date_sk]",
 getRuntimeFilters(plan))
+     
assertEquals("RF5[c_customer_sk->[ss_customer_sk],RF4[d_date_sk->[ss_sold_date_sk],RF3[cd_demo_sk->[c_current_cdemo_sk],RF2[ca_address_sk->[c_current_addr_sk],RF1[d_date_sk->[ws_sold_date_sk],RF0[d_date_sk->[cs_sold_date_sk]",
 getRuntimeFilters(plan))
 }
diff --git 
a/regression-test/suites/nereids_tpcds_shape_sf100_p0/rf/ds_rf95.groovy 
b/regression-test/suites/nereids_tpcds_shape_sf100_p0/rf/ds_rf95.groovy
index 075cbfcdfa3..689c0467102 100644
--- a/regression-test/suites/nereids_tpcds_shape_sf100_p0/rf/ds_rf95.groovy
+++ b/regression-test/suites/nereids_tpcds_shape_sf100_p0/rf/ds_rf95.groovy
@@ -82,5 +82,5 @@ limit 100;
     // File file = new File(outFile)
     // file.write(getRuntimeFilters(plan))
 
-     
assertEquals("RF0[ws_order_number->[ws_order_number],RF5[wr_order_number->[ws_order_number],RF7[wr_order_number->[ws_order_number,
 
ws_order_number],RF4[ws_order_number->[ws_order_number],RF6[ws_order_number->[ws_order_number,
 
ws_order_number],RF3[web_site_sk->[ws_web_site_sk],RF2[d_date_sk->[ws_ship_date_sk],RF1[ca_address_sk->[ws_ship_addr_sk]",
 getRuntimeFilters(plan))
+     
assertEquals("RF0[ws_order_number->[ws_order_number],RF5[ws_order_number->[wr_order_number],RF4[wr_order_number->[ws_order_number],RF3[web_site_sk->[ws_web_site_sk],RF2[d_date_sk->[ws_ship_date_sk],RF1[ca_address_sk->[ws_ship_addr_sk]",
 getRuntimeFilters(plan))
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to