This is an automated email from the ASF dual-hosted git repository.
kxiao pushed a commit to branch branch-2.0
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-2.0 by this push:
new ec6aedd479 [fix](Nereids): mergeGroup should merge target Group into
existed Group (#22123) (#23199)
ec6aedd479 is described below
commit ec6aedd4795234035a9640a2b7c8dbce107e29fe
Author: jakevin <[email protected]>
AuthorDate: Mon Aug 21 10:13:24 2023 +0800
[fix](Nereids): mergeGroup should merge target Group into existed Group
(#22123) (#23199)
---
.../nereids/jobs/joinorder/hypergraph/Node.java | 1 +
.../hypergraph/receiver/PlanReceiver.java | 26 ++--
.../org/apache/doris/nereids/util/PlanChecker.java | 22 +--
.../nereids_tpcds_shape_sf100_p0/shape/query15.out | 45 +++---
.../nereids_tpcds_shape_sf100_p0/shape/query16.out | 63 ++++-----
.../nereids_tpcds_shape_sf100_p0/shape/query33.out | 157 ++++++++++-----------
.../nereids_tpcds_shape_sf100_p0/shape/query40.out | 51 ++++---
.../nereids_tpcds_shape_sf100_p0/shape/query6.out | 95 ++++++-------
.../nereids_tpcds_shape_sf100_p0/shape/query62.out | 47 +++---
.../nereids_tpcds_shape_sf100_p0/shape/query66.out | 105 +++++++-------
.../nereids_tpcds_shape_sf100_p0/shape/query68.out | 73 +++++-----
.../nereids_tpcds_shape_sf100_p0/shape/query99.out | 47 +++---
.../nereids_tpch_shape_sf1000_p0/shape/q21.out | 51 ++++---
.../data/nereids_tpch_shape_sf500_p0/shape/q21.out | 51 ++++---
14 files changed, 414 insertions(+), 420 deletions(-)
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/joinorder/hypergraph/Node.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/joinorder/hypergraph/Node.java
index 599db01987..40c5171769 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/joinorder/hypergraph/Node.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/joinorder/hypergraph/Node.java
@@ -29,6 +29,7 @@ import java.util.List;
*/
public class Node {
private final int index;
+ // TODO
private final Group group;
private final List<Edge> edges = new ArrayList<>();
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/joinorder/hypergraph/receiver/PlanReceiver.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/joinorder/hypergraph/receiver/PlanReceiver.java
index e364edf239..f058feff77 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/joinorder/hypergraph/receiver/PlanReceiver.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/joinorder/hypergraph/receiver/PlanReceiver.java
@@ -57,6 +57,7 @@ import java.util.HashSet;
import java.util.List;
import java.util.Optional;
import java.util.Set;
+import java.util.function.Supplier;
import java.util.stream.Collectors;
import javax.annotation.Nullable;
@@ -132,7 +133,7 @@ public class PlanReceiver implements AbstractReceiver {
}
Group group = planTable.get(fullKey);
for (Plan plan : physicalPlans) {
- CopyInResult copyInResult = memo.copyIn(plan, group, false);
+ CopyInResult copyInResult = memo.copyIn(plan, group, false,
planTable);
GroupExpression physicalExpression =
copyInResult.correspondingExpression;
proposeAllDistributedPlans(physicalExpression);
}
@@ -266,7 +267,7 @@ public class PlanReceiver implements AbstractReceiver {
usdEdges.put(bitmap, new BitSet());
Plan plan = proposeProject(Lists.newArrayList(new GroupPlan(group)),
new ArrayList<>(), bitmap, bitmap).get(0);
if (!(plan instanceof GroupPlan)) {
- CopyInResult copyInResult =
jobContext.getCascadesContext().getMemo().copyIn(plan, null, false);
+ CopyInResult copyInResult =
jobContext.getCascadesContext().getMemo().copyIn(plan, null, false, planTable);
group = copyInResult.correspondingExpression.getOwnerGroup();
}
planTable.put(bitmap, group);
@@ -289,23 +290,21 @@ public class PlanReceiver implements AbstractReceiver {
@Override
public Group getBestPlan(long bitmap) {
- Group root = planTable.get(bitmap);
- Preconditions.checkState(root != null);
// If there are some rules relied on the logical join, we need to make
logical Expression
// However, it cost 15% of total optimized time.
- makeLogicalExpression(root);
- return root;
+ makeLogicalExpression(() -> planTable.get(bitmap));
+ return planTable.get(bitmap);
}
- private void makeLogicalExpression(Group root) {
- if (!root.getLogicalExpressions().isEmpty()) {
+ private void makeLogicalExpression(Supplier<Group> root) {
+ if (!root.get().getLogicalExpressions().isEmpty()) {
return;
}
// only makeLogicalExpression for those winners
Set<GroupExpression> hasGenerated = new HashSet<>();
- for (PhysicalProperties physicalProperties : root.getAllProperties()) {
- GroupExpression groupExpression =
root.getBestPlan(physicalProperties);
+ for (PhysicalProperties physicalProperties :
root.get().getAllProperties()) {
+ GroupExpression groupExpression =
root.get().getBestPlan(physicalProperties);
if (hasGenerated.contains(groupExpression) ||
groupExpression.getPlan() instanceof PhysicalDistribute) {
continue;
}
@@ -313,8 +312,9 @@ public class PlanReceiver implements AbstractReceiver {
// process child first, plan's child may be changed due to
mergeGroup
Plan physicalPlan = groupExpression.getPlan();
- for (Group child : groupExpression.children()) {
- makeLogicalExpression(child);
+ for (int i = 0; i < groupExpression.children().size(); i++) {
+ int childIdx = i;
+ makeLogicalExpression(() -> groupExpression.child(childIdx));
}
Plan logicalPlan;
@@ -330,7 +330,7 @@ public class PlanReceiver implements AbstractReceiver {
} else {
throw new RuntimeException("DPhyp can only handle join and
project operator");
}
- jobContext.getCascadesContext().getMemo().copyIn(logicalPlan,
root, false);
+ jobContext.getCascadesContext().getMemo().copyIn(logicalPlan,
root.get(), false, planTable);
}
}
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 ea04b2df77..8082a233cb 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
@@ -65,7 +65,6 @@ import org.apache.doris.planner.PlanFragment;
import org.apache.doris.qe.ConnectContext;
import org.apache.doris.qe.OriginStatement;
-import com.google.common.base.Supplier;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
@@ -76,6 +75,7 @@ import java.util.List;
import java.util.Optional;
import java.util.Set;
import java.util.function.Consumer;
+import java.util.function.Supplier;
/**
* Utility to apply rules to plan and check output plan matches the expected
pattern.
@@ -357,20 +357,24 @@ public class PlanChecker {
}
private PlanChecker applyExploration(Group group, Rule rule) {
- // copy groupExpressions can prevent ConcurrentModificationException
- for (GroupExpression logicalExpression :
Lists.newArrayList(group.getLogicalExpressions())) {
- applyExploration(logicalExpression, rule);
+ List<GroupExpression> logicalExpressions =
Lists.newArrayList(group.getLogicalExpressions());
+ for (int i = 0; i < logicalExpressions.size(); i++) {
+ final int childIdx = i;
+ applyExploration(() -> logicalExpressions.get(childIdx), rule);
}
- for (GroupExpression physicalExpression :
Lists.newArrayList(group.getPhysicalExpressions())) {
- applyExploration(physicalExpression, rule);
+ List<GroupExpression> physicalExpressions =
Lists.newArrayList(group.getPhysicalExpressions());
+ for (int i = 0; i < physicalExpressions.size(); i++) {
+ final int childIdx = i;
+ applyExploration(() -> physicalExpressions.get(childIdx), rule);
}
return this;
}
- private void applyExploration(GroupExpression groupExpression, Rule rule) {
- GroupExpressionMatching matchResult = new
GroupExpressionMatching(rule.getPattern(), groupExpression);
+ private void applyExploration(Supplier<GroupExpression> groupExpression,
Rule rule) {
+ GroupExpressionMatching matchResult = new
GroupExpressionMatching(rule.getPattern(), groupExpression.get());
+ List<Group> childrenGroup = new
ArrayList<>(groupExpression.get().children());
for (Plan before : matchResult) {
Plan after = rule.transform(before, cascadesContext).get(0);
if (before != after) {
@@ -378,7 +382,7 @@ public class PlanChecker {
}
}
- for (Group childGroup : groupExpression.children()) {
+ for (Group childGroup : childrenGroup) {
applyExploration(childGroup, rule);
}
}
diff --git
a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query15.out
b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query15.out
index abb2fe6156..3276beaec8 100644
--- a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query15.out
+++ b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query15.out
@@ -1,29 +1,28 @@
-- This file is automatically generated. You should know what you did if you
want to edit this
-- !ds_shape_15 --
-PhysicalResultSink
---PhysicalTopN
-----PhysicalDistribute
-------PhysicalTopN
---------hashAgg[GLOBAL]
-----------PhysicalDistribute
-------------hashAgg[LOCAL]
---------------PhysicalProject
-----------------hashJoin[INNER_JOIN](catalog_sales.cs_bill_customer_sk =
customer.c_customer_sk)((substring(ca_zip, 1, 5) IN ('85669', '86197', '88274',
'83405', '86475', '85392', '85460', '80348', '81792') OR ca_state IN ('CA',
'WA', 'GA')) OR (catalog_sales.cs_sales_price > 500.00))
-------------------PhysicalDistribute
---------------------hashJoin[INNER_JOIN](catalog_sales.cs_sold_date_sk =
date_dim.d_date_sk)
+PhysicalTopN
+--PhysicalDistribute
+----PhysicalTopN
+------hashAgg[GLOBAL]
+--------PhysicalDistribute
+----------hashAgg[LOCAL]
+------------PhysicalProject
+--------------hashJoin[INNER_JOIN](catalog_sales.cs_bill_customer_sk =
customer.c_customer_sk)((substring(ca_zip, 1, 5) IN ('85669', '86197', '88274',
'83405', '86475', '85392', '85460', '80348', '81792') OR ca_state IN ('CA',
'WA', 'GA')) OR (catalog_sales.cs_sales_price > 500.00))
+----------------PhysicalDistribute
+------------------hashJoin[INNER_JOIN](catalog_sales.cs_sold_date_sk =
date_dim.d_date_sk)
+--------------------PhysicalProject
+----------------------PhysicalOlapScan[catalog_sales]
+--------------------PhysicalDistribute
----------------------PhysicalProject
-------------------------PhysicalOlapScan[catalog_sales]
+------------------------filter((date_dim.d_qoy = 1)(date_dim.d_year = 2001))
+--------------------------PhysicalOlapScan[date_dim]
+----------------PhysicalDistribute
+------------------PhysicalProject
+--------------------hashJoin[INNER_JOIN](customer.c_current_addr_sk =
customer_address.ca_address_sk)
----------------------PhysicalDistribute
------------------------PhysicalProject
---------------------------filter((date_dim.d_qoy = 1)(date_dim.d_year = 2001))
-----------------------------PhysicalOlapScan[date_dim]
-------------------PhysicalDistribute
---------------------PhysicalProject
-----------------------hashJoin[INNER_JOIN](customer.c_current_addr_sk =
customer_address.ca_address_sk)
-------------------------PhysicalDistribute
---------------------------PhysicalProject
-----------------------------PhysicalOlapScan[customer]
-------------------------PhysicalDistribute
---------------------------PhysicalProject
-----------------------------PhysicalOlapScan[customer_address]
+--------------------------PhysicalOlapScan[customer]
+----------------------PhysicalDistribute
+------------------------PhysicalProject
+--------------------------PhysicalOlapScan[customer_address]
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 4b580416f2..eefd61c93b 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
@@ -1,39 +1,38 @@
-- This file is automatically generated. You should know what you did if you
want to edit this
-- !ds_shape_16 --
-PhysicalResultSink
+PhysicalTopN
--PhysicalTopN
-----PhysicalTopN
-------PhysicalProject
---------hashAgg[GLOBAL]
-----------PhysicalDistribute
-------------hashAgg[LOCAL]
---------------PhysicalProject
-----------------hashJoin[INNER_JOIN](cs1.cs_ship_date_sk = date_dim.d_date_sk)
-------------------PhysicalDistribute
---------------------PhysicalProject
-----------------------hashJoin[RIGHT_SEMI_JOIN](cs1.cs_order_number =
cs2.cs_order_number)( not (cs_warehouse_sk = cs_warehouse_sk))
-------------------------PhysicalDistribute
+----PhysicalProject
+------hashAgg[GLOBAL]
+--------PhysicalDistribute
+----------hashAgg[LOCAL]
+------------PhysicalProject
+--------------hashJoin[INNER_JOIN](cs1.cs_call_center_sk =
call_center.cc_call_center_sk)
+----------------PhysicalProject
+------------------filter(cc_county IN ('Ziebach County', 'Luce County',
'Richland County', 'Daviess County', 'Barrow County'))
+--------------------PhysicalOlapScan[call_center]
+----------------PhysicalDistribute
+------------------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]
+----------------------PhysicalDistribute
+------------------------hashJoin[INNER_JOIN](cs1.cs_ship_date_sk =
date_dim.d_date_sk)
--------------------------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_addr_sk =
customer_address.ca_address_sk)
+----------------------------filter((cast(d_date as DATETIMEV2(0)) <=
cast(days_add(cast('2002-4-01' as DATEV2), INTERVAL 60 DAY) as
DATETIMEV2(0)))(date_dim.d_date >= 2002-04-01))
+------------------------------PhysicalOlapScan[date_dim]
+--------------------------PhysicalDistribute
+----------------------------hashJoin[RIGHT_ANTI_JOIN](cs1.cs_order_number =
cr1.cr_order_number)
+------------------------------PhysicalDistribute
--------------------------------PhysicalProject
-----------------------------------PhysicalOlapScan[catalog_sales]
---------------------------------PhysicalDistribute
+----------------------------------PhysicalOlapScan[catalog_returns]
+------------------------------PhysicalDistribute
+--------------------------------hashJoin[INNER_JOIN](cs1.cs_ship_addr_sk =
customer_address.ca_address_sk)
----------------------------------PhysicalProject
-------------------------------------filter((cast(ca_state as VARCHAR(*)) =
'WV'))
---------------------------------------PhysicalOlapScan[customer_address]
---------------------------PhysicalDistribute
-----------------------------PhysicalProject
-------------------------------filter(cc_county IN ('Ziebach County', 'Luce
County', 'Richland County', 'Daviess County', 'Barrow County'))
---------------------------------PhysicalOlapScan[call_center]
-------------------PhysicalDistribute
---------------------PhysicalProject
-----------------------filter((cast(d_date as DATETIMEV2(0)) <=
cast(days_add(cast('2002-4-01' as DATEV2), INTERVAL 60 DAY) as
DATETIMEV2(0)))(date_dim.d_date >= 2002-04-01))
-------------------------PhysicalOlapScan[date_dim]
+------------------------------------PhysicalOlapScan[catalog_sales]
+----------------------------------PhysicalDistribute
+------------------------------------PhysicalProject
+--------------------------------------filter((cast(ca_state as VARCHAR(*)) =
'WV'))
+----------------------------------------PhysicalOlapScan[customer_address]
diff --git
a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query33.out
b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query33.out
index cea4ec9ccc..e9a32797ac 100644
--- a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query33.out
+++ b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query33.out
@@ -1,57 +1,89 @@
-- This file is automatically generated. You should know what you did if you
want to edit this
-- !ds_shape_33 --
-PhysicalResultSink
---PhysicalTopN
-----PhysicalDistribute
-------PhysicalTopN
---------hashAgg[GLOBAL]
-----------PhysicalDistribute
-------------hashAgg[LOCAL]
---------------PhysicalUnion
-----------------PhysicalProject
-------------------hashAgg[GLOBAL]
---------------------PhysicalDistribute
-----------------------hashAgg[LOCAL]
-------------------------PhysicalProject
---------------------------hashJoin[INNER_JOIN](store_sales.ss_item_sk =
item.i_item_sk)
-----------------------------PhysicalDistribute
-------------------------------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)
+PhysicalTopN
+--PhysicalDistribute
+----PhysicalTopN
+------hashAgg[GLOBAL]
+--------PhysicalDistribute
+----------hashAgg[LOCAL]
+------------PhysicalUnion
+--------------PhysicalProject
+----------------hashAgg[GLOBAL]
+------------------PhysicalDistribute
+--------------------hashAgg[LOCAL]
+----------------------PhysicalProject
+------------------------hashJoin[INNER_JOIN](store_sales.ss_item_sk =
item.i_item_sk)
+--------------------------PhysicalDistribute
+----------------------------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
-------------------------------------------PhysicalOlapScan[store_sales]
-----------------------------------------PhysicalDistribute
-------------------------------------------PhysicalProject
---------------------------------------------filter((date_dim.d_moy =
1)(date_dim.d_year = 2002))
-----------------------------------------------PhysicalOlapScan[date_dim]
-----------------------------------PhysicalDistribute
-------------------------------------PhysicalProject
---------------------------------------filter((customer_address.ca_gmt_offset =
-5.00))
-----------------------------------------PhysicalOlapScan[customer_address]
-----------------------------PhysicalDistribute
-------------------------------hashJoin[LEFT_SEMI_JOIN](item.i_manufact_id =
item.i_manufact_id)
+------------------------------------------filter((date_dim.d_moy =
1)(date_dim.d_year = 2002))
+--------------------------------------------PhysicalOlapScan[date_dim]
+--------------------------------PhysicalDistribute
+----------------------------------PhysicalProject
+------------------------------------filter((customer_address.ca_gmt_offset =
-5.00))
+--------------------------------------PhysicalOlapScan[customer_address]
+--------------------------PhysicalDistribute
+----------------------------hashJoin[LEFT_SEMI_JOIN](item.i_manufact_id =
item.i_manufact_id)
+------------------------------PhysicalProject
+--------------------------------PhysicalOlapScan[item]
+------------------------------PhysicalDistribute
--------------------------------PhysicalProject
-----------------------------------PhysicalOlapScan[item]
+----------------------------------filter((item.i_category = 'Home'))
+------------------------------------PhysicalOlapScan[item]
+--------------PhysicalProject
+----------------hashAgg[GLOBAL]
+------------------PhysicalDistribute
+--------------------hashAgg[LOCAL]
+----------------------PhysicalProject
+------------------------hashJoin[INNER_JOIN](catalog_sales.cs_item_sk =
item.i_item_sk)
+--------------------------PhysicalDistribute
+----------------------------PhysicalProject
+------------------------------hashJoin[INNER_JOIN](catalog_sales.cs_bill_addr_sk
= customer_address.ca_address_sk)
--------------------------------PhysicalDistribute
----------------------------------PhysicalProject
-------------------------------------filter((item.i_category = 'Home'))
---------------------------------------PhysicalOlapScan[item]
-----------------PhysicalProject
-------------------hashAgg[GLOBAL]
---------------------PhysicalDistribute
-----------------------hashAgg[LOCAL]
-------------------------PhysicalProject
---------------------------hashJoin[INNER_JOIN](catalog_sales.cs_item_sk =
item.i_item_sk)
+------------------------------------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_year = 2002))
+--------------------------------------------PhysicalOlapScan[date_dim]
+--------------------------------PhysicalDistribute
+----------------------------------PhysicalProject
+------------------------------------filter((customer_address.ca_gmt_offset =
-5.00))
+--------------------------------------PhysicalOlapScan[customer_address]
+--------------------------PhysicalDistribute
+----------------------------hashJoin[LEFT_SEMI_JOIN](item.i_manufact_id =
item.i_manufact_id)
+------------------------------PhysicalProject
+--------------------------------PhysicalOlapScan[item]
+------------------------------PhysicalDistribute
+--------------------------------PhysicalProject
+----------------------------------filter((item.i_category = 'Home'))
+------------------------------------PhysicalOlapScan[item]
+--------------PhysicalProject
+----------------hashAgg[GLOBAL]
+------------------PhysicalDistribute
+--------------------hashAgg[LOCAL]
+----------------------PhysicalProject
+------------------------hashJoin[LEFT_SEMI_JOIN](item.i_manufact_id =
item.i_manufact_id)
+--------------------------hashJoin[INNER_JOIN](web_sales.ws_item_sk =
item.i_item_sk)
+----------------------------PhysicalProject
+------------------------------PhysicalOlapScan[item]
----------------------------PhysicalDistribute
------------------------------PhysicalProject
---------------------------------hashJoin[INNER_JOIN](catalog_sales.cs_bill_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](catalog_sales.cs_sold_date_sk
= date_dim.d_date_sk)
+--------------------------------------hashJoin[INNER_JOIN](web_sales.ws_sold_date_sk
= date_dim.d_date_sk)
----------------------------------------PhysicalProject
-------------------------------------------PhysicalOlapScan[catalog_sales]
+------------------------------------------PhysicalOlapScan[web_sales]
----------------------------------------PhysicalDistribute
------------------------------------------PhysicalProject
--------------------------------------------filter((date_dim.d_moy =
1)(date_dim.d_year = 2002))
@@ -60,41 +92,8 @@ PhysicalResultSink
------------------------------------PhysicalProject
--------------------------------------filter((customer_address.ca_gmt_offset =
-5.00))
----------------------------------------PhysicalOlapScan[customer_address]
-----------------------------PhysicalDistribute
-------------------------------hashJoin[LEFT_SEMI_JOIN](item.i_manufact_id =
item.i_manufact_id)
---------------------------------PhysicalProject
-----------------------------------PhysicalOlapScan[item]
---------------------------------PhysicalDistribute
-----------------------------------PhysicalProject
-------------------------------------filter((item.i_category = 'Home'))
---------------------------------------PhysicalOlapScan[item]
-----------------PhysicalProject
-------------------hashAgg[GLOBAL]
---------------------PhysicalDistribute
-----------------------hashAgg[LOCAL]
-------------------------PhysicalProject
---------------------------hashJoin[LEFT_SEMI_JOIN](item.i_manufact_id =
item.i_manufact_id)
-----------------------------hashJoin[INNER_JOIN](web_sales.ws_item_sk =
item.i_item_sk)
-------------------------------PhysicalProject
+--------------------------PhysicalDistribute
+----------------------------PhysicalProject
+------------------------------filter((item.i_category = 'Home'))
--------------------------------PhysicalOlapScan[item]
-------------------------------PhysicalDistribute
---------------------------------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((date_dim.d_moy =
1)(date_dim.d_year = 2002))
-------------------------------------------------PhysicalOlapScan[date_dim]
-------------------------------------PhysicalDistribute
---------------------------------------PhysicalProject
-----------------------------------------filter((customer_address.ca_gmt_offset
= -5.00))
-------------------------------------------PhysicalOlapScan[customer_address]
-----------------------------PhysicalDistribute
-------------------------------PhysicalProject
---------------------------------filter((item.i_category = 'Home'))
-----------------------------------PhysicalOlapScan[item]
diff --git
a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query40.out
b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query40.out
index 6c1818fbfd..5b6553bb24 100644
--- a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query40.out
+++ b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query40.out
@@ -1,31 +1,30 @@
-- This file is automatically generated. You should know what you did if you
want to edit this
-- !ds_shape_40 --
-PhysicalResultSink
---PhysicalTopN
-----PhysicalDistribute
-------PhysicalTopN
---------hashAgg[GLOBAL]
-----------PhysicalDistribute
-------------hashAgg[LOCAL]
---------------PhysicalProject
-----------------hashJoin[INNER_JOIN](catalog_sales.cs_warehouse_sk =
warehouse.w_warehouse_sk)
-------------------PhysicalProject
---------------------hashJoin[RIGHT_OUTER_JOIN](catalog_sales.cs_item_sk =
catalog_returns.cr_item_sk)(catalog_sales.cs_order_number =
catalog_returns.cr_order_number)
-----------------------PhysicalProject
-------------------------PhysicalOlapScan[catalog_returns]
-----------------------hashJoin[INNER_JOIN](catalog_sales.cs_sold_date_sk =
date_dim.d_date_sk)
-------------------------hashJoin[INNER_JOIN](item.i_item_sk =
catalog_sales.cs_item_sk)
---------------------------PhysicalProject
-----------------------------PhysicalOlapScan[catalog_sales]
---------------------------PhysicalDistribute
-----------------------------PhysicalProject
-------------------------------filter((item.i_current_price >=
0.99)(item.i_current_price <= 1.49))
---------------------------------PhysicalOlapScan[item]
+PhysicalTopN
+--PhysicalDistribute
+----PhysicalTopN
+------hashAgg[GLOBAL]
+--------PhysicalDistribute
+----------hashAgg[LOCAL]
+------------PhysicalProject
+--------------hashJoin[INNER_JOIN](catalog_sales.cs_warehouse_sk =
warehouse.w_warehouse_sk)
+----------------PhysicalProject
+------------------hashJoin[RIGHT_OUTER_JOIN](catalog_sales.cs_item_sk =
catalog_returns.cr_item_sk)(catalog_sales.cs_order_number =
catalog_returns.cr_order_number)
+--------------------PhysicalProject
+----------------------PhysicalOlapScan[catalog_returns]
+--------------------hashJoin[INNER_JOIN](catalog_sales.cs_sold_date_sk =
date_dim.d_date_sk)
+----------------------hashJoin[INNER_JOIN](item.i_item_sk =
catalog_sales.cs_item_sk)
+------------------------PhysicalProject
+--------------------------PhysicalOlapScan[catalog_sales]
------------------------PhysicalDistribute
--------------------------PhysicalProject
-----------------------------filter((date_dim.d_date >=
2001-03-03)(date_dim.d_date <= 2001-05-02))
-------------------------------PhysicalOlapScan[date_dim]
-------------------PhysicalDistribute
---------------------PhysicalProject
-----------------------PhysicalOlapScan[warehouse]
+----------------------------filter((item.i_current_price >=
0.99)(item.i_current_price <= 1.49))
+------------------------------PhysicalOlapScan[item]
+----------------------PhysicalDistribute
+------------------------PhysicalProject
+--------------------------filter((date_dim.d_date >=
2001-03-03)(date_dim.d_date <= 2001-05-02))
+----------------------------PhysicalOlapScan[date_dim]
+----------------PhysicalDistribute
+------------------PhysicalProject
+--------------------PhysicalOlapScan[warehouse]
diff --git a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query6.out
b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query6.out
index fff91e211e..853909e2c9 100644
--- a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query6.out
+++ b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query6.out
@@ -1,53 +1,52 @@
-- This file is automatically generated. You should know what you did if you
want to edit this
-- !ds_shape_6 --
-PhysicalResultSink
---PhysicalTopN
-----PhysicalDistribute
-------PhysicalTopN
---------filter((cnt >= 10))
-----------hashAgg[GLOBAL]
-------------PhysicalDistribute
---------------hashAgg[LOCAL]
-----------------PhysicalProject
-------------------hashJoin[LEFT_SEMI_JOIN](j.i_category =
i.i_category)(cast(i_current_price as DECIMALV3(38, 5)) > (1.2 *
avg(i_current_price)))
---------------------PhysicalProject
-----------------------hashJoin[INNER_JOIN](c.c_customer_sk = s.ss_customer_sk)
-------------------------PhysicalDistribute
---------------------------PhysicalProject
-----------------------------hashJoin[INNER_JOIN](s.ss_item_sk = i.i_item_sk)
-------------------------------PhysicalDistribute
---------------------------------hashJoin[INNER_JOIN](s.ss_sold_date_sk =
d.d_date_sk)
-----------------------------------PhysicalProject
-------------------------------------PhysicalOlapScan[store_sales]
-----------------------------------PhysicalDistribute
-------------------------------------hashJoin[INNER_JOIN](d.d_month_seq =
date_dim.d_month_seq)
---------------------------------------PhysicalProject
-----------------------------------------PhysicalOlapScan[date_dim]
---------------------------------------PhysicalDistribute
-----------------------------------------PhysicalAssertNumRows
-------------------------------------------PhysicalDistribute
---------------------------------------------hashAgg[GLOBAL]
-----------------------------------------------PhysicalDistribute
-------------------------------------------------hashAgg[LOCAL]
---------------------------------------------------PhysicalProject
-----------------------------------------------------filter((date_dim.d_year =
2002)(date_dim.d_moy = 3))
-------------------------------------------------------PhysicalOlapScan[date_dim]
-------------------------------PhysicalDistribute
+PhysicalTopN
+--PhysicalDistribute
+----PhysicalTopN
+------filter((cnt >= 10))
+--------hashAgg[GLOBAL]
+----------PhysicalDistribute
+------------hashAgg[LOCAL]
+--------------PhysicalProject
+----------------hashJoin[LEFT_SEMI_JOIN](j.i_category =
i.i_category)(cast(i_current_price as DECIMALV3(38, 5)) > (1.2 *
avg(i_current_price)))
+------------------PhysicalProject
+--------------------hashJoin[INNER_JOIN](c.c_customer_sk = s.ss_customer_sk)
+----------------------PhysicalDistribute
+------------------------PhysicalProject
+--------------------------hashJoin[INNER_JOIN](s.ss_item_sk = i.i_item_sk)
+----------------------------PhysicalDistribute
+------------------------------hashJoin[INNER_JOIN](s.ss_sold_date_sk =
d.d_date_sk)
--------------------------------PhysicalProject
-----------------------------------PhysicalOlapScan[item]
-------------------------PhysicalDistribute
+----------------------------------PhysicalOlapScan[store_sales]
+--------------------------------PhysicalDistribute
+----------------------------------hashJoin[INNER_JOIN](d.d_month_seq =
date_dim.d_month_seq)
+------------------------------------PhysicalProject
+--------------------------------------PhysicalOlapScan[date_dim]
+------------------------------------PhysicalDistribute
+--------------------------------------PhysicalAssertNumRows
+----------------------------------------PhysicalDistribute
+------------------------------------------hashAgg[GLOBAL]
+--------------------------------------------PhysicalDistribute
+----------------------------------------------hashAgg[LOCAL]
+------------------------------------------------PhysicalProject
+--------------------------------------------------filter((date_dim.d_year =
2002)(date_dim.d_moy = 3))
+----------------------------------------------------PhysicalOlapScan[date_dim]
+----------------------------PhysicalDistribute
+------------------------------PhysicalProject
+--------------------------------PhysicalOlapScan[item]
+----------------------PhysicalDistribute
+------------------------PhysicalProject
+--------------------------hashJoin[INNER_JOIN](a.ca_address_sk =
c.c_current_addr_sk)
+----------------------------PhysicalDistribute
+------------------------------PhysicalProject
+--------------------------------PhysicalOlapScan[customer]
+----------------------------PhysicalDistribute
+------------------------------PhysicalProject
+--------------------------------PhysicalOlapScan[customer_address]
+------------------PhysicalDistribute
+--------------------hashAgg[GLOBAL]
+----------------------PhysicalDistribute
+------------------------hashAgg[LOCAL]
--------------------------PhysicalProject
-----------------------------hashJoin[INNER_JOIN](a.ca_address_sk =
c.c_current_addr_sk)
-------------------------------PhysicalDistribute
---------------------------------PhysicalProject
-----------------------------------PhysicalOlapScan[customer]
-------------------------------PhysicalDistribute
---------------------------------PhysicalProject
-----------------------------------PhysicalOlapScan[customer_address]
---------------------PhysicalDistribute
-----------------------hashAgg[GLOBAL]
-------------------------PhysicalDistribute
---------------------------hashAgg[LOCAL]
-----------------------------PhysicalProject
-------------------------------PhysicalOlapScan[item]
+----------------------------PhysicalOlapScan[item]
diff --git
a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query62.out
b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query62.out
index ec78b77b89..f9551baabd 100644
--- a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query62.out
+++ b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query62.out
@@ -1,31 +1,30 @@
-- This file is automatically generated. You should know what you did if you
want to edit this
-- !ds_shape_62 --
-PhysicalResultSink
---PhysicalTopN
-----PhysicalDistribute
-------PhysicalTopN
---------hashAgg[GLOBAL]
-----------PhysicalDistribute
-------------hashAgg[LOCAL]
---------------PhysicalProject
-----------------hashJoin[INNER_JOIN](web_sales.ws_warehouse_sk =
warehouse.w_warehouse_sk)
-------------------PhysicalProject
---------------------hashJoin[INNER_JOIN](web_sales.ws_ship_mode_sk =
ship_mode.sm_ship_mode_sk)
-----------------------hashJoin[INNER_JOIN](web_sales.ws_web_site_sk =
web_site.web_site_sk)
-------------------------hashJoin[INNER_JOIN](web_sales.ws_ship_date_sk =
date_dim.d_date_sk)
---------------------------PhysicalProject
-----------------------------PhysicalOlapScan[web_sales]
---------------------------PhysicalDistribute
-----------------------------PhysicalProject
-------------------------------filter((date_dim.d_month_seq >=
1194)(date_dim.d_month_seq <= 1205))
---------------------------------PhysicalOlapScan[date_dim]
+PhysicalTopN
+--PhysicalDistribute
+----PhysicalTopN
+------hashAgg[GLOBAL]
+--------PhysicalDistribute
+----------hashAgg[LOCAL]
+------------PhysicalProject
+--------------hashJoin[INNER_JOIN](web_sales.ws_warehouse_sk =
warehouse.w_warehouse_sk)
+----------------PhysicalProject
+------------------hashJoin[INNER_JOIN](web_sales.ws_ship_mode_sk =
ship_mode.sm_ship_mode_sk)
+--------------------hashJoin[INNER_JOIN](web_sales.ws_web_site_sk =
web_site.web_site_sk)
+----------------------hashJoin[INNER_JOIN](web_sales.ws_ship_date_sk =
date_dim.d_date_sk)
+------------------------PhysicalProject
+--------------------------PhysicalOlapScan[web_sales]
------------------------PhysicalDistribute
--------------------------PhysicalProject
-----------------------------PhysicalOlapScan[web_site]
+----------------------------filter((date_dim.d_month_seq >=
1194)(date_dim.d_month_seq <= 1205))
+------------------------------PhysicalOlapScan[date_dim]
----------------------PhysicalDistribute
------------------------PhysicalProject
---------------------------PhysicalOlapScan[ship_mode]
-------------------PhysicalDistribute
---------------------PhysicalProject
-----------------------PhysicalOlapScan[warehouse]
+--------------------------PhysicalOlapScan[web_site]
+--------------------PhysicalDistribute
+----------------------PhysicalProject
+------------------------PhysicalOlapScan[ship_mode]
+----------------PhysicalDistribute
+------------------PhysicalProject
+--------------------PhysicalOlapScan[warehouse]
diff --git
a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query66.out
b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query66.out
index d83d9cc0f0..ec829b426c 100644
--- a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query66.out
+++ b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query66.out
@@ -1,65 +1,64 @@
-- This file is automatically generated. You should know what you did if you
want to edit this
-- !ds_shape_66 --
-PhysicalResultSink
---PhysicalTopN
-----PhysicalDistribute
-------PhysicalTopN
---------hashAgg[GLOBAL]
-----------PhysicalDistribute
-------------hashAgg[LOCAL]
---------------PhysicalUnion
-----------------PhysicalProject
-------------------hashAgg[GLOBAL]
---------------------PhysicalDistribute
-----------------------hashAgg[LOCAL]
-------------------------PhysicalProject
---------------------------hashJoin[INNER_JOIN](web_sales.ws_warehouse_sk =
warehouse.w_warehouse_sk)
-----------------------------PhysicalProject
-------------------------------hashJoin[INNER_JOIN](web_sales.ws_sold_time_sk =
time_dim.t_time_sk)
---------------------------------hashJoin[INNER_JOIN](web_sales.ws_sold_date_sk
= date_dim.d_date_sk)
-----------------------------------hashJoin[INNER_JOIN](web_sales.ws_ship_mode_sk
= ship_mode.sm_ship_mode_sk)
-------------------------------------PhysicalProject
---------------------------------------PhysicalOlapScan[web_sales]
-------------------------------------PhysicalDistribute
---------------------------------------PhysicalProject
-----------------------------------------filter(sm_carrier IN ('GREAT EASTERN',
'LATVIAN'))
-------------------------------------------PhysicalOlapScan[ship_mode]
+PhysicalTopN
+--PhysicalDistribute
+----PhysicalTopN
+------hashAgg[GLOBAL]
+--------PhysicalDistribute
+----------hashAgg[LOCAL]
+------------PhysicalUnion
+--------------PhysicalProject
+----------------hashAgg[GLOBAL]
+------------------PhysicalDistribute
+--------------------hashAgg[LOCAL]
+----------------------PhysicalProject
+------------------------hashJoin[INNER_JOIN](web_sales.ws_warehouse_sk =
warehouse.w_warehouse_sk)
+--------------------------PhysicalProject
+----------------------------hashJoin[INNER_JOIN](web_sales.ws_sold_time_sk =
time_dim.t_time_sk)
+------------------------------hashJoin[INNER_JOIN](web_sales.ws_sold_date_sk =
date_dim.d_date_sk)
+--------------------------------hashJoin[INNER_JOIN](web_sales.ws_ship_mode_sk
= ship_mode.sm_ship_mode_sk)
+----------------------------------PhysicalProject
+------------------------------------PhysicalOlapScan[web_sales]
----------------------------------PhysicalDistribute
------------------------------------PhysicalProject
---------------------------------------filter((date_dim.d_year = 1998))
-----------------------------------------PhysicalOlapScan[date_dim]
+--------------------------------------filter(sm_carrier IN ('GREAT EASTERN',
'LATVIAN'))
+----------------------------------------PhysicalOlapScan[ship_mode]
--------------------------------PhysicalDistribute
----------------------------------PhysicalProject
-------------------------------------filter((cast(t_time as BIGINT) <=
77621)(cast(t_time as BIGINT) >= 48821))
---------------------------------------PhysicalOlapScan[time_dim]
-----------------------------PhysicalDistribute
-------------------------------PhysicalProject
---------------------------------PhysicalOlapScan[warehouse]
-----------------PhysicalProject
-------------------hashAgg[GLOBAL]
---------------------PhysicalDistribute
-----------------------hashAgg[LOCAL]
-------------------------PhysicalProject
---------------------------hashJoin[INNER_JOIN](catalog_sales.cs_warehouse_sk =
warehouse.w_warehouse_sk)
+------------------------------------filter((date_dim.d_year = 1998))
+--------------------------------------PhysicalOlapScan[date_dim]
+------------------------------PhysicalDistribute
+--------------------------------PhysicalProject
+----------------------------------filter((cast(t_time as BIGINT) <=
77621)(cast(t_time as BIGINT) >= 48821))
+------------------------------------PhysicalOlapScan[time_dim]
+--------------------------PhysicalDistribute
----------------------------PhysicalProject
-------------------------------hashJoin[INNER_JOIN](catalog_sales.cs_sold_time_sk
= time_dim.t_time_sk)
---------------------------------hashJoin[INNER_JOIN](catalog_sales.cs_sold_date_sk
= date_dim.d_date_sk)
-----------------------------------hashJoin[INNER_JOIN](catalog_sales.cs_ship_mode_sk
= ship_mode.sm_ship_mode_sk)
-------------------------------------PhysicalProject
---------------------------------------PhysicalOlapScan[catalog_sales]
-------------------------------------PhysicalDistribute
---------------------------------------PhysicalProject
-----------------------------------------filter(sm_carrier IN ('GREAT EASTERN',
'LATVIAN'))
-------------------------------------------PhysicalOlapScan[ship_mode]
+------------------------------PhysicalOlapScan[warehouse]
+--------------PhysicalProject
+----------------hashAgg[GLOBAL]
+------------------PhysicalDistribute
+--------------------hashAgg[LOCAL]
+----------------------PhysicalProject
+------------------------hashJoin[INNER_JOIN](catalog_sales.cs_warehouse_sk =
warehouse.w_warehouse_sk)
+--------------------------PhysicalProject
+----------------------------hashJoin[INNER_JOIN](catalog_sales.cs_sold_time_sk
= time_dim.t_time_sk)
+------------------------------hashJoin[INNER_JOIN](catalog_sales.cs_sold_date_sk
= date_dim.d_date_sk)
+--------------------------------hashJoin[INNER_JOIN](catalog_sales.cs_ship_mode_sk
= ship_mode.sm_ship_mode_sk)
+----------------------------------PhysicalProject
+------------------------------------PhysicalOlapScan[catalog_sales]
----------------------------------PhysicalDistribute
------------------------------------PhysicalProject
---------------------------------------filter((date_dim.d_year = 1998))
-----------------------------------------PhysicalOlapScan[date_dim]
+--------------------------------------filter(sm_carrier IN ('GREAT EASTERN',
'LATVIAN'))
+----------------------------------------PhysicalOlapScan[ship_mode]
--------------------------------PhysicalDistribute
----------------------------------PhysicalProject
-------------------------------------filter((cast(t_time as BIGINT) <=
77621)(cast(t_time as BIGINT) >= 48821))
---------------------------------------PhysicalOlapScan[time_dim]
-----------------------------PhysicalDistribute
-------------------------------PhysicalProject
---------------------------------PhysicalOlapScan[warehouse]
+------------------------------------filter((date_dim.d_year = 1998))
+--------------------------------------PhysicalOlapScan[date_dim]
+------------------------------PhysicalDistribute
+--------------------------------PhysicalProject
+----------------------------------filter((cast(t_time as BIGINT) <=
77621)(cast(t_time as BIGINT) >= 48821))
+------------------------------------PhysicalOlapScan[time_dim]
+--------------------------PhysicalDistribute
+----------------------------PhysicalProject
+------------------------------PhysicalOlapScan[warehouse]
diff --git
a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query68.out
b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query68.out
index 9a98918d91..9479639231 100644
--- a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query68.out
+++ b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query68.out
@@ -1,44 +1,43 @@
-- This file is automatically generated. You should know what you did if you
want to edit this
-- !ds_shape_68 --
-PhysicalResultSink
---PhysicalTopN
-----PhysicalDistribute
-------PhysicalTopN
---------PhysicalProject
-----------hashJoin[INNER_JOIN](customer.c_current_addr_sk =
current_addr.ca_address_sk)( not (ca_city = bought_city))
+PhysicalTopN
+--PhysicalDistribute
+----PhysicalTopN
+------PhysicalProject
+--------hashJoin[INNER_JOIN](customer.c_current_addr_sk =
current_addr.ca_address_sk)( not (ca_city = bought_city))
+----------PhysicalProject
+------------PhysicalOlapScan[customer_address]
+----------PhysicalDistribute
------------PhysicalProject
---------------PhysicalOlapScan[customer_address]
-------------PhysicalDistribute
---------------PhysicalProject
-----------------hashJoin[INNER_JOIN](dn.ss_customer_sk =
customer.c_customer_sk)
-------------------PhysicalDistribute
---------------------PhysicalProject
-----------------------PhysicalOlapScan[customer]
-------------------PhysicalDistribute
---------------------PhysicalProject
-----------------------hashAgg[LOCAL]
-------------------------PhysicalProject
---------------------------hashJoin[INNER_JOIN](store_sales.ss_addr_sk =
customer_address.ca_address_sk)
+--------------hashJoin[INNER_JOIN](dn.ss_customer_sk = customer.c_customer_sk)
+----------------PhysicalDistribute
+------------------PhysicalProject
+--------------------PhysicalOlapScan[customer]
+----------------PhysicalDistribute
+------------------PhysicalProject
+--------------------hashAgg[LOCAL]
+----------------------PhysicalProject
+------------------------hashJoin[INNER_JOIN](store_sales.ss_addr_sk =
customer_address.ca_address_sk)
+--------------------------PhysicalProject
+----------------------------PhysicalOlapScan[customer_address]
+--------------------------PhysicalDistribute
----------------------------PhysicalProject
-------------------------------PhysicalOlapScan[customer_address]
-----------------------------PhysicalDistribute
-------------------------------PhysicalProject
---------------------------------hashJoin[INNER_JOIN](store_sales.ss_hdemo_sk =
household_demographics.hd_demo_sk)
-----------------------------------PhysicalProject
-------------------------------------hashJoin[INNER_JOIN](store_sales.ss_store_sk
= store.s_store_sk)
---------------------------------------hashJoin[INNER_JOIN](store_sales.ss_sold_date_sk
= date_dim.d_date_sk)
-----------------------------------------PhysicalProject
-------------------------------------------PhysicalOlapScan[store_sales]
-----------------------------------------PhysicalDistribute
-------------------------------------------PhysicalProject
---------------------------------------------filter((date_dim.d_dom >= 1)d_year
IN (1998, 1999, 2000)(date_dim.d_dom <= 2))
-----------------------------------------------PhysicalOlapScan[date_dim]
+------------------------------hashJoin[INNER_JOIN](store_sales.ss_hdemo_sk =
household_demographics.hd_demo_sk)
+--------------------------------PhysicalProject
+----------------------------------hashJoin[INNER_JOIN](store_sales.ss_store_sk
= store.s_store_sk)
+------------------------------------hashJoin[INNER_JOIN](store_sales.ss_sold_date_sk
= date_dim.d_date_sk)
+--------------------------------------PhysicalProject
+----------------------------------------PhysicalOlapScan[store_sales]
--------------------------------------PhysicalDistribute
----------------------------------------PhysicalProject
-------------------------------------------filter(s_city IN ('Pleasant Hill',
'Five Points'))
---------------------------------------------PhysicalOlapScan[store]
-----------------------------------PhysicalDistribute
-------------------------------------PhysicalProject
---------------------------------------filter(((household_demographics.hd_dep_count
= 8) OR (household_demographics.hd_vehicle_count = -1)))
-----------------------------------------PhysicalOlapScan[household_demographics]
+------------------------------------------filter((date_dim.d_dom >= 1)d_year
IN (1998, 1999, 2000)(date_dim.d_dom <= 2))
+--------------------------------------------PhysicalOlapScan[date_dim]
+------------------------------------PhysicalDistribute
+--------------------------------------PhysicalProject
+----------------------------------------filter(s_city IN ('Pleasant Hill',
'Five Points'))
+------------------------------------------PhysicalOlapScan[store]
+--------------------------------PhysicalDistribute
+----------------------------------PhysicalProject
+------------------------------------filter(((household_demographics.hd_dep_count
= 8) OR (household_demographics.hd_vehicle_count = -1)))
+--------------------------------------PhysicalOlapScan[household_demographics]
diff --git
a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query99.out
b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query99.out
index 4f20f7bf82..67c328915c 100644
--- a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query99.out
+++ b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query99.out
@@ -1,31 +1,30 @@
-- This file is automatically generated. You should know what you did if you
want to edit this
-- !ds_shape_99 --
-PhysicalResultSink
---PhysicalTopN
-----PhysicalDistribute
-------PhysicalTopN
---------hashAgg[GLOBAL]
-----------PhysicalDistribute
-------------hashAgg[LOCAL]
---------------PhysicalProject
-----------------hashJoin[INNER_JOIN](catalog_sales.cs_warehouse_sk =
warehouse.w_warehouse_sk)
-------------------PhysicalProject
---------------------hashJoin[INNER_JOIN](catalog_sales.cs_ship_mode_sk =
ship_mode.sm_ship_mode_sk)
-----------------------hashJoin[INNER_JOIN](catalog_sales.cs_call_center_sk =
call_center.cc_call_center_sk)
-------------------------hashJoin[INNER_JOIN](catalog_sales.cs_ship_date_sk =
date_dim.d_date_sk)
---------------------------PhysicalProject
-----------------------------PhysicalOlapScan[catalog_sales]
---------------------------PhysicalDistribute
-----------------------------PhysicalProject
-------------------------------filter((date_dim.d_month_seq >=
1224)(date_dim.d_month_seq <= 1235))
---------------------------------PhysicalOlapScan[date_dim]
+PhysicalTopN
+--PhysicalDistribute
+----PhysicalTopN
+------hashAgg[GLOBAL]
+--------PhysicalDistribute
+----------hashAgg[LOCAL]
+------------PhysicalProject
+--------------hashJoin[INNER_JOIN](catalog_sales.cs_warehouse_sk =
warehouse.w_warehouse_sk)
+----------------PhysicalProject
+------------------hashJoin[INNER_JOIN](catalog_sales.cs_ship_mode_sk =
ship_mode.sm_ship_mode_sk)
+--------------------hashJoin[INNER_JOIN](catalog_sales.cs_call_center_sk =
call_center.cc_call_center_sk)
+----------------------hashJoin[INNER_JOIN](catalog_sales.cs_ship_date_sk =
date_dim.d_date_sk)
+------------------------PhysicalProject
+--------------------------PhysicalOlapScan[catalog_sales]
------------------------PhysicalDistribute
--------------------------PhysicalProject
-----------------------------PhysicalOlapScan[call_center]
+----------------------------filter((date_dim.d_month_seq >=
1224)(date_dim.d_month_seq <= 1235))
+------------------------------PhysicalOlapScan[date_dim]
----------------------PhysicalDistribute
------------------------PhysicalProject
---------------------------PhysicalOlapScan[ship_mode]
-------------------PhysicalDistribute
---------------------PhysicalProject
-----------------------PhysicalOlapScan[warehouse]
+--------------------------PhysicalOlapScan[call_center]
+--------------------PhysicalDistribute
+----------------------PhysicalProject
+------------------------PhysicalOlapScan[ship_mode]
+----------------PhysicalDistribute
+------------------PhysicalProject
+--------------------PhysicalOlapScan[warehouse]
diff --git a/regression-test/data/nereids_tpch_shape_sf1000_p0/shape/q21.out
b/regression-test/data/nereids_tpch_shape_sf1000_p0/shape/q21.out
index 2f4348619b..722b813a7d 100644
--- a/regression-test/data/nereids_tpch_shape_sf1000_p0/shape/q21.out
+++ b/regression-test/data/nereids_tpch_shape_sf1000_p0/shape/q21.out
@@ -1,34 +1,33 @@
-- This file is automatically generated. You should know what you did if you
want to edit this
-- !select --
-PhysicalResultSink
---PhysicalTopN
-----PhysicalDistribute
-------PhysicalTopN
---------hashAgg[GLOBAL]
-----------PhysicalDistribute
-------------hashAgg[LOCAL]
---------------PhysicalProject
-----------------hashJoin[INNER_JOIN](orders.o_orderkey = l1.l_orderkey)
+PhysicalTopN
+--PhysicalDistribute
+----PhysicalTopN
+------hashAgg[GLOBAL]
+--------PhysicalDistribute
+----------hashAgg[LOCAL]
+------------PhysicalProject
+--------------hashJoin[INNER_JOIN](orders.o_orderkey = l1.l_orderkey)
+----------------PhysicalProject
+------------------filter((orders.o_orderstatus = 'F'))
+--------------------PhysicalOlapScan[orders]
+----------------hashJoin[RIGHT_SEMI_JOIN](l2.l_orderkey = l1.l_orderkey)( not
(l_suppkey = l_suppkey))
------------------PhysicalProject
---------------------filter((orders.o_orderstatus = 'F'))
-----------------------PhysicalOlapScan[orders]
-------------------hashJoin[RIGHT_SEMI_JOIN](l2.l_orderkey = l1.l_orderkey)(
not (l_suppkey = l_suppkey))
+--------------------PhysicalOlapScan[lineitem]
+------------------hashJoin[RIGHT_ANTI_JOIN](l3.l_orderkey = l1.l_orderkey)(
not (l_suppkey = l_suppkey))
--------------------PhysicalProject
-----------------------PhysicalOlapScan[lineitem]
---------------------hashJoin[RIGHT_ANTI_JOIN](l3.l_orderkey = l1.l_orderkey)(
not (l_suppkey = l_suppkey))
+----------------------filter((l3.l_receiptdate > l3.l_commitdate))
+------------------------PhysicalOlapScan[lineitem]
+--------------------hashJoin[INNER_JOIN](supplier.s_suppkey = l1.l_suppkey)
----------------------PhysicalProject
-------------------------filter((l3.l_receiptdate > l3.l_commitdate))
+------------------------filter((l1.l_receiptdate > l1.l_commitdate))
--------------------------PhysicalOlapScan[lineitem]
-----------------------hashJoin[INNER_JOIN](supplier.s_suppkey = l1.l_suppkey)
-------------------------PhysicalProject
---------------------------filter((l1.l_receiptdate > l1.l_commitdate))
-----------------------------PhysicalOlapScan[lineitem]
-------------------------PhysicalDistribute
---------------------------hashJoin[INNER_JOIN](supplier.s_nationkey =
nation.n_nationkey)
+----------------------PhysicalDistribute
+------------------------hashJoin[INNER_JOIN](supplier.s_nationkey =
nation.n_nationkey)
+--------------------------PhysicalProject
+----------------------------PhysicalOlapScan[supplier]
+--------------------------PhysicalDistribute
----------------------------PhysicalProject
-------------------------------PhysicalOlapScan[supplier]
-----------------------------PhysicalDistribute
-------------------------------PhysicalProject
---------------------------------filter((nation.n_name = 'SAUDI ARABIA'))
-----------------------------------PhysicalOlapScan[nation]
+------------------------------filter((nation.n_name = 'SAUDI ARABIA'))
+--------------------------------PhysicalOlapScan[nation]
diff --git a/regression-test/data/nereids_tpch_shape_sf500_p0/shape/q21.out
b/regression-test/data/nereids_tpch_shape_sf500_p0/shape/q21.out
index 2f4348619b..722b813a7d 100644
--- a/regression-test/data/nereids_tpch_shape_sf500_p0/shape/q21.out
+++ b/regression-test/data/nereids_tpch_shape_sf500_p0/shape/q21.out
@@ -1,34 +1,33 @@
-- This file is automatically generated. You should know what you did if you
want to edit this
-- !select --
-PhysicalResultSink
---PhysicalTopN
-----PhysicalDistribute
-------PhysicalTopN
---------hashAgg[GLOBAL]
-----------PhysicalDistribute
-------------hashAgg[LOCAL]
---------------PhysicalProject
-----------------hashJoin[INNER_JOIN](orders.o_orderkey = l1.l_orderkey)
+PhysicalTopN
+--PhysicalDistribute
+----PhysicalTopN
+------hashAgg[GLOBAL]
+--------PhysicalDistribute
+----------hashAgg[LOCAL]
+------------PhysicalProject
+--------------hashJoin[INNER_JOIN](orders.o_orderkey = l1.l_orderkey)
+----------------PhysicalProject
+------------------filter((orders.o_orderstatus = 'F'))
+--------------------PhysicalOlapScan[orders]
+----------------hashJoin[RIGHT_SEMI_JOIN](l2.l_orderkey = l1.l_orderkey)( not
(l_suppkey = l_suppkey))
------------------PhysicalProject
---------------------filter((orders.o_orderstatus = 'F'))
-----------------------PhysicalOlapScan[orders]
-------------------hashJoin[RIGHT_SEMI_JOIN](l2.l_orderkey = l1.l_orderkey)(
not (l_suppkey = l_suppkey))
+--------------------PhysicalOlapScan[lineitem]
+------------------hashJoin[RIGHT_ANTI_JOIN](l3.l_orderkey = l1.l_orderkey)(
not (l_suppkey = l_suppkey))
--------------------PhysicalProject
-----------------------PhysicalOlapScan[lineitem]
---------------------hashJoin[RIGHT_ANTI_JOIN](l3.l_orderkey = l1.l_orderkey)(
not (l_suppkey = l_suppkey))
+----------------------filter((l3.l_receiptdate > l3.l_commitdate))
+------------------------PhysicalOlapScan[lineitem]
+--------------------hashJoin[INNER_JOIN](supplier.s_suppkey = l1.l_suppkey)
----------------------PhysicalProject
-------------------------filter((l3.l_receiptdate > l3.l_commitdate))
+------------------------filter((l1.l_receiptdate > l1.l_commitdate))
--------------------------PhysicalOlapScan[lineitem]
-----------------------hashJoin[INNER_JOIN](supplier.s_suppkey = l1.l_suppkey)
-------------------------PhysicalProject
---------------------------filter((l1.l_receiptdate > l1.l_commitdate))
-----------------------------PhysicalOlapScan[lineitem]
-------------------------PhysicalDistribute
---------------------------hashJoin[INNER_JOIN](supplier.s_nationkey =
nation.n_nationkey)
+----------------------PhysicalDistribute
+------------------------hashJoin[INNER_JOIN](supplier.s_nationkey =
nation.n_nationkey)
+--------------------------PhysicalProject
+----------------------------PhysicalOlapScan[supplier]
+--------------------------PhysicalDistribute
----------------------------PhysicalProject
-------------------------------PhysicalOlapScan[supplier]
-----------------------------PhysicalDistribute
-------------------------------PhysicalProject
---------------------------------filter((nation.n_name = 'SAUDI ARABIA'))
-----------------------------------PhysicalOlapScan[nation]
+------------------------------filter((nation.n_name = 'SAUDI ARABIA'))
+--------------------------------PhysicalOlapScan[nation]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]