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 0dd27dc6f17 [enhancement](nereids) only push having as agg's parent if
having just use slots from agg's output (#32414)
0dd27dc6f17 is described below
commit 0dd27dc6f177fa90ffe96732670003da462a1e8b
Author: starocean999 <[email protected]>
AuthorDate: Tue Mar 26 17:12:15 2024 +0800
[enhancement](nereids) only push having as agg's parent if having just use
slots from agg's output (#32414)
1. only push having as agg's parent if having just use slots from agg's
output
2. show user friendly error message when item in select list but not in
aggregate node's output
---
.../nereids/rules/analysis/NormalizeAggregate.java | 42 +++++++-
.../nereids/rules/analysis/AnalyzeCTETest.java | 2 +-
.../rules/analysis/FillUpMissingSlotsTest.java | 101 +++++++++----------
.../nereids_p0/aggregate/agg_window_project.out | 4 +
.../shape/query14.out | 105 ++++++++++---------
.../noStatsRfPrune/query14.out | 111 ++++++++++-----------
.../no_stats_shape/query14.out | 111 ++++++++++-----------
.../rf_prune/query14.out | 105 ++++++++++---------
.../nereids_tpcds_shape_sf100_p0/shape/query14.out | 105 ++++++++++---------
.../nereids_p0/aggregate/agg_error_msg.groovy | 50 ++++++++++
.../nereids_p0/aggregate/agg_window_project.groovy | 2 +
11 files changed, 402 insertions(+), 336 deletions(-)
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/NormalizeAggregate.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/NormalizeAggregate.java
index 1105fe2da72..6f668611b9c 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/NormalizeAggregate.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/NormalizeAggregate.java
@@ -23,6 +23,7 @@ import org.apache.doris.nereids.rules.RuleType;
import org.apache.doris.nereids.rules.rewrite.NormalizeToSlot;
import org.apache.doris.nereids.rules.rewrite.RewriteRuleFactory;
import org.apache.doris.nereids.trees.expressions.Alias;
+import org.apache.doris.nereids.trees.expressions.ExprId;
import org.apache.doris.nereids.trees.expressions.Expression;
import org.apache.doris.nereids.trees.expressions.NamedExpression;
import org.apache.doris.nereids.trees.expressions.Slot;
@@ -43,6 +44,7 @@ import com.google.common.collect.ImmutableList.Builder;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Sets;
+import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
@@ -244,10 +246,33 @@ public class NormalizeAggregate implements
RewriteRuleFactory, NormalizeToSlot {
// create a parent project node
LogicalProject<Plan> project = new LogicalProject<>(upperProjects,
newAggregate);
+ // verify project used slots are all coming from agg's output
+ List<Slot> slots = collectAllUsedSlots(upperProjects);
+ if (!slots.isEmpty()) {
+ Set<ExprId> aggOutputExprIds = new HashSet<>(slots.size());
+ for (NamedExpression expression : normalizedAggOutput) {
+ aggOutputExprIds.add(expression.getExprId());
+ }
+ List<Slot> errorSlots = new ArrayList<>(slots.size());
+ for (Slot slot : slots) {
+ if (!aggOutputExprIds.contains(slot.getExprId())) {
+ errorSlots.add(slot);
+ }
+ }
+ if (!errorSlots.isEmpty()) {
+ throw new AnalysisException(String.format("%s not in
aggregate's output", errorSlots
+
.stream().map(NamedExpression::getName).collect(Collectors.joining(", "))));
+ }
+ }
if (having.isPresent()) {
- if (upperProjects.stream().anyMatch(expr ->
expr.anyMatch(WindowExpression.class::isInstance))) {
- // when project contains window functions, in order to get the
correct result
- // push having through project to make it the parent node of
logicalAgg
+ Set<Slot> havingUsedSlots =
ExpressionUtils.getInputSlotSet(having.get().getExpressions());
+ Set<ExprId> havingUsedExprIds = new
HashSet<>(havingUsedSlots.size());
+ for (Slot slot : havingUsedSlots) {
+ havingUsedExprIds.add(slot.getExprId());
+ }
+ Set<ExprId> aggOutputExprIds = newAggregate.getOutputExprIdSet();
+ if (aggOutputExprIds.containsAll(havingUsedExprIds)) {
+ // when having just use output slots from agg, we push down
having as parent of agg
return project.withChildren(ImmutableList.of(
new LogicalHaving<>(
ExpressionUtils.replace(having.get().getConjuncts(),
project.getAliasToProducer()),
@@ -287,4 +312,15 @@ public class NormalizeAggregate implements
RewriteRuleFactory, NormalizeToSlot {
}
return builder.build();
}
+
+ private List<Slot> collectAllUsedSlots(List<NamedExpression> expressions) {
+ Set<Slot> inputSlots = ExpressionUtils.getInputSlotSet(expressions);
+ List<SubqueryExpr> subqueries =
ExpressionUtils.collectAll(expressions, SubqueryExpr.class::isInstance);
+ List<Slot> slots = new ArrayList<>(inputSlots.size() +
subqueries.size());
+ for (SubqueryExpr subqueryExpr : subqueries) {
+ slots.addAll(subqueryExpr.getCorrelateSlots());
+ }
+ slots.addAll(ExpressionUtils.getInputSlotSet(expressions));
+ return slots;
+ }
}
diff --git
a/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/analysis/AnalyzeCTETest.java
b/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/analysis/AnalyzeCTETest.java
index ef5a32e2d3b..522f198e3ff 100644
---
a/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/analysis/AnalyzeCTETest.java
+++
b/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/analysis/AnalyzeCTETest.java
@@ -140,7 +140,7 @@ public class AnalyzeCTETest extends TestWithFeService
implements MemoPatternMatc
logicalFilter(
logicalProject(
logicalJoin(
-
logicalProject(logicalAggregate()),
+ logicalAggregate(),
logicalProject()
)
)
diff --git
a/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/analysis/FillUpMissingSlotsTest.java
b/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/analysis/FillUpMissingSlotsTest.java
index 49793fd1842..dbf65decef9 100644
---
a/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/analysis/FillUpMissingSlotsTest.java
+++
b/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/analysis/FillUpMissingSlotsTest.java
@@ -87,10 +87,9 @@ public class FillUpMissingSlotsTest extends
AnalyzeCheckTestBase implements Memo
PlanChecker.from(connectContext).analyze(sql)
.matches(
logicalFilter(
- logicalProject(
- logicalAggregate(
-
logicalProject(logicalOlapScan())
-
).when(FieldChecker.check("outputExpressions", Lists.newArrayList(a1))))));
+ logicalAggregate(
+ logicalProject(logicalOlapScan())
+
).when(FieldChecker.check("outputExpressions", Lists.newArrayList(a1)))));
sql = "SELECT a1 as value FROM t1 GROUP BY a1 HAVING a1 > 0";
SlotReference value = new SlotReference(new ExprId(3), "value",
TinyIntType.INSTANCE, true,
@@ -134,10 +133,9 @@ public class FillUpMissingSlotsTest extends
AnalyzeCheckTestBase implements Memo
.matches(
logicalProject(
logicalFilter(
- logicalProject(
- logicalAggregate(
-
logicalProject(logicalOlapScan())
-
).when(FieldChecker.check("outputExpressions", Lists.newArrayList(a1, sumA2))))
+ logicalAggregate(
+
logicalProject(logicalOlapScan())
+
).when(FieldChecker.check("outputExpressions", Lists.newArrayList(a1, sumA2)))
).when(FieldChecker.check("conjuncts",
ImmutableSet.of(new GreaterThan(a1, new TinyIntLiteral((byte) 0)))))
).when(FieldChecker.check("projects",
Lists.newArrayList(sumA2.toSlot()))));
}
@@ -158,10 +156,9 @@ public class FillUpMissingSlotsTest extends
AnalyzeCheckTestBase implements Memo
.matches(
logicalProject(
logicalFilter(
- logicalProject(
- logicalAggregate(
-
logicalProject(logicalOlapScan())
-
).when(FieldChecker.check("outputExpressions", Lists.newArrayList(a1, sumA2))))
+ logicalAggregate(
+
logicalProject(logicalOlapScan())
+
).when(FieldChecker.check("outputExpressions", Lists.newArrayList(a1, sumA2)))
).when(FieldChecker.check("conjuncts",
ImmutableSet.of(new GreaterThan(sumA2.toSlot(), Literal.of(0L)))))
).when(FieldChecker.check("projects",
Lists.newArrayList(a1.toSlot()))));
@@ -171,13 +168,12 @@ public class FillUpMissingSlotsTest extends
AnalyzeCheckTestBase implements Memo
.matches(
logicalProject(
logicalFilter(
- logicalProject(
- logicalAggregate(
- logicalProject(
-
logicalOlapScan()
- )
-
).when(FieldChecker.check("outputExpressions", Lists.newArrayList(a1, sumA2))))
- ).when(FieldChecker.check("conjuncts",
ImmutableSet.of(new GreaterThan(sumA2.toSlot(), Literal.of(0L)))))));
+ logicalAggregate(
+ logicalProject(
+ logicalOlapScan()
+ )
+
).when(FieldChecker.check("outputExpressions", Lists.newArrayList(a1, sumA2))))
+ .when(FieldChecker.check("conjuncts",
ImmutableSet.of(new GreaterThan(sumA2.toSlot(), Literal.of(0L)))))));
sql = "SELECT a1, sum(a2) as value FROM t1 GROUP BY a1 HAVING sum(a2)
> 0";
a1 = new SlotReference(
@@ -193,22 +189,20 @@ public class FillUpMissingSlotsTest extends
AnalyzeCheckTestBase implements Memo
.matches(
logicalProject(
logicalFilter(
- logicalProject(
- logicalAggregate(
- logicalProject(
-
logicalOlapScan())
-
).when(FieldChecker.check("outputExpressions", Lists.newArrayList(a1, value))))
+ logicalAggregate(
+ logicalProject(
+ logicalOlapScan())
+
).when(FieldChecker.check("outputExpressions", Lists.newArrayList(a1, value)))
).when(FieldChecker.check("conjuncts",
ImmutableSet.of(new GreaterThan(value.toSlot(), Literal.of(0L)))))));
sql = "SELECT a1, sum(a2) as value FROM t1 GROUP BY a1 HAVING value >
0";
PlanChecker.from(connectContext).analyze(sql)
.matches(
logicalFilter(
- logicalProject(
- logicalAggregate(
- logicalProject(
- logicalOlapScan())
-
).when(FieldChecker.check("outputExpressions", Lists.newArrayList(a1, value))))
+ logicalAggregate(
+ logicalProject(
+ logicalOlapScan())
+
).when(FieldChecker.check("outputExpressions", Lists.newArrayList(a1, value)))
).when(FieldChecker.check("conjuncts",
ImmutableSet.of(new GreaterThan(value.toSlot(), Literal.of(0L))))));
sql = "SELECT a1, sum(a2) FROM t1 GROUP BY a1 HAVING MIN(pk) > 0";
@@ -230,10 +224,9 @@ public class FillUpMissingSlotsTest extends
AnalyzeCheckTestBase implements Memo
.matches(
logicalProject(
logicalFilter(
- logicalProject(
- logicalAggregate(
-
logicalProject(logicalOlapScan())
-
).when(FieldChecker.check("outputExpressions", Lists.newArrayList(a1, sumA2,
minPK))))
+ logicalAggregate(
+
logicalProject(logicalOlapScan())
+
).when(FieldChecker.check("outputExpressions", Lists.newArrayList(a1, sumA2,
minPK)))
).when(FieldChecker.check("conjuncts",
ImmutableSet.of(new GreaterThan(minPK.toSlot(), Literal.of((byte) 0)))))
).when(FieldChecker.check("projects",
Lists.newArrayList(a1.toSlot(), sumA2.toSlot()))));
@@ -243,10 +236,9 @@ public class FillUpMissingSlotsTest extends
AnalyzeCheckTestBase implements Memo
.matches(
logicalProject(
logicalFilter(
- logicalProject(
- logicalAggregate(
-
logicalProject(logicalOlapScan())
-
).when(FieldChecker.check("outputExpressions", Lists.newArrayList(a1,
sumA1A2))))
+ logicalAggregate(
+
logicalProject(logicalOlapScan())
+
).when(FieldChecker.check("outputExpressions", Lists.newArrayList(a1, sumA1A2)))
).when(FieldChecker.check("conjuncts",
ImmutableSet.of(new GreaterThan(sumA1A2.toSlot(), Literal.of(0L)))))));
sql = "SELECT a1, sum(a1 + a2) FROM t1 GROUP BY a1 HAVING sum(a1 + a2
+ 3) > 0";
@@ -256,10 +248,9 @@ public class FillUpMissingSlotsTest extends
AnalyzeCheckTestBase implements Memo
.matches(
logicalProject(
logicalFilter(
- logicalProject(
- logicalAggregate(
-
logicalProject(logicalOlapScan())
-
).when(FieldChecker.check("outputExpressions", Lists.newArrayList(a1, sumA1A2,
sumA1A23))))
+ logicalAggregate(
+
logicalProject(logicalOlapScan())
+
).when(FieldChecker.check("outputExpressions", Lists.newArrayList(a1, sumA1A2,
sumA1A23)))
).when(FieldChecker.check("conjuncts",
ImmutableSet.of(new GreaterThan(sumA1A23.toSlot(), Literal.of(0L)))))
).when(FieldChecker.check("projects",
Lists.newArrayList(a1.toSlot(), sumA1A2.toSlot()))));
@@ -269,10 +260,9 @@ public class FillUpMissingSlotsTest extends
AnalyzeCheckTestBase implements Memo
.matches(
logicalProject(
logicalFilter(
- logicalProject(
- logicalAggregate(
-
logicalProject(logicalOlapScan())
-
).when(FieldChecker.check("outputExpressions", Lists.newArrayList(a1,
countStar))))
+ logicalAggregate(
+
logicalProject(logicalOlapScan())
+
).when(FieldChecker.check("outputExpressions", Lists.newArrayList(a1,
countStar)))
).when(FieldChecker.check("conjuncts",
ImmutableSet.of(new GreaterThan(countStar.toSlot(), Literal.of(0L)))))
).when(FieldChecker.check("projects",
Lists.newArrayList(a1.toSlot()))));
}
@@ -298,17 +288,16 @@ public class FillUpMissingSlotsTest extends
AnalyzeCheckTestBase implements Memo
.matches(
logicalProject(
logicalFilter(
- logicalProject(
- logicalAggregate(
- logicalProject(
- logicalFilter(
-
logicalJoin(
-
logicalOlapScan(),
-
logicalOlapScan()
- )
- ))
-
).when(FieldChecker.check("outputExpressions", Lists.newArrayList(a1, sumA2,
sumB1)))
-
)).when(FieldChecker.check("conjuncts", ImmutableSet.of(new GreaterThan(new
Cast(a1, BigIntType.INSTANCE),
+ logicalAggregate(
+ logicalProject(
+ logicalFilter(
+
logicalJoin(
+
logicalOlapScan(),
+
logicalOlapScan()
+ )
+ ))
+
).when(FieldChecker.check("outputExpressions", Lists.newArrayList(a1, sumA2,
sumB1)))
+ ).when(FieldChecker.check("conjuncts",
ImmutableSet.of(new GreaterThan(new Cast(a1, BigIntType.INSTANCE),
sumB1.toSlot()))))
).when(FieldChecker.check("projects",
Lists.newArrayList(a1.toSlot(), sumA2.toSlot()))));
}
diff --git a/regression-test/data/nereids_p0/aggregate/agg_window_project.out
b/regression-test/data/nereids_p0/aggregate/agg_window_project.out
index dcdb0f25eca..45fde6faa92 100644
--- a/regression-test/data/nereids_p0/aggregate/agg_window_project.out
+++ b/regression-test/data/nereids_p0/aggregate/agg_window_project.out
@@ -12,3 +12,7 @@
2 1 23.0000000000
2 2 23.0000000000
+-- !select5 --
+1 1 3.0000000000
+1 2 3.0000000000
+
diff --git
a/regression-test/data/nereids_tpcds_shape_sf1000_p0/shape/query14.out
b/regression-test/data/nereids_tpcds_shape_sf1000_p0/shape/query14.out
index a81fb3e5337..e1d05ef57f4 100644
--- a/regression-test/data/nereids_tpcds_shape_sf1000_p0/shape/query14.out
+++ b/regression-test/data/nereids_tpcds_shape_sf1000_p0/shape/query14.out
@@ -98,78 +98,75 @@ PhysicalCteAnchor ( cteId=CTEId#0 )
----------------------PhysicalUnion
------------------------PhysicalProject
--------------------------NestedLoopJoin[INNER_JOIN](cast(sales as DOUBLE) >
cast(average_sales as DOUBLE))
-----------------------------PhysicalProject
-------------------------------hashAgg[GLOBAL]
---------------------------------PhysicalDistribute[DistributionSpecHash]
-----------------------------------hashAgg[LOCAL]
-------------------------------------PhysicalProject
---------------------------------------hashJoin[INNER_JOIN]
hashCondition=((store_sales.ss_item_sk = item.i_item_sk)) otherCondition=()
build RFs:RF13 i_item_sk->[ss_item_sk,ss_item_sk]
-----------------------------------------hashJoin[LEFT_SEMI_JOIN]
hashCondition=((store_sales.ss_item_sk = cross_items.ss_item_sk))
otherCondition=()
-------------------------------------------PhysicalDistribute[DistributionSpecHash]
---------------------------------------------hashJoin[INNER_JOIN]
hashCondition=((store_sales.ss_sold_date_sk = date_dim.d_date_sk))
otherCondition=() build RFs:RF12 d_date_sk->[ss_sold_date_sk]
+----------------------------hashAgg[GLOBAL]
+------------------------------PhysicalDistribute[DistributionSpecHash]
+--------------------------------hashAgg[LOCAL]
+----------------------------------PhysicalProject
+------------------------------------hashJoin[INNER_JOIN]
hashCondition=((store_sales.ss_item_sk = item.i_item_sk)) otherCondition=()
build RFs:RF13 i_item_sk->[ss_item_sk,ss_item_sk]
+--------------------------------------hashJoin[LEFT_SEMI_JOIN]
hashCondition=((store_sales.ss_item_sk = cross_items.ss_item_sk))
otherCondition=()
+----------------------------------------PhysicalDistribute[DistributionSpecHash]
+------------------------------------------hashJoin[INNER_JOIN]
hashCondition=((store_sales.ss_sold_date_sk = date_dim.d_date_sk))
otherCondition=() build RFs:RF12 d_date_sk->[ss_sold_date_sk]
+--------------------------------------------PhysicalProject
+----------------------------------------------PhysicalOlapScan[store_sales]
apply RFs: RF12 RF13
+--------------------------------------------PhysicalDistribute[DistributionSpecReplicated]
----------------------------------------------PhysicalProject
-------------------------------------------------PhysicalOlapScan[store_sales]
apply RFs: RF12 RF13
-----------------------------------------------PhysicalDistribute[DistributionSpecReplicated]
-------------------------------------------------PhysicalProject
---------------------------------------------------filter((date_dim.d_moy = 11)
and (date_dim.d_year = 2001))
-----------------------------------------------------PhysicalOlapScan[date_dim]
-------------------------------------------PhysicalDistribute[DistributionSpecHash]
---------------------------------------------PhysicalCteConsumer (
cteId=CTEId#0 ) apply RFs: RF13
+------------------------------------------------filter((date_dim.d_moy = 11)
and (date_dim.d_year = 2001))
+--------------------------------------------------PhysicalOlapScan[date_dim]
----------------------------------------PhysicalDistribute[DistributionSpecHash]
-------------------------------------------PhysicalProject
---------------------------------------------PhysicalOlapScan[item]
+------------------------------------------PhysicalCteConsumer ( cteId=CTEId#0
) apply RFs: RF13
+--------------------------------------PhysicalDistribute[DistributionSpecHash]
+----------------------------------------PhysicalProject
+------------------------------------------PhysicalOlapScan[item]
----------------------------PhysicalDistribute[DistributionSpecReplicated]
------------------------------PhysicalAssertNumRows
--------------------------------PhysicalDistribute[DistributionSpecGather]
----------------------------------PhysicalCteConsumer ( cteId=CTEId#1 )
------------------------PhysicalProject
--------------------------NestedLoopJoin[INNER_JOIN](cast(sales as DOUBLE) >
cast(average_sales as DOUBLE))
-----------------------------PhysicalProject
-------------------------------hashAgg[GLOBAL]
---------------------------------PhysicalDistribute[DistributionSpecHash]
-----------------------------------hashAgg[LOCAL]
-------------------------------------PhysicalProject
---------------------------------------hashJoin[INNER_JOIN]
hashCondition=((catalog_sales.cs_item_sk = item.i_item_sk)) otherCondition=()
build RFs:RF15 i_item_sk->[cs_item_sk,ss_item_sk]
-----------------------------------------hashJoin[LEFT_SEMI_JOIN]
hashCondition=((catalog_sales.cs_item_sk = cross_items.ss_item_sk))
otherCondition=()
-------------------------------------------PhysicalDistribute[DistributionSpecHash]
---------------------------------------------hashJoin[INNER_JOIN]
hashCondition=((catalog_sales.cs_sold_date_sk = date_dim.d_date_sk))
otherCondition=() build RFs:RF14 d_date_sk->[cs_sold_date_sk]
+----------------------------hashAgg[GLOBAL]
+------------------------------PhysicalDistribute[DistributionSpecHash]
+--------------------------------hashAgg[LOCAL]
+----------------------------------PhysicalProject
+------------------------------------hashJoin[INNER_JOIN]
hashCondition=((catalog_sales.cs_item_sk = item.i_item_sk)) otherCondition=()
build RFs:RF15 i_item_sk->[cs_item_sk,ss_item_sk]
+--------------------------------------hashJoin[LEFT_SEMI_JOIN]
hashCondition=((catalog_sales.cs_item_sk = cross_items.ss_item_sk))
otherCondition=()
+----------------------------------------PhysicalDistribute[DistributionSpecHash]
+------------------------------------------hashJoin[INNER_JOIN]
hashCondition=((catalog_sales.cs_sold_date_sk = date_dim.d_date_sk))
otherCondition=() build RFs:RF14 d_date_sk->[cs_sold_date_sk]
+--------------------------------------------PhysicalProject
+----------------------------------------------PhysicalOlapScan[catalog_sales]
apply RFs: RF14 RF15
+--------------------------------------------PhysicalDistribute[DistributionSpecReplicated]
----------------------------------------------PhysicalProject
-------------------------------------------------PhysicalOlapScan[catalog_sales]
apply RFs: RF14 RF15
-----------------------------------------------PhysicalDistribute[DistributionSpecReplicated]
-------------------------------------------------PhysicalProject
---------------------------------------------------filter((date_dim.d_moy = 11)
and (date_dim.d_year = 2001))
-----------------------------------------------------PhysicalOlapScan[date_dim]
-------------------------------------------PhysicalDistribute[DistributionSpecHash]
---------------------------------------------PhysicalCteConsumer (
cteId=CTEId#0 ) apply RFs: RF15
+------------------------------------------------filter((date_dim.d_moy = 11)
and (date_dim.d_year = 2001))
+--------------------------------------------------PhysicalOlapScan[date_dim]
----------------------------------------PhysicalDistribute[DistributionSpecHash]
-------------------------------------------PhysicalProject
---------------------------------------------PhysicalOlapScan[item]
+------------------------------------------PhysicalCteConsumer ( cteId=CTEId#0
) apply RFs: RF15
+--------------------------------------PhysicalDistribute[DistributionSpecHash]
+----------------------------------------PhysicalProject
+------------------------------------------PhysicalOlapScan[item]
----------------------------PhysicalDistribute[DistributionSpecReplicated]
------------------------------PhysicalAssertNumRows
--------------------------------PhysicalDistribute[DistributionSpecGather]
----------------------------------PhysicalCteConsumer ( cteId=CTEId#1 )
------------------------PhysicalProject
--------------------------NestedLoopJoin[INNER_JOIN](cast(sales as DOUBLE) >
cast(average_sales as DOUBLE))
-----------------------------PhysicalProject
-------------------------------hashAgg[GLOBAL]
---------------------------------PhysicalDistribute[DistributionSpecHash]
-----------------------------------hashAgg[LOCAL]
-------------------------------------PhysicalProject
---------------------------------------hashJoin[INNER_JOIN]
hashCondition=((web_sales.ws_item_sk = item.i_item_sk)) otherCondition=() build
RFs:RF17 i_item_sk->[ws_item_sk,ss_item_sk]
-----------------------------------------hashJoin[LEFT_SEMI_JOIN]
hashCondition=((web_sales.ws_item_sk = cross_items.ss_item_sk))
otherCondition=()
-------------------------------------------PhysicalDistribute[DistributionSpecHash]
---------------------------------------------hashJoin[INNER_JOIN]
hashCondition=((web_sales.ws_sold_date_sk = date_dim.d_date_sk))
otherCondition=() build RFs:RF16 d_date_sk->[ws_sold_date_sk]
+----------------------------hashAgg[GLOBAL]
+------------------------------PhysicalDistribute[DistributionSpecHash]
+--------------------------------hashAgg[LOCAL]
+----------------------------------PhysicalProject
+------------------------------------hashJoin[INNER_JOIN]
hashCondition=((web_sales.ws_item_sk = item.i_item_sk)) otherCondition=() build
RFs:RF17 i_item_sk->[ws_item_sk,ss_item_sk]
+--------------------------------------hashJoin[LEFT_SEMI_JOIN]
hashCondition=((web_sales.ws_item_sk = cross_items.ss_item_sk))
otherCondition=()
+----------------------------------------PhysicalDistribute[DistributionSpecHash]
+------------------------------------------hashJoin[INNER_JOIN]
hashCondition=((web_sales.ws_sold_date_sk = date_dim.d_date_sk))
otherCondition=() build RFs:RF16 d_date_sk->[ws_sold_date_sk]
+--------------------------------------------PhysicalProject
+----------------------------------------------PhysicalOlapScan[web_sales]
apply RFs: RF16 RF17
+--------------------------------------------PhysicalDistribute[DistributionSpecReplicated]
----------------------------------------------PhysicalProject
-------------------------------------------------PhysicalOlapScan[web_sales]
apply RFs: RF16 RF17
-----------------------------------------------PhysicalDistribute[DistributionSpecReplicated]
-------------------------------------------------PhysicalProject
---------------------------------------------------filter((date_dim.d_moy = 11)
and (date_dim.d_year = 2001))
-----------------------------------------------------PhysicalOlapScan[date_dim]
-------------------------------------------PhysicalDistribute[DistributionSpecHash]
---------------------------------------------PhysicalCteConsumer (
cteId=CTEId#0 ) apply RFs: RF17
+------------------------------------------------filter((date_dim.d_moy = 11)
and (date_dim.d_year = 2001))
+--------------------------------------------------PhysicalOlapScan[date_dim]
----------------------------------------PhysicalDistribute[DistributionSpecHash]
-------------------------------------------PhysicalProject
---------------------------------------------PhysicalOlapScan[item]
+------------------------------------------PhysicalCteConsumer ( cteId=CTEId#0
) apply RFs: RF17
+--------------------------------------PhysicalDistribute[DistributionSpecHash]
+----------------------------------------PhysicalProject
+------------------------------------------PhysicalOlapScan[item]
----------------------------PhysicalDistribute[DistributionSpecReplicated]
------------------------------PhysicalAssertNumRows
--------------------------------PhysicalDistribute[DistributionSpecGather]
diff --git
a/regression-test/data/nereids_tpcds_shape_sf100_p0/noStatsRfPrune/query14.out
b/regression-test/data/nereids_tpcds_shape_sf100_p0/noStatsRfPrune/query14.out
index 3fb78e6cc3c..37d24f8831c 100644
---
a/regression-test/data/nereids_tpcds_shape_sf100_p0/noStatsRfPrune/query14.out
+++
b/regression-test/data/nereids_tpcds_shape_sf100_p0/noStatsRfPrune/query14.out
@@ -95,81 +95,78 @@ PhysicalCteAnchor ( cteId=CTEId#0 )
----------------------PhysicalUnion
------------------------PhysicalProject
--------------------------NestedLoopJoin[INNER_JOIN](cast(sales as DOUBLE) >
cast(average_sales as DOUBLE))
-----------------------------PhysicalProject
-------------------------------hashAgg[GLOBAL]
---------------------------------PhysicalDistribute[DistributionSpecHash]
-----------------------------------hashAgg[LOCAL]
-------------------------------------PhysicalProject
---------------------------------------hashJoin[INNER_JOIN]
hashCondition=((store_sales.ss_sold_date_sk = date_dim.d_date_sk))
otherCondition=() build RFs:RF13 d_date_sk->[ss_sold_date_sk]
-----------------------------------------PhysicalProject
-------------------------------------------hashJoin[INNER_JOIN]
hashCondition=((store_sales.ss_item_sk = item.i_item_sk)) otherCondition=()
---------------------------------------------hashJoin[LEFT_SEMI_JOIN]
hashCondition=((store_sales.ss_item_sk = cross_items.ss_item_sk))
otherCondition=()
-----------------------------------------------PhysicalDistribute[DistributionSpecHash]
-------------------------------------------------PhysicalProject
---------------------------------------------------PhysicalOlapScan[store_sales]
apply RFs: RF13
-----------------------------------------------PhysicalDistribute[DistributionSpecHash]
-------------------------------------------------PhysicalCteConsumer (
cteId=CTEId#0 )
+----------------------------hashAgg[GLOBAL]
+------------------------------PhysicalDistribute[DistributionSpecHash]
+--------------------------------hashAgg[LOCAL]
+----------------------------------PhysicalProject
+------------------------------------hashJoin[INNER_JOIN]
hashCondition=((store_sales.ss_sold_date_sk = date_dim.d_date_sk))
otherCondition=() build RFs:RF13 d_date_sk->[ss_sold_date_sk]
+--------------------------------------PhysicalProject
+----------------------------------------hashJoin[INNER_JOIN]
hashCondition=((store_sales.ss_item_sk = item.i_item_sk)) otherCondition=()
+------------------------------------------hashJoin[LEFT_SEMI_JOIN]
hashCondition=((store_sales.ss_item_sk = cross_items.ss_item_sk))
otherCondition=()
--------------------------------------------PhysicalDistribute[DistributionSpecHash]
----------------------------------------------PhysicalProject
-------------------------------------------------PhysicalOlapScan[item]
-----------------------------------------PhysicalDistribute[DistributionSpecReplicated]
-------------------------------------------PhysicalProject
---------------------------------------------filter((date_dim.d_moy = 11) and
(date_dim.d_year = 2002))
-----------------------------------------------PhysicalOlapScan[date_dim]
+------------------------------------------------PhysicalOlapScan[store_sales]
apply RFs: RF13
+--------------------------------------------PhysicalDistribute[DistributionSpecHash]
+----------------------------------------------PhysicalCteConsumer (
cteId=CTEId#0 )
+------------------------------------------PhysicalDistribute[DistributionSpecHash]
+--------------------------------------------PhysicalProject
+----------------------------------------------PhysicalOlapScan[item]
+--------------------------------------PhysicalDistribute[DistributionSpecReplicated]
+----------------------------------------PhysicalProject
+------------------------------------------filter((date_dim.d_moy = 11) and
(date_dim.d_year = 2002))
+--------------------------------------------PhysicalOlapScan[date_dim]
----------------------------PhysicalDistribute[DistributionSpecReplicated]
------------------------------PhysicalAssertNumRows
--------------------------------PhysicalDistribute[DistributionSpecGather]
----------------------------------PhysicalCteConsumer ( cteId=CTEId#1 )
------------------------PhysicalProject
--------------------------NestedLoopJoin[INNER_JOIN](cast(sales as DOUBLE) >
cast(average_sales as DOUBLE))
-----------------------------PhysicalProject
-------------------------------hashAgg[GLOBAL]
---------------------------------PhysicalDistribute[DistributionSpecHash]
-----------------------------------hashAgg[LOCAL]
-------------------------------------PhysicalProject
---------------------------------------hashJoin[INNER_JOIN]
hashCondition=((catalog_sales.cs_sold_date_sk = date_dim.d_date_sk))
otherCondition=() build RFs:RF15 d_date_sk->[cs_sold_date_sk]
-----------------------------------------PhysicalProject
-------------------------------------------hashJoin[INNER_JOIN]
hashCondition=((catalog_sales.cs_item_sk = item.i_item_sk)) otherCondition=()
---------------------------------------------hashJoin[LEFT_SEMI_JOIN]
hashCondition=((catalog_sales.cs_item_sk = cross_items.ss_item_sk))
otherCondition=()
-----------------------------------------------PhysicalDistribute[DistributionSpecHash]
-------------------------------------------------PhysicalProject
---------------------------------------------------PhysicalOlapScan[catalog_sales]
apply RFs: RF15
-----------------------------------------------PhysicalDistribute[DistributionSpecHash]
-------------------------------------------------PhysicalCteConsumer (
cteId=CTEId#0 )
+----------------------------hashAgg[GLOBAL]
+------------------------------PhysicalDistribute[DistributionSpecHash]
+--------------------------------hashAgg[LOCAL]
+----------------------------------PhysicalProject
+------------------------------------hashJoin[INNER_JOIN]
hashCondition=((catalog_sales.cs_sold_date_sk = date_dim.d_date_sk))
otherCondition=() build RFs:RF15 d_date_sk->[cs_sold_date_sk]
+--------------------------------------PhysicalProject
+----------------------------------------hashJoin[INNER_JOIN]
hashCondition=((catalog_sales.cs_item_sk = item.i_item_sk)) otherCondition=()
+------------------------------------------hashJoin[LEFT_SEMI_JOIN]
hashCondition=((catalog_sales.cs_item_sk = cross_items.ss_item_sk))
otherCondition=()
--------------------------------------------PhysicalDistribute[DistributionSpecHash]
----------------------------------------------PhysicalProject
-------------------------------------------------PhysicalOlapScan[item]
-----------------------------------------PhysicalDistribute[DistributionSpecReplicated]
-------------------------------------------PhysicalProject
---------------------------------------------filter((date_dim.d_moy = 11) and
(date_dim.d_year = 2002))
-----------------------------------------------PhysicalOlapScan[date_dim]
+------------------------------------------------PhysicalOlapScan[catalog_sales]
apply RFs: RF15
+--------------------------------------------PhysicalDistribute[DistributionSpecHash]
+----------------------------------------------PhysicalCteConsumer (
cteId=CTEId#0 )
+------------------------------------------PhysicalDistribute[DistributionSpecHash]
+--------------------------------------------PhysicalProject
+----------------------------------------------PhysicalOlapScan[item]
+--------------------------------------PhysicalDistribute[DistributionSpecReplicated]
+----------------------------------------PhysicalProject
+------------------------------------------filter((date_dim.d_moy = 11) and
(date_dim.d_year = 2002))
+--------------------------------------------PhysicalOlapScan[date_dim]
----------------------------PhysicalDistribute[DistributionSpecReplicated]
------------------------------PhysicalAssertNumRows
--------------------------------PhysicalDistribute[DistributionSpecGather]
----------------------------------PhysicalCteConsumer ( cteId=CTEId#1 )
------------------------PhysicalProject
--------------------------NestedLoopJoin[INNER_JOIN](cast(sales as DOUBLE) >
cast(average_sales as DOUBLE))
-----------------------------PhysicalProject
-------------------------------hashAgg[GLOBAL]
---------------------------------PhysicalDistribute[DistributionSpecHash]
-----------------------------------hashAgg[LOCAL]
-------------------------------------PhysicalProject
---------------------------------------hashJoin[INNER_JOIN]
hashCondition=((web_sales.ws_sold_date_sk = date_dim.d_date_sk))
otherCondition=() build RFs:RF18 d_date_sk->[ws_sold_date_sk]
-----------------------------------------PhysicalProject
-------------------------------------------hashJoin[INNER_JOIN]
hashCondition=((web_sales.ws_item_sk = item.i_item_sk)) otherCondition=()
---------------------------------------------hashJoin[RIGHT_SEMI_JOIN]
hashCondition=((web_sales.ws_item_sk = cross_items.ss_item_sk))
otherCondition=()
-----------------------------------------------PhysicalDistribute[DistributionSpecHash]
-------------------------------------------------PhysicalCteConsumer (
cteId=CTEId#0 )
-----------------------------------------------PhysicalDistribute[DistributionSpecHash]
-------------------------------------------------PhysicalProject
---------------------------------------------------PhysicalOlapScan[web_sales]
apply RFs: RF18
+----------------------------hashAgg[GLOBAL]
+------------------------------PhysicalDistribute[DistributionSpecHash]
+--------------------------------hashAgg[LOCAL]
+----------------------------------PhysicalProject
+------------------------------------hashJoin[INNER_JOIN]
hashCondition=((web_sales.ws_sold_date_sk = date_dim.d_date_sk))
otherCondition=() build RFs:RF18 d_date_sk->[ws_sold_date_sk]
+--------------------------------------PhysicalProject
+----------------------------------------hashJoin[INNER_JOIN]
hashCondition=((web_sales.ws_item_sk = item.i_item_sk)) otherCondition=()
+------------------------------------------hashJoin[RIGHT_SEMI_JOIN]
hashCondition=((web_sales.ws_item_sk = cross_items.ss_item_sk))
otherCondition=()
+--------------------------------------------PhysicalDistribute[DistributionSpecHash]
+----------------------------------------------PhysicalCteConsumer (
cteId=CTEId#0 )
--------------------------------------------PhysicalDistribute[DistributionSpecHash]
----------------------------------------------PhysicalProject
-------------------------------------------------PhysicalOlapScan[item]
-----------------------------------------PhysicalDistribute[DistributionSpecReplicated]
-------------------------------------------PhysicalProject
---------------------------------------------filter((date_dim.d_moy = 11) and
(date_dim.d_year = 2002))
-----------------------------------------------PhysicalOlapScan[date_dim]
+------------------------------------------------PhysicalOlapScan[web_sales]
apply RFs: RF18
+------------------------------------------PhysicalDistribute[DistributionSpecHash]
+--------------------------------------------PhysicalProject
+----------------------------------------------PhysicalOlapScan[item]
+--------------------------------------PhysicalDistribute[DistributionSpecReplicated]
+----------------------------------------PhysicalProject
+------------------------------------------filter((date_dim.d_moy = 11) and
(date_dim.d_year = 2002))
+--------------------------------------------PhysicalOlapScan[date_dim]
----------------------------PhysicalDistribute[DistributionSpecReplicated]
------------------------------PhysicalAssertNumRows
--------------------------------PhysicalDistribute[DistributionSpecGather]
diff --git
a/regression-test/data/nereids_tpcds_shape_sf100_p0/no_stats_shape/query14.out
b/regression-test/data/nereids_tpcds_shape_sf100_p0/no_stats_shape/query14.out
index 1daa8cb5ce1..d3ae5a3b304 100644
---
a/regression-test/data/nereids_tpcds_shape_sf100_p0/no_stats_shape/query14.out
+++
b/regression-test/data/nereids_tpcds_shape_sf100_p0/no_stats_shape/query14.out
@@ -95,81 +95,78 @@ PhysicalCteAnchor ( cteId=CTEId#0 )
----------------------PhysicalUnion
------------------------PhysicalProject
--------------------------NestedLoopJoin[INNER_JOIN](cast(sales as DOUBLE) >
cast(average_sales as DOUBLE))
-----------------------------PhysicalProject
-------------------------------hashAgg[GLOBAL]
---------------------------------PhysicalDistribute[DistributionSpecHash]
-----------------------------------hashAgg[LOCAL]
-------------------------------------PhysicalProject
---------------------------------------hashJoin[INNER_JOIN]
hashCondition=((store_sales.ss_sold_date_sk = date_dim.d_date_sk))
otherCondition=() build RFs:RF13 d_date_sk->[ss_sold_date_sk]
-----------------------------------------PhysicalProject
-------------------------------------------hashJoin[INNER_JOIN]
hashCondition=((store_sales.ss_item_sk = item.i_item_sk)) otherCondition=()
build RFs:RF12 i_item_sk->[ss_item_sk,ss_item_sk]
---------------------------------------------hashJoin[LEFT_SEMI_JOIN]
hashCondition=((store_sales.ss_item_sk = cross_items.ss_item_sk))
otherCondition=()
-----------------------------------------------PhysicalDistribute[DistributionSpecHash]
-------------------------------------------------PhysicalProject
---------------------------------------------------PhysicalOlapScan[store_sales]
apply RFs: RF12 RF13
-----------------------------------------------PhysicalDistribute[DistributionSpecHash]
-------------------------------------------------PhysicalCteConsumer (
cteId=CTEId#0 ) apply RFs: RF12
+----------------------------hashAgg[GLOBAL]
+------------------------------PhysicalDistribute[DistributionSpecHash]
+--------------------------------hashAgg[LOCAL]
+----------------------------------PhysicalProject
+------------------------------------hashJoin[INNER_JOIN]
hashCondition=((store_sales.ss_sold_date_sk = date_dim.d_date_sk))
otherCondition=() build RFs:RF13 d_date_sk->[ss_sold_date_sk]
+--------------------------------------PhysicalProject
+----------------------------------------hashJoin[INNER_JOIN]
hashCondition=((store_sales.ss_item_sk = item.i_item_sk)) otherCondition=()
build RFs:RF12 i_item_sk->[ss_item_sk,ss_item_sk]
+------------------------------------------hashJoin[LEFT_SEMI_JOIN]
hashCondition=((store_sales.ss_item_sk = cross_items.ss_item_sk))
otherCondition=()
--------------------------------------------PhysicalDistribute[DistributionSpecHash]
----------------------------------------------PhysicalProject
-------------------------------------------------PhysicalOlapScan[item]
-----------------------------------------PhysicalDistribute[DistributionSpecReplicated]
-------------------------------------------PhysicalProject
---------------------------------------------filter((date_dim.d_moy = 11) and
(date_dim.d_year = 2002))
-----------------------------------------------PhysicalOlapScan[date_dim]
+------------------------------------------------PhysicalOlapScan[store_sales]
apply RFs: RF12 RF13
+--------------------------------------------PhysicalDistribute[DistributionSpecHash]
+----------------------------------------------PhysicalCteConsumer (
cteId=CTEId#0 ) apply RFs: RF12
+------------------------------------------PhysicalDistribute[DistributionSpecHash]
+--------------------------------------------PhysicalProject
+----------------------------------------------PhysicalOlapScan[item]
+--------------------------------------PhysicalDistribute[DistributionSpecReplicated]
+----------------------------------------PhysicalProject
+------------------------------------------filter((date_dim.d_moy = 11) and
(date_dim.d_year = 2002))
+--------------------------------------------PhysicalOlapScan[date_dim]
----------------------------PhysicalDistribute[DistributionSpecReplicated]
------------------------------PhysicalAssertNumRows
--------------------------------PhysicalDistribute[DistributionSpecGather]
----------------------------------PhysicalCteConsumer ( cteId=CTEId#1 )
------------------------PhysicalProject
--------------------------NestedLoopJoin[INNER_JOIN](cast(sales as DOUBLE) >
cast(average_sales as DOUBLE))
-----------------------------PhysicalProject
-------------------------------hashAgg[GLOBAL]
---------------------------------PhysicalDistribute[DistributionSpecHash]
-----------------------------------hashAgg[LOCAL]
-------------------------------------PhysicalProject
---------------------------------------hashJoin[INNER_JOIN]
hashCondition=((catalog_sales.cs_sold_date_sk = date_dim.d_date_sk))
otherCondition=() build RFs:RF15 d_date_sk->[cs_sold_date_sk]
-----------------------------------------PhysicalProject
-------------------------------------------hashJoin[INNER_JOIN]
hashCondition=((catalog_sales.cs_item_sk = item.i_item_sk)) otherCondition=()
build RFs:RF14 i_item_sk->[cs_item_sk,ss_item_sk]
---------------------------------------------hashJoin[LEFT_SEMI_JOIN]
hashCondition=((catalog_sales.cs_item_sk = cross_items.ss_item_sk))
otherCondition=()
-----------------------------------------------PhysicalDistribute[DistributionSpecHash]
-------------------------------------------------PhysicalProject
---------------------------------------------------PhysicalOlapScan[catalog_sales]
apply RFs: RF14 RF15
-----------------------------------------------PhysicalDistribute[DistributionSpecHash]
-------------------------------------------------PhysicalCteConsumer (
cteId=CTEId#0 ) apply RFs: RF14
+----------------------------hashAgg[GLOBAL]
+------------------------------PhysicalDistribute[DistributionSpecHash]
+--------------------------------hashAgg[LOCAL]
+----------------------------------PhysicalProject
+------------------------------------hashJoin[INNER_JOIN]
hashCondition=((catalog_sales.cs_sold_date_sk = date_dim.d_date_sk))
otherCondition=() build RFs:RF15 d_date_sk->[cs_sold_date_sk]
+--------------------------------------PhysicalProject
+----------------------------------------hashJoin[INNER_JOIN]
hashCondition=((catalog_sales.cs_item_sk = item.i_item_sk)) otherCondition=()
build RFs:RF14 i_item_sk->[cs_item_sk,ss_item_sk]
+------------------------------------------hashJoin[LEFT_SEMI_JOIN]
hashCondition=((catalog_sales.cs_item_sk = cross_items.ss_item_sk))
otherCondition=()
--------------------------------------------PhysicalDistribute[DistributionSpecHash]
----------------------------------------------PhysicalProject
-------------------------------------------------PhysicalOlapScan[item]
-----------------------------------------PhysicalDistribute[DistributionSpecReplicated]
-------------------------------------------PhysicalProject
---------------------------------------------filter((date_dim.d_moy = 11) and
(date_dim.d_year = 2002))
-----------------------------------------------PhysicalOlapScan[date_dim]
+------------------------------------------------PhysicalOlapScan[catalog_sales]
apply RFs: RF14 RF15
+--------------------------------------------PhysicalDistribute[DistributionSpecHash]
+----------------------------------------------PhysicalCteConsumer (
cteId=CTEId#0 ) apply RFs: RF14
+------------------------------------------PhysicalDistribute[DistributionSpecHash]
+--------------------------------------------PhysicalProject
+----------------------------------------------PhysicalOlapScan[item]
+--------------------------------------PhysicalDistribute[DistributionSpecReplicated]
+----------------------------------------PhysicalProject
+------------------------------------------filter((date_dim.d_moy = 11) and
(date_dim.d_year = 2002))
+--------------------------------------------PhysicalOlapScan[date_dim]
----------------------------PhysicalDistribute[DistributionSpecReplicated]
------------------------------PhysicalAssertNumRows
--------------------------------PhysicalDistribute[DistributionSpecGather]
----------------------------------PhysicalCteConsumer ( cteId=CTEId#1 )
------------------------PhysicalProject
--------------------------NestedLoopJoin[INNER_JOIN](cast(sales as DOUBLE) >
cast(average_sales as DOUBLE))
-----------------------------PhysicalProject
-------------------------------hashAgg[GLOBAL]
---------------------------------PhysicalDistribute[DistributionSpecHash]
-----------------------------------hashAgg[LOCAL]
-------------------------------------PhysicalProject
---------------------------------------hashJoin[INNER_JOIN]
hashCondition=((web_sales.ws_sold_date_sk = date_dim.d_date_sk))
otherCondition=() build RFs:RF18 d_date_sk->[ws_sold_date_sk]
-----------------------------------------PhysicalProject
-------------------------------------------hashJoin[INNER_JOIN]
hashCondition=((web_sales.ws_item_sk = item.i_item_sk)) otherCondition=() build
RFs:RF17 i_item_sk->[ws_item_sk,ss_item_sk]
---------------------------------------------hashJoin[RIGHT_SEMI_JOIN]
hashCondition=((web_sales.ws_item_sk = cross_items.ss_item_sk))
otherCondition=() build RFs:RF16 ws_item_sk->[ss_item_sk]
-----------------------------------------------PhysicalDistribute[DistributionSpecHash]
-------------------------------------------------PhysicalCteConsumer (
cteId=CTEId#0 ) apply RFs: RF16 RF17
-----------------------------------------------PhysicalDistribute[DistributionSpecHash]
-------------------------------------------------PhysicalProject
---------------------------------------------------PhysicalOlapScan[web_sales]
apply RFs: RF17 RF18
+----------------------------hashAgg[GLOBAL]
+------------------------------PhysicalDistribute[DistributionSpecHash]
+--------------------------------hashAgg[LOCAL]
+----------------------------------PhysicalProject
+------------------------------------hashJoin[INNER_JOIN]
hashCondition=((web_sales.ws_sold_date_sk = date_dim.d_date_sk))
otherCondition=() build RFs:RF18 d_date_sk->[ws_sold_date_sk]
+--------------------------------------PhysicalProject
+----------------------------------------hashJoin[INNER_JOIN]
hashCondition=((web_sales.ws_item_sk = item.i_item_sk)) otherCondition=() build
RFs:RF17 i_item_sk->[ws_item_sk,ss_item_sk]
+------------------------------------------hashJoin[RIGHT_SEMI_JOIN]
hashCondition=((web_sales.ws_item_sk = cross_items.ss_item_sk))
otherCondition=() build RFs:RF16 ws_item_sk->[ss_item_sk]
+--------------------------------------------PhysicalDistribute[DistributionSpecHash]
+----------------------------------------------PhysicalCteConsumer (
cteId=CTEId#0 ) apply RFs: RF16 RF17
--------------------------------------------PhysicalDistribute[DistributionSpecHash]
----------------------------------------------PhysicalProject
-------------------------------------------------PhysicalOlapScan[item]
-----------------------------------------PhysicalDistribute[DistributionSpecReplicated]
-------------------------------------------PhysicalProject
---------------------------------------------filter((date_dim.d_moy = 11) and
(date_dim.d_year = 2002))
-----------------------------------------------PhysicalOlapScan[date_dim]
+------------------------------------------------PhysicalOlapScan[web_sales]
apply RFs: RF17 RF18
+------------------------------------------PhysicalDistribute[DistributionSpecHash]
+--------------------------------------------PhysicalProject
+----------------------------------------------PhysicalOlapScan[item]
+--------------------------------------PhysicalDistribute[DistributionSpecReplicated]
+----------------------------------------PhysicalProject
+------------------------------------------filter((date_dim.d_moy = 11) and
(date_dim.d_year = 2002))
+--------------------------------------------PhysicalOlapScan[date_dim]
----------------------------PhysicalDistribute[DistributionSpecReplicated]
------------------------------PhysicalAssertNumRows
--------------------------------PhysicalDistribute[DistributionSpecGather]
diff --git
a/regression-test/data/nereids_tpcds_shape_sf100_p0/rf_prune/query14.out
b/regression-test/data/nereids_tpcds_shape_sf100_p0/rf_prune/query14.out
index a4f70cae0ed..281da092c6f 100644
--- a/regression-test/data/nereids_tpcds_shape_sf100_p0/rf_prune/query14.out
+++ b/regression-test/data/nereids_tpcds_shape_sf100_p0/rf_prune/query14.out
@@ -99,78 +99,75 @@ PhysicalCteAnchor ( cteId=CTEId#0 )
----------------------PhysicalUnion
------------------------PhysicalProject
--------------------------NestedLoopJoin[INNER_JOIN](cast(sales as DOUBLE) >
cast(average_sales as DOUBLE))
-----------------------------PhysicalProject
-------------------------------hashAgg[GLOBAL]
---------------------------------PhysicalDistribute[DistributionSpecHash]
-----------------------------------hashAgg[LOCAL]
-------------------------------------PhysicalProject
---------------------------------------hashJoin[RIGHT_SEMI_JOIN]
hashCondition=((store_sales.ss_item_sk = cross_items.ss_item_sk))
otherCondition=() build RFs:RF14 ss_item_sk->[ss_item_sk]
+----------------------------hashAgg[GLOBAL]
+------------------------------PhysicalDistribute[DistributionSpecHash]
+--------------------------------hashAgg[LOCAL]
+----------------------------------PhysicalProject
+------------------------------------hashJoin[RIGHT_SEMI_JOIN]
hashCondition=((store_sales.ss_item_sk = cross_items.ss_item_sk))
otherCondition=() build RFs:RF14 ss_item_sk->[ss_item_sk]
+--------------------------------------PhysicalDistribute[DistributionSpecHash]
+----------------------------------------PhysicalCteConsumer ( cteId=CTEId#0 )
apply RFs: RF14
+--------------------------------------hashJoin[INNER_JOIN]
hashCondition=((store_sales.ss_item_sk = item.i_item_sk)) otherCondition=()
----------------------------------------PhysicalDistribute[DistributionSpecHash]
-------------------------------------------PhysicalCteConsumer ( cteId=CTEId#0
) apply RFs: RF14
-----------------------------------------hashJoin[INNER_JOIN]
hashCondition=((store_sales.ss_item_sk = item.i_item_sk)) otherCondition=()
-------------------------------------------PhysicalDistribute[DistributionSpecHash]
---------------------------------------------hashJoin[INNER_JOIN]
hashCondition=((store_sales.ss_sold_date_sk = date_dim.d_date_sk))
otherCondition=() build RFs:RF12 d_date_sk->[ss_sold_date_sk]
-----------------------------------------------PhysicalProject
-------------------------------------------------PhysicalOlapScan[store_sales]
apply RFs: RF12
-----------------------------------------------PhysicalDistribute[DistributionSpecReplicated]
-------------------------------------------------PhysicalProject
---------------------------------------------------filter((date_dim.d_moy = 11)
and (date_dim.d_year = 2002))
-----------------------------------------------------PhysicalOlapScan[date_dim]
-------------------------------------------PhysicalDistribute[DistributionSpecHash]
+------------------------------------------hashJoin[INNER_JOIN]
hashCondition=((store_sales.ss_sold_date_sk = date_dim.d_date_sk))
otherCondition=() build RFs:RF12 d_date_sk->[ss_sold_date_sk]
--------------------------------------------PhysicalProject
-----------------------------------------------PhysicalOlapScan[item]
+----------------------------------------------PhysicalOlapScan[store_sales]
apply RFs: RF12
+--------------------------------------------PhysicalDistribute[DistributionSpecReplicated]
+----------------------------------------------PhysicalProject
+------------------------------------------------filter((date_dim.d_moy = 11)
and (date_dim.d_year = 2002))
+--------------------------------------------------PhysicalOlapScan[date_dim]
+----------------------------------------PhysicalDistribute[DistributionSpecHash]
+------------------------------------------PhysicalProject
+--------------------------------------------PhysicalOlapScan[item]
----------------------------PhysicalDistribute[DistributionSpecReplicated]
------------------------------PhysicalAssertNumRows
--------------------------------PhysicalDistribute[DistributionSpecGather]
----------------------------------PhysicalCteConsumer ( cteId=CTEId#1 )
------------------------PhysicalProject
--------------------------NestedLoopJoin[INNER_JOIN](cast(sales as DOUBLE) >
cast(average_sales as DOUBLE))
-----------------------------PhysicalProject
-------------------------------hashAgg[GLOBAL]
---------------------------------PhysicalDistribute[DistributionSpecHash]
-----------------------------------hashAgg[LOCAL]
-------------------------------------PhysicalProject
---------------------------------------hashJoin[RIGHT_SEMI_JOIN]
hashCondition=((catalog_sales.cs_item_sk = cross_items.ss_item_sk))
otherCondition=() build RFs:RF17 cs_item_sk->[ss_item_sk]
+----------------------------hashAgg[GLOBAL]
+------------------------------PhysicalDistribute[DistributionSpecHash]
+--------------------------------hashAgg[LOCAL]
+----------------------------------PhysicalProject
+------------------------------------hashJoin[RIGHT_SEMI_JOIN]
hashCondition=((catalog_sales.cs_item_sk = cross_items.ss_item_sk))
otherCondition=() build RFs:RF17 cs_item_sk->[ss_item_sk]
+--------------------------------------PhysicalDistribute[DistributionSpecHash]
+----------------------------------------PhysicalCteConsumer ( cteId=CTEId#0 )
apply RFs: RF17
+--------------------------------------hashJoin[INNER_JOIN]
hashCondition=((catalog_sales.cs_item_sk = item.i_item_sk)) otherCondition=()
----------------------------------------PhysicalDistribute[DistributionSpecHash]
-------------------------------------------PhysicalCteConsumer ( cteId=CTEId#0
) apply RFs: RF17
-----------------------------------------hashJoin[INNER_JOIN]
hashCondition=((catalog_sales.cs_item_sk = item.i_item_sk)) otherCondition=()
-------------------------------------------PhysicalDistribute[DistributionSpecHash]
---------------------------------------------hashJoin[INNER_JOIN]
hashCondition=((catalog_sales.cs_sold_date_sk = date_dim.d_date_sk))
otherCondition=() build RFs:RF15 d_date_sk->[cs_sold_date_sk]
-----------------------------------------------PhysicalProject
-------------------------------------------------PhysicalOlapScan[catalog_sales]
apply RFs: RF15
-----------------------------------------------PhysicalDistribute[DistributionSpecReplicated]
-------------------------------------------------PhysicalProject
---------------------------------------------------filter((date_dim.d_moy = 11)
and (date_dim.d_year = 2002))
-----------------------------------------------------PhysicalOlapScan[date_dim]
-------------------------------------------PhysicalDistribute[DistributionSpecHash]
+------------------------------------------hashJoin[INNER_JOIN]
hashCondition=((catalog_sales.cs_sold_date_sk = date_dim.d_date_sk))
otherCondition=() build RFs:RF15 d_date_sk->[cs_sold_date_sk]
--------------------------------------------PhysicalProject
-----------------------------------------------PhysicalOlapScan[item]
+----------------------------------------------PhysicalOlapScan[catalog_sales]
apply RFs: RF15
+--------------------------------------------PhysicalDistribute[DistributionSpecReplicated]
+----------------------------------------------PhysicalProject
+------------------------------------------------filter((date_dim.d_moy = 11)
and (date_dim.d_year = 2002))
+--------------------------------------------------PhysicalOlapScan[date_dim]
+----------------------------------------PhysicalDistribute[DistributionSpecHash]
+------------------------------------------PhysicalProject
+--------------------------------------------PhysicalOlapScan[item]
----------------------------PhysicalDistribute[DistributionSpecReplicated]
------------------------------PhysicalAssertNumRows
--------------------------------PhysicalDistribute[DistributionSpecGather]
----------------------------------PhysicalCteConsumer ( cteId=CTEId#1 )
------------------------PhysicalProject
--------------------------NestedLoopJoin[INNER_JOIN](cast(sales as DOUBLE) >
cast(average_sales as DOUBLE))
-----------------------------PhysicalProject
-------------------------------hashAgg[GLOBAL]
---------------------------------PhysicalDistribute[DistributionSpecHash]
-----------------------------------hashAgg[LOCAL]
-------------------------------------PhysicalProject
---------------------------------------hashJoin[RIGHT_SEMI_JOIN]
hashCondition=((web_sales.ws_item_sk = cross_items.ss_item_sk))
otherCondition=() build RFs:RF20 ws_item_sk->[ss_item_sk]
+----------------------------hashAgg[GLOBAL]
+------------------------------PhysicalDistribute[DistributionSpecHash]
+--------------------------------hashAgg[LOCAL]
+----------------------------------PhysicalProject
+------------------------------------hashJoin[RIGHT_SEMI_JOIN]
hashCondition=((web_sales.ws_item_sk = cross_items.ss_item_sk))
otherCondition=() build RFs:RF20 ws_item_sk->[ss_item_sk]
+--------------------------------------PhysicalDistribute[DistributionSpecHash]
+----------------------------------------PhysicalCteConsumer ( cteId=CTEId#0 )
apply RFs: RF20
+--------------------------------------hashJoin[INNER_JOIN]
hashCondition=((web_sales.ws_item_sk = item.i_item_sk)) otherCondition=()
----------------------------------------PhysicalDistribute[DistributionSpecHash]
-------------------------------------------PhysicalCteConsumer ( cteId=CTEId#0
) apply RFs: RF20
-----------------------------------------hashJoin[INNER_JOIN]
hashCondition=((web_sales.ws_item_sk = item.i_item_sk)) otherCondition=()
-------------------------------------------PhysicalDistribute[DistributionSpecHash]
---------------------------------------------hashJoin[INNER_JOIN]
hashCondition=((web_sales.ws_sold_date_sk = date_dim.d_date_sk))
otherCondition=() build RFs:RF18 d_date_sk->[ws_sold_date_sk]
-----------------------------------------------PhysicalProject
-------------------------------------------------PhysicalOlapScan[web_sales]
apply RFs: RF18
-----------------------------------------------PhysicalDistribute[DistributionSpecReplicated]
-------------------------------------------------PhysicalProject
---------------------------------------------------filter((date_dim.d_moy = 11)
and (date_dim.d_year = 2002))
-----------------------------------------------------PhysicalOlapScan[date_dim]
-------------------------------------------PhysicalDistribute[DistributionSpecHash]
+------------------------------------------hashJoin[INNER_JOIN]
hashCondition=((web_sales.ws_sold_date_sk = date_dim.d_date_sk))
otherCondition=() build RFs:RF18 d_date_sk->[ws_sold_date_sk]
--------------------------------------------PhysicalProject
-----------------------------------------------PhysicalOlapScan[item]
+----------------------------------------------PhysicalOlapScan[web_sales]
apply RFs: RF18
+--------------------------------------------PhysicalDistribute[DistributionSpecReplicated]
+----------------------------------------------PhysicalProject
+------------------------------------------------filter((date_dim.d_moy = 11)
and (date_dim.d_year = 2002))
+--------------------------------------------------PhysicalOlapScan[date_dim]
+----------------------------------------PhysicalDistribute[DistributionSpecHash]
+------------------------------------------PhysicalProject
+--------------------------------------------PhysicalOlapScan[item]
----------------------------PhysicalDistribute[DistributionSpecReplicated]
------------------------------PhysicalAssertNumRows
--------------------------------PhysicalDistribute[DistributionSpecGather]
diff --git
a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query14.out
b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query14.out
index 69a8888f2a7..faa1a93b48f 100644
--- a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query14.out
+++ b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query14.out
@@ -99,78 +99,75 @@ PhysicalCteAnchor ( cteId=CTEId#0 )
----------------------PhysicalUnion
------------------------PhysicalProject
--------------------------NestedLoopJoin[INNER_JOIN](cast(sales as DOUBLE) >
cast(average_sales as DOUBLE))
-----------------------------PhysicalProject
-------------------------------hashAgg[GLOBAL]
---------------------------------PhysicalDistribute[DistributionSpecHash]
-----------------------------------hashAgg[LOCAL]
-------------------------------------PhysicalProject
---------------------------------------hashJoin[RIGHT_SEMI_JOIN]
hashCondition=((store_sales.ss_item_sk = cross_items.ss_item_sk))
otherCondition=() build RFs:RF14 ss_item_sk->[ss_item_sk]
+----------------------------hashAgg[GLOBAL]
+------------------------------PhysicalDistribute[DistributionSpecHash]
+--------------------------------hashAgg[LOCAL]
+----------------------------------PhysicalProject
+------------------------------------hashJoin[RIGHT_SEMI_JOIN]
hashCondition=((store_sales.ss_item_sk = cross_items.ss_item_sk))
otherCondition=() build RFs:RF14 ss_item_sk->[ss_item_sk]
+--------------------------------------PhysicalDistribute[DistributionSpecHash]
+----------------------------------------PhysicalCteConsumer ( cteId=CTEId#0 )
apply RFs: RF14
+--------------------------------------hashJoin[INNER_JOIN]
hashCondition=((store_sales.ss_item_sk = item.i_item_sk)) otherCondition=()
build RFs:RF13 i_item_sk->[ss_item_sk]
----------------------------------------PhysicalDistribute[DistributionSpecHash]
-------------------------------------------PhysicalCteConsumer ( cteId=CTEId#0
) apply RFs: RF14
-----------------------------------------hashJoin[INNER_JOIN]
hashCondition=((store_sales.ss_item_sk = item.i_item_sk)) otherCondition=()
build RFs:RF13 i_item_sk->[ss_item_sk]
-------------------------------------------PhysicalDistribute[DistributionSpecHash]
---------------------------------------------hashJoin[INNER_JOIN]
hashCondition=((store_sales.ss_sold_date_sk = date_dim.d_date_sk))
otherCondition=() build RFs:RF12 d_date_sk->[ss_sold_date_sk]
-----------------------------------------------PhysicalProject
-------------------------------------------------PhysicalOlapScan[store_sales]
apply RFs: RF12 RF13
-----------------------------------------------PhysicalDistribute[DistributionSpecReplicated]
-------------------------------------------------PhysicalProject
---------------------------------------------------filter((date_dim.d_moy = 11)
and (date_dim.d_year = 2002))
-----------------------------------------------------PhysicalOlapScan[date_dim]
-------------------------------------------PhysicalDistribute[DistributionSpecHash]
+------------------------------------------hashJoin[INNER_JOIN]
hashCondition=((store_sales.ss_sold_date_sk = date_dim.d_date_sk))
otherCondition=() build RFs:RF12 d_date_sk->[ss_sold_date_sk]
--------------------------------------------PhysicalProject
-----------------------------------------------PhysicalOlapScan[item]
+----------------------------------------------PhysicalOlapScan[store_sales]
apply RFs: RF12 RF13
+--------------------------------------------PhysicalDistribute[DistributionSpecReplicated]
+----------------------------------------------PhysicalProject
+------------------------------------------------filter((date_dim.d_moy = 11)
and (date_dim.d_year = 2002))
+--------------------------------------------------PhysicalOlapScan[date_dim]
+----------------------------------------PhysicalDistribute[DistributionSpecHash]
+------------------------------------------PhysicalProject
+--------------------------------------------PhysicalOlapScan[item]
----------------------------PhysicalDistribute[DistributionSpecReplicated]
------------------------------PhysicalAssertNumRows
--------------------------------PhysicalDistribute[DistributionSpecGather]
----------------------------------PhysicalCteConsumer ( cteId=CTEId#1 )
------------------------PhysicalProject
--------------------------NestedLoopJoin[INNER_JOIN](cast(sales as DOUBLE) >
cast(average_sales as DOUBLE))
-----------------------------PhysicalProject
-------------------------------hashAgg[GLOBAL]
---------------------------------PhysicalDistribute[DistributionSpecHash]
-----------------------------------hashAgg[LOCAL]
-------------------------------------PhysicalProject
---------------------------------------hashJoin[RIGHT_SEMI_JOIN]
hashCondition=((catalog_sales.cs_item_sk = cross_items.ss_item_sk))
otherCondition=() build RFs:RF17 cs_item_sk->[ss_item_sk]
+----------------------------hashAgg[GLOBAL]
+------------------------------PhysicalDistribute[DistributionSpecHash]
+--------------------------------hashAgg[LOCAL]
+----------------------------------PhysicalProject
+------------------------------------hashJoin[RIGHT_SEMI_JOIN]
hashCondition=((catalog_sales.cs_item_sk = cross_items.ss_item_sk))
otherCondition=() build RFs:RF17 cs_item_sk->[ss_item_sk]
+--------------------------------------PhysicalDistribute[DistributionSpecHash]
+----------------------------------------PhysicalCteConsumer ( cteId=CTEId#0 )
apply RFs: RF17
+--------------------------------------hashJoin[INNER_JOIN]
hashCondition=((catalog_sales.cs_item_sk = item.i_item_sk)) otherCondition=()
build RFs:RF16 i_item_sk->[cs_item_sk]
----------------------------------------PhysicalDistribute[DistributionSpecHash]
-------------------------------------------PhysicalCteConsumer ( cteId=CTEId#0
) apply RFs: RF17
-----------------------------------------hashJoin[INNER_JOIN]
hashCondition=((catalog_sales.cs_item_sk = item.i_item_sk)) otherCondition=()
build RFs:RF16 i_item_sk->[cs_item_sk]
-------------------------------------------PhysicalDistribute[DistributionSpecHash]
---------------------------------------------hashJoin[INNER_JOIN]
hashCondition=((catalog_sales.cs_sold_date_sk = date_dim.d_date_sk))
otherCondition=() build RFs:RF15 d_date_sk->[cs_sold_date_sk]
-----------------------------------------------PhysicalProject
-------------------------------------------------PhysicalOlapScan[catalog_sales]
apply RFs: RF15 RF16
-----------------------------------------------PhysicalDistribute[DistributionSpecReplicated]
-------------------------------------------------PhysicalProject
---------------------------------------------------filter((date_dim.d_moy = 11)
and (date_dim.d_year = 2002))
-----------------------------------------------------PhysicalOlapScan[date_dim]
-------------------------------------------PhysicalDistribute[DistributionSpecHash]
+------------------------------------------hashJoin[INNER_JOIN]
hashCondition=((catalog_sales.cs_sold_date_sk = date_dim.d_date_sk))
otherCondition=() build RFs:RF15 d_date_sk->[cs_sold_date_sk]
--------------------------------------------PhysicalProject
-----------------------------------------------PhysicalOlapScan[item]
+----------------------------------------------PhysicalOlapScan[catalog_sales]
apply RFs: RF15 RF16
+--------------------------------------------PhysicalDistribute[DistributionSpecReplicated]
+----------------------------------------------PhysicalProject
+------------------------------------------------filter((date_dim.d_moy = 11)
and (date_dim.d_year = 2002))
+--------------------------------------------------PhysicalOlapScan[date_dim]
+----------------------------------------PhysicalDistribute[DistributionSpecHash]
+------------------------------------------PhysicalProject
+--------------------------------------------PhysicalOlapScan[item]
----------------------------PhysicalDistribute[DistributionSpecReplicated]
------------------------------PhysicalAssertNumRows
--------------------------------PhysicalDistribute[DistributionSpecGather]
----------------------------------PhysicalCteConsumer ( cteId=CTEId#1 )
------------------------PhysicalProject
--------------------------NestedLoopJoin[INNER_JOIN](cast(sales as DOUBLE) >
cast(average_sales as DOUBLE))
-----------------------------PhysicalProject
-------------------------------hashAgg[GLOBAL]
---------------------------------PhysicalDistribute[DistributionSpecHash]
-----------------------------------hashAgg[LOCAL]
-------------------------------------PhysicalProject
---------------------------------------hashJoin[RIGHT_SEMI_JOIN]
hashCondition=((web_sales.ws_item_sk = cross_items.ss_item_sk))
otherCondition=() build RFs:RF20 ws_item_sk->[ss_item_sk]
+----------------------------hashAgg[GLOBAL]
+------------------------------PhysicalDistribute[DistributionSpecHash]
+--------------------------------hashAgg[LOCAL]
+----------------------------------PhysicalProject
+------------------------------------hashJoin[RIGHT_SEMI_JOIN]
hashCondition=((web_sales.ws_item_sk = cross_items.ss_item_sk))
otherCondition=() build RFs:RF20 ws_item_sk->[ss_item_sk]
+--------------------------------------PhysicalDistribute[DistributionSpecHash]
+----------------------------------------PhysicalCteConsumer ( cteId=CTEId#0 )
apply RFs: RF20
+--------------------------------------hashJoin[INNER_JOIN]
hashCondition=((web_sales.ws_item_sk = item.i_item_sk)) otherCondition=() build
RFs:RF19 i_item_sk->[ws_item_sk]
----------------------------------------PhysicalDistribute[DistributionSpecHash]
-------------------------------------------PhysicalCteConsumer ( cteId=CTEId#0
) apply RFs: RF20
-----------------------------------------hashJoin[INNER_JOIN]
hashCondition=((web_sales.ws_item_sk = item.i_item_sk)) otherCondition=() build
RFs:RF19 i_item_sk->[ws_item_sk]
-------------------------------------------PhysicalDistribute[DistributionSpecHash]
---------------------------------------------hashJoin[INNER_JOIN]
hashCondition=((web_sales.ws_sold_date_sk = date_dim.d_date_sk))
otherCondition=() build RFs:RF18 d_date_sk->[ws_sold_date_sk]
-----------------------------------------------PhysicalProject
-------------------------------------------------PhysicalOlapScan[web_sales]
apply RFs: RF18 RF19
-----------------------------------------------PhysicalDistribute[DistributionSpecReplicated]
-------------------------------------------------PhysicalProject
---------------------------------------------------filter((date_dim.d_moy = 11)
and (date_dim.d_year = 2002))
-----------------------------------------------------PhysicalOlapScan[date_dim]
-------------------------------------------PhysicalDistribute[DistributionSpecHash]
+------------------------------------------hashJoin[INNER_JOIN]
hashCondition=((web_sales.ws_sold_date_sk = date_dim.d_date_sk))
otherCondition=() build RFs:RF18 d_date_sk->[ws_sold_date_sk]
--------------------------------------------PhysicalProject
-----------------------------------------------PhysicalOlapScan[item]
+----------------------------------------------PhysicalOlapScan[web_sales]
apply RFs: RF18 RF19
+--------------------------------------------PhysicalDistribute[DistributionSpecReplicated]
+----------------------------------------------PhysicalProject
+------------------------------------------------filter((date_dim.d_moy = 11)
and (date_dim.d_year = 2002))
+--------------------------------------------------PhysicalOlapScan[date_dim]
+----------------------------------------PhysicalDistribute[DistributionSpecHash]
+------------------------------------------PhysicalProject
+--------------------------------------------PhysicalOlapScan[item]
----------------------------PhysicalDistribute[DistributionSpecReplicated]
------------------------------PhysicalAssertNumRows
--------------------------------PhysicalDistribute[DistributionSpecGather]
diff --git a/regression-test/suites/nereids_p0/aggregate/agg_error_msg.groovy
b/regression-test/suites/nereids_p0/aggregate/agg_error_msg.groovy
new file mode 100644
index 00000000000..0b807be9d3a
--- /dev/null
+++ b/regression-test/suites/nereids_p0/aggregate/agg_error_msg.groovy
@@ -0,0 +1,50 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+suite("agg_error_msg") {
+ sql "SET enable_nereids_planner=true"
+ sql "SET enable_fallback_to_original_planner=false"
+ sql "DROP TABLE IF EXISTS
table_20_undef_partitions2_keys3_properties4_distributed_by58;"
+ sql """
+ create table
table_20_undef_partitions2_keys3_properties4_distributed_by58 (
+ pk int,
+ col_int_undef_signed int ,
+ col_int_undef_signed2 int
+ ) engine=olap
+ DUPLICATE KEY(pk, col_int_undef_signed)
+ distributed by hash(pk) buckets 10
+ properties("replication_num" = "1");
+ """
+
+ sql "DROP TABLE IF EXISTS
table_20_undef_partitions2_keys3_properties4_distributed_by53;"
+ sql """
+ create table
table_20_undef_partitions2_keys3_properties4_distributed_by53 (
+ pk int,
+ col_int_undef_signed int ,
+ col_int_undef_signed2 int
+ ) engine=olap
+ DUPLICATE KEY(pk, col_int_undef_signed)
+ distributed by hash(pk) buckets 10
+ properties("replication_num" = "1");
+ """
+ test {
+ sql """SELECT col_int_undef_signed2 col_alias1, col_int_undef_signed
* (SELECT MAX (col_int_undef_signed) FROM
table_20_undef_partitions2_keys3_properties4_distributed_by58 where
table_20_undef_partitions2_keys3_properties4_distributed_by53.pk = pk) AS
col_alias2 FROM table_20_undef_partitions2_keys3_properties4_distributed_by53
GROUP BY GROUPING SETS ((col_int_undef_signed2),()) ;"""
+ exception "pk, col_int_undef_signed not in aggregate's output";
+ }
+}
diff --git
a/regression-test/suites/nereids_p0/aggregate/agg_window_project.groovy
b/regression-test/suites/nereids_p0/aggregate/agg_window_project.groovy
index 0c9ea9d9fde..48d342b4b02 100644
--- a/regression-test/suites/nereids_p0/aggregate/agg_window_project.groovy
+++ b/regression-test/suites/nereids_p0/aggregate/agg_window_project.groovy
@@ -96,6 +96,8 @@ suite("agg_window_project") {
order_qt_select4 """select a, c, sum(sum(b)) over(partition by c order by
c rows between unbounded preceding and current row) from test_window_table2
group by a, c having a > 1;"""
+ order_qt_select5 """select a, c, sum(sum(b)) over(partition by c order by
c rows between unbounded preceding and current row) dd from test_window_table2
group by a, c having dd < 4;"""
+
explain {
sql("select a, c, sum(sum(b)) over(partition by c order by c rows
between unbounded preceding and current row) from test_window_table2 group by
a, c having a > 1;")
contains "ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW"
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]