[fix](Nereids): fix AssertNumRows StatsCalculator (#30053)

This commit is contained in:
jakevin
2024-01-18 17:18:41 +08:00
committed by yiguolei
parent a5ca8833d7
commit 097641b543
9 changed files with 269 additions and 257 deletions

View File

@ -26,6 +26,7 @@ import org.apache.doris.nereids.CascadesContext;
import org.apache.doris.nereids.memo.Group;
import org.apache.doris.nereids.memo.GroupExpression;
import org.apache.doris.nereids.trees.expressions.Alias;
import org.apache.doris.nereids.trees.expressions.AssertNumRowsElement;
import org.apache.doris.nereids.trees.expressions.CTEId;
import org.apache.doris.nereids.trees.expressions.Expression;
import org.apache.doris.nereids.trees.expressions.NamedExpression;
@ -167,7 +168,7 @@ public class StatsCalculator extends DefaultPlanVisitor<Statistics, Void> {
private CascadesContext cascadesContext;
private StatsCalculator(GroupExpression groupExpression, boolean forbidUnknownColStats,
Map<String, ColumnStatistic> columnStatisticMap, boolean isPlayNereidsDump,
Map<String, ColumnStatistic> columnStatisticMap, boolean isPlayNereidsDump,
Map<CTEId, Statistics> cteIdToStats, CascadesContext context) {
this.groupExpression = groupExpression;
this.forbidUnknownColStats = forbidUnknownColStats;
@ -193,7 +194,7 @@ public class StatsCalculator extends DefaultPlanVisitor<Statistics, Void> {
* estimate stats
*/
public static StatsCalculator estimate(GroupExpression groupExpression, boolean forbidUnknownColStats,
Map<String, ColumnStatistic> columnStatisticMap, boolean isPlayNereidsDump,
Map<String, ColumnStatistic> columnStatisticMap, boolean isPlayNereidsDump,
Map<CTEId, Statistics> cteIdToStats, CascadesContext context) {
StatsCalculator statsCalculator = new StatsCalculator(
groupExpression, forbidUnknownColStats, columnStatisticMap, isPlayNereidsDump, cteIdToStats, context);
@ -369,7 +370,7 @@ public class StatsCalculator extends DefaultPlanVisitor<Statistics, Void> {
@Override
public Statistics visitLogicalAssertNumRows(
LogicalAssertNumRows<? extends Plan> assertNumRows, Void context) {
return computeAssertNumRows(assertNumRows.getAssertNumRowsElement().getDesiredNumOfRows());
return computeAssertNumRows(assertNumRows.getAssertNumRowsElement());
}
@Override
@ -533,7 +534,7 @@ public class StatsCalculator extends DefaultPlanVisitor<Statistics, Void> {
@Override
public Statistics visitPhysicalAssertNumRows(PhysicalAssertNumRows<? extends Plan> assertNumRows,
Void context) {
return computeAssertNumRows(assertNumRows.getAssertNumRowsElement().getDesiredNumOfRows());
return computeAssertNumRows(assertNumRows.getAssertNumRowsElement());
}
@Override
@ -556,11 +557,34 @@ public class StatsCalculator extends DefaultPlanVisitor<Statistics, Void> {
return computeGenerate(generate);
}
private Statistics computeAssertNumRows(long desiredNumOfRows) {
private Statistics computeAssertNumRows(AssertNumRowsElement assertNumRowsElement) {
Statistics statistics = groupExpression.childStatistics(0);
statistics.withRowCountAndEnforceValid(Math.min(1, statistics.getRowCount()));
statistics = new StatisticsBuilder(statistics).setWidthInJoinCluster(1).build();
return statistics;
long newRowCount;
long rowCount = (long) statistics.getRowCount();
long desiredNumOfRows = assertNumRowsElement.getDesiredNumOfRows();
switch (assertNumRowsElement.getAssertion()) {
case EQ:
newRowCount = desiredNumOfRows;
break;
case GE:
newRowCount = statistics.getRowCount() >= desiredNumOfRows ? rowCount : desiredNumOfRows;
break;
case GT:
newRowCount = statistics.getRowCount() > desiredNumOfRows ? rowCount : desiredNumOfRows;
break;
case LE:
newRowCount = statistics.getRowCount() <= desiredNumOfRows ? rowCount : desiredNumOfRows;
break;
case LT:
newRowCount = statistics.getRowCount() < desiredNumOfRows ? rowCount : desiredNumOfRows;
break;
case NE:
return statistics;
default:
throw new IllegalArgumentException("Unknown assertion: " + assertNumRowsElement.getAssertion());
}
Statistics newStatistics = statistics.withRowCountAndEnforceValid(newRowCount);
return new StatisticsBuilder(newStatistics).setWidthInJoinCluster(1).build();
}
private Statistics computeFilter(Filter filter) {
@ -610,7 +634,7 @@ public class StatsCalculator extends DefaultPlanVisitor<Statistics, Void> {
}
} else {
return Env.getCurrentEnv().getStatisticsCache().getColumnStatistics(
catalogId, dbId, table.getId(), colName);
catalogId, dbId, table.getId(), colName);
}
}
@ -701,7 +725,7 @@ public class StatsCalculator extends DefaultPlanVisitor<Statistics, Void> {
rowCount = rowCount * DEFAULT_COLUMN_NDV_RATIO;
} else {
rowCount = Math.min(rowCount, partitionByKeyStats.stream().map(s -> s.ndv)
.max(Double::compare).get() * partitionTopN.getPartitionLimit());
.max(Double::compare).get() * partitionTopN.getPartitionLimit());
}
} else {
rowCount = Math.min(rowCount, partitionTopN.getPartitionLimit());

View File

@ -13,12 +13,64 @@ PhysicalResultSink
--------------------PhysicalDistribute[DistributionSpecHash]
----------------------hashAgg[LOCAL]
------------------------PhysicalProject
--------------------------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]
--------------------------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]
----------------------------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))
------------------------------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: RF6 RF7
--------------------------------PhysicalDistribute[DistributionSpecReplicated]
----------------------------------PhysicalProject
------------------------------------PhysicalOlapScan[date_dim] apply RFs: RF7
------------------------------------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: 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:RF2 customer_sk->[c_customer_sk]
------------------------------------------------------PhysicalProject
--------------------------------------------------------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=() 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 RF1
------------------------------------------------------------------PhysicalDistribute[DistributionSpecHash]
--------------------------------------------------------------------PhysicalProject
----------------------------------------------------------------------PhysicalOlapScan[web_sales] apply RFs: RF0 RF1
----------------------------------------------------------------PhysicalDistribute[DistributionSpecReplicated]
------------------------------------------------------------------PhysicalProject
--------------------------------------------------------------------filter((item.i_category = 'Music') and (item.i_class = 'country'))
----------------------------------------------------------------------PhysicalOlapScan[item]
------------------------------------------------------------PhysicalDistribute[DistributionSpecReplicated]
--------------------------------------------------------------PhysicalProject
----------------------------------------------------------------filter((date_dim.d_moy = 1) and (date_dim.d_year = 1999))
------------------------------------------------------------------PhysicalOlapScan[date_dim]
--------------------------------------PhysicalDistribute[DistributionSpecReplicated]
----------------------------------------PhysicalProject
------------------------------------------PhysicalOlapScan[store]
----------------------------PhysicalDistribute[DistributionSpecReplicated]
------------------------------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]
------------------------------------PhysicalDistribute[DistributionSpecReplicated]
--------------------------------------PhysicalAssertNumRows
----------------------------------------PhysicalDistribute[DistributionSpecGather]
------------------------------------------hashAgg[GLOBAL]
--------------------------------------------PhysicalDistribute[DistributionSpecHash]
----------------------------------------------hashAgg[LOCAL]
------------------------------------------------PhysicalProject
--------------------------------------------------filter((date_dim.d_moy = 1) and (date_dim.d_year = 1999))
----------------------------------------------------PhysicalOlapScan[date_dim]
----------------------------------PhysicalDistribute[DistributionSpecReplicated]
------------------------------------PhysicalAssertNumRows
--------------------------------------PhysicalDistribute[DistributionSpecGather]
@ -28,56 +80,4 @@ PhysicalResultSink
----------------------------------------------PhysicalProject
------------------------------------------------filter((date_dim.d_moy = 1) and (date_dim.d_year = 1999))
--------------------------------------------------PhysicalOlapScan[date_dim]
--------------------------------PhysicalDistribute[DistributionSpecReplicated]
----------------------------------PhysicalAssertNumRows
------------------------------------PhysicalDistribute[DistributionSpecGather]
--------------------------------------hashAgg[GLOBAL]
----------------------------------------PhysicalDistribute[DistributionSpecHash]
------------------------------------------hashAgg[LOCAL]
--------------------------------------------PhysicalProject
----------------------------------------------filter((date_dim.d_moy = 1) and (date_dim.d_year = 1999))
------------------------------------------------PhysicalOlapScan[date_dim]
----------------------------PhysicalDistribute[DistributionSpecHash]
------------------------------PhysicalProject
--------------------------------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: 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: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: 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:RF2 customer_sk->[c_customer_sk]
--------------------------------------------------------PhysicalProject
----------------------------------------------------------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=() 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 RF1
--------------------------------------------------------------------PhysicalDistribute[DistributionSpecHash]
----------------------------------------------------------------------PhysicalProject
------------------------------------------------------------------------PhysicalOlapScan[web_sales] apply RFs: RF0 RF1
------------------------------------------------------------------PhysicalDistribute[DistributionSpecReplicated]
--------------------------------------------------------------------PhysicalProject
----------------------------------------------------------------------filter((item.i_category = 'Music') and (item.i_class = 'country'))
------------------------------------------------------------------------PhysicalOlapScan[item]
--------------------------------------------------------------PhysicalDistribute[DistributionSpecReplicated]
----------------------------------------------------------------PhysicalProject
------------------------------------------------------------------filter((date_dim.d_moy = 1) and (date_dim.d_year = 1999))
--------------------------------------------------------------------PhysicalOlapScan[date_dim]
----------------------------------------PhysicalDistribute[DistributionSpecReplicated]
------------------------------------------PhysicalProject
--------------------------------------------PhysicalOlapScan[store]

View File

@ -10,44 +10,44 @@ PhysicalResultSink
--------------PhysicalDistribute[DistributionSpecHash]
----------------hashAgg[LOCAL]
------------------PhysicalProject
--------------------hashJoin[INNER_JOIN] hashCondition=((c.c_customer_sk = s.ss_customer_sk)) otherCondition=() build RFs:RF5 c_customer_sk->[ss_customer_sk]
--------------------hashJoin[INNER_JOIN] hashCondition=((a.ca_address_sk = c.c_current_addr_sk)) otherCondition=() build RFs:RF5 c_current_addr_sk->[ca_address_sk]
----------------------PhysicalProject
------------------------PhysicalOlapScan[customer_address] apply RFs: RF5
----------------------PhysicalDistribute[DistributionSpecHash]
------------------------PhysicalProject
--------------------------hashJoin[INNER_JOIN] hashCondition=((s.ss_item_sk = i.i_item_sk)) otherCondition=() build RFs:RF4 i_item_sk->[ss_item_sk]
----------------------------PhysicalProject
------------------------------hashJoin[INNER_JOIN] hashCondition=((s.ss_sold_date_sk = d.d_date_sk)) otherCondition=() build RFs:RF3 d_date_sk->[ss_sold_date_sk]
--------------------------------PhysicalProject
----------------------------------PhysicalOlapScan[store_sales] apply RFs: RF3 RF4 RF5
--------------------------------PhysicalDistribute[DistributionSpecReplicated]
----------------------------------hashJoin[INNER_JOIN] hashCondition=((d.d_month_seq = date_dim.d_month_seq)) otherCondition=() build RFs:RF2 d_month_seq->[d_month_seq]
--------------------------hashJoin[INNER_JOIN] hashCondition=((c.c_customer_sk = s.ss_customer_sk)) otherCondition=() build RFs:RF4 ss_customer_sk->[c_customer_sk]
----------------------------PhysicalDistribute[DistributionSpecHash]
------------------------------PhysicalProject
--------------------------------PhysicalOlapScan[customer] apply RFs: RF4
----------------------------PhysicalDistribute[DistributionSpecHash]
------------------------------PhysicalProject
--------------------------------hashJoin[INNER_JOIN] hashCondition=((s.ss_item_sk = i.i_item_sk)) otherCondition=() build RFs:RF3 i_item_sk->[ss_item_sk]
----------------------------------PhysicalDistribute[DistributionSpecHash]
------------------------------------PhysicalProject
--------------------------------------PhysicalOlapScan[date_dim] apply RFs: RF2
------------------------------------PhysicalDistribute[DistributionSpecReplicated]
--------------------------------------PhysicalAssertNumRows
----------------------------------------PhysicalDistribute[DistributionSpecGather]
------------------------------------------hashAgg[GLOBAL]
--------------------------------------------PhysicalDistribute[DistributionSpecHash]
----------------------------------------------hashAgg[LOCAL]
------------------------------------------------PhysicalProject
--------------------------------------------------filter((date_dim.d_moy = 3) and (date_dim.d_year = 2002))
----------------------------------------------------PhysicalOlapScan[date_dim]
----------------------------PhysicalDistribute[DistributionSpecReplicated]
------------------------------hashJoin[INNER_JOIN] hashCondition=((j.i_category = i.i_category)) otherCondition=((cast(i_current_price as DECIMALV3(38, 5)) > (1.2 * avg(cast(i_current_price as DECIMALV3(9, 4)))))) build RFs:RF1 i_category->[i_category]
--------------------------------PhysicalProject
----------------------------------PhysicalOlapScan[item] apply RFs: RF1
--------------------------------PhysicalDistribute[DistributionSpecReplicated]
----------------------------------hashAgg[GLOBAL]
------------------------------------PhysicalDistribute[DistributionSpecHash]
--------------------------------------hashAgg[LOCAL]
--------------------------------------hashJoin[INNER_JOIN] hashCondition=((s.ss_sold_date_sk = d.d_date_sk)) otherCondition=() build RFs:RF2 d_date_sk->[ss_sold_date_sk]
----------------------------------------PhysicalProject
------------------------------------------PhysicalOlapScan[item]
----------------------PhysicalDistribute[DistributionSpecHash]
------------------------PhysicalProject
--------------------------hashJoin[INNER_JOIN] hashCondition=((a.ca_address_sk = c.c_current_addr_sk)) otherCondition=() build RFs:RF0 ca_address_sk->[c_current_addr_sk]
----------------------------PhysicalDistribute[DistributionSpecHash]
------------------------------PhysicalProject
--------------------------------PhysicalOlapScan[customer] apply RFs: RF0
----------------------------PhysicalDistribute[DistributionSpecHash]
------------------------------PhysicalProject
--------------------------------PhysicalOlapScan[customer_address]
------------------------------------------PhysicalOlapScan[store_sales] apply RFs: RF2 RF3
----------------------------------------PhysicalDistribute[DistributionSpecReplicated]
------------------------------------------hashJoin[INNER_JOIN] hashCondition=((d.d_month_seq = date_dim.d_month_seq)) otherCondition=() build RFs:RF1 d_month_seq->[d_month_seq]
--------------------------------------------PhysicalProject
----------------------------------------------PhysicalOlapScan[date_dim] apply RFs: RF1
--------------------------------------------PhysicalDistribute[DistributionSpecReplicated]
----------------------------------------------PhysicalAssertNumRows
------------------------------------------------PhysicalDistribute[DistributionSpecGather]
--------------------------------------------------hashAgg[GLOBAL]
----------------------------------------------------PhysicalDistribute[DistributionSpecHash]
------------------------------------------------------hashAgg[LOCAL]
--------------------------------------------------------PhysicalProject
----------------------------------------------------------filter((date_dim.d_moy = 3) and (date_dim.d_year = 2002))
------------------------------------------------------------PhysicalOlapScan[date_dim]
----------------------------------PhysicalDistribute[DistributionSpecHash]
------------------------------------hashJoin[INNER_JOIN] hashCondition=((j.i_category = i.i_category)) otherCondition=((cast(i_current_price as DECIMALV3(38, 5)) > (1.2 * avg(cast(i_current_price as DECIMALV3(9, 4)))))) build RFs:RF0 i_category->[i_category]
--------------------------------------PhysicalProject
----------------------------------------PhysicalOlapScan[item] apply RFs: RF0
--------------------------------------PhysicalDistribute[DistributionSpecReplicated]
----------------------------------------hashAgg[GLOBAL]
------------------------------------------PhysicalDistribute[DistributionSpecHash]
--------------------------------------------hashAgg[LOCAL]
----------------------------------------------PhysicalProject
------------------------------------------------PhysicalOlapScan[item]

View File

@ -28,10 +28,9 @@ PhysicalResultSink
------------------------------------PhysicalDistribute[DistributionSpecHash]
--------------------------------------PhysicalProject
----------------------------------------hashJoin[INNER_JOIN] hashCondition=((date_dim.d_week_seq = date_dim.d_week_seq)) otherCondition=() build RFs:RF8 d_week_seq->[d_week_seq]
------------------------------------------PhysicalDistribute[DistributionSpecHash]
--------------------------------------------PhysicalProject
----------------------------------------------PhysicalOlapScan[date_dim] apply RFs: RF8
------------------------------------------PhysicalDistribute[DistributionSpecHash]
------------------------------------------PhysicalProject
--------------------------------------------PhysicalOlapScan[date_dim] apply RFs: RF8
------------------------------------------PhysicalDistribute[DistributionSpecReplicated]
--------------------------------------------PhysicalAssertNumRows
----------------------------------------------PhysicalDistribute[DistributionSpecGather]
------------------------------------------------PhysicalProject
@ -59,10 +58,9 @@ PhysicalResultSink
------------------------------------PhysicalDistribute[DistributionSpecHash]
--------------------------------------PhysicalProject
----------------------------------------hashJoin[INNER_JOIN] hashCondition=((date_dim.d_week_seq = date_dim.d_week_seq)) otherCondition=() build RFs:RF4 d_week_seq->[d_week_seq]
------------------------------------------PhysicalDistribute[DistributionSpecHash]
--------------------------------------------PhysicalProject
----------------------------------------------PhysicalOlapScan[date_dim] apply RFs: RF4
------------------------------------------PhysicalDistribute[DistributionSpecHash]
------------------------------------------PhysicalProject
--------------------------------------------PhysicalOlapScan[date_dim] apply RFs: RF4
------------------------------------------PhysicalDistribute[DistributionSpecReplicated]
--------------------------------------------PhysicalAssertNumRows
----------------------------------------------PhysicalDistribute[DistributionSpecGather]
------------------------------------------------PhysicalProject
@ -90,10 +88,9 @@ PhysicalResultSink
--------------------------------PhysicalDistribute[DistributionSpecHash]
----------------------------------PhysicalProject
------------------------------------hashJoin[INNER_JOIN] hashCondition=((date_dim.d_week_seq = date_dim.d_week_seq)) otherCondition=() build RFs:RF0 d_week_seq->[d_week_seq]
--------------------------------------PhysicalDistribute[DistributionSpecHash]
----------------------------------------PhysicalProject
------------------------------------------PhysicalOlapScan[date_dim] apply RFs: RF0
--------------------------------------PhysicalDistribute[DistributionSpecHash]
--------------------------------------PhysicalProject
----------------------------------------PhysicalOlapScan[date_dim] apply RFs: RF0
--------------------------------------PhysicalDistribute[DistributionSpecReplicated]
----------------------------------------PhysicalAssertNumRows
------------------------------------------PhysicalDistribute[DistributionSpecGather]
--------------------------------------------PhysicalProject

View File

@ -28,10 +28,9 @@ PhysicalResultSink
------------------------------------PhysicalDistribute[DistributionSpecHash]
--------------------------------------PhysicalProject
----------------------------------------hashJoin[INNER_JOIN] hashCondition=((date_dim.d_week_seq = date_dim.d_week_seq)) otherCondition=() build RFs:RF8 d_week_seq->[d_week_seq]
------------------------------------------PhysicalDistribute[DistributionSpecHash]
--------------------------------------------PhysicalProject
----------------------------------------------PhysicalOlapScan[date_dim] apply RFs: RF8 RF9
------------------------------------------PhysicalDistribute[DistributionSpecHash]
------------------------------------------PhysicalProject
--------------------------------------------PhysicalOlapScan[date_dim] apply RFs: RF8 RF9
------------------------------------------PhysicalDistribute[DistributionSpecReplicated]
--------------------------------------------PhysicalAssertNumRows
----------------------------------------------PhysicalDistribute[DistributionSpecGather]
------------------------------------------------PhysicalProject
@ -59,10 +58,9 @@ PhysicalResultSink
------------------------------------PhysicalDistribute[DistributionSpecHash]
--------------------------------------PhysicalProject
----------------------------------------hashJoin[INNER_JOIN] hashCondition=((date_dim.d_week_seq = date_dim.d_week_seq)) otherCondition=() build RFs:RF4 d_week_seq->[d_week_seq]
------------------------------------------PhysicalDistribute[DistributionSpecHash]
--------------------------------------------PhysicalProject
----------------------------------------------PhysicalOlapScan[date_dim] apply RFs: RF4 RF5
------------------------------------------PhysicalDistribute[DistributionSpecHash]
------------------------------------------PhysicalProject
--------------------------------------------PhysicalOlapScan[date_dim] apply RFs: RF4 RF5
------------------------------------------PhysicalDistribute[DistributionSpecReplicated]
--------------------------------------------PhysicalAssertNumRows
----------------------------------------------PhysicalDistribute[DistributionSpecGather]
------------------------------------------------PhysicalProject
@ -90,10 +88,9 @@ PhysicalResultSink
--------------------------------PhysicalDistribute[DistributionSpecHash]
----------------------------------PhysicalProject
------------------------------------hashJoin[INNER_JOIN] hashCondition=((date_dim.d_week_seq = date_dim.d_week_seq)) otherCondition=() build RFs:RF0 d_week_seq->[d_week_seq]
--------------------------------------PhysicalDistribute[DistributionSpecHash]
----------------------------------------PhysicalProject
------------------------------------------PhysicalOlapScan[date_dim] apply RFs: RF0 RF1
--------------------------------------PhysicalDistribute[DistributionSpecHash]
--------------------------------------PhysicalProject
----------------------------------------PhysicalOlapScan[date_dim] apply RFs: RF0 RF1
--------------------------------------PhysicalDistribute[DistributionSpecReplicated]
----------------------------------------PhysicalAssertNumRows
------------------------------------------PhysicalDistribute[DistributionSpecGather]
--------------------------------------------PhysicalProject

View File

@ -13,73 +13,71 @@ PhysicalResultSink
--------------------PhysicalDistribute[DistributionSpecHash]
----------------------hashAgg[LOCAL]
------------------------PhysicalProject
--------------------------NestedLoopJoin[INNER_JOIN](cast(d_month_seq as BIGINT) <= (d_month_seq + 3))
--------------------------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]
----------------------------PhysicalProject
------------------------------NestedLoopJoin[INNER_JOIN](cast(d_month_seq as BIGINT) >= (d_month_seq + 1))
------------------------------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
----------------------------------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:RF6 c_customer_sk->[ss_customer_sk]
----------------------------------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: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: RF3 RF4 RF5
----------------------------------------PhysicalDistribute[DistributionSpecHash]
------------------------------------------PhysicalProject
--------------------------------------------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: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]
--------------------------------------------hashAgg[GLOBAL]
----------------------------------------------PhysicalDistribute[DistributionSpecHash]
------------------------------------------------hashAgg[LOCAL]
--------------------------------------------------PhysicalProject
----------------------------------------------------PhysicalOlapScan[customer_address] apply RFs: RF3 RF4 RF5
--------------------------------------------------PhysicalDistribute[DistributionSpecHash]
----------------------------------------------------PhysicalProject
------------------------------------------------------hashAgg[GLOBAL]
--------------------------------------------------------PhysicalDistribute[DistributionSpecHash]
----------------------------------------------------------hashAgg[LOCAL]
----------------------------------------------------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: RF2
------------------------------------------------------PhysicalDistribute[DistributionSpecReplicated]
--------------------------------------------------------PhysicalProject
----------------------------------------------------------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=((customer.c_customer_sk = cs_or_ws_sales.customer_sk)) otherCondition=() build RFs:RF2 customer_sk->[c_customer_sk]
----------------------------------------------------------------PhysicalProject
------------------------------------------------------------------PhysicalOlapScan[customer] apply RFs: RF2
--------------------------------------------------------------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 RF1
------------------------------------------------------------------PhysicalDistribute[DistributionSpecHash]
--------------------------------------------------------------------PhysicalProject
----------------------------------------------------------------------PhysicalOlapScan[web_sales] apply RFs: RF0 RF1
----------------------------------------------------------------PhysicalDistribute[DistributionSpecReplicated]
------------------------------------------------------------------PhysicalProject
--------------------------------------------------------------------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 RF1
----------------------------------------------------------------------------PhysicalDistribute[DistributionSpecHash]
------------------------------------------------------------------------------PhysicalProject
--------------------------------------------------------------------------------PhysicalOlapScan[web_sales] apply RFs: RF0 RF1
--------------------------------------------------------------------------PhysicalDistribute[DistributionSpecReplicated]
----------------------------------------------------------------------------PhysicalProject
------------------------------------------------------------------------------filter((item.i_category = 'Women') and (item.i_class = 'maternity'))
--------------------------------------------------------------------------------PhysicalOlapScan[item]
----------------------------------------------------------------------PhysicalDistribute[DistributionSpecReplicated]
------------------------------------------------------------------------PhysicalProject
--------------------------------------------------------------------------filter((date_dim.d_moy = 5) and (date_dim.d_year = 1998))
----------------------------------------------------------------------------PhysicalOlapScan[date_dim]
------------------------------------------------PhysicalDistribute[DistributionSpecReplicated]
--------------------------------------------------PhysicalProject
----------------------------------------------------PhysicalOlapScan[store]
------------------------------------PhysicalDistribute[DistributionSpecHash]
--------------------------------------PhysicalProject
----------------------------------------PhysicalOlapScan[date_dim]
--------------------------------PhysicalDistribute[DistributionSpecReplicated]
----------------------------------PhysicalAssertNumRows
------------------------------------PhysicalDistribute[DistributionSpecGather]
--------------------------------------hashAgg[GLOBAL]
----------------------------------------PhysicalDistribute[DistributionSpecHash]
------------------------------------------hashAgg[LOCAL]
--------------------------------------------PhysicalProject
----------------------------------------------filter((date_dim.d_moy = 5) and (date_dim.d_year = 1998))
------------------------------------------------PhysicalOlapScan[date_dim]
----------------------------PhysicalDistribute[DistributionSpecReplicated]
------------------------------PhysicalAssertNumRows
--------------------------------PhysicalDistribute[DistributionSpecGather]
----------------------------------hashAgg[GLOBAL]
------------------------------------PhysicalDistribute[DistributionSpecHash]
--------------------------------------hashAgg[LOCAL]
--------------------------------------------------------------------filter((item.i_category = 'Women') and (item.i_class = 'maternity'))
----------------------------------------------------------------------PhysicalOlapScan[item]
------------------------------------------------------------PhysicalDistribute[DistributionSpecReplicated]
--------------------------------------------------------------PhysicalProject
----------------------------------------------------------------filter((date_dim.d_moy = 5) and (date_dim.d_year = 1998))
------------------------------------------------------------------PhysicalOlapScan[date_dim]
--------------------------------------PhysicalDistribute[DistributionSpecReplicated]
----------------------------------------PhysicalProject
------------------------------------------filter((date_dim.d_moy = 5) and (date_dim.d_year = 1998))
--------------------------------------------PhysicalOlapScan[date_dim]
------------------------------------------PhysicalOlapScan[store]
----------------------------PhysicalDistribute[DistributionSpecReplicated]
------------------------------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]
------------------------------------PhysicalDistribute[DistributionSpecReplicated]
--------------------------------------PhysicalAssertNumRows
----------------------------------------PhysicalDistribute[DistributionSpecGather]
------------------------------------------hashAgg[GLOBAL]
--------------------------------------------PhysicalDistribute[DistributionSpecHash]
----------------------------------------------hashAgg[LOCAL]
------------------------------------------------PhysicalProject
--------------------------------------------------filter((date_dim.d_moy = 5) and (date_dim.d_year = 1998))
----------------------------------------------------PhysicalOlapScan[date_dim]
----------------------------------PhysicalDistribute[DistributionSpecReplicated]
------------------------------------PhysicalAssertNumRows
--------------------------------------PhysicalDistribute[DistributionSpecGather]
----------------------------------------hashAgg[GLOBAL]
------------------------------------------PhysicalDistribute[DistributionSpecHash]
--------------------------------------------hashAgg[LOCAL]
----------------------------------------------PhysicalProject
------------------------------------------------filter((date_dim.d_moy = 5) and (date_dim.d_year = 1998))
--------------------------------------------------PhysicalOlapScan[date_dim]

View File

@ -10,7 +10,9 @@ PhysicalResultSink
--------------PhysicalDistribute[DistributionSpecHash]
----------------hashAgg[LOCAL]
------------------PhysicalProject
--------------------hashJoin[INNER_JOIN] hashCondition=((a.ca_address_sk = c.c_current_addr_sk)) otherCondition=()
--------------------hashJoin[INNER_JOIN] hashCondition=((a.ca_address_sk = c.c_current_addr_sk)) otherCondition=() build RFs:RF5 c_current_addr_sk->[ca_address_sk]
----------------------PhysicalProject
------------------------PhysicalOlapScan[customer_address] apply RFs: RF5
----------------------PhysicalDistribute[DistributionSpecHash]
------------------------PhysicalProject
--------------------------hashJoin[INNER_JOIN] hashCondition=((c.c_customer_sk = s.ss_customer_sk)) otherCondition=() build RFs:RF4 ss_customer_sk->[c_customer_sk]
@ -48,7 +50,4 @@ PhysicalResultSink
--------------------------------------------hashAgg[LOCAL]
----------------------------------------------PhysicalProject
------------------------------------------------PhysicalOlapScan[item]
----------------------PhysicalDistribute[DistributionSpecHash]
------------------------PhysicalProject
--------------------------PhysicalOlapScan[customer_address]

View File

@ -13,73 +13,71 @@ PhysicalResultSink
--------------------PhysicalDistribute[DistributionSpecHash]
----------------------hashAgg[LOCAL]
------------------------PhysicalProject
--------------------------NestedLoopJoin[INNER_JOIN](cast(d_month_seq as BIGINT) <= (d_month_seq + 3))
--------------------------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]
----------------------------PhysicalProject
------------------------------NestedLoopJoin[INNER_JOIN](cast(d_month_seq as BIGINT) >= (d_month_seq + 1))
------------------------------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
----------------------------------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:RF6 c_customer_sk->[ss_customer_sk]
----------------------------------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: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: RF3 RF4 RF5
----------------------------------------PhysicalDistribute[DistributionSpecHash]
------------------------------------------PhysicalProject
--------------------------------------------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: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]
--------------------------------------------hashAgg[GLOBAL]
----------------------------------------------PhysicalDistribute[DistributionSpecHash]
------------------------------------------------hashAgg[LOCAL]
--------------------------------------------------PhysicalProject
----------------------------------------------------PhysicalOlapScan[customer_address] apply RFs: RF3 RF4 RF5
--------------------------------------------------PhysicalDistribute[DistributionSpecHash]
----------------------------------------------------PhysicalProject
------------------------------------------------------hashAgg[GLOBAL]
--------------------------------------------------------PhysicalDistribute[DistributionSpecHash]
----------------------------------------------------------hashAgg[LOCAL]
----------------------------------------------------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: RF2
------------------------------------------------------PhysicalDistribute[DistributionSpecReplicated]
--------------------------------------------------------PhysicalProject
----------------------------------------------------------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=((customer.c_customer_sk = cs_or_ws_sales.customer_sk)) otherCondition=() build RFs:RF2 customer_sk->[c_customer_sk]
----------------------------------------------------------------PhysicalProject
------------------------------------------------------------------PhysicalOlapScan[customer] apply RFs: RF2
--------------------------------------------------------------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 RF1
------------------------------------------------------------------PhysicalDistribute[DistributionSpecHash]
--------------------------------------------------------------------PhysicalProject
----------------------------------------------------------------------PhysicalOlapScan[web_sales] apply RFs: RF0 RF1
----------------------------------------------------------------PhysicalDistribute[DistributionSpecReplicated]
------------------------------------------------------------------PhysicalProject
--------------------------------------------------------------------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 RF1
----------------------------------------------------------------------------PhysicalDistribute[DistributionSpecHash]
------------------------------------------------------------------------------PhysicalProject
--------------------------------------------------------------------------------PhysicalOlapScan[web_sales] apply RFs: RF0 RF1
--------------------------------------------------------------------------PhysicalDistribute[DistributionSpecReplicated]
----------------------------------------------------------------------------PhysicalProject
------------------------------------------------------------------------------filter((item.i_category = 'Women') and (item.i_class = 'maternity'))
--------------------------------------------------------------------------------PhysicalOlapScan[item]
----------------------------------------------------------------------PhysicalDistribute[DistributionSpecReplicated]
------------------------------------------------------------------------PhysicalProject
--------------------------------------------------------------------------filter((date_dim.d_moy = 5) and (date_dim.d_year = 1998))
----------------------------------------------------------------------------PhysicalOlapScan[date_dim]
------------------------------------------------PhysicalDistribute[DistributionSpecReplicated]
--------------------------------------------------PhysicalProject
----------------------------------------------------PhysicalOlapScan[store]
------------------------------------PhysicalDistribute[DistributionSpecHash]
--------------------------------------PhysicalProject
----------------------------------------PhysicalOlapScan[date_dim]
--------------------------------PhysicalDistribute[DistributionSpecReplicated]
----------------------------------PhysicalAssertNumRows
------------------------------------PhysicalDistribute[DistributionSpecGather]
--------------------------------------hashAgg[GLOBAL]
----------------------------------------PhysicalDistribute[DistributionSpecHash]
------------------------------------------hashAgg[LOCAL]
--------------------------------------------PhysicalProject
----------------------------------------------filter((date_dim.d_moy = 5) and (date_dim.d_year = 1998))
------------------------------------------------PhysicalOlapScan[date_dim]
----------------------------PhysicalDistribute[DistributionSpecReplicated]
------------------------------PhysicalAssertNumRows
--------------------------------PhysicalDistribute[DistributionSpecGather]
----------------------------------hashAgg[GLOBAL]
------------------------------------PhysicalDistribute[DistributionSpecHash]
--------------------------------------hashAgg[LOCAL]
--------------------------------------------------------------------filter((item.i_category = 'Women') and (item.i_class = 'maternity'))
----------------------------------------------------------------------PhysicalOlapScan[item]
------------------------------------------------------------PhysicalDistribute[DistributionSpecReplicated]
--------------------------------------------------------------PhysicalProject
----------------------------------------------------------------filter((date_dim.d_moy = 5) and (date_dim.d_year = 1998))
------------------------------------------------------------------PhysicalOlapScan[date_dim]
--------------------------------------PhysicalDistribute[DistributionSpecReplicated]
----------------------------------------PhysicalProject
------------------------------------------filter((date_dim.d_moy = 5) and (date_dim.d_year = 1998))
--------------------------------------------PhysicalOlapScan[date_dim]
------------------------------------------PhysicalOlapScan[store]
----------------------------PhysicalDistribute[DistributionSpecReplicated]
------------------------------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]
------------------------------------PhysicalDistribute[DistributionSpecReplicated]
--------------------------------------PhysicalAssertNumRows
----------------------------------------PhysicalDistribute[DistributionSpecGather]
------------------------------------------hashAgg[GLOBAL]
--------------------------------------------PhysicalDistribute[DistributionSpecHash]
----------------------------------------------hashAgg[LOCAL]
------------------------------------------------PhysicalProject
--------------------------------------------------filter((date_dim.d_moy = 5) and (date_dim.d_year = 1998))
----------------------------------------------------PhysicalOlapScan[date_dim]
----------------------------------PhysicalDistribute[DistributionSpecReplicated]
------------------------------------PhysicalAssertNumRows
--------------------------------------PhysicalDistribute[DistributionSpecGather]
----------------------------------------hashAgg[GLOBAL]
------------------------------------------PhysicalDistribute[DistributionSpecHash]
--------------------------------------------hashAgg[LOCAL]
----------------------------------------------PhysicalProject
------------------------------------------------filter((date_dim.d_moy = 5) and (date_dim.d_year = 1998))
--------------------------------------------------PhysicalOlapScan[date_dim]

View File

@ -10,13 +10,15 @@ PhysicalResultSink
--------------PhysicalDistribute[DistributionSpecHash]
----------------hashAgg[LOCAL]
------------------PhysicalProject
--------------------hashJoin[INNER_JOIN] hashCondition=((a.ca_address_sk = c.c_current_addr_sk)) otherCondition=() build RFs:RF5 ca_address_sk->[c_current_addr_sk]
--------------------hashJoin[INNER_JOIN] hashCondition=((a.ca_address_sk = c.c_current_addr_sk)) otherCondition=() build RFs:RF5 c_current_addr_sk->[ca_address_sk]
----------------------PhysicalProject
------------------------PhysicalOlapScan[customer_address] apply RFs: RF5
----------------------PhysicalDistribute[DistributionSpecHash]
------------------------PhysicalProject
--------------------------hashJoin[INNER_JOIN] hashCondition=((c.c_customer_sk = s.ss_customer_sk)) otherCondition=() build RFs:RF4 ss_customer_sk->[c_customer_sk]
----------------------------PhysicalDistribute[DistributionSpecHash]
------------------------------PhysicalProject
--------------------------------PhysicalOlapScan[customer] apply RFs: RF4 RF5
--------------------------------PhysicalOlapScan[customer] apply RFs: RF4
----------------------------PhysicalDistribute[DistributionSpecHash]
------------------------------PhysicalProject
--------------------------------hashJoin[INNER_JOIN] hashCondition=((s.ss_item_sk = i.i_item_sk)) otherCondition=() build RFs:RF3 i_item_sk->[ss_item_sk]
@ -48,7 +50,4 @@ PhysicalResultSink
--------------------------------------------hashAgg[LOCAL]
----------------------------------------------PhysicalProject
------------------------------------------------PhysicalOlapScan[item]
----------------------PhysicalDistribute[DistributionSpecHash]
------------------------PhysicalProject
--------------------------PhysicalOlapScan[customer_address]