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 04cf2fc5e4e [fix](Nereids) fix rf push down union (#29847)
04cf2fc5e4e is described below
commit 04cf2fc5e4eb919b966a87702583d3e7c085326c
Author: xzj7019 <[email protected]>
AuthorDate: Fri Jan 12 14:12:36 2024 +0800
[fix](Nereids) fix rf push down union (#29847)
Current union rf push down only support rf from parent join, but not
support ancestor join.
The pr fixes this problem on project/distribute node's rf pushing down
checking.
---
.../processor/post/RuntimeFilterGenerator.java | 11 ++++
.../trees/plans/physical/PhysicalDistribute.java | 30 +++++----
.../trees/plans/physical/PhysicalHashJoin.java | 14 -----
.../trees/plans/physical/PhysicalProject.java | 71 ++++++++++++----------
.../shape/query11.out | 6 +-
.../nereids_tpcds_shape_sf1000_p0/shape/query4.out | 8 +--
.../nereids_tpcds_shape_sf1000_p0/shape/query5.out | 26 ++++----
.../shape/query54.out | 24 ++++----
.../shape/query71.out | 8 +--
.../shape/query74.out | 6 +-
.../noStatsRfPrune/query54.out | 4 +-
.../no_stats_shape/query11.out | 6 +-
.../no_stats_shape/query4.out | 8 +--
.../no_stats_shape/query54.out | 20 +++---
.../no_stats_shape/query74.out | 6 +-
.../rf_prune/query5.out | 20 +++---
.../rf_prune/query54.out | 20 +++---
.../rf_prune/query71.out | 8 +--
.../nereids_tpcds_shape_sf100_p0/shape/query11.out | 6 +-
.../nereids_tpcds_shape_sf100_p0/shape/query4.out | 8 +--
.../nereids_tpcds_shape_sf100_p0/shape/query5.out | 26 ++++----
.../nereids_tpcds_shape_sf100_p0/shape/query54.out | 22 +++----
.../nereids_tpcds_shape_sf100_p0/shape/query71.out | 8 +--
.../nereids_tpcds_shape_sf100_p0/shape/query74.out | 6 +-
24 files changed, 189 insertions(+), 183 deletions(-)
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/nereids/processor/post/RuntimeFilterGenerator.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/processor/post/RuntimeFilterGenerator.java
index 6442d062840..76d189ba63d 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/nereids/processor/post/RuntimeFilterGenerator.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/nereids/processor/post/RuntimeFilterGenerator.java
@@ -657,6 +657,17 @@ public class RuntimeFilterGenerator extends
PlanPostProcessor {
return window;
}
+ /**
+ * Check runtime filter push down project/distribute pre-conditions.
+ */
+ public static boolean
checkPushDownPreconditionsForProjectOrDistribute(RuntimeFilterContext ctx, Slot
slot) {
+ if (slot == null || !ctx.aliasTransferMapContains(slot)) {
+ return false;
+ } else {
+ return true;
+ }
+ }
+
/**
* Check runtime filter push down pre-conditions, such as builder side
join type, etc.
*/
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalDistribute.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalDistribute.java
index 0a9955feb25..8f30b503453 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalDistribute.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalDistribute.java
@@ -134,22 +134,26 @@ public class PhysicalDistribute<CHILD_TYPE extends Plan>
extends PhysicalUnary<C
// currently, we can ensure children in the two side are corresponding
to the equal_to's.
// so right maybe an expression and left is a slot
Slot probeSlot = RuntimeFilterGenerator.checkTargetChild(probeExpr);
-
- // aliasTransMap doesn't contain the key, means that the path from the
scan to the join
- // contains join with denied join type. for example: a left join b on
a.id = b.id
- if
(!RuntimeFilterGenerator.checkPushDownPreconditionsForJoin(builderNode, ctx,
probeSlot)) {
+ if (probeSlot == null) {
return false;
}
- PhysicalRelation scan = ctx.getAliasTransferPair(probeSlot).first;
- if
(!RuntimeFilterGenerator.checkPushDownPreconditionsForRelation(this, scan)) {
- return false;
+ if
(RuntimeFilterGenerator.checkPushDownPreconditionsForProjectOrDistribute(ctx,
probeSlot)) {
+ PhysicalRelation scan = ctx.getAliasTransferPair(probeSlot).first;
+ if
(!RuntimeFilterGenerator.checkPushDownPreconditionsForRelation(this, scan)) {
+ return false;
+ }
+ // TODO: global rf need merge stage which is heavy
+ // add some rule, such as bc only is allowed for
+ // pushing down through distribute, currently always pushing.
+ AbstractPhysicalPlan childPlan = (AbstractPhysicalPlan) child(0);
+ return childPlan.pushDownRuntimeFilter(context, generator,
builderNode, src, probeExpr,
+ type, buildSideNdv, exprOrder);
+ } else {
+ // if probe slot doesn't exist in aliasTransferMap, then try to
pass it to child
+ AbstractPhysicalPlan childPlan = (AbstractPhysicalPlan) child(0);
+ return childPlan.pushDownRuntimeFilter(context, generator,
builderNode, src, probeExpr,
+ type, buildSideNdv, exprOrder);
}
- // TODO: global rf need merge stage which is heavy
- // add some rule, such as bc only is allowed for
- // pushing down through distribute, currently always pushing.
- AbstractPhysicalPlan childPlan = (AbstractPhysicalPlan) child(0);
- return childPlan.pushDownRuntimeFilter(context, generator,
builderNode, src, probeExpr,
- type, buildSideNdv, exprOrder);
}
@Override
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalHashJoin.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalHashJoin.java
index 5d00257b9ca..58d3530b690 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalHashJoin.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalHashJoin.java
@@ -241,20 +241,6 @@ public class PhysicalHashJoin<
srcExpr, prob, type, buildSideNdv, exprOrder);
}
- // currently, we can ensure children in the two side are corresponding
to the equal_to's.
- // so right maybe an expression and left is a slot
- Slot probeSlot = RuntimeFilterGenerator.checkTargetChild(probeExpr);
-
- // aliasTransMap doesn't contain the key, means that the path from the
olap scan to the join
- // contains join with denied join type. for example: a left join b on
a.id = b.id
- if
(!RuntimeFilterGenerator.checkPushDownPreconditionsForJoin(builderNode, ctx,
probeSlot)) {
- return false;
- }
- PhysicalRelation scan = ctx.getAliasTransferPair(probeSlot).first;
- if
(!RuntimeFilterGenerator.checkPushDownPreconditionsForRelation(this, scan)) {
- return false;
- }
-
return pushedDown;
}
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalProject.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalProject.java
index 663bc265955..18d4f36204c 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalProject.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalProject.java
@@ -163,46 +163,51 @@ public class PhysicalProject<CHILD_TYPE extends Plan>
extends PhysicalUnary<CHIL
// currently, we can ensure children in the two side are corresponding
to the equal_to's.
// so right maybe an expression and left is a slot
Slot probeSlot = RuntimeFilterGenerator.checkTargetChild(probeExpr);
-
- // aliasTransMap doesn't contain the key, means that the path from the
scan to the join
- // contains join with denied join type. for example: a left join b on
a.id = b.id
- if
(!RuntimeFilterGenerator.checkPushDownPreconditionsForJoin(builderNode, ctx,
probeSlot)) {
+ if (probeSlot == null) {
return false;
}
- PhysicalRelation scan = ctx.getAliasTransferPair(probeSlot).first;
- Preconditions.checkState(scan != null, "scan is null");
- if (scan instanceof PhysicalCTEConsumer) {
- // update the probeExpr
- int projIndex = -1;
- for (int i = 0; i < getProjects().size(); i++) {
- NamedExpression expr = getProjects().get(i);
- if (expr.getName().equals(probeSlot.getName())) {
- projIndex = i;
- break;
+
+ if
(RuntimeFilterGenerator.checkPushDownPreconditionsForProjectOrDistribute(ctx,
probeSlot)) {
+ PhysicalRelation scan = ctx.getAliasTransferPair(probeSlot).first;
+ Preconditions.checkState(scan != null, "scan is null");
+ if (scan instanceof PhysicalCTEConsumer) {
+ // update the probeExpr
+ int projIndex = -1;
+ for (int i = 0; i < getProjects().size(); i++) {
+ NamedExpression expr = getProjects().get(i);
+ if (expr.getName().equals(probeSlot.getName())) {
+ projIndex = i;
+ break;
+ }
}
+ if (projIndex < 0 || projIndex >= getProjects().size()) {
+ // the pushed down path can't contain the probe expr
+ return false;
+ }
+ NamedExpression newProbeExpr =
this.getProjects().get(projIndex);
+ if (newProbeExpr instanceof Alias) {
+ newProbeExpr = (NamedExpression) newProbeExpr.child(0);
+ }
+ Slot newProbeSlot =
RuntimeFilterGenerator.checkTargetChild(newProbeExpr);
+ if
(!RuntimeFilterGenerator.checkPushDownPreconditionsForJoin(builderNode, ctx,
newProbeSlot)) {
+ return false;
+ }
+ scan = ctx.getAliasTransferPair(newProbeSlot).first;
+ probeExpr = newProbeExpr;
}
- if (projIndex < 0 || projIndex >= getProjects().size()) {
- // the pushed down path can't contain the probe expr
- return false;
- }
- NamedExpression newProbeExpr = this.getProjects().get(projIndex);
- if (newProbeExpr instanceof Alias) {
- newProbeExpr = (NamedExpression) newProbeExpr.child(0);
- }
- Slot newProbeSlot =
RuntimeFilterGenerator.checkTargetChild(newProbeExpr);
- if
(!RuntimeFilterGenerator.checkPushDownPreconditionsForJoin(builderNode, ctx,
newProbeSlot)) {
+ if
(!RuntimeFilterGenerator.checkPushDownPreconditionsForRelation(this, scan)) {
return false;
}
- scan = ctx.getAliasTransferPair(newProbeSlot).first;
- probeExpr = newProbeExpr;
- }
- if
(!RuntimeFilterGenerator.checkPushDownPreconditionsForRelation(this, scan)) {
- return false;
- }
- AbstractPhysicalPlan child = (AbstractPhysicalPlan) child(0);
- return child.pushDownRuntimeFilter(context, generator, builderNode,
- src, probeExpr, type, buildSideNdv, exprOrder);
+ AbstractPhysicalPlan child = (AbstractPhysicalPlan) child(0);
+ return child.pushDownRuntimeFilter(context, generator, builderNode,
+ src, probeExpr, type, buildSideNdv, exprOrder);
+ } else {
+ // if probe slot doesn't exist in aliasTransferMap, then try to
pass it to child
+ AbstractPhysicalPlan child = (AbstractPhysicalPlan) child(0);
+ return child.pushDownRuntimeFilter(context, generator, builderNode,
+ src, probeExpr, type, buildSideNdv, exprOrder);
+ }
}
@Override
diff --git
a/regression-test/data/nereids_tpcds_shape_sf1000_p0/shape/query11.out
b/regression-test/data/nereids_tpcds_shape_sf1000_p0/shape/query11.out
index f3adab2ab63..f9e24f7051a 100644
--- a/regression-test/data/nereids_tpcds_shape_sf1000_p0/shape/query11.out
+++ b/regression-test/data/nereids_tpcds_shape_sf1000_p0/shape/query11.out
@@ -3,7 +3,7 @@
PhysicalCteAnchor ( cteId=CTEId#0 )
--PhysicalCteProducer ( cteId=CTEId#0 )
----PhysicalProject
-------hashJoin[INNER_JOIN] hashCondition=((PULL_UP_UNIFIED_OUTPUT_ALIAS =
customer.c_customer_sk)) otherCondition=()
+------hashJoin[INNER_JOIN] hashCondition=((PULL_UP_UNIFIED_OUTPUT_ALIAS =
customer.c_customer_sk)) otherCondition=() build RFs:RF2
c_customer_sk->[ss_customer_sk,ws_bill_customer_sk]
--------PhysicalDistribute[DistributionSpecHash]
----------PhysicalProject
------------PhysicalUnion
@@ -14,7 +14,7 @@ PhysicalCteAnchor ( cteId=CTEId#0 )
----------------------PhysicalProject
------------------------hashJoin[INNER_JOIN]
hashCondition=((store_sales.ss_sold_date_sk = date_dim.d_date_sk))
otherCondition=() build RFs:RF0 d_date_sk->[ss_sold_date_sk]
--------------------------PhysicalProject
-----------------------------PhysicalOlapScan[store_sales] apply RFs: RF0
+----------------------------PhysicalOlapScan[store_sales] apply RFs: RF0 RF2
--------------------------PhysicalDistribute[DistributionSpecReplicated]
----------------------------PhysicalProject
------------------------------filter(d_year IN (1998, 1999))
@@ -26,7 +26,7 @@ PhysicalCteAnchor ( cteId=CTEId#0 )
----------------------PhysicalProject
------------------------hashJoin[INNER_JOIN]
hashCondition=((web_sales.ws_sold_date_sk = date_dim.d_date_sk))
otherCondition=() build RFs:RF1 d_date_sk->[ws_sold_date_sk]
--------------------------PhysicalProject
-----------------------------PhysicalOlapScan[web_sales] apply RFs: RF1
+----------------------------PhysicalOlapScan[web_sales] apply RFs: RF1 RF2
--------------------------PhysicalDistribute[DistributionSpecReplicated]
----------------------------PhysicalProject
------------------------------filter(d_year IN (1998, 1999))
diff --git
a/regression-test/data/nereids_tpcds_shape_sf1000_p0/shape/query4.out
b/regression-test/data/nereids_tpcds_shape_sf1000_p0/shape/query4.out
index 133758d0144..e40a7c0ebe7 100644
--- a/regression-test/data/nereids_tpcds_shape_sf1000_p0/shape/query4.out
+++ b/regression-test/data/nereids_tpcds_shape_sf1000_p0/shape/query4.out
@@ -3,7 +3,7 @@
PhysicalCteAnchor ( cteId=CTEId#0 )
--PhysicalCteProducer ( cteId=CTEId#0 )
----PhysicalProject
-------hashJoin[INNER_JOIN] hashCondition=((PULL_UP_UNIFIED_OUTPUT_ALIAS =
customer.c_customer_sk)) otherCondition=()
+------hashJoin[INNER_JOIN] hashCondition=((PULL_UP_UNIFIED_OUTPUT_ALIAS =
customer.c_customer_sk)) otherCondition=() build RFs:RF3
c_customer_sk->[ss_customer_sk,cs_bill_customer_sk,ws_bill_customer_sk]
--------PhysicalDistribute[DistributionSpecHash]
----------PhysicalProject
------------PhysicalUnion
@@ -14,7 +14,7 @@ PhysicalCteAnchor ( cteId=CTEId#0 )
----------------------PhysicalProject
------------------------hashJoin[INNER_JOIN]
hashCondition=((store_sales.ss_sold_date_sk = date_dim.d_date_sk))
otherCondition=() build RFs:RF0 d_date_sk->[ss_sold_date_sk]
--------------------------PhysicalProject
-----------------------------PhysicalOlapScan[store_sales] apply RFs: RF0
+----------------------------PhysicalOlapScan[store_sales] apply RFs: RF0 RF3
--------------------------PhysicalDistribute[DistributionSpecReplicated]
----------------------------PhysicalProject
------------------------------filter(d_year IN (1999, 2000))
@@ -26,7 +26,7 @@ PhysicalCteAnchor ( cteId=CTEId#0 )
----------------------PhysicalProject
------------------------hashJoin[INNER_JOIN]
hashCondition=((catalog_sales.cs_sold_date_sk = date_dim.d_date_sk))
otherCondition=() build RFs:RF1 d_date_sk->[cs_sold_date_sk]
--------------------------PhysicalProject
-----------------------------PhysicalOlapScan[catalog_sales] apply RFs: RF1
+----------------------------PhysicalOlapScan[catalog_sales] apply RFs: RF1 RF3
--------------------------PhysicalDistribute[DistributionSpecReplicated]
----------------------------PhysicalProject
------------------------------filter(d_year IN (1999, 2000))
@@ -38,7 +38,7 @@ PhysicalCteAnchor ( cteId=CTEId#0 )
----------------------PhysicalProject
------------------------hashJoin[INNER_JOIN]
hashCondition=((web_sales.ws_sold_date_sk = date_dim.d_date_sk))
otherCondition=() build RFs:RF2 d_date_sk->[ws_sold_date_sk]
--------------------------PhysicalProject
-----------------------------PhysicalOlapScan[web_sales] apply RFs: RF2
+----------------------------PhysicalOlapScan[web_sales] apply RFs: RF2 RF3
--------------------------PhysicalDistribute[DistributionSpecReplicated]
----------------------------PhysicalProject
------------------------------filter(d_year IN (1999, 2000))
diff --git
a/regression-test/data/nereids_tpcds_shape_sf1000_p0/shape/query5.out
b/regression-test/data/nereids_tpcds_shape_sf1000_p0/shape/query5.out
index 8a8f8b1180d..66415d1eee8 100644
--- a/regression-test/data/nereids_tpcds_shape_sf1000_p0/shape/query5.out
+++ b/regression-test/data/nereids_tpcds_shape_sf1000_p0/shape/query5.out
@@ -15,16 +15,16 @@ PhysicalResultSink
------------------------PhysicalDistribute[DistributionSpecHash]
--------------------------hashAgg[LOCAL]
----------------------------PhysicalProject
-------------------------------hashJoin[INNER_JOIN]
hashCondition=((salesreturns.store_sk = store.s_store_sk)) otherCondition=()
+------------------------------hashJoin[INNER_JOIN]
hashCondition=((salesreturns.store_sk = store.s_store_sk)) otherCondition=()
build RFs:RF1 s_store_sk->[ss_store_sk,sr_store_sk]
--------------------------------PhysicalProject
----------------------------------hashJoin[INNER_JOIN]
hashCondition=((salesreturns.date_sk = date_dim.d_date_sk)) otherCondition=()
build RFs:RF0 d_date_sk->[ss_sold_date_sk,sr_returned_date_sk]
------------------------------------PhysicalUnion
--------------------------------------PhysicalDistribute[DistributionSpecHash]
----------------------------------------PhysicalProject
-------------------------------------------PhysicalOlapScan[store_sales] apply
RFs: RF0
+------------------------------------------PhysicalOlapScan[store_sales] apply
RFs: RF0 RF1
--------------------------------------PhysicalDistribute[DistributionSpecHash]
----------------------------------------PhysicalProject
-------------------------------------------PhysicalOlapScan[store_returns]
apply RFs: RF0
+------------------------------------------PhysicalOlapScan[store_returns]
apply RFs: RF0 RF1
------------------------------------PhysicalDistribute[DistributionSpecReplicated]
--------------------------------------PhysicalProject
----------------------------------------filter((date_dim.d_date <=
'2000-09-02') and (date_dim.d_date >= '2000-08-19'))
@@ -37,16 +37,16 @@ PhysicalResultSink
------------------------PhysicalDistribute[DistributionSpecHash]
--------------------------hashAgg[LOCAL]
----------------------------PhysicalProject
-------------------------------hashJoin[INNER_JOIN]
hashCondition=((salesreturns.page_sk = catalog_page.cp_catalog_page_sk))
otherCondition=()
+------------------------------hashJoin[INNER_JOIN]
hashCondition=((salesreturns.page_sk = catalog_page.cp_catalog_page_sk))
otherCondition=() build RFs:RF3
cp_catalog_page_sk->[cs_catalog_page_sk,cr_catalog_page_sk]
--------------------------------PhysicalProject
-----------------------------------hashJoin[INNER_JOIN]
hashCondition=((salesreturns.date_sk = date_dim.d_date_sk)) otherCondition=()
build RFs:RF1 d_date_sk->[cs_sold_date_sk,cr_returned_date_sk]
+----------------------------------hashJoin[INNER_JOIN]
hashCondition=((salesreturns.date_sk = date_dim.d_date_sk)) otherCondition=()
build RFs:RF2 d_date_sk->[cs_sold_date_sk,cr_returned_date_sk]
------------------------------------PhysicalUnion
--------------------------------------PhysicalDistribute[DistributionSpecHash]
----------------------------------------PhysicalProject
-------------------------------------------PhysicalOlapScan[catalog_sales]
apply RFs: RF1
+------------------------------------------PhysicalOlapScan[catalog_sales]
apply RFs: RF2 RF3
--------------------------------------PhysicalDistribute[DistributionSpecHash]
----------------------------------------PhysicalProject
-------------------------------------------PhysicalOlapScan[catalog_returns]
apply RFs: RF1
+------------------------------------------PhysicalOlapScan[catalog_returns]
apply RFs: RF2 RF3
------------------------------------PhysicalDistribute[DistributionSpecReplicated]
--------------------------------------PhysicalProject
----------------------------------------filter((date_dim.d_date <=
'2000-09-02') and (date_dim.d_date >= '2000-08-19'))
@@ -59,20 +59,20 @@ PhysicalResultSink
------------------------PhysicalDistribute[DistributionSpecHash]
--------------------------hashAgg[LOCAL]
----------------------------PhysicalProject
-------------------------------hashJoin[INNER_JOIN]
hashCondition=((salesreturns.wsr_web_site_sk = web_site.web_site_sk))
otherCondition=()
+------------------------------hashJoin[INNER_JOIN]
hashCondition=((salesreturns.wsr_web_site_sk = web_site.web_site_sk))
otherCondition=() build RFs:RF7 web_site_sk->[ws_web_site_sk,ws_web_site_sk]
--------------------------------PhysicalProject
-----------------------------------hashJoin[INNER_JOIN]
hashCondition=((salesreturns.date_sk = date_dim.d_date_sk)) otherCondition=()
build RFs:RF4 d_date_sk->[ws_sold_date_sk,wr_returned_date_sk]
+----------------------------------hashJoin[INNER_JOIN]
hashCondition=((salesreturns.date_sk = date_dim.d_date_sk)) otherCondition=()
build RFs:RF6 d_date_sk->[ws_sold_date_sk,wr_returned_date_sk]
------------------------------------PhysicalUnion
--------------------------------------PhysicalDistribute[DistributionSpecHash]
----------------------------------------PhysicalProject
-------------------------------------------PhysicalOlapScan[web_sales] apply
RFs: RF4
+------------------------------------------PhysicalOlapScan[web_sales] apply
RFs: RF6 RF7
--------------------------------------PhysicalDistribute[DistributionSpecHash]
----------------------------------------PhysicalProject
-------------------------------------------hashJoin[INNER_JOIN]
hashCondition=((web_returns.wr_item_sk = web_sales.ws_item_sk) and
(web_returns.wr_order_number = web_sales.ws_order_number)) otherCondition=()
build RFs:RF2 wr_item_sk->[ws_item_sk];RF3 wr_order_number->[ws_order_number]
+------------------------------------------hashJoin[INNER_JOIN]
hashCondition=((web_returns.wr_item_sk = web_sales.ws_item_sk) and
(web_returns.wr_order_number = web_sales.ws_order_number)) otherCondition=()
build RFs:RF4 wr_item_sk->[ws_item_sk];RF5 wr_order_number->[ws_order_number]
--------------------------------------------PhysicalProject
-----------------------------------------------PhysicalOlapScan[web_sales]
apply RFs: RF2 RF3
+----------------------------------------------PhysicalOlapScan[web_sales]
apply RFs: RF4 RF5 RF7
--------------------------------------------PhysicalProject
-----------------------------------------------PhysicalOlapScan[web_returns]
apply RFs: RF4
+----------------------------------------------PhysicalOlapScan[web_returns]
apply RFs: RF6
------------------------------------PhysicalDistribute[DistributionSpecReplicated]
--------------------------------------PhysicalProject
----------------------------------------filter((date_dim.d_date <=
'2000-09-02') and (date_dim.d_date >= '2000-08-19'))
diff --git
a/regression-test/data/nereids_tpcds_shape_sf1000_p0/shape/query54.out
b/regression-test/data/nereids_tpcds_shape_sf1000_p0/shape/query54.out
index a732fd81b3b..42c40cc0279 100644
--- a/regression-test/data/nereids_tpcds_shape_sf1000_p0/shape/query54.out
+++ b/regression-test/data/nereids_tpcds_shape_sf1000_p0/shape/query54.out
@@ -13,12 +13,12 @@ PhysicalResultSink
--------------------PhysicalDistribute[DistributionSpecHash]
----------------------hashAgg[LOCAL]
------------------------PhysicalProject
---------------------------hashJoin[INNER_JOIN]
hashCondition=((store_sales.ss_sold_date_sk = date_dim.d_date_sk))
otherCondition=() build RFs:RF6 ss_sold_date_sk->[d_date_sk]
+--------------------------hashJoin[INNER_JOIN]
hashCondition=((store_sales.ss_sold_date_sk = date_dim.d_date_sk))
otherCondition=() build RFs:RF7 ss_sold_date_sk->[d_date_sk]
----------------------------PhysicalProject
------------------------------NestedLoopJoin[INNER_JOIN](cast(d_month_seq as
BIGINT) <= (d_month_seq + 3))
--------------------------------NestedLoopJoin[INNER_JOIN](cast(d_month_seq as
BIGINT) >= (d_month_seq + 1))
----------------------------------PhysicalProject
-------------------------------------PhysicalOlapScan[date_dim] apply RFs: RF6
+------------------------------------PhysicalOlapScan[date_dim] apply RFs: RF7
----------------------------------PhysicalDistribute[DistributionSpecReplicated]
------------------------------------PhysicalAssertNumRows
--------------------------------------PhysicalDistribute[DistributionSpecGather]
@@ -39,36 +39,36 @@ PhysicalResultSink
------------------------------------------------PhysicalOlapScan[date_dim]
----------------------------PhysicalDistribute[DistributionSpecHash]
------------------------------PhysicalProject
---------------------------------hashJoin[INNER_JOIN]
hashCondition=((my_customers.c_customer_sk = store_sales.ss_customer_sk))
otherCondition=() build RFs:RF5 c_customer_sk->[ss_customer_sk]
+--------------------------------hashJoin[INNER_JOIN]
hashCondition=((my_customers.c_customer_sk = store_sales.ss_customer_sk))
otherCondition=() build RFs:RF6 c_customer_sk->[ss_customer_sk]
----------------------------------PhysicalProject
-------------------------------------PhysicalOlapScan[store_sales] apply RFs:
RF5
+------------------------------------PhysicalOlapScan[store_sales] apply RFs:
RF6
----------------------------------PhysicalDistribute[DistributionSpecReplicated]
------------------------------------PhysicalProject
---------------------------------------hashJoin[INNER_JOIN]
hashCondition=((customer_address.ca_county = store.s_county) and
(customer_address.ca_state = store.s_state)) otherCondition=() build RFs:RF3
s_county->[ca_county];RF4 s_state->[ca_state]
-----------------------------------------hashJoin[INNER_JOIN]
hashCondition=((my_customers.c_current_addr_sk =
customer_address.ca_address_sk)) otherCondition=() build RFs:RF2
c_current_addr_sk->[ca_address_sk]
+--------------------------------------hashJoin[INNER_JOIN]
hashCondition=((customer_address.ca_county = store.s_county) and
(customer_address.ca_state = store.s_state)) otherCondition=() build RFs:RF4
s_county->[ca_county];RF5 s_state->[ca_state]
+----------------------------------------hashJoin[INNER_JOIN]
hashCondition=((my_customers.c_current_addr_sk =
customer_address.ca_address_sk)) otherCondition=() build RFs:RF3
c_current_addr_sk->[ca_address_sk]
------------------------------------------PhysicalProject
---------------------------------------------PhysicalOlapScan[customer_address]
apply RFs: RF2 RF3 RF4
+--------------------------------------------PhysicalOlapScan[customer_address]
apply RFs: RF3 RF4 RF5
------------------------------------------PhysicalDistribute[DistributionSpecHash]
--------------------------------------------PhysicalProject
----------------------------------------------hashAgg[GLOBAL]
------------------------------------------------PhysicalDistribute[DistributionSpecHash]
--------------------------------------------------hashAgg[LOCAL]
----------------------------------------------------PhysicalProject
-------------------------------------------------------hashJoin[INNER_JOIN]
hashCondition=((customer.c_customer_sk = cs_or_ws_sales.customer_sk))
otherCondition=() build RFs:RF1 customer_sk->[c_customer_sk]
+------------------------------------------------------hashJoin[INNER_JOIN]
hashCondition=((customer.c_customer_sk = cs_or_ws_sales.customer_sk))
otherCondition=() build RFs:RF2 customer_sk->[c_customer_sk]
--------------------------------------------------------PhysicalProject
-----------------------------------------------------------PhysicalOlapScan[customer]
apply RFs: RF1
+----------------------------------------------------------PhysicalOlapScan[customer]
apply RFs: RF2
--------------------------------------------------------PhysicalDistribute[DistributionSpecReplicated]
----------------------------------------------------------PhysicalProject
-------------------------------------------------------------hashJoin[INNER_JOIN]
hashCondition=((cs_or_ws_sales.sold_date_sk = date_dim.d_date_sk))
otherCondition=()
+------------------------------------------------------------hashJoin[INNER_JOIN]
hashCondition=((cs_or_ws_sales.sold_date_sk = date_dim.d_date_sk))
otherCondition=() build RFs:RF1 d_date_sk->[cs_sold_date_sk,ws_sold_date_sk]
--------------------------------------------------------------PhysicalProject
----------------------------------------------------------------hashJoin[INNER_JOIN]
hashCondition=((cs_or_ws_sales.item_sk = item.i_item_sk)) otherCondition=()
build RFs:RF0 i_item_sk->[cs_item_sk,ws_item_sk]
------------------------------------------------------------------PhysicalUnion
--------------------------------------------------------------------PhysicalDistribute[DistributionSpecHash]
----------------------------------------------------------------------PhysicalProject
-------------------------------------------------------------------------PhysicalOlapScan[catalog_sales]
apply RFs: RF0
+------------------------------------------------------------------------PhysicalOlapScan[catalog_sales]
apply RFs: RF0 RF1
--------------------------------------------------------------------PhysicalDistribute[DistributionSpecHash]
----------------------------------------------------------------------PhysicalProject
-------------------------------------------------------------------------PhysicalOlapScan[web_sales]
apply RFs: RF0
+------------------------------------------------------------------------PhysicalOlapScan[web_sales]
apply RFs: RF0 RF1
------------------------------------------------------------------PhysicalDistribute[DistributionSpecReplicated]
--------------------------------------------------------------------PhysicalProject
----------------------------------------------------------------------filter((item.i_category
= 'Music') and (item.i_class = 'country'))
diff --git
a/regression-test/data/nereids_tpcds_shape_sf1000_p0/shape/query71.out
b/regression-test/data/nereids_tpcds_shape_sf1000_p0/shape/query71.out
index 697c9da8698..f6daf6b9ae6 100644
--- a/regression-test/data/nereids_tpcds_shape_sf1000_p0/shape/query71.out
+++ b/regression-test/data/nereids_tpcds_shape_sf1000_p0/shape/query71.out
@@ -9,7 +9,7 @@ PhysicalResultSink
------------PhysicalDistribute[DistributionSpecHash]
--------------hashAgg[LOCAL]
----------------PhysicalProject
-------------------hashJoin[INNER_JOIN] hashCondition=((tmp.time_sk =
time_dim.t_time_sk)) otherCondition=()
+------------------hashJoin[INNER_JOIN] hashCondition=((tmp.time_sk =
time_dim.t_time_sk)) otherCondition=() build RFs:RF4
t_time_sk->[ws_sold_time_sk,cs_sold_time_sk,ss_sold_time_sk]
--------------------PhysicalProject
----------------------hashJoin[INNER_JOIN] hashCondition=((tmp.sold_item_sk =
item.i_item_sk)) otherCondition=() build RFs:RF3
i_item_sk->[ws_item_sk,cs_item_sk,ss_item_sk]
------------------------PhysicalUnion
@@ -17,7 +17,7 @@ PhysicalResultSink
----------------------------PhysicalProject
------------------------------hashJoin[INNER_JOIN]
hashCondition=((date_dim.d_date_sk = web_sales.ws_sold_date_sk))
otherCondition=() build RFs:RF0 d_date_sk->[ws_sold_date_sk]
--------------------------------PhysicalProject
-----------------------------------PhysicalOlapScan[web_sales] apply RFs: RF0
RF3
+----------------------------------PhysicalOlapScan[web_sales] apply RFs: RF0
RF3 RF4
--------------------------------PhysicalDistribute[DistributionSpecReplicated]
----------------------------------PhysicalProject
------------------------------------filter((date_dim.d_moy = 12) and
(date_dim.d_year = 2002))
@@ -26,7 +26,7 @@ PhysicalResultSink
----------------------------PhysicalProject
------------------------------hashJoin[INNER_JOIN]
hashCondition=((date_dim.d_date_sk = catalog_sales.cs_sold_date_sk))
otherCondition=() build RFs:RF1 d_date_sk->[cs_sold_date_sk]
--------------------------------PhysicalProject
-----------------------------------PhysicalOlapScan[catalog_sales] apply RFs:
RF1 RF3
+----------------------------------PhysicalOlapScan[catalog_sales] apply RFs:
RF1 RF3 RF4
--------------------------------PhysicalDistribute[DistributionSpecReplicated]
----------------------------------PhysicalProject
------------------------------------filter((date_dim.d_moy = 12) and
(date_dim.d_year = 2002))
@@ -35,7 +35,7 @@ PhysicalResultSink
----------------------------PhysicalProject
------------------------------hashJoin[INNER_JOIN]
hashCondition=((date_dim.d_date_sk = store_sales.ss_sold_date_sk))
otherCondition=() build RFs:RF2 d_date_sk->[ss_sold_date_sk]
--------------------------------PhysicalProject
-----------------------------------PhysicalOlapScan[store_sales] apply RFs: RF2
RF3
+----------------------------------PhysicalOlapScan[store_sales] apply RFs: RF2
RF3 RF4
--------------------------------PhysicalDistribute[DistributionSpecReplicated]
----------------------------------PhysicalProject
------------------------------------filter((date_dim.d_moy = 12) and
(date_dim.d_year = 2002))
diff --git
a/regression-test/data/nereids_tpcds_shape_sf1000_p0/shape/query74.out
b/regression-test/data/nereids_tpcds_shape_sf1000_p0/shape/query74.out
index e7772ca5ecb..058f4eafb7c 100644
--- a/regression-test/data/nereids_tpcds_shape_sf1000_p0/shape/query74.out
+++ b/regression-test/data/nereids_tpcds_shape_sf1000_p0/shape/query74.out
@@ -3,7 +3,7 @@
PhysicalCteAnchor ( cteId=CTEId#0 )
--PhysicalCteProducer ( cteId=CTEId#0 )
----PhysicalProject
-------hashJoin[INNER_JOIN] hashCondition=((PULL_UP_UNIFIED_OUTPUT_ALIAS =
customer.c_customer_sk)) otherCondition=()
+------hashJoin[INNER_JOIN] hashCondition=((PULL_UP_UNIFIED_OUTPUT_ALIAS =
customer.c_customer_sk)) otherCondition=() build RFs:RF2
c_customer_sk->[ss_customer_sk,ws_bill_customer_sk]
--------PhysicalDistribute[DistributionSpecHash]
----------PhysicalProject
------------PhysicalUnion
@@ -14,7 +14,7 @@ PhysicalCteAnchor ( cteId=CTEId#0 )
----------------------PhysicalProject
------------------------hashJoin[INNER_JOIN]
hashCondition=((store_sales.ss_sold_date_sk = date_dim.d_date_sk))
otherCondition=() build RFs:RF0 d_date_sk->[ss_sold_date_sk]
--------------------------PhysicalProject
-----------------------------PhysicalOlapScan[store_sales] apply RFs: RF0
+----------------------------PhysicalOlapScan[store_sales] apply RFs: RF0 RF2
--------------------------PhysicalDistribute[DistributionSpecReplicated]
----------------------------PhysicalProject
------------------------------filter(d_year IN (1999, 2000))
@@ -26,7 +26,7 @@ PhysicalCteAnchor ( cteId=CTEId#0 )
----------------------PhysicalProject
------------------------hashJoin[INNER_JOIN]
hashCondition=((web_sales.ws_sold_date_sk = date_dim.d_date_sk))
otherCondition=() build RFs:RF1 d_date_sk->[ws_sold_date_sk]
--------------------------PhysicalProject
-----------------------------PhysicalOlapScan[web_sales] apply RFs: RF1
+----------------------------PhysicalOlapScan[web_sales] apply RFs: RF1 RF2
--------------------------PhysicalDistribute[DistributionSpecReplicated]
----------------------------PhysicalProject
------------------------------filter(d_year IN (1999, 2000))
diff --git
a/regression-test/data/nereids_tpcds_shape_sf100_p0/noStatsRfPrune/query54.out
b/regression-test/data/nereids_tpcds_shape_sf100_p0/noStatsRfPrune/query54.out
index 16ad1b03319..2cd074fa727 100644
---
a/regression-test/data/nereids_tpcds_shape_sf100_p0/noStatsRfPrune/query54.out
+++
b/regression-test/data/nereids_tpcds_shape_sf100_p0/noStatsRfPrune/query54.out
@@ -16,10 +16,10 @@ PhysicalResultSink
--------------------------PhysicalProject
----------------------------hashJoin[INNER_JOIN]
hashCondition=((my_customers.c_current_addr_sk =
customer_address.ca_address_sk)) otherCondition=()
------------------------------PhysicalProject
---------------------------------hashJoin[INNER_JOIN]
hashCondition=((my_customers.c_customer_sk = store_sales.ss_customer_sk))
otherCondition=() build RFs:RF2 c_customer_sk->[ss_customer_sk]
+--------------------------------hashJoin[INNER_JOIN]
hashCondition=((my_customers.c_customer_sk = store_sales.ss_customer_sk))
otherCondition=() build RFs:RF3 c_customer_sk->[ss_customer_sk]
----------------------------------PhysicalDistribute[DistributionSpecHash]
------------------------------------PhysicalProject
---------------------------------------PhysicalOlapScan[store_sales] apply RFs:
RF2
+--------------------------------------PhysicalOlapScan[store_sales] apply RFs:
RF3
----------------------------------PhysicalProject
------------------------------------hashAgg[LOCAL]
--------------------------------------PhysicalProject
diff --git
a/regression-test/data/nereids_tpcds_shape_sf100_p0/no_stats_shape/query11.out
b/regression-test/data/nereids_tpcds_shape_sf100_p0/no_stats_shape/query11.out
index 6922272ef0a..80827cee429 100644
---
a/regression-test/data/nereids_tpcds_shape_sf100_p0/no_stats_shape/query11.out
+++
b/regression-test/data/nereids_tpcds_shape_sf100_p0/no_stats_shape/query11.out
@@ -3,7 +3,7 @@
PhysicalCteAnchor ( cteId=CTEId#0 )
--PhysicalCteProducer ( cteId=CTEId#0 )
----PhysicalProject
-------hashJoin[INNER_JOIN] hashCondition=((PULL_UP_UNIFIED_OUTPUT_ALIAS =
customer.c_customer_sk)) otherCondition=()
+------hashJoin[INNER_JOIN] hashCondition=((PULL_UP_UNIFIED_OUTPUT_ALIAS =
customer.c_customer_sk)) otherCondition=() build RFs:RF2
c_customer_sk->[ss_customer_sk,ws_bill_customer_sk]
--------PhysicalDistribute[DistributionSpecHash]
----------PhysicalProject
------------PhysicalUnion
@@ -14,7 +14,7 @@ PhysicalCteAnchor ( cteId=CTEId#0 )
----------------------PhysicalProject
------------------------hashJoin[INNER_JOIN]
hashCondition=((store_sales.ss_sold_date_sk = date_dim.d_date_sk))
otherCondition=() build RFs:RF0 d_date_sk->[ss_sold_date_sk]
--------------------------PhysicalProject
-----------------------------PhysicalOlapScan[store_sales] apply RFs: RF0
+----------------------------PhysicalOlapScan[store_sales] apply RFs: RF0 RF2
--------------------------PhysicalDistribute[DistributionSpecReplicated]
----------------------------PhysicalProject
------------------------------filter(d_year IN (2001, 2002))
@@ -26,7 +26,7 @@ PhysicalCteAnchor ( cteId=CTEId#0 )
----------------------PhysicalProject
------------------------hashJoin[INNER_JOIN]
hashCondition=((web_sales.ws_sold_date_sk = date_dim.d_date_sk))
otherCondition=() build RFs:RF1 d_date_sk->[ws_sold_date_sk]
--------------------------PhysicalProject
-----------------------------PhysicalOlapScan[web_sales] apply RFs: RF1
+----------------------------PhysicalOlapScan[web_sales] apply RFs: RF1 RF2
--------------------------PhysicalDistribute[DistributionSpecReplicated]
----------------------------PhysicalProject
------------------------------filter(d_year IN (2001, 2002))
diff --git
a/regression-test/data/nereids_tpcds_shape_sf100_p0/no_stats_shape/query4.out
b/regression-test/data/nereids_tpcds_shape_sf100_p0/no_stats_shape/query4.out
index e1934aa4667..293507363d0 100644
---
a/regression-test/data/nereids_tpcds_shape_sf100_p0/no_stats_shape/query4.out
+++
b/regression-test/data/nereids_tpcds_shape_sf100_p0/no_stats_shape/query4.out
@@ -3,7 +3,7 @@
PhysicalCteAnchor ( cteId=CTEId#0 )
--PhysicalCteProducer ( cteId=CTEId#0 )
----PhysicalProject
-------hashJoin[INNER_JOIN] hashCondition=((PULL_UP_UNIFIED_OUTPUT_ALIAS =
customer.c_customer_sk)) otherCondition=()
+------hashJoin[INNER_JOIN] hashCondition=((PULL_UP_UNIFIED_OUTPUT_ALIAS =
customer.c_customer_sk)) otherCondition=() build RFs:RF3
c_customer_sk->[ss_customer_sk,cs_bill_customer_sk,ws_bill_customer_sk]
--------PhysicalDistribute[DistributionSpecHash]
----------PhysicalProject
------------PhysicalUnion
@@ -14,7 +14,7 @@ PhysicalCteAnchor ( cteId=CTEId#0 )
----------------------PhysicalProject
------------------------hashJoin[INNER_JOIN]
hashCondition=((store_sales.ss_sold_date_sk = date_dim.d_date_sk))
otherCondition=() build RFs:RF0 d_date_sk->[ss_sold_date_sk]
--------------------------PhysicalProject
-----------------------------PhysicalOlapScan[store_sales] apply RFs: RF0
+----------------------------PhysicalOlapScan[store_sales] apply RFs: RF0 RF3
--------------------------PhysicalDistribute[DistributionSpecReplicated]
----------------------------PhysicalProject
------------------------------filter(d_year IN (1999, 2000))
@@ -26,7 +26,7 @@ PhysicalCteAnchor ( cteId=CTEId#0 )
----------------------PhysicalProject
------------------------hashJoin[INNER_JOIN]
hashCondition=((catalog_sales.cs_sold_date_sk = date_dim.d_date_sk))
otherCondition=() build RFs:RF1 d_date_sk->[cs_sold_date_sk]
--------------------------PhysicalProject
-----------------------------PhysicalOlapScan[catalog_sales] apply RFs: RF1
+----------------------------PhysicalOlapScan[catalog_sales] apply RFs: RF1 RF3
--------------------------PhysicalDistribute[DistributionSpecReplicated]
----------------------------PhysicalProject
------------------------------filter(d_year IN (1999, 2000))
@@ -38,7 +38,7 @@ PhysicalCteAnchor ( cteId=CTEId#0 )
----------------------PhysicalProject
------------------------hashJoin[INNER_JOIN]
hashCondition=((web_sales.ws_sold_date_sk = date_dim.d_date_sk))
otherCondition=() build RFs:RF2 d_date_sk->[ws_sold_date_sk]
--------------------------PhysicalProject
-----------------------------PhysicalOlapScan[web_sales] apply RFs: RF2
+----------------------------PhysicalOlapScan[web_sales] apply RFs: RF2 RF3
--------------------------PhysicalDistribute[DistributionSpecReplicated]
----------------------------PhysicalProject
------------------------------filter(d_year IN (1999, 2000))
diff --git
a/regression-test/data/nereids_tpcds_shape_sf100_p0/no_stats_shape/query54.out
b/regression-test/data/nereids_tpcds_shape_sf100_p0/no_stats_shape/query54.out
index 2568cd4debc..7a14cacc36e 100644
---
a/regression-test/data/nereids_tpcds_shape_sf100_p0/no_stats_shape/query54.out
+++
b/regression-test/data/nereids_tpcds_shape_sf100_p0/no_stats_shape/query54.out
@@ -11,19 +11,19 @@ PhysicalResultSink
----------------PhysicalProject
------------------hashAgg[LOCAL]
--------------------PhysicalProject
-----------------------hashJoin[INNER_JOIN]
hashCondition=((customer_address.ca_county = store.s_county) and
(customer_address.ca_state = store.s_state)) otherCondition=() build RFs:RF5
s_county->[ca_county];RF6 s_state->[ca_state]
-------------------------hashJoin[INNER_JOIN]
hashCondition=((store_sales.ss_sold_date_sk = date_dim.d_date_sk))
otherCondition=() build RFs:RF4 d_date_sk->[ss_sold_date_sk]
+----------------------hashJoin[INNER_JOIN]
hashCondition=((customer_address.ca_county = store.s_county) and
(customer_address.ca_state = store.s_state)) otherCondition=() build RFs:RF6
s_county->[ca_county];RF7 s_state->[ca_state]
+------------------------hashJoin[INNER_JOIN]
hashCondition=((store_sales.ss_sold_date_sk = date_dim.d_date_sk))
otherCondition=() build RFs:RF5 d_date_sk->[ss_sold_date_sk]
--------------------------PhysicalProject
-----------------------------hashJoin[INNER_JOIN]
hashCondition=((my_customers.c_current_addr_sk =
customer_address.ca_address_sk)) otherCondition=() build RFs:RF3
ca_address_sk->[c_current_addr_sk]
+----------------------------hashJoin[INNER_JOIN]
hashCondition=((my_customers.c_current_addr_sk =
customer_address.ca_address_sk)) otherCondition=() build RFs:RF4
ca_address_sk->[c_current_addr_sk]
------------------------------PhysicalProject
---------------------------------hashJoin[INNER_JOIN]
hashCondition=((my_customers.c_customer_sk = store_sales.ss_customer_sk))
otherCondition=() build RFs:RF2 c_customer_sk->[ss_customer_sk]
+--------------------------------hashJoin[INNER_JOIN]
hashCondition=((my_customers.c_customer_sk = store_sales.ss_customer_sk))
otherCondition=() build RFs:RF3 c_customer_sk->[ss_customer_sk]
----------------------------------PhysicalDistribute[DistributionSpecHash]
------------------------------------PhysicalProject
---------------------------------------PhysicalOlapScan[store_sales] apply RFs:
RF2 RF4
+--------------------------------------PhysicalOlapScan[store_sales] apply RFs:
RF3 RF5
----------------------------------PhysicalProject
------------------------------------hashAgg[LOCAL]
--------------------------------------PhysicalProject
-----------------------------------------hashJoin[INNER_JOIN]
hashCondition=((customer.c_customer_sk = cs_or_ws_sales.customer_sk))
otherCondition=()
+----------------------------------------hashJoin[INNER_JOIN]
hashCondition=((customer.c_customer_sk = cs_or_ws_sales.customer_sk))
otherCondition=() build RFs:RF2
c_customer_sk->[cs_bill_customer_sk,ws_bill_customer_sk]
------------------------------------------PhysicalDistribute[DistributionSpecHash]
--------------------------------------------PhysicalProject
----------------------------------------------hashJoin[INNER_JOIN]
hashCondition=((cs_or_ws_sales.item_sk = item.i_item_sk)) otherCondition=()
build RFs:RF1 i_item_sk->[cs_item_sk,ws_item_sk]
@@ -31,10 +31,10 @@ PhysicalResultSink
--------------------------------------------------PhysicalUnion
----------------------------------------------------PhysicalDistribute[DistributionSpecHash]
------------------------------------------------------PhysicalProject
---------------------------------------------------------PhysicalOlapScan[catalog_sales]
apply RFs: RF0 RF1
+--------------------------------------------------------PhysicalOlapScan[catalog_sales]
apply RFs: RF0 RF1 RF2
----------------------------------------------------PhysicalDistribute[DistributionSpecHash]
------------------------------------------------------PhysicalProject
---------------------------------------------------------PhysicalOlapScan[web_sales]
apply RFs: RF0 RF1
+--------------------------------------------------------PhysicalOlapScan[web_sales]
apply RFs: RF0 RF1 RF2
--------------------------------------------------PhysicalDistribute[DistributionSpecReplicated]
----------------------------------------------------PhysicalProject
------------------------------------------------------filter((date_dim.d_moy =
5) and (date_dim.d_year = 1998))
@@ -45,10 +45,10 @@ PhysicalResultSink
------------------------------------------------------PhysicalOlapScan[item]
------------------------------------------PhysicalDistribute[DistributionSpecHash]
--------------------------------------------PhysicalProject
-----------------------------------------------PhysicalOlapScan[customer] apply
RFs: RF3
+----------------------------------------------PhysicalOlapScan[customer] apply
RFs: RF4
------------------------------PhysicalDistribute[DistributionSpecReplicated]
--------------------------------PhysicalProject
-----------------------------------PhysicalOlapScan[customer_address] apply
RFs: RF5 RF6
+----------------------------------PhysicalOlapScan[customer_address] apply
RFs: RF6 RF7
--------------------------PhysicalDistribute[DistributionSpecReplicated]
----------------------------PhysicalProject
------------------------------NestedLoopJoin[INNER_JOIN](cast(d_month_seq as
BIGINT) <= (d_month_seq + 3))
diff --git
a/regression-test/data/nereids_tpcds_shape_sf100_p0/no_stats_shape/query74.out
b/regression-test/data/nereids_tpcds_shape_sf100_p0/no_stats_shape/query74.out
index 6aaf94a5249..b921c457fb9 100644
---
a/regression-test/data/nereids_tpcds_shape_sf100_p0/no_stats_shape/query74.out
+++
b/regression-test/data/nereids_tpcds_shape_sf100_p0/no_stats_shape/query74.out
@@ -3,7 +3,7 @@
PhysicalCteAnchor ( cteId=CTEId#0 )
--PhysicalCteProducer ( cteId=CTEId#0 )
----PhysicalProject
-------hashJoin[INNER_JOIN] hashCondition=((PULL_UP_UNIFIED_OUTPUT_ALIAS =
customer.c_customer_sk)) otherCondition=()
+------hashJoin[INNER_JOIN] hashCondition=((PULL_UP_UNIFIED_OUTPUT_ALIAS =
customer.c_customer_sk)) otherCondition=() build RFs:RF2
c_customer_sk->[ss_customer_sk,ws_bill_customer_sk]
--------PhysicalDistribute[DistributionSpecHash]
----------PhysicalProject
------------PhysicalUnion
@@ -14,7 +14,7 @@ PhysicalCteAnchor ( cteId=CTEId#0 )
----------------------PhysicalProject
------------------------hashJoin[INNER_JOIN]
hashCondition=((store_sales.ss_sold_date_sk = date_dim.d_date_sk))
otherCondition=() build RFs:RF0 d_date_sk->[ss_sold_date_sk]
--------------------------PhysicalProject
-----------------------------PhysicalOlapScan[store_sales] apply RFs: RF0
+----------------------------PhysicalOlapScan[store_sales] apply RFs: RF0 RF2
--------------------------PhysicalDistribute[DistributionSpecReplicated]
----------------------------PhysicalProject
------------------------------filter(d_year IN (1999, 2000))
@@ -26,7 +26,7 @@ PhysicalCteAnchor ( cteId=CTEId#0 )
----------------------PhysicalProject
------------------------hashJoin[INNER_JOIN]
hashCondition=((web_sales.ws_sold_date_sk = date_dim.d_date_sk))
otherCondition=() build RFs:RF1 d_date_sk->[ws_sold_date_sk]
--------------------------PhysicalProject
-----------------------------PhysicalOlapScan[web_sales] apply RFs: RF1
+----------------------------PhysicalOlapScan[web_sales] apply RFs: RF1 RF2
--------------------------PhysicalDistribute[DistributionSpecReplicated]
----------------------------PhysicalProject
------------------------------filter(d_year IN (1999, 2000))
diff --git
a/regression-test/data/nereids_tpcds_shape_sf100_p0/rf_prune/query5.out
b/regression-test/data/nereids_tpcds_shape_sf100_p0/rf_prune/query5.out
index 8a8f8b1180d..cfdbc1f258b 100644
--- a/regression-test/data/nereids_tpcds_shape_sf100_p0/rf_prune/query5.out
+++ b/regression-test/data/nereids_tpcds_shape_sf100_p0/rf_prune/query5.out
@@ -37,16 +37,16 @@ PhysicalResultSink
------------------------PhysicalDistribute[DistributionSpecHash]
--------------------------hashAgg[LOCAL]
----------------------------PhysicalProject
-------------------------------hashJoin[INNER_JOIN]
hashCondition=((salesreturns.page_sk = catalog_page.cp_catalog_page_sk))
otherCondition=()
+------------------------------hashJoin[INNER_JOIN]
hashCondition=((salesreturns.page_sk = catalog_page.cp_catalog_page_sk))
otherCondition=() build RFs:RF3
cp_catalog_page_sk->[cs_catalog_page_sk,cr_catalog_page_sk]
--------------------------------PhysicalProject
-----------------------------------hashJoin[INNER_JOIN]
hashCondition=((salesreturns.date_sk = date_dim.d_date_sk)) otherCondition=()
build RFs:RF1 d_date_sk->[cs_sold_date_sk,cr_returned_date_sk]
+----------------------------------hashJoin[INNER_JOIN]
hashCondition=((salesreturns.date_sk = date_dim.d_date_sk)) otherCondition=()
build RFs:RF2 d_date_sk->[cs_sold_date_sk,cr_returned_date_sk]
------------------------------------PhysicalUnion
--------------------------------------PhysicalDistribute[DistributionSpecHash]
----------------------------------------PhysicalProject
-------------------------------------------PhysicalOlapScan[catalog_sales]
apply RFs: RF1
+------------------------------------------PhysicalOlapScan[catalog_sales]
apply RFs: RF2 RF3
--------------------------------------PhysicalDistribute[DistributionSpecHash]
----------------------------------------PhysicalProject
-------------------------------------------PhysicalOlapScan[catalog_returns]
apply RFs: RF1
+------------------------------------------PhysicalOlapScan[catalog_returns]
apply RFs: RF2 RF3
------------------------------------PhysicalDistribute[DistributionSpecReplicated]
--------------------------------------PhysicalProject
----------------------------------------filter((date_dim.d_date <=
'2000-09-02') and (date_dim.d_date >= '2000-08-19'))
@@ -59,20 +59,20 @@ PhysicalResultSink
------------------------PhysicalDistribute[DistributionSpecHash]
--------------------------hashAgg[LOCAL]
----------------------------PhysicalProject
-------------------------------hashJoin[INNER_JOIN]
hashCondition=((salesreturns.wsr_web_site_sk = web_site.web_site_sk))
otherCondition=()
+------------------------------hashJoin[INNER_JOIN]
hashCondition=((salesreturns.wsr_web_site_sk = web_site.web_site_sk))
otherCondition=() build RFs:RF7 web_site_sk->[ws_web_site_sk,ws_web_site_sk]
--------------------------------PhysicalProject
-----------------------------------hashJoin[INNER_JOIN]
hashCondition=((salesreturns.date_sk = date_dim.d_date_sk)) otherCondition=()
build RFs:RF4 d_date_sk->[ws_sold_date_sk,wr_returned_date_sk]
+----------------------------------hashJoin[INNER_JOIN]
hashCondition=((salesreturns.date_sk = date_dim.d_date_sk)) otherCondition=()
build RFs:RF6 d_date_sk->[ws_sold_date_sk,wr_returned_date_sk]
------------------------------------PhysicalUnion
--------------------------------------PhysicalDistribute[DistributionSpecHash]
----------------------------------------PhysicalProject
-------------------------------------------PhysicalOlapScan[web_sales] apply
RFs: RF4
+------------------------------------------PhysicalOlapScan[web_sales] apply
RFs: RF6 RF7
--------------------------------------PhysicalDistribute[DistributionSpecHash]
----------------------------------------PhysicalProject
-------------------------------------------hashJoin[INNER_JOIN]
hashCondition=((web_returns.wr_item_sk = web_sales.ws_item_sk) and
(web_returns.wr_order_number = web_sales.ws_order_number)) otherCondition=()
build RFs:RF2 wr_item_sk->[ws_item_sk];RF3 wr_order_number->[ws_order_number]
+------------------------------------------hashJoin[INNER_JOIN]
hashCondition=((web_returns.wr_item_sk = web_sales.ws_item_sk) and
(web_returns.wr_order_number = web_sales.ws_order_number)) otherCondition=()
build RFs:RF4 wr_item_sk->[ws_item_sk];RF5 wr_order_number->[ws_order_number]
--------------------------------------------PhysicalProject
-----------------------------------------------PhysicalOlapScan[web_sales]
apply RFs: RF2 RF3
+----------------------------------------------PhysicalOlapScan[web_sales]
apply RFs: RF4 RF5 RF7
--------------------------------------------PhysicalProject
-----------------------------------------------PhysicalOlapScan[web_returns]
apply RFs: RF4
+----------------------------------------------PhysicalOlapScan[web_returns]
apply RFs: RF6
------------------------------------PhysicalDistribute[DistributionSpecReplicated]
--------------------------------------PhysicalProject
----------------------------------------filter((date_dim.d_date <=
'2000-09-02') and (date_dim.d_date >= '2000-08-19'))
diff --git
a/regression-test/data/nereids_tpcds_shape_sf100_p0/rf_prune/query54.out
b/regression-test/data/nereids_tpcds_shape_sf100_p0/rf_prune/query54.out
index 1bacc9f548a..a1548688624 100644
--- a/regression-test/data/nereids_tpcds_shape_sf100_p0/rf_prune/query54.out
+++ b/regression-test/data/nereids_tpcds_shape_sf100_p0/rf_prune/query54.out
@@ -20,36 +20,36 @@ PhysicalResultSink
----------------------------------hashJoin[INNER_JOIN]
hashCondition=((store_sales.ss_sold_date_sk = date_dim.d_date_sk))
otherCondition=()
------------------------------------PhysicalDistribute[DistributionSpecHash]
--------------------------------------PhysicalProject
-----------------------------------------hashJoin[INNER_JOIN]
hashCondition=((my_customers.c_customer_sk = store_sales.ss_customer_sk))
otherCondition=() build RFs:RF5 c_customer_sk->[ss_customer_sk]
+----------------------------------------hashJoin[INNER_JOIN]
hashCondition=((my_customers.c_customer_sk = store_sales.ss_customer_sk))
otherCondition=() build RFs:RF6 c_customer_sk->[ss_customer_sk]
------------------------------------------PhysicalProject
---------------------------------------------PhysicalOlapScan[store_sales]
apply RFs: RF5
+--------------------------------------------PhysicalOlapScan[store_sales]
apply RFs: RF6
------------------------------------------PhysicalDistribute[DistributionSpecReplicated]
--------------------------------------------PhysicalProject
-----------------------------------------------hashJoin[INNER_JOIN]
hashCondition=((customer_address.ca_county = store.s_county) and
(customer_address.ca_state = store.s_state)) otherCondition=() build RFs:RF3
s_county->[ca_county];RF4 s_state->[ca_state]
-------------------------------------------------hashJoin[INNER_JOIN]
hashCondition=((my_customers.c_current_addr_sk =
customer_address.ca_address_sk)) otherCondition=() build RFs:RF2
c_current_addr_sk->[ca_address_sk]
+----------------------------------------------hashJoin[INNER_JOIN]
hashCondition=((customer_address.ca_county = store.s_county) and
(customer_address.ca_state = store.s_state)) otherCondition=() build RFs:RF4
s_county->[ca_county];RF5 s_state->[ca_state]
+------------------------------------------------hashJoin[INNER_JOIN]
hashCondition=((my_customers.c_current_addr_sk =
customer_address.ca_address_sk)) otherCondition=() build RFs:RF3
c_current_addr_sk->[ca_address_sk]
--------------------------------------------------PhysicalProject
-----------------------------------------------------PhysicalOlapScan[customer_address]
apply RFs: RF2 RF3 RF4
+----------------------------------------------------PhysicalOlapScan[customer_address]
apply RFs: RF3 RF4 RF5
--------------------------------------------------PhysicalDistribute[DistributionSpecHash]
----------------------------------------------------PhysicalProject
------------------------------------------------------hashAgg[GLOBAL]
--------------------------------------------------------PhysicalDistribute[DistributionSpecHash]
----------------------------------------------------------hashAgg[LOCAL]
------------------------------------------------------------PhysicalProject
---------------------------------------------------------------hashJoin[INNER_JOIN]
hashCondition=((customer.c_customer_sk = cs_or_ws_sales.customer_sk))
otherCondition=() build RFs:RF1 customer_sk->[c_customer_sk]
+--------------------------------------------------------------hashJoin[INNER_JOIN]
hashCondition=((customer.c_customer_sk = cs_or_ws_sales.customer_sk))
otherCondition=() build RFs:RF2 customer_sk->[c_customer_sk]
----------------------------------------------------------------PhysicalProject
-------------------------------------------------------------------PhysicalOlapScan[customer]
apply RFs: RF1
+------------------------------------------------------------------PhysicalOlapScan[customer]
apply RFs: RF2
----------------------------------------------------------------PhysicalDistribute[DistributionSpecReplicated]
------------------------------------------------------------------PhysicalProject
---------------------------------------------------------------------hashJoin[INNER_JOIN]
hashCondition=((cs_or_ws_sales.sold_date_sk = date_dim.d_date_sk))
otherCondition=()
+--------------------------------------------------------------------hashJoin[INNER_JOIN]
hashCondition=((cs_or_ws_sales.sold_date_sk = date_dim.d_date_sk))
otherCondition=() build RFs:RF1 d_date_sk->[cs_sold_date_sk,ws_sold_date_sk]
----------------------------------------------------------------------PhysicalProject
------------------------------------------------------------------------hashJoin[INNER_JOIN]
hashCondition=((cs_or_ws_sales.item_sk = item.i_item_sk)) otherCondition=()
build RFs:RF0 i_item_sk->[cs_item_sk,ws_item_sk]
--------------------------------------------------------------------------PhysicalUnion
----------------------------------------------------------------------------PhysicalDistribute[DistributionSpecHash]
------------------------------------------------------------------------------PhysicalProject
---------------------------------------------------------------------------------PhysicalOlapScan[catalog_sales]
apply RFs: RF0
+--------------------------------------------------------------------------------PhysicalOlapScan[catalog_sales]
apply RFs: RF0 RF1
----------------------------------------------------------------------------PhysicalDistribute[DistributionSpecHash]
------------------------------------------------------------------------------PhysicalProject
---------------------------------------------------------------------------------PhysicalOlapScan[web_sales]
apply RFs: RF0
+--------------------------------------------------------------------------------PhysicalOlapScan[web_sales]
apply RFs: RF0 RF1
--------------------------------------------------------------------------PhysicalDistribute[DistributionSpecReplicated]
----------------------------------------------------------------------------PhysicalProject
------------------------------------------------------------------------------filter((item.i_category
= 'Women') and (item.i_class = 'maternity'))
diff --git
a/regression-test/data/nereids_tpcds_shape_sf100_p0/rf_prune/query71.out
b/regression-test/data/nereids_tpcds_shape_sf100_p0/rf_prune/query71.out
index 536aef93359..1567795d86f 100644
--- a/regression-test/data/nereids_tpcds_shape_sf100_p0/rf_prune/query71.out
+++ b/regression-test/data/nereids_tpcds_shape_sf100_p0/rf_prune/query71.out
@@ -9,7 +9,7 @@ PhysicalResultSink
------------PhysicalDistribute[DistributionSpecHash]
--------------hashAgg[LOCAL]
----------------PhysicalProject
-------------------hashJoin[INNER_JOIN] hashCondition=((tmp.time_sk =
time_dim.t_time_sk)) otherCondition=()
+------------------hashJoin[INNER_JOIN] hashCondition=((tmp.time_sk =
time_dim.t_time_sk)) otherCondition=() build RFs:RF4
t_time_sk->[ws_sold_time_sk,cs_sold_time_sk,ss_sold_time_sk]
--------------------PhysicalDistribute[DistributionSpecHash]
----------------------PhysicalProject
------------------------hashJoin[INNER_JOIN] hashCondition=((tmp.sold_item_sk
= item.i_item_sk)) otherCondition=() build RFs:RF3
i_item_sk->[ws_item_sk,cs_item_sk,ss_item_sk]
@@ -18,7 +18,7 @@ PhysicalResultSink
------------------------------PhysicalProject
--------------------------------hashJoin[INNER_JOIN]
hashCondition=((date_dim.d_date_sk = web_sales.ws_sold_date_sk))
otherCondition=() build RFs:RF0 d_date_sk->[ws_sold_date_sk]
----------------------------------PhysicalProject
-------------------------------------PhysicalOlapScan[web_sales] apply RFs: RF0
RF3
+------------------------------------PhysicalOlapScan[web_sales] apply RFs: RF0
RF3 RF4
----------------------------------PhysicalDistribute[DistributionSpecReplicated]
------------------------------------PhysicalProject
--------------------------------------filter((date_dim.d_moy = 12) and
(date_dim.d_year = 1998))
@@ -27,7 +27,7 @@ PhysicalResultSink
------------------------------PhysicalProject
--------------------------------hashJoin[INNER_JOIN]
hashCondition=((date_dim.d_date_sk = catalog_sales.cs_sold_date_sk))
otherCondition=() build RFs:RF1 d_date_sk->[cs_sold_date_sk]
----------------------------------PhysicalProject
-------------------------------------PhysicalOlapScan[catalog_sales] apply RFs:
RF1 RF3
+------------------------------------PhysicalOlapScan[catalog_sales] apply RFs:
RF1 RF3 RF4
----------------------------------PhysicalDistribute[DistributionSpecReplicated]
------------------------------------PhysicalProject
--------------------------------------filter((date_dim.d_moy = 12) and
(date_dim.d_year = 1998))
@@ -36,7 +36,7 @@ PhysicalResultSink
------------------------------PhysicalProject
--------------------------------hashJoin[INNER_JOIN]
hashCondition=((date_dim.d_date_sk = store_sales.ss_sold_date_sk))
otherCondition=() build RFs:RF2 d_date_sk->[ss_sold_date_sk]
----------------------------------PhysicalProject
-------------------------------------PhysicalOlapScan[store_sales] apply RFs:
RF2 RF3
+------------------------------------PhysicalOlapScan[store_sales] apply RFs:
RF2 RF3 RF4
----------------------------------PhysicalDistribute[DistributionSpecReplicated]
------------------------------------PhysicalProject
--------------------------------------filter((date_dim.d_moy = 12) and
(date_dim.d_year = 1998))
diff --git
a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query11.out
b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query11.out
index 20e3fd86528..0b0e59d34d4 100644
--- a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query11.out
+++ b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query11.out
@@ -3,7 +3,7 @@
PhysicalCteAnchor ( cteId=CTEId#0 )
--PhysicalCteProducer ( cteId=CTEId#0 )
----PhysicalProject
-------hashJoin[INNER_JOIN] hashCondition=((PULL_UP_UNIFIED_OUTPUT_ALIAS =
customer.c_customer_sk)) otherCondition=()
+------hashJoin[INNER_JOIN] hashCondition=((PULL_UP_UNIFIED_OUTPUT_ALIAS =
customer.c_customer_sk)) otherCondition=() build RFs:RF2
c_customer_sk->[ss_customer_sk,ws_bill_customer_sk]
--------PhysicalDistribute[DistributionSpecHash]
----------PhysicalProject
------------PhysicalUnion
@@ -14,7 +14,7 @@ PhysicalCteAnchor ( cteId=CTEId#0 )
----------------------PhysicalProject
------------------------hashJoin[INNER_JOIN]
hashCondition=((store_sales.ss_sold_date_sk = date_dim.d_date_sk))
otherCondition=() build RFs:RF0 d_date_sk->[ss_sold_date_sk]
--------------------------PhysicalProject
-----------------------------PhysicalOlapScan[store_sales] apply RFs: RF0
+----------------------------PhysicalOlapScan[store_sales] apply RFs: RF0 RF2
--------------------------PhysicalDistribute[DistributionSpecReplicated]
----------------------------PhysicalProject
------------------------------filter(d_year IN (2001, 2002))
@@ -26,7 +26,7 @@ PhysicalCteAnchor ( cteId=CTEId#0 )
----------------------PhysicalProject
------------------------hashJoin[INNER_JOIN]
hashCondition=((web_sales.ws_sold_date_sk = date_dim.d_date_sk))
otherCondition=() build RFs:RF1 d_date_sk->[ws_sold_date_sk]
--------------------------PhysicalProject
-----------------------------PhysicalOlapScan[web_sales] apply RFs: RF1
+----------------------------PhysicalOlapScan[web_sales] apply RFs: RF1 RF2
--------------------------PhysicalDistribute[DistributionSpecReplicated]
----------------------------PhysicalProject
------------------------------filter(d_year IN (2001, 2002))
diff --git a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query4.out
b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query4.out
index 133758d0144..e40a7c0ebe7 100644
--- a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query4.out
+++ b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query4.out
@@ -3,7 +3,7 @@
PhysicalCteAnchor ( cteId=CTEId#0 )
--PhysicalCteProducer ( cteId=CTEId#0 )
----PhysicalProject
-------hashJoin[INNER_JOIN] hashCondition=((PULL_UP_UNIFIED_OUTPUT_ALIAS =
customer.c_customer_sk)) otherCondition=()
+------hashJoin[INNER_JOIN] hashCondition=((PULL_UP_UNIFIED_OUTPUT_ALIAS =
customer.c_customer_sk)) otherCondition=() build RFs:RF3
c_customer_sk->[ss_customer_sk,cs_bill_customer_sk,ws_bill_customer_sk]
--------PhysicalDistribute[DistributionSpecHash]
----------PhysicalProject
------------PhysicalUnion
@@ -14,7 +14,7 @@ PhysicalCteAnchor ( cteId=CTEId#0 )
----------------------PhysicalProject
------------------------hashJoin[INNER_JOIN]
hashCondition=((store_sales.ss_sold_date_sk = date_dim.d_date_sk))
otherCondition=() build RFs:RF0 d_date_sk->[ss_sold_date_sk]
--------------------------PhysicalProject
-----------------------------PhysicalOlapScan[store_sales] apply RFs: RF0
+----------------------------PhysicalOlapScan[store_sales] apply RFs: RF0 RF3
--------------------------PhysicalDistribute[DistributionSpecReplicated]
----------------------------PhysicalProject
------------------------------filter(d_year IN (1999, 2000))
@@ -26,7 +26,7 @@ PhysicalCteAnchor ( cteId=CTEId#0 )
----------------------PhysicalProject
------------------------hashJoin[INNER_JOIN]
hashCondition=((catalog_sales.cs_sold_date_sk = date_dim.d_date_sk))
otherCondition=() build RFs:RF1 d_date_sk->[cs_sold_date_sk]
--------------------------PhysicalProject
-----------------------------PhysicalOlapScan[catalog_sales] apply RFs: RF1
+----------------------------PhysicalOlapScan[catalog_sales] apply RFs: RF1 RF3
--------------------------PhysicalDistribute[DistributionSpecReplicated]
----------------------------PhysicalProject
------------------------------filter(d_year IN (1999, 2000))
@@ -38,7 +38,7 @@ PhysicalCteAnchor ( cteId=CTEId#0 )
----------------------PhysicalProject
------------------------hashJoin[INNER_JOIN]
hashCondition=((web_sales.ws_sold_date_sk = date_dim.d_date_sk))
otherCondition=() build RFs:RF2 d_date_sk->[ws_sold_date_sk]
--------------------------PhysicalProject
-----------------------------PhysicalOlapScan[web_sales] apply RFs: RF2
+----------------------------PhysicalOlapScan[web_sales] apply RFs: RF2 RF3
--------------------------PhysicalDistribute[DistributionSpecReplicated]
----------------------------PhysicalProject
------------------------------filter(d_year IN (1999, 2000))
diff --git a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query5.out
b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query5.out
index 8a8f8b1180d..66415d1eee8 100644
--- a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query5.out
+++ b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query5.out
@@ -15,16 +15,16 @@ PhysicalResultSink
------------------------PhysicalDistribute[DistributionSpecHash]
--------------------------hashAgg[LOCAL]
----------------------------PhysicalProject
-------------------------------hashJoin[INNER_JOIN]
hashCondition=((salesreturns.store_sk = store.s_store_sk)) otherCondition=()
+------------------------------hashJoin[INNER_JOIN]
hashCondition=((salesreturns.store_sk = store.s_store_sk)) otherCondition=()
build RFs:RF1 s_store_sk->[ss_store_sk,sr_store_sk]
--------------------------------PhysicalProject
----------------------------------hashJoin[INNER_JOIN]
hashCondition=((salesreturns.date_sk = date_dim.d_date_sk)) otherCondition=()
build RFs:RF0 d_date_sk->[ss_sold_date_sk,sr_returned_date_sk]
------------------------------------PhysicalUnion
--------------------------------------PhysicalDistribute[DistributionSpecHash]
----------------------------------------PhysicalProject
-------------------------------------------PhysicalOlapScan[store_sales] apply
RFs: RF0
+------------------------------------------PhysicalOlapScan[store_sales] apply
RFs: RF0 RF1
--------------------------------------PhysicalDistribute[DistributionSpecHash]
----------------------------------------PhysicalProject
-------------------------------------------PhysicalOlapScan[store_returns]
apply RFs: RF0
+------------------------------------------PhysicalOlapScan[store_returns]
apply RFs: RF0 RF1
------------------------------------PhysicalDistribute[DistributionSpecReplicated]
--------------------------------------PhysicalProject
----------------------------------------filter((date_dim.d_date <=
'2000-09-02') and (date_dim.d_date >= '2000-08-19'))
@@ -37,16 +37,16 @@ PhysicalResultSink
------------------------PhysicalDistribute[DistributionSpecHash]
--------------------------hashAgg[LOCAL]
----------------------------PhysicalProject
-------------------------------hashJoin[INNER_JOIN]
hashCondition=((salesreturns.page_sk = catalog_page.cp_catalog_page_sk))
otherCondition=()
+------------------------------hashJoin[INNER_JOIN]
hashCondition=((salesreturns.page_sk = catalog_page.cp_catalog_page_sk))
otherCondition=() build RFs:RF3
cp_catalog_page_sk->[cs_catalog_page_sk,cr_catalog_page_sk]
--------------------------------PhysicalProject
-----------------------------------hashJoin[INNER_JOIN]
hashCondition=((salesreturns.date_sk = date_dim.d_date_sk)) otherCondition=()
build RFs:RF1 d_date_sk->[cs_sold_date_sk,cr_returned_date_sk]
+----------------------------------hashJoin[INNER_JOIN]
hashCondition=((salesreturns.date_sk = date_dim.d_date_sk)) otherCondition=()
build RFs:RF2 d_date_sk->[cs_sold_date_sk,cr_returned_date_sk]
------------------------------------PhysicalUnion
--------------------------------------PhysicalDistribute[DistributionSpecHash]
----------------------------------------PhysicalProject
-------------------------------------------PhysicalOlapScan[catalog_sales]
apply RFs: RF1
+------------------------------------------PhysicalOlapScan[catalog_sales]
apply RFs: RF2 RF3
--------------------------------------PhysicalDistribute[DistributionSpecHash]
----------------------------------------PhysicalProject
-------------------------------------------PhysicalOlapScan[catalog_returns]
apply RFs: RF1
+------------------------------------------PhysicalOlapScan[catalog_returns]
apply RFs: RF2 RF3
------------------------------------PhysicalDistribute[DistributionSpecReplicated]
--------------------------------------PhysicalProject
----------------------------------------filter((date_dim.d_date <=
'2000-09-02') and (date_dim.d_date >= '2000-08-19'))
@@ -59,20 +59,20 @@ PhysicalResultSink
------------------------PhysicalDistribute[DistributionSpecHash]
--------------------------hashAgg[LOCAL]
----------------------------PhysicalProject
-------------------------------hashJoin[INNER_JOIN]
hashCondition=((salesreturns.wsr_web_site_sk = web_site.web_site_sk))
otherCondition=()
+------------------------------hashJoin[INNER_JOIN]
hashCondition=((salesreturns.wsr_web_site_sk = web_site.web_site_sk))
otherCondition=() build RFs:RF7 web_site_sk->[ws_web_site_sk,ws_web_site_sk]
--------------------------------PhysicalProject
-----------------------------------hashJoin[INNER_JOIN]
hashCondition=((salesreturns.date_sk = date_dim.d_date_sk)) otherCondition=()
build RFs:RF4 d_date_sk->[ws_sold_date_sk,wr_returned_date_sk]
+----------------------------------hashJoin[INNER_JOIN]
hashCondition=((salesreturns.date_sk = date_dim.d_date_sk)) otherCondition=()
build RFs:RF6 d_date_sk->[ws_sold_date_sk,wr_returned_date_sk]
------------------------------------PhysicalUnion
--------------------------------------PhysicalDistribute[DistributionSpecHash]
----------------------------------------PhysicalProject
-------------------------------------------PhysicalOlapScan[web_sales] apply
RFs: RF4
+------------------------------------------PhysicalOlapScan[web_sales] apply
RFs: RF6 RF7
--------------------------------------PhysicalDistribute[DistributionSpecHash]
----------------------------------------PhysicalProject
-------------------------------------------hashJoin[INNER_JOIN]
hashCondition=((web_returns.wr_item_sk = web_sales.ws_item_sk) and
(web_returns.wr_order_number = web_sales.ws_order_number)) otherCondition=()
build RFs:RF2 wr_item_sk->[ws_item_sk];RF3 wr_order_number->[ws_order_number]
+------------------------------------------hashJoin[INNER_JOIN]
hashCondition=((web_returns.wr_item_sk = web_sales.ws_item_sk) and
(web_returns.wr_order_number = web_sales.ws_order_number)) otherCondition=()
build RFs:RF4 wr_item_sk->[ws_item_sk];RF5 wr_order_number->[ws_order_number]
--------------------------------------------PhysicalProject
-----------------------------------------------PhysicalOlapScan[web_sales]
apply RFs: RF2 RF3
+----------------------------------------------PhysicalOlapScan[web_sales]
apply RFs: RF4 RF5 RF7
--------------------------------------------PhysicalProject
-----------------------------------------------PhysicalOlapScan[web_returns]
apply RFs: RF4
+----------------------------------------------PhysicalOlapScan[web_returns]
apply RFs: RF6
------------------------------------PhysicalDistribute[DistributionSpecReplicated]
--------------------------------------PhysicalProject
----------------------------------------filter((date_dim.d_date <=
'2000-09-02') and (date_dim.d_date >= '2000-08-19'))
diff --git
a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query54.out
b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query54.out
index b4f27acdc19..e76a6a45d85 100644
--- a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query54.out
+++ b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query54.out
@@ -17,39 +17,39 @@ PhysicalResultSink
----------------------------PhysicalProject
------------------------------NestedLoopJoin[INNER_JOIN](cast(d_month_seq as
BIGINT) >= (d_month_seq + 1))
--------------------------------PhysicalProject
-----------------------------------hashJoin[INNER_JOIN]
hashCondition=((store_sales.ss_sold_date_sk = date_dim.d_date_sk))
otherCondition=() build RFs:RF6 d_date_sk->[ss_sold_date_sk]
+----------------------------------hashJoin[INNER_JOIN]
hashCondition=((store_sales.ss_sold_date_sk = date_dim.d_date_sk))
otherCondition=() build RFs:RF7 d_date_sk->[ss_sold_date_sk]
------------------------------------PhysicalDistribute[DistributionSpecHash]
--------------------------------------PhysicalProject
-----------------------------------------hashJoin[INNER_JOIN]
hashCondition=((my_customers.c_customer_sk = store_sales.ss_customer_sk))
otherCondition=() build RFs:RF5 c_customer_sk->[ss_customer_sk]
+----------------------------------------hashJoin[INNER_JOIN]
hashCondition=((my_customers.c_customer_sk = store_sales.ss_customer_sk))
otherCondition=() build RFs:RF6 c_customer_sk->[ss_customer_sk]
------------------------------------------PhysicalProject
---------------------------------------------PhysicalOlapScan[store_sales]
apply RFs: RF5 RF6
+--------------------------------------------PhysicalOlapScan[store_sales]
apply RFs: RF6 RF7
------------------------------------------PhysicalDistribute[DistributionSpecReplicated]
--------------------------------------------PhysicalProject
-----------------------------------------------hashJoin[INNER_JOIN]
hashCondition=((customer_address.ca_county = store.s_county) and
(customer_address.ca_state = store.s_state)) otherCondition=() build RFs:RF3
s_county->[ca_county];RF4 s_state->[ca_state]
-------------------------------------------------hashJoin[INNER_JOIN]
hashCondition=((my_customers.c_current_addr_sk =
customer_address.ca_address_sk)) otherCondition=() build RFs:RF2
c_current_addr_sk->[ca_address_sk]
+----------------------------------------------hashJoin[INNER_JOIN]
hashCondition=((customer_address.ca_county = store.s_county) and
(customer_address.ca_state = store.s_state)) otherCondition=() build RFs:RF4
s_county->[ca_county];RF5 s_state->[ca_state]
+------------------------------------------------hashJoin[INNER_JOIN]
hashCondition=((my_customers.c_current_addr_sk =
customer_address.ca_address_sk)) otherCondition=() build RFs:RF3
c_current_addr_sk->[ca_address_sk]
--------------------------------------------------PhysicalProject
-----------------------------------------------------PhysicalOlapScan[customer_address]
apply RFs: RF2 RF3 RF4
+----------------------------------------------------PhysicalOlapScan[customer_address]
apply RFs: RF3 RF4 RF5
--------------------------------------------------PhysicalDistribute[DistributionSpecHash]
----------------------------------------------------PhysicalProject
------------------------------------------------------hashAgg[GLOBAL]
--------------------------------------------------------PhysicalDistribute[DistributionSpecHash]
----------------------------------------------------------hashAgg[LOCAL]
------------------------------------------------------------PhysicalProject
---------------------------------------------------------------hashJoin[INNER_JOIN]
hashCondition=((customer.c_customer_sk = cs_or_ws_sales.customer_sk))
otherCondition=() build RFs:RF1 customer_sk->[c_customer_sk]
+--------------------------------------------------------------hashJoin[INNER_JOIN]
hashCondition=((customer.c_customer_sk = cs_or_ws_sales.customer_sk))
otherCondition=() build RFs:RF2 customer_sk->[c_customer_sk]
----------------------------------------------------------------PhysicalProject
-------------------------------------------------------------------PhysicalOlapScan[customer]
apply RFs: RF1
+------------------------------------------------------------------PhysicalOlapScan[customer]
apply RFs: RF2
----------------------------------------------------------------PhysicalDistribute[DistributionSpecReplicated]
------------------------------------------------------------------PhysicalProject
---------------------------------------------------------------------hashJoin[INNER_JOIN]
hashCondition=((cs_or_ws_sales.sold_date_sk = date_dim.d_date_sk))
otherCondition=()
+--------------------------------------------------------------------hashJoin[INNER_JOIN]
hashCondition=((cs_or_ws_sales.sold_date_sk = date_dim.d_date_sk))
otherCondition=() build RFs:RF1 d_date_sk->[cs_sold_date_sk,ws_sold_date_sk]
----------------------------------------------------------------------PhysicalProject
------------------------------------------------------------------------hashJoin[INNER_JOIN]
hashCondition=((cs_or_ws_sales.item_sk = item.i_item_sk)) otherCondition=()
build RFs:RF0 i_item_sk->[cs_item_sk,ws_item_sk]
--------------------------------------------------------------------------PhysicalUnion
----------------------------------------------------------------------------PhysicalDistribute[DistributionSpecHash]
------------------------------------------------------------------------------PhysicalProject
---------------------------------------------------------------------------------PhysicalOlapScan[catalog_sales]
apply RFs: RF0
+--------------------------------------------------------------------------------PhysicalOlapScan[catalog_sales]
apply RFs: RF0 RF1
----------------------------------------------------------------------------PhysicalDistribute[DistributionSpecHash]
------------------------------------------------------------------------------PhysicalProject
---------------------------------------------------------------------------------PhysicalOlapScan[web_sales]
apply RFs: RF0
+--------------------------------------------------------------------------------PhysicalOlapScan[web_sales]
apply RFs: RF0 RF1
--------------------------------------------------------------------------PhysicalDistribute[DistributionSpecReplicated]
----------------------------------------------------------------------------PhysicalProject
------------------------------------------------------------------------------filter((item.i_category
= 'Women') and (item.i_class = 'maternity'))
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 536aef93359..1567795d86f 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
@@ -9,7 +9,7 @@ PhysicalResultSink
------------PhysicalDistribute[DistributionSpecHash]
--------------hashAgg[LOCAL]
----------------PhysicalProject
-------------------hashJoin[INNER_JOIN] hashCondition=((tmp.time_sk =
time_dim.t_time_sk)) otherCondition=()
+------------------hashJoin[INNER_JOIN] hashCondition=((tmp.time_sk =
time_dim.t_time_sk)) otherCondition=() build RFs:RF4
t_time_sk->[ws_sold_time_sk,cs_sold_time_sk,ss_sold_time_sk]
--------------------PhysicalDistribute[DistributionSpecHash]
----------------------PhysicalProject
------------------------hashJoin[INNER_JOIN] hashCondition=((tmp.sold_item_sk
= item.i_item_sk)) otherCondition=() build RFs:RF3
i_item_sk->[ws_item_sk,cs_item_sk,ss_item_sk]
@@ -18,7 +18,7 @@ PhysicalResultSink
------------------------------PhysicalProject
--------------------------------hashJoin[INNER_JOIN]
hashCondition=((date_dim.d_date_sk = web_sales.ws_sold_date_sk))
otherCondition=() build RFs:RF0 d_date_sk->[ws_sold_date_sk]
----------------------------------PhysicalProject
-------------------------------------PhysicalOlapScan[web_sales] apply RFs: RF0
RF3
+------------------------------------PhysicalOlapScan[web_sales] apply RFs: RF0
RF3 RF4
----------------------------------PhysicalDistribute[DistributionSpecReplicated]
------------------------------------PhysicalProject
--------------------------------------filter((date_dim.d_moy = 12) and
(date_dim.d_year = 1998))
@@ -27,7 +27,7 @@ PhysicalResultSink
------------------------------PhysicalProject
--------------------------------hashJoin[INNER_JOIN]
hashCondition=((date_dim.d_date_sk = catalog_sales.cs_sold_date_sk))
otherCondition=() build RFs:RF1 d_date_sk->[cs_sold_date_sk]
----------------------------------PhysicalProject
-------------------------------------PhysicalOlapScan[catalog_sales] apply RFs:
RF1 RF3
+------------------------------------PhysicalOlapScan[catalog_sales] apply RFs:
RF1 RF3 RF4
----------------------------------PhysicalDistribute[DistributionSpecReplicated]
------------------------------------PhysicalProject
--------------------------------------filter((date_dim.d_moy = 12) and
(date_dim.d_year = 1998))
@@ -36,7 +36,7 @@ PhysicalResultSink
------------------------------PhysicalProject
--------------------------------hashJoin[INNER_JOIN]
hashCondition=((date_dim.d_date_sk = store_sales.ss_sold_date_sk))
otherCondition=() build RFs:RF2 d_date_sk->[ss_sold_date_sk]
----------------------------------PhysicalProject
-------------------------------------PhysicalOlapScan[store_sales] apply RFs:
RF2 RF3
+------------------------------------PhysicalOlapScan[store_sales] apply RFs:
RF2 RF3 RF4
----------------------------------PhysicalDistribute[DistributionSpecReplicated]
------------------------------------PhysicalProject
--------------------------------------filter((date_dim.d_moy = 12) and
(date_dim.d_year = 1998))
diff --git
a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query74.out
b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query74.out
index 27ae6ad0b22..1d3336d590d 100644
--- a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query74.out
+++ b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query74.out
@@ -3,7 +3,7 @@
PhysicalCteAnchor ( cteId=CTEId#0 )
--PhysicalCteProducer ( cteId=CTEId#0 )
----PhysicalProject
-------hashJoin[INNER_JOIN] hashCondition=((PULL_UP_UNIFIED_OUTPUT_ALIAS =
customer.c_customer_sk)) otherCondition=()
+------hashJoin[INNER_JOIN] hashCondition=((PULL_UP_UNIFIED_OUTPUT_ALIAS =
customer.c_customer_sk)) otherCondition=() build RFs:RF2
c_customer_sk->[ss_customer_sk,ws_bill_customer_sk]
--------PhysicalDistribute[DistributionSpecHash]
----------PhysicalProject
------------PhysicalUnion
@@ -14,7 +14,7 @@ PhysicalCteAnchor ( cteId=CTEId#0 )
----------------------PhysicalProject
------------------------hashJoin[INNER_JOIN]
hashCondition=((store_sales.ss_sold_date_sk = date_dim.d_date_sk))
otherCondition=() build RFs:RF0 d_date_sk->[ss_sold_date_sk]
--------------------------PhysicalProject
-----------------------------PhysicalOlapScan[store_sales] apply RFs: RF0
+----------------------------PhysicalOlapScan[store_sales] apply RFs: RF0 RF2
--------------------------PhysicalDistribute[DistributionSpecReplicated]
----------------------------PhysicalProject
------------------------------filter(d_year IN (1999, 2000))
@@ -26,7 +26,7 @@ PhysicalCteAnchor ( cteId=CTEId#0 )
----------------------PhysicalProject
------------------------hashJoin[INNER_JOIN]
hashCondition=((web_sales.ws_sold_date_sk = date_dim.d_date_sk))
otherCondition=() build RFs:RF1 d_date_sk->[ws_sold_date_sk]
--------------------------PhysicalProject
-----------------------------PhysicalOlapScan[web_sales] apply RFs: RF1
+----------------------------PhysicalOlapScan[web_sales] apply RFs: RF1 RF2
--------------------------PhysicalDistribute[DistributionSpecReplicated]
----------------------------PhysicalProject
------------------------------filter(d_year IN (1999, 2000))
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]