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 bf197ee8d2 [opt](nereids) adjust cost model for BroadCastJoin and PartitionJoin (#20713) bf197ee8d2 is described below commit bf197ee8d2d9e6ccf88184663e4614068bc3edde Author: minghong <engle...@gmail.com> AuthorDate: Fri Jun 16 22:49:04 2023 +0800 [opt](nereids) adjust cost model for BroadCastJoin and PartitionJoin (#20713) we add penalty for broadcast join (bc for brief in the following). the intuition of penalty is as follow: 1. if the build side is very small (< 1M), we prefer bc, and set `penalty=1`, which means no penalty 2. if build side is more than 1M, we consider the ratio of the probe row count to the build row count. the less the ratio is, the higher penalty is. this pr has positive impact on tpch queries. Only q3 is changed. in out test (tpch 1T, 3BE) q3 improved from 5.1sec to 2.5 sec. this pr has positive impact on tpcds queries. test on tpcds sf100 (3BE), cold run improve from 163 sec to 156 sec, hot run improves from 155 sec to 149 sec --- .../org/apache/doris/nereids/cost/CostModelV1.java | 44 +++- .../apache/doris/statistics/ColumnStatistic.java | 4 + .../org/apache/doris/statistics/Statistics.java | 25 ++- .../nereids_tpcds_shape_sf100_p0/shape/query1.out | 5 +- .../nereids_tpcds_shape_sf100_p0/shape/query11.out | 15 +- .../nereids_tpcds_shape_sf100_p0/shape/query12.out | 20 +- .../nereids_tpcds_shape_sf100_p0/shape/query15.out | 13 +- .../nereids_tpcds_shape_sf100_p0/shape/query18.out | 15 +- .../nereids_tpcds_shape_sf100_p0/shape/query27.out | 30 +-- .../nereids_tpcds_shape_sf100_p0/shape/query28.out | 133 ++++++------ .../nereids_tpcds_shape_sf100_p0/shape/query30.out | 3 +- .../nereids_tpcds_shape_sf100_p0/shape/query31.out | 18 +- .../nereids_tpcds_shape_sf100_p0/shape/query33.out | 61 +++--- .../nereids_tpcds_shape_sf100_p0/shape/query38.out | 28 ++- .../nereids_tpcds_shape_sf100_p0/shape/query39.out | 74 +++---- .../nereids_tpcds_shape_sf100_p0/shape/query45.out | 18 +- .../nereids_tpcds_shape_sf100_p0/shape/query46.out | 42 ++-- .../nereids_tpcds_shape_sf100_p0/shape/query56.out | 76 +++---- .../nereids_tpcds_shape_sf100_p0/shape/query59.out | 10 +- .../nereids_tpcds_shape_sf100_p0/shape/query6.out | 36 +-- .../nereids_tpcds_shape_sf100_p0/shape/query60.out | 72 +++--- .../nereids_tpcds_shape_sf100_p0/shape/query64.out | 241 +++++++-------------- .../nereids_tpcds_shape_sf100_p0/shape/query68.out | 5 +- .../nereids_tpcds_shape_sf100_p0/shape/query7.out | 28 +-- .../nereids_tpcds_shape_sf100_p0/shape/query74.out | 15 +- .../nereids_tpcds_shape_sf100_p0/shape/query79.out | 37 ++-- .../nereids_tpcds_shape_sf100_p0/shape/query87.out | 28 ++- .../nereids_tpcds_shape_sf100_p0/shape/query88.out | 93 ++++---- .../nereids_tpcds_shape_sf100_p0/shape/query91.out | 5 +- .../data/nereids_tpch_shape_sf1000_p0/shape/q3.out | 13 +- .../data/nereids_tpch_shape_sf500_p0/shape/q3.out | 13 +- 31 files changed, 594 insertions(+), 626 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/cost/CostModelV1.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/cost/CostModelV1.java index f7f6a94d93..c59b32175c 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/cost/CostModelV1.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/cost/CostModelV1.java @@ -59,6 +59,13 @@ class CostModelV1 extends PlanVisitor<Cost, PlanContext> { */ static final double HEAVY_OPERATOR_PUNISH_FACTOR = 0.0; + // for a join, skew = leftRowCount/rightRowCount + // the higher skew is, the more we prefer broadcast join than shuffle join + // if skew < BROADCAST_JOIN_SKEW_RATIO, broadcast join will be punished, + // the penalty factor is no more than BROADCAST_JOIN_SKEW_PENALTY_LIMIT + static final double BROADCAST_JOIN_SKEW_RATIO = 30.0; + static final double BROADCAST_JOIN_SKEW_PENALTY_LIMIT = 2.0; + public static Cost addChildCost(Plan plan, Cost planCost, Cost childCost, int index) { Preconditions.checkArgument(childCost instanceof CostV1 && planCost instanceof CostV1); CostV1 childCostV1 = (CostV1) childCost; @@ -161,27 +168,28 @@ class CostModelV1 extends PlanVisitor<Cost, PlanContext> { @Override public Cost visitPhysicalDistribute( PhysicalDistribute<? extends Plan> distribute, PlanContext context) { - int kBytes = 1024; Statistics childStatistics = context.getChildStatistics(0); + double intputRowCount = childStatistics.getRowCount(); DistributionSpec spec = distribute.getDistributionSpec(); int beNumber = ConnectContext.get().getEnv().getClusterInfo().getBackendsNumber(true); beNumber = Math.max(1, beNumber); - double dataSize = childStatistics.computeSize() / kBytes; // in K bytes + // shuffle if (spec instanceof DistributionSpecHash) { return CostV1.of( 0, 0, - dataSize / beNumber); + intputRowCount * childStatistics.dataSizeFactor() / beNumber); } // replicate if (spec instanceof DistributionSpecReplicated) { + double dataSize = childStatistics.computeSize(); double memLimit = ConnectContext.get().getSessionVariable().getMaxExecMemByte(); //if build side is big, avoid use broadcast join double rowsLimit = ConnectContext.get().getSessionVariable().getBroadcastRowCountLimit(); double brMemlimit = ConnectContext.get().getSessionVariable().getBroadcastHashtableMemLimitPercentage(); - if (dataSize > memLimit * brMemlimit / kBytes + if (dataSize > memLimit * brMemlimit || childStatistics.getRowCount() > rowsLimit) { return CostV1.of(Double.MAX_VALUE, Double.MAX_VALUE, Double.MAX_VALUE); } @@ -191,7 +199,7 @@ class CostModelV1 extends PlanVisitor<Cost, PlanContext> { return CostV1.of( 0, 0, - dataSize, 0.0); + intputRowCount * childStatistics.dataSizeFactor()); } @@ -200,12 +208,12 @@ class CostModelV1 extends PlanVisitor<Cost, PlanContext> { return CostV1.of( 0, 0, - dataSize / beNumber); + intputRowCount * childStatistics.dataSizeFactor() / beNumber); } // any return CostV1.of( - childStatistics.getRowCount(), + intputRowCount, 0, 0); } @@ -220,6 +228,17 @@ class CostModelV1 extends PlanVisitor<Cost, PlanContext> { return CostV1.of(inputStatistics.getRowCount(), statistics.getRowCount(), 0); } + private double broadCastJoinBalancePenalty(Statistics probeStats, Statistics buildStats) { + // if build side is small enough (<1M), broadcast is also good, no penalty + if (buildStats.computeSize() < 1024 * 1024) { + return 1; + } + double broadcastJoinPenalty = (BROADCAST_JOIN_SKEW_RATIO * buildStats.getRowCount()) / probeStats.getRowCount(); + broadcastJoinPenalty = Math.max(1, broadcastJoinPenalty); + broadcastJoinPenalty = Math.min(BROADCAST_JOIN_SKEW_PENALTY_LIMIT, broadcastJoinPenalty); + return broadcastJoinPenalty; + } + @Override public Cost visitPhysicalHashJoin( PhysicalHashJoin<? extends Plan, ? extends Plan> physicalHashJoin, PlanContext context) { @@ -252,10 +271,19 @@ class CostModelV1 extends PlanVisitor<Cost, PlanContext> { leftRowCount + rightRowCount, penalty); } + + if (context.isBroadcastJoin()) { + double broadcastJoinPenalty = broadCastJoinBalancePenalty(probeStats, buildStats); + return CostV1.of(leftRowCount * broadcastJoinPenalty + rightRowCount + outputRowCount, + rightRowCount, + 0, + 0 + ); + } return CostV1.of(leftRowCount + rightRowCount + outputRowCount, rightRowCount, 0, - penalty + 0 ); } diff --git a/fe/fe-core/src/main/java/org/apache/doris/statistics/ColumnStatistic.java b/fe/fe-core/src/main/java/org/apache/doris/statistics/ColumnStatistic.java index ddfec87c13..47ab57437c 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/statistics/ColumnStatistic.java +++ b/fe/fe-core/src/main/java/org/apache/doris/statistics/ColumnStatistic.java @@ -381,4 +381,8 @@ public class ColumnStatistic { public boolean rangeChanged() { return original != null && (minValue != original.minValue || maxValue != original.maxValue); } + + public boolean isUnKnown() { + return isUnKnown; + } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/statistics/Statistics.java b/fe/fe-core/src/main/java/org/apache/doris/statistics/Statistics.java index 9ec904d418..dd8d470e24 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/statistics/Statistics.java +++ b/fe/fe-core/src/main/java/org/apache/doris/statistics/Statistics.java @@ -27,11 +27,14 @@ import java.util.Map; import java.util.Map.Entry; public class Statistics { + private static int K_BYTES = 1024; + private final double rowCount; private final Map<Expression, ColumnStatistic> expressionToColumnStats; - private double computeSize; + // the byte size of one tuple + private double tupleSize; @Deprecated private double width; @@ -146,13 +149,21 @@ public class Statistics { return this; } - public double computeSize() { - if (computeSize <= 0) { - computeSize = Math.max(1, expressionToColumnStats.values().stream() - .map(s -> s.avgSizeByte).reduce(0D, Double::sum) - ) * rowCount; + private double computeTupleSize() { + if (tupleSize <= 0) { + tupleSize = expressionToColumnStats.values().stream() + .map(s -> s.avgSizeByte).reduce(0D, Double::sum); + tupleSize = Math.max(1, tupleSize); } - return computeSize; + return tupleSize; + } + + public double computeSize() { + return computeTupleSize() * rowCount; + } + + public double dataSizeFactor() { + return computeTupleSize() / K_BYTES; } @Override diff --git a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query1.out b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query1.out index 55315945e9..16ab4a00e2 100644 --- a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query1.out +++ b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query1.out @@ -18,8 +18,9 @@ CteAnchor[cteId= ( CTEId#2=] ) ------PhysicalTopN --------PhysicalProject ----------hashJoin[INNER_JOIN](ctr1.ctr_customer_sk = customer.c_customer_sk) -------------PhysicalProject ---------------PhysicalOlapScan[customer] +------------PhysicalDistribute +--------------PhysicalProject +----------------PhysicalOlapScan[customer] ------------PhysicalDistribute --------------PhysicalProject ----------------hashJoin[LEFT_SEMI_JOIN](ctr1.ctr_store_sk = ctr2.ctr_store_sk)(cast(ctr_total_return as DOUBLE) > cast((avg(ctr_total_return) * 1.2) as DOUBLE)) diff --git a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query11.out b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query11.out index 5175a326ee..f1fd504809 100644 --- a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query11.out +++ b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query11.out @@ -28,14 +28,15 @@ CteAnchor[cteId= ( CTEId#4=] ) --------------hashAgg[LOCAL] ----------------PhysicalProject ------------------hashJoin[INNER_JOIN](customer.c_customer_sk = web_sales.ws_bill_customer_sk) ---------------------hashJoin[INNER_JOIN](web_sales.ws_sold_date_sk = date_dim.d_date_sk) -----------------------PhysicalProject -------------------------filter((('w' = 'w') OR ('w' = 's'))) ---------------------------PhysicalOlapScan[web_sales] -----------------------PhysicalDistribute +--------------------PhysicalDistribute +----------------------hashJoin[INNER_JOIN](web_sales.ws_sold_date_sk = date_dim.d_date_sk) ------------------------PhysicalProject ---------------------------filter(((date_dim.d_year = 2001) OR (date_dim.d_year = 2002))(('w' = 'w') OR ('w' = 's'))) -----------------------------PhysicalOlapScan[date_dim] +--------------------------filter((('w' = 'w') OR ('w' = 's'))) +----------------------------PhysicalOlapScan[web_sales] +------------------------PhysicalDistribute +--------------------------PhysicalProject +----------------------------filter(((date_dim.d_year = 2001) OR (date_dim.d_year = 2002))(('w' = 'w') OR ('w' = 's'))) +------------------------------PhysicalOlapScan[date_dim] --------------------PhysicalDistribute ----------------------PhysicalProject ------------------------filter((('w' = 'w') OR ('w' = 's'))) diff --git a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query12.out b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query12.out index f2846541d3..eb27fab212 100644 --- a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query12.out +++ b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query12.out @@ -12,15 +12,15 @@ PhysicalTopN ------------------hashAgg[LOCAL] --------------------PhysicalProject ----------------------hashJoin[INNER_JOIN](web_sales.ws_item_sk = item.i_item_sk) -------------------------hashJoin[INNER_JOIN](web_sales.ws_sold_date_sk = date_dim.d_date_sk) ---------------------------PhysicalProject -----------------------------PhysicalOlapScan[web_sales] ---------------------------PhysicalDistribute -----------------------------PhysicalProject -------------------------------filter((date_dim.d_date <= 1998-05-06)(date_dim.d_date >= 1998-04-06)) ---------------------------------PhysicalOlapScan[date_dim] ------------------------PhysicalDistribute ---------------------------PhysicalProject -----------------------------filter(i_category IN ('Books', 'Sports', 'Men')) -------------------------------PhysicalOlapScan[item] +--------------------------hashJoin[INNER_JOIN](web_sales.ws_sold_date_sk = date_dim.d_date_sk) +----------------------------PhysicalProject +------------------------------PhysicalOlapScan[web_sales] +----------------------------PhysicalDistribute +------------------------------PhysicalProject +--------------------------------filter((date_dim.d_date <= 1998-05-06)(date_dim.d_date >= 1998-04-06)) +----------------------------------PhysicalOlapScan[date_dim] +------------------------PhysicalProject +--------------------------filter(i_category IN ('Books', 'Sports', 'Men')) +----------------------------PhysicalOlapScan[item] diff --git a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query15.out b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query15.out index 5e4c68f0b5..9d365f0d82 100644 --- a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query15.out +++ b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query15.out @@ -8,13 +8,14 @@ PhysicalTopN ----------hashAgg[LOCAL] ------------PhysicalProject --------------hashJoin[INNER_JOIN](catalog_sales.cs_bill_customer_sk = customer.c_customer_sk)((substring(ca_zip, 1, 5) IN ('85669', '86197', '88274', '83405', '86475', '85392', '85460', '80348', '81792') OR ca_state IN ('CA', 'WA', 'GA')) OR (catalog_sales.cs_sales_price > 500.00)) -----------------hashJoin[INNER_JOIN](catalog_sales.cs_sold_date_sk = date_dim.d_date_sk) -------------------PhysicalProject ---------------------PhysicalOlapScan[catalog_sales] -------------------PhysicalDistribute +----------------PhysicalDistribute +------------------hashJoin[INNER_JOIN](catalog_sales.cs_sold_date_sk = date_dim.d_date_sk) --------------------PhysicalProject -----------------------filter((date_dim.d_qoy = 1)(date_dim.d_year = 2001)) -------------------------PhysicalOlapScan[date_dim] +----------------------PhysicalOlapScan[catalog_sales] +--------------------PhysicalDistribute +----------------------PhysicalProject +------------------------filter((date_dim.d_qoy = 1)(date_dim.d_year = 2001)) +--------------------------PhysicalOlapScan[date_dim] ----------------PhysicalDistribute ------------------PhysicalProject --------------------hashJoin[INNER_JOIN](customer.c_current_addr_sk = customer_address.ca_address_sk) diff --git a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query18.out b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query18.out index 0a04c4c0cf..62483c4de0 100644 --- a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query18.out +++ b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query18.out @@ -15,8 +15,9 @@ PhysicalTopN --------------------PhysicalDistribute ----------------------PhysicalProject ------------------------hashJoin[INNER_JOIN](customer.c_current_cdemo_sk = cd2.cd_demo_sk) ---------------------------PhysicalProject -----------------------------PhysicalOlapScan[customer_demographics] +--------------------------PhysicalDistribute +----------------------------PhysicalProject +------------------------------PhysicalOlapScan[customer_demographics] --------------------------PhysicalDistribute ----------------------------PhysicalProject ------------------------------hashJoin[INNER_JOIN](catalog_sales.cs_sold_date_sk = date_dim.d_date_sk) @@ -28,13 +29,13 @@ PhysicalTopN ------------------------------------------PhysicalOlapScan[catalog_sales] ----------------------------------------PhysicalDistribute ------------------------------------------hashJoin[INNER_JOIN](customer.c_current_addr_sk = customer_address.ca_address_sk) ---------------------------------------------PhysicalProject -----------------------------------------------filter(c_birth_month IN (1, 2, 4, 7, 8, 10)) -------------------------------------------------PhysicalOlapScan[customer] --------------------------------------------PhysicalDistribute ----------------------------------------------PhysicalProject -------------------------------------------------filter(ca_state IN ('WA', 'GA', 'NC', 'ME', 'WY', 'OK', 'IN')) ---------------------------------------------------PhysicalOlapScan[customer_address] +------------------------------------------------filter(c_birth_month IN (1, 2, 4, 7, 8, 10)) +--------------------------------------------------PhysicalOlapScan[customer] +--------------------------------------------PhysicalProject +----------------------------------------------filter(ca_state IN ('WA', 'GA', 'NC', 'ME', 'WY', 'OK', 'IN')) +------------------------------------------------PhysicalOlapScan[customer_address] ------------------------------------PhysicalDistribute --------------------------------------PhysicalProject ----------------------------------------filter((cast(cd_gender as VARCHAR(*)) = 'F')(cast(cd_education_status as VARCHAR(*)) = 'Advanced Degree')) diff --git a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query27.out b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query27.out index 6ba9188d01..f1fec2b391 100644 --- a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query27.out +++ b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query27.out @@ -11,23 +11,23 @@ PhysicalTopN ----------------PhysicalRepeat ------------------PhysicalProject --------------------hashJoin[INNER_JOIN](store_sales.ss_store_sk = store.s_store_sk) -----------------------PhysicalProject -------------------------hashJoin[INNER_JOIN](store_sales.ss_item_sk = item.i_item_sk) ---------------------------hashJoin[INNER_JOIN](store_sales.ss_sold_date_sk = date_dim.d_date_sk) -----------------------------hashJoin[INNER_JOIN](store_sales.ss_cdemo_sk = customer_demographics.cd_demo_sk) -------------------------------PhysicalProject ---------------------------------PhysicalOlapScan[store_sales] +----------------------hashJoin[INNER_JOIN](store_sales.ss_item_sk = item.i_item_sk) +------------------------PhysicalDistribute +--------------------------PhysicalProject +----------------------------hashJoin[INNER_JOIN](store_sales.ss_sold_date_sk = date_dim.d_date_sk) +------------------------------hashJoin[INNER_JOIN](store_sales.ss_cdemo_sk = customer_demographics.cd_demo_sk) +--------------------------------PhysicalProject +----------------------------------PhysicalOlapScan[store_sales] +--------------------------------PhysicalDistribute +----------------------------------PhysicalProject +------------------------------------filter((cast(cd_gender as VARCHAR(*)) = 'F')(cast(cd_education_status as VARCHAR(*)) = 'Secondary')(cast(cd_marital_status as VARCHAR(*)) = 'D')) +--------------------------------------PhysicalOlapScan[customer_demographics] ------------------------------PhysicalDistribute --------------------------------PhysicalProject -----------------------------------filter((cast(cd_gender as VARCHAR(*)) = 'F')(cast(cd_education_status as VARCHAR(*)) = 'Secondary')(cast(cd_marital_status as VARCHAR(*)) = 'D')) -------------------------------------PhysicalOlapScan[customer_demographics] -----------------------------PhysicalDistribute -------------------------------PhysicalProject ---------------------------------filter((date_dim.d_year = 1999)) -----------------------------------PhysicalOlapScan[date_dim] ---------------------------PhysicalDistribute -----------------------------PhysicalProject -------------------------------PhysicalOlapScan[item] +----------------------------------filter((date_dim.d_year = 1999)) +------------------------------------PhysicalOlapScan[date_dim] +------------------------PhysicalProject +--------------------------PhysicalOlapScan[item] ----------------------PhysicalDistribute ------------------------PhysicalProject --------------------------filter(s_state IN ('MO', 'AL', 'MI', 'TN', 'LA', 'SC')) diff --git a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query28.out b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query28.out index 37ce5c5f4a..7a07c8ac87 100644 --- a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query28.out +++ b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query28.out @@ -2,31 +2,20 @@ -- !ds_shape_28 -- PhysicalLimit --PhysicalLimit -----NestedLoopJoin[CROSS_JOIN] -------PhysicalLimit +----PhysicalProject +------NestedLoopJoin[CROSS_JOIN] --------PhysicalLimit -----------NestedLoopJoin[CROSS_JOIN] -------------PhysicalLimit +----------PhysicalLimit +------------NestedLoopJoin[CROSS_JOIN] --------------PhysicalLimit -----------------NestedLoopJoin[CROSS_JOIN] -------------------PhysicalLimit +----------------PhysicalLimit +------------------NestedLoopJoin[CROSS_JOIN] --------------------PhysicalLimit -----------------------NestedLoopJoin[CROSS_JOIN] -------------------------PhysicalLimit +----------------------PhysicalLimit +------------------------NestedLoopJoin[CROSS_JOIN] --------------------------PhysicalLimit -----------------------------NestedLoopJoin[CROSS_JOIN] -------------------------------PhysicalLimit ---------------------------------PhysicalLimit -----------------------------------hashAgg[DISTINCT_GLOBAL] -------------------------------------PhysicalDistribute ---------------------------------------hashAgg[DISTINCT_LOCAL] -----------------------------------------hashAgg[GLOBAL] -------------------------------------------PhysicalDistribute ---------------------------------------------hashAgg[LOCAL] -----------------------------------------------PhysicalProject -------------------------------------------------filter((store_sales.ss_quantity <= 5)((((store_sales.ss_list_price >= 131.00) AND (store_sales.ss_list_price <= 141.00)) OR ((store_sales.ss_coupon_amt >= 16798.00) AND (store_sales.ss_coupon_amt <= 17798.00))) OR ((store_sales.ss_wholesale_cost >= 25.00) AND (store_sales.ss_wholesale_cost <= 45.00)))(store_sales.ss_quantity >= 0)) ---------------------------------------------------PhysicalOlapScan[store_sales] -------------------------------PhysicalDistribute +----------------------------PhysicalLimit +------------------------------NestedLoopJoin[CROSS_JOIN] --------------------------------PhysicalLimit ----------------------------------PhysicalLimit ------------------------------------hashAgg[DISTINCT_GLOBAL] @@ -36,54 +25,66 @@ PhysicalLimit --------------------------------------------PhysicalDistribute ----------------------------------------------hashAgg[LOCAL] ------------------------------------------------PhysicalProject ---------------------------------------------------filter((store_sales.ss_quantity <= 10)((((store_sales.ss_list_price >= 145.00) AND (store_sales.ss_list_price <= 155.00)) OR ((store_sales.ss_coupon_amt >= 14792.00) AND (store_sales.ss_coupon_amt <= 15792.00))) OR ((store_sales.ss_wholesale_cost >= 46.00) AND (store_sales.ss_wholesale_cost <= 66.00)))(store_sales.ss_quantity >= 6)) +--------------------------------------------------filter((store_sales.ss_quantity <= 5)((((store_sales.ss_list_price >= 131.00) AND (store_sales.ss_list_price <= 141.00)) OR ((store_sales.ss_coupon_amt >= 16798.00) AND (store_sales.ss_coupon_amt <= 17798.00))) OR ((store_sales.ss_wholesale_cost >= 25.00) AND (store_sales.ss_wholesale_cost <= 45.00)))(store_sales.ss_quantity >= 0)) ----------------------------------------------------PhysicalOlapScan[store_sales] -------------------------PhysicalDistribute ---------------------------PhysicalLimit -----------------------------PhysicalLimit -------------------------------hashAgg[DISTINCT_GLOBAL] --------------------------------PhysicalDistribute -----------------------------------hashAgg[DISTINCT_LOCAL] -------------------------------------hashAgg[GLOBAL] ---------------------------------------PhysicalDistribute -----------------------------------------hashAgg[LOCAL] -------------------------------------------PhysicalProject ---------------------------------------------filter(((((store_sales.ss_list_price >= 1.5E+2) AND (store_sales.ss_list_price <= 1.6E+2)) OR ((store_sales.ss_coupon_amt >= 6.6E+3) AND (store_sales.ss_coupon_amt <= 7.6E+3))) OR ((store_sales.ss_wholesale_cost >= 9.00) AND (store_sales.ss_wholesale_cost <= 29.00)))(store_sales.ss_quantity >= 11)(store_sales.ss_quantity <= 15)) -----------------------------------------------PhysicalOlapScan[store_sales] -------------------PhysicalDistribute ---------------------PhysicalLimit -----------------------PhysicalLimit -------------------------hashAgg[DISTINCT_GLOBAL] +----------------------------------PhysicalLimit +------------------------------------PhysicalLimit +--------------------------------------hashAgg[DISTINCT_GLOBAL] +----------------------------------------PhysicalDistribute +------------------------------------------hashAgg[DISTINCT_LOCAL] +--------------------------------------------hashAgg[GLOBAL] +----------------------------------------------PhysicalDistribute +------------------------------------------------hashAgg[LOCAL] +--------------------------------------------------PhysicalProject +----------------------------------------------------filter((store_sales.ss_quantity <= 10)((((store_sales.ss_list_price >= 145.00) AND (store_sales.ss_list_price <= 155.00)) OR ((store_sales.ss_coupon_amt >= 14792.00) AND (store_sales.ss_coupon_amt <= 15792.00))) OR ((store_sales.ss_wholesale_cost >= 46.00) AND (store_sales.ss_wholesale_cost <= 66.00)))(store_sales.ss_quantity >= 6)) +------------------------------------------------------PhysicalOlapScan[store_sales] --------------------------PhysicalDistribute -----------------------------hashAgg[DISTINCT_LOCAL] -------------------------------hashAgg[GLOBAL] ---------------------------------PhysicalDistribute -----------------------------------hashAgg[LOCAL] -------------------------------------PhysicalProject ---------------------------------------filter((store_sales.ss_quantity <= 20)((((store_sales.ss_list_price >= 91.00) AND (store_sales.ss_list_price <= 101.00)) OR ((store_sales.ss_coupon_amt >= 13493.00) AND (store_sales.ss_coupon_amt <= 14493.00))) OR ((store_sales.ss_wholesale_cost >= 36.00) AND (store_sales.ss_wholesale_cost <= 56.00)))(store_sales.ss_quantity >= 16)) -----------------------------------------PhysicalOlapScan[store_sales] -------------PhysicalDistribute ---------------PhysicalLimit -----------------PhysicalLimit -------------------hashAgg[DISTINCT_GLOBAL] +----------------------------PhysicalLimit +------------------------------PhysicalLimit +--------------------------------hashAgg[DISTINCT_GLOBAL] +----------------------------------PhysicalDistribute +------------------------------------hashAgg[DISTINCT_LOCAL] +--------------------------------------hashAgg[GLOBAL] +----------------------------------------PhysicalDistribute +------------------------------------------hashAgg[LOCAL] +--------------------------------------------PhysicalProject +----------------------------------------------filter(((((store_sales.ss_list_price >= 1.5E+2) AND (store_sales.ss_list_price <= 1.6E+2)) OR ((store_sales.ss_coupon_amt >= 6.6E+3) AND (store_sales.ss_coupon_amt <= 7.6E+3))) OR ((store_sales.ss_wholesale_cost >= 9.00) AND (store_sales.ss_wholesale_cost <= 29.00)))(store_sales.ss_quantity >= 11)(store_sales.ss_quantity <= 15)) +------------------------------------------------PhysicalOlapScan[store_sales] --------------------PhysicalDistribute -----------------------hashAgg[DISTINCT_LOCAL] -------------------------hashAgg[GLOBAL] ---------------------------PhysicalDistribute -----------------------------hashAgg[LOCAL] -------------------------------PhysicalProject ---------------------------------filter(((((store_sales.ss_list_price >= 0.00) AND (store_sales.ss_list_price <= 10.00)) OR ((store_sales.ss_coupon_amt >= 7629.00) AND (store_sales.ss_coupon_amt <= 8629.00))) OR ((store_sales.ss_wholesale_cost >= 6.00) AND (store_sales.ss_wholesale_cost <= 26.00)))(store_sales.ss_quantity <= 25)(store_sales.ss_quantity >= 21)) -----------------------------------PhysicalOlapScan[store_sales] -------PhysicalDistribute ---------PhysicalLimit -----------PhysicalLimit -------------hashAgg[DISTINCT_GLOBAL] +----------------------PhysicalLimit +------------------------PhysicalLimit +--------------------------hashAgg[DISTINCT_GLOBAL] +----------------------------PhysicalDistribute +------------------------------hashAgg[DISTINCT_LOCAL] +--------------------------------hashAgg[GLOBAL] +----------------------------------PhysicalDistribute +------------------------------------hashAgg[LOCAL] +--------------------------------------PhysicalProject +----------------------------------------filter((store_sales.ss_quantity <= 20)((((store_sales.ss_list_price >= 91.00) AND (store_sales.ss_list_price <= 101.00)) OR ((store_sales.ss_coupon_amt >= 13493.00) AND (store_sales.ss_coupon_amt <= 14493.00))) OR ((store_sales.ss_wholesale_cost >= 36.00) AND (store_sales.ss_wholesale_cost <= 56.00)))(store_sales.ss_quantity >= 16)) +------------------------------------------PhysicalOlapScan[store_sales] --------------PhysicalDistribute -----------------hashAgg[DISTINCT_LOCAL] -------------------hashAgg[GLOBAL] ---------------------PhysicalDistribute -----------------------hashAgg[LOCAL] -------------------------PhysicalProject ---------------------------filter((store_sales.ss_quantity >= 26)((((store_sales.ss_list_price >= 89.00) AND (store_sales.ss_list_price <= 99.00)) OR ((store_sales.ss_coupon_amt >= 15257.00) AND (store_sales.ss_coupon_amt <= 16257.00))) OR ((store_sales.ss_wholesale_cost >= 31.00) AND (store_sales.ss_wholesale_cost <= 51.00)))(store_sales.ss_quantity <= 30)) -----------------------------PhysicalOlapScan[store_sales] +----------------PhysicalLimit +------------------PhysicalLimit +--------------------hashAgg[DISTINCT_GLOBAL] +----------------------PhysicalDistribute +------------------------hashAgg[DISTINCT_LOCAL] +--------------------------hashAgg[GLOBAL] +----------------------------PhysicalDistribute +------------------------------hashAgg[LOCAL] +--------------------------------PhysicalProject +----------------------------------filter(((((store_sales.ss_list_price >= 0.00) AND (store_sales.ss_list_price <= 10.00)) OR ((store_sales.ss_coupon_amt >= 7629.00) AND (store_sales.ss_coupon_amt <= 8629.00))) OR ((store_sales.ss_wholesale_cost >= 6.00) AND (store_sales.ss_wholesale_cost <= 26.00)))(store_sales.ss_quantity <= 25)(store_sales.ss_quantity >= 21)) +------------------------------------PhysicalOlapScan[store_sales] +--------PhysicalDistribute +----------PhysicalLimit +------------PhysicalLimit +--------------hashAgg[DISTINCT_GLOBAL] +----------------PhysicalDistribute +------------------hashAgg[DISTINCT_LOCAL] +--------------------hashAgg[GLOBAL] +----------------------PhysicalDistribute +------------------------hashAgg[LOCAL] +--------------------------PhysicalProject +----------------------------filter((store_sales.ss_quantity >= 26)((((store_sales.ss_list_price >= 89.00) AND (store_sales.ss_list_price <= 99.00)) OR ((store_sales.ss_coupon_amt >= 15257.00) AND (store_sales.ss_coupon_amt <= 16257.00))) OR ((store_sales.ss_wholesale_cost >= 31.00) AND (store_sales.ss_wholesale_cost <= 51.00)))(store_sales.ss_quantity <= 30)) +------------------------------PhysicalOlapScan[store_sales] diff --git a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query30.out b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query30.out index 36b017f791..f6803d5601 100644 --- a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query30.out +++ b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query30.out @@ -24,7 +24,8 @@ CteAnchor[cteId= ( CTEId#2=] ) --------PhysicalProject ----------hashJoin[LEFT_SEMI_JOIN](ctr1.ctr_state = ctr2.ctr_state)(cast(ctr_total_return as DOUBLE) > cast((avg(ctr_total_return) * 1.2) as DOUBLE)) ------------hashJoin[INNER_JOIN](ctr1.ctr_customer_sk = customer.c_customer_sk) ---------------CteConsumer[cteId= ( CTEId#2=] ) +--------------PhysicalDistribute +----------------CteConsumer[cteId= ( CTEId#2=] ) --------------PhysicalDistribute ----------------hashJoin[INNER_JOIN](customer_address.ca_address_sk = customer.c_current_addr_sk) ------------------PhysicalProject diff --git a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query31.out b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query31.out index f17d2ca533..912280a2e8 100644 --- a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query31.out +++ b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query31.out @@ -27,17 +27,17 @@ CteAnchor[cteId= ( CTEId#6=] ) ------------hashAgg[LOCAL] --------------PhysicalProject ----------------hashJoin[INNER_JOIN](web_sales.ws_bill_addr_sk = customer_address.ca_address_sk) -------------------PhysicalProject ---------------------hashJoin[INNER_JOIN](web_sales.ws_sold_date_sk = date_dim.d_date_sk) -----------------------PhysicalProject -------------------------PhysicalOlapScan[web_sales] -----------------------PhysicalDistribute -------------------------PhysicalProject ---------------------------filter((ws.d_year = 2000)d_qoy IN (1, 2, 3)) -----------------------------PhysicalOlapScan[date_dim] ------------------PhysicalDistribute --------------------PhysicalProject -----------------------PhysicalOlapScan[customer_address] +----------------------hashJoin[INNER_JOIN](web_sales.ws_sold_date_sk = date_dim.d_date_sk) +------------------------PhysicalProject +--------------------------PhysicalOlapScan[web_sales] +------------------------PhysicalDistribute +--------------------------PhysicalProject +----------------------------filter((ws.d_year = 2000)d_qoy IN (1, 2, 3)) +------------------------------PhysicalOlapScan[date_dim] +------------------PhysicalProject +--------------------PhysicalOlapScan[customer_address] ----PhysicalQuickSort ------PhysicalDistribute --------PhysicalQuickSort diff --git a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query33.out b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query33.out index cd5d41e1cd..3bee39ba9a 100644 --- a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query33.out +++ b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query33.out @@ -14,22 +14,23 @@ PhysicalTopN ----------------------hashAgg[LOCAL] ------------------------PhysicalProject --------------------------hashJoin[INNER_JOIN](store_sales.ss_item_sk = item.i_item_sk) -----------------------------PhysicalProject -------------------------------hashJoin[INNER_JOIN](store_sales.ss_addr_sk = customer_address.ca_address_sk) ---------------------------------hashJoin[INNER_JOIN](store_sales.ss_sold_date_sk = date_dim.d_date_sk) -----------------------------------PhysicalProject -------------------------------------PhysicalOlapScan[store_sales] +----------------------------PhysicalDistribute +------------------------------PhysicalProject +--------------------------------hashJoin[INNER_JOIN](store_sales.ss_addr_sk = customer_address.ca_address_sk) ----------------------------------PhysicalDistribute ------------------------------------PhysicalProject ---------------------------------------filter((date_dim.d_moy = 1)(date_dim.d_year = 2002)) -----------------------------------------PhysicalOlapScan[date_dim] ---------------------------------PhysicalDistribute +--------------------------------------hashJoin[INNER_JOIN](store_sales.ss_sold_date_sk = date_dim.d_date_sk) +----------------------------------------PhysicalProject +------------------------------------------PhysicalOlapScan[store_sales] +----------------------------------------PhysicalDistribute +------------------------------------------PhysicalProject +--------------------------------------------filter((date_dim.d_moy = 1)(date_dim.d_year = 2002)) +----------------------------------------------PhysicalOlapScan[date_dim] ----------------------------------PhysicalProject ------------------------------------filter((customer_address.ca_gmt_offset = -5.00)) --------------------------------------PhysicalOlapScan[customer_address] -----------------------------PhysicalDistribute -------------------------------PhysicalProject ---------------------------------PhysicalOlapScan[item] +----------------------------PhysicalProject +------------------------------PhysicalOlapScan[item] ------------------PhysicalDistribute --------------------PhysicalProject ----------------------filter((item.i_category = 'Home')) @@ -44,17 +45,18 @@ PhysicalTopN ----------------------------PhysicalDistribute ------------------------------PhysicalProject --------------------------------hashJoin[INNER_JOIN](catalog_sales.cs_bill_addr_sk = customer_address.ca_address_sk) -----------------------------------hashJoin[INNER_JOIN](catalog_sales.cs_sold_date_sk = date_dim.d_date_sk) -------------------------------------PhysicalProject ---------------------------------------PhysicalOlapScan[catalog_sales] -------------------------------------PhysicalDistribute ---------------------------------------PhysicalProject -----------------------------------------filter((date_dim.d_moy = 1)(date_dim.d_year = 2002)) -------------------------------------------PhysicalOlapScan[date_dim] ----------------------------------PhysicalDistribute ------------------------------------PhysicalProject ---------------------------------------filter((customer_address.ca_gmt_offset = -5.00)) -----------------------------------------PhysicalOlapScan[customer_address] +--------------------------------------hashJoin[INNER_JOIN](catalog_sales.cs_sold_date_sk = date_dim.d_date_sk) +----------------------------------------PhysicalProject +------------------------------------------PhysicalOlapScan[catalog_sales] +----------------------------------------PhysicalDistribute +------------------------------------------PhysicalProject +--------------------------------------------filter((date_dim.d_moy = 1)(date_dim.d_year = 2002)) +----------------------------------------------PhysicalOlapScan[date_dim] +----------------------------------PhysicalProject +------------------------------------filter((customer_address.ca_gmt_offset = -5.00)) +--------------------------------------PhysicalOlapScan[customer_address] ----------------------------PhysicalProject ------------------------------PhysicalOlapScan[item] ------------------PhysicalDistribute @@ -73,17 +75,18 @@ PhysicalTopN ----------------------------PhysicalDistribute ------------------------------PhysicalProject --------------------------------hashJoin[INNER_JOIN](web_sales.ws_bill_addr_sk = customer_address.ca_address_sk) -----------------------------------hashJoin[INNER_JOIN](web_sales.ws_sold_date_sk = date_dim.d_date_sk) -------------------------------------PhysicalProject ---------------------------------------PhysicalOlapScan[web_sales] -------------------------------------PhysicalDistribute ---------------------------------------PhysicalProject -----------------------------------------filter((date_dim.d_moy = 1)(date_dim.d_year = 2002)) -------------------------------------------PhysicalOlapScan[date_dim] ----------------------------------PhysicalDistribute ------------------------------------PhysicalProject ---------------------------------------filter((customer_address.ca_gmt_offset = -5.00)) -----------------------------------------PhysicalOlapScan[customer_address] +--------------------------------------hashJoin[INNER_JOIN](web_sales.ws_sold_date_sk = date_dim.d_date_sk) +----------------------------------------PhysicalProject +------------------------------------------PhysicalOlapScan[web_sales] +----------------------------------------PhysicalDistribute +------------------------------------------PhysicalProject +--------------------------------------------filter((date_dim.d_moy = 1)(date_dim.d_year = 2002)) +----------------------------------------------PhysicalOlapScan[date_dim] +----------------------------------PhysicalProject +------------------------------------filter((customer_address.ca_gmt_offset = -5.00)) +--------------------------------------PhysicalOlapScan[customer_address] ------------------PhysicalDistribute --------------------PhysicalProject ----------------------filter((item.i_category = 'Home')) diff --git a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query38.out b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query38.out index 3a47397ed8..02fcd034ce 100644 --- a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query38.out +++ b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query38.out @@ -13,13 +13,15 @@ PhysicalLimit --------------------hashAgg[LOCAL] ----------------------PhysicalProject ------------------------hashJoin[INNER_JOIN](store_sales.ss_customer_sk = customer.c_customer_sk) ---------------------------hashJoin[INNER_JOIN](store_sales.ss_sold_date_sk = date_dim.d_date_sk) +--------------------------PhysicalDistribute ----------------------------PhysicalProject -------------------------------PhysicalOlapScan[store_sales] -----------------------------PhysicalDistribute -------------------------------PhysicalProject ---------------------------------filter((date_dim.d_month_seq <= 1194)(date_dim.d_month_seq >= 1183)) -----------------------------------PhysicalOlapScan[date_dim] +------------------------------hashJoin[INNER_JOIN](store_sales.ss_sold_date_sk = date_dim.d_date_sk) +--------------------------------PhysicalProject +----------------------------------PhysicalOlapScan[store_sales] +--------------------------------PhysicalDistribute +----------------------------------PhysicalProject +------------------------------------filter((date_dim.d_month_seq <= 1194)(date_dim.d_month_seq >= 1183)) +--------------------------------------PhysicalOlapScan[date_dim] --------------------------PhysicalDistribute ----------------------------PhysicalProject ------------------------------PhysicalOlapScan[customer] @@ -29,13 +31,15 @@ PhysicalLimit --------------------hashAgg[LOCAL] ----------------------PhysicalProject ------------------------hashJoin[INNER_JOIN](catalog_sales.cs_bill_customer_sk = customer.c_customer_sk) ---------------------------hashJoin[INNER_JOIN](catalog_sales.cs_sold_date_sk = date_dim.d_date_sk) +--------------------------PhysicalDistribute ----------------------------PhysicalProject -------------------------------PhysicalOlapScan[catalog_sales] -----------------------------PhysicalDistribute -------------------------------PhysicalProject ---------------------------------filter((date_dim.d_month_seq <= 1194)(date_dim.d_month_seq >= 1183)) -----------------------------------PhysicalOlapScan[date_dim] +------------------------------hashJoin[INNER_JOIN](catalog_sales.cs_sold_date_sk = date_dim.d_date_sk) +--------------------------------PhysicalProject +----------------------------------PhysicalOlapScan[catalog_sales] +--------------------------------PhysicalDistribute +----------------------------------PhysicalProject +------------------------------------filter((date_dim.d_month_seq <= 1194)(date_dim.d_month_seq >= 1183)) +--------------------------------------PhysicalOlapScan[date_dim] --------------------------PhysicalDistribute ----------------------------PhysicalProject ------------------------------PhysicalOlapScan[customer] diff --git a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query39.out b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query39.out index daa0cff8b2..7465afe902 100644 --- a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query39.out +++ b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query39.out @@ -1,48 +1,38 @@ -- This file is automatically generated. You should know what you did if you want to edit this -- !ds_shape_39 -- -PhysicalQuickSort ---PhysicalDistribute -----PhysicalQuickSort -------hashJoin[INNER_JOIN](inv1.i_item_sk = inv2.i_item_sk)(inv1.w_warehouse_sk = inv2.w_warehouse_sk) ---------PhysicalProject -----------filter((CASE WHEN (mean = 0.0) THEN 0.0 ELSE (stdev / mean) END > 1.0)) -------------hashAgg[GLOBAL] ---------------PhysicalDistribute -----------------hashAgg[LOCAL] -------------------PhysicalProject ---------------------hashJoin[INNER_JOIN](inventory.inv_warehouse_sk = warehouse.w_warehouse_sk) -----------------------hashJoin[INNER_JOIN](inventory.inv_item_sk = item.i_item_sk) -------------------------hashJoin[INNER_JOIN](inventory.inv_date_sk = date_dim.d_date_sk) ---------------------------PhysicalOlapScan[inventory] ---------------------------PhysicalDistribute -----------------------------PhysicalProject -------------------------------filter((inv1.d_moy = 1)(date_dim.d_year = 1998)) ---------------------------------PhysicalOlapScan[date_dim] -------------------------PhysicalDistribute ---------------------------PhysicalProject -----------------------------PhysicalOlapScan[item] +CteAnchor[cteId= ( CTEId#3=] ) +--CteProducer[cteId= ( CTEId#3=] ) +----PhysicalProject +------filter((CASE WHEN (mean = 0.0) THEN 0.0 ELSE (stdev / mean) END > 1.0)) +--------hashAgg[GLOBAL] +----------PhysicalDistribute +------------hashAgg[LOCAL] +--------------PhysicalProject +----------------hashJoin[INNER_JOIN](inventory.inv_warehouse_sk = warehouse.w_warehouse_sk) +------------------hashJoin[INNER_JOIN](inventory.inv_item_sk = item.i_item_sk) +--------------------hashJoin[INNER_JOIN](inventory.inv_date_sk = date_dim.d_date_sk) +----------------------PhysicalOlapScan[inventory] ----------------------PhysicalDistribute ------------------------PhysicalProject ---------------------------PhysicalOlapScan[warehouse] ---------PhysicalDistribute -----------PhysicalProject -------------filter((CASE WHEN (mean = 0.0) THEN 0.0 ELSE (stdev / mean) END > 1.0)) ---------------hashAgg[GLOBAL] -----------------PhysicalDistribute -------------------hashAgg[LOCAL] +--------------------------filter(((inv.d_moy = 1) OR (inv.d_moy = 2))(date_dim.d_year = 1998)) +----------------------------PhysicalOlapScan[date_dim] +--------------------PhysicalDistribute +----------------------PhysicalProject +------------------------PhysicalOlapScan[item] +------------------PhysicalDistribute --------------------PhysicalProject -----------------------hashJoin[INNER_JOIN](inventory.inv_warehouse_sk = warehouse.w_warehouse_sk) -------------------------hashJoin[INNER_JOIN](inventory.inv_item_sk = item.i_item_sk) ---------------------------hashJoin[INNER_JOIN](inventory.inv_date_sk = date_dim.d_date_sk) -----------------------------PhysicalOlapScan[inventory] -----------------------------PhysicalDistribute -------------------------------PhysicalProject ---------------------------------filter((date_dim.d_year = 1998)(inv2.d_moy = 2)) -----------------------------------PhysicalOlapScan[date_dim] ---------------------------PhysicalDistribute -----------------------------PhysicalProject -------------------------------PhysicalOlapScan[item] -------------------------PhysicalDistribute ---------------------------PhysicalProject -----------------------------PhysicalOlapScan[warehouse] +----------------------PhysicalOlapScan[warehouse] +--PhysicalQuickSort +----PhysicalDistribute +------PhysicalQuickSort +--------PhysicalProject +----------hashJoin[INNER_JOIN](inv1.w_warehouse_sk = inv2.w_warehouse_sk)(inv1.i_item_sk = inv2.i_item_sk) +------------PhysicalDistribute +--------------PhysicalProject +----------------filter((inv1.d_moy = 1)) +------------------CteConsumer[cteId= ( CTEId#3=] ) +------------PhysicalDistribute +--------------PhysicalProject +----------------filter((inv2.d_moy = 2)) +------------------CteConsumer[cteId= ( CTEId#3=] ) diff --git a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query45.out b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query45.out index c450c9f2de..4a3c96c502 100644 --- a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query45.out +++ b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query45.out @@ -14,16 +14,16 @@ PhysicalTopN ----------------------PhysicalDistribute ------------------------PhysicalProject --------------------------hashJoin[INNER_JOIN](web_sales.ws_item_sk = item.i_item_sk) -----------------------------hashJoin[INNER_JOIN](web_sales.ws_sold_date_sk = date_dim.d_date_sk) -------------------------------PhysicalProject ---------------------------------PhysicalOlapScan[web_sales] -------------------------------PhysicalDistribute ---------------------------------PhysicalProject -----------------------------------filter((date_dim.d_qoy = 2)(date_dim.d_year = 2000)) -------------------------------------PhysicalOlapScan[date_dim] ----------------------------PhysicalDistribute -------------------------------PhysicalProject ---------------------------------PhysicalOlapScan[item] +------------------------------hashJoin[INNER_JOIN](web_sales.ws_sold_date_sk = date_dim.d_date_sk) +--------------------------------PhysicalProject +----------------------------------PhysicalOlapScan[web_sales] +--------------------------------PhysicalDistribute +----------------------------------PhysicalProject +------------------------------------filter((date_dim.d_qoy = 2)(date_dim.d_year = 2000)) +--------------------------------------PhysicalOlapScan[date_dim] +----------------------------PhysicalProject +------------------------------PhysicalOlapScan[item] ----------------------PhysicalDistribute ------------------------PhysicalProject --------------------------hashJoin[INNER_JOIN](customer.c_current_addr_sk = customer_address.ca_address_sk) diff --git a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query46.out b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query46.out index f0d7f6e7ba..c11c6f2c00 100644 --- a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query46.out +++ b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query46.out @@ -14,30 +14,28 @@ PhysicalTopN ------------------PhysicalOlapScan[customer] ----------PhysicalDistribute ------------PhysicalProject ---------------hashAgg[GLOBAL] -----------------PhysicalDistribute -------------------hashAgg[LOCAL] ---------------------PhysicalProject -----------------------hashJoin[INNER_JOIN](store_sales.ss_addr_sk = customer_address.ca_address_sk) -------------------------PhysicalProject ---------------------------hashJoin[INNER_JOIN](store_sales.ss_store_sk = store.s_store_sk) -----------------------------hashJoin[INNER_JOIN](store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk) -------------------------------hashJoin[INNER_JOIN](store_sales.ss_sold_date_sk = date_dim.d_date_sk) ---------------------------------PhysicalProject -----------------------------------PhysicalOlapScan[store_sales] ---------------------------------PhysicalDistribute -----------------------------------PhysicalProject -------------------------------------filter(((date_dim.d_dow = 0) OR (date_dim.d_dow = 6))d_year IN (1999, 2000, 2001)) ---------------------------------------PhysicalOlapScan[date_dim] +--------------hashAgg[LOCAL] +----------------PhysicalProject +------------------hashJoin[INNER_JOIN](store_sales.ss_addr_sk = customer_address.ca_address_sk) +--------------------PhysicalDistribute +----------------------PhysicalProject +------------------------hashJoin[INNER_JOIN](store_sales.ss_store_sk = store.s_store_sk) +--------------------------hashJoin[INNER_JOIN](store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk) +----------------------------hashJoin[INNER_JOIN](store_sales.ss_sold_date_sk = date_dim.d_date_sk) +------------------------------PhysicalProject +--------------------------------PhysicalOlapScan[store_sales] ------------------------------PhysicalDistribute --------------------------------PhysicalProject -----------------------------------filter(((household_demographics.hd_dep_count = 6) OR (household_demographics.hd_vehicle_count = 0))) -------------------------------------PhysicalOlapScan[household_demographics] +----------------------------------filter(((date_dim.d_dow = 0) OR (date_dim.d_dow = 6))d_year IN (1999, 2000, 2001)) +------------------------------------PhysicalOlapScan[date_dim] ----------------------------PhysicalDistribute ------------------------------PhysicalProject ---------------------------------filter(s_city IN ('Five Points', 'Centerville', 'Oak Grove', 'Fairview', 'Liberty')) -----------------------------------PhysicalOlapScan[store] -------------------------PhysicalDistribute ---------------------------PhysicalProject -----------------------------PhysicalOlapScan[customer_address] +--------------------------------filter(((household_demographics.hd_dep_count = 6) OR (household_demographics.hd_vehicle_count = 0))) +----------------------------------PhysicalOlapScan[household_demographics] +--------------------------PhysicalDistribute +----------------------------PhysicalProject +------------------------------filter(s_city IN ('Five Points', 'Centerville', 'Oak Grove', 'Fairview', 'Liberty')) +--------------------------------PhysicalOlapScan[store] +--------------------PhysicalProject +----------------------PhysicalOlapScan[customer_address] diff --git a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query56.out b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query56.out index 6b961cbc9f..410d72ab3a 100644 --- a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query56.out +++ b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query56.out @@ -13,54 +13,54 @@ PhysicalTopN --------------------hashAgg[LOCAL] ----------------------PhysicalProject ------------------------hashJoin[INNER_JOIN](store_sales.ss_addr_sk = customer_address.ca_address_sk) ---------------------------hashJoin[INNER_JOIN](store_sales.ss_item_sk = item.i_item_sk) -----------------------------PhysicalProject -------------------------------hashJoin[INNER_JOIN](store_sales.ss_sold_date_sk = date_dim.d_date_sk) ---------------------------------PhysicalProject -----------------------------------PhysicalOlapScan[store_sales] ---------------------------------PhysicalDistribute +--------------------------PhysicalDistribute +----------------------------hashJoin[INNER_JOIN](store_sales.ss_item_sk = item.i_item_sk) +------------------------------PhysicalProject +--------------------------------hashJoin[INNER_JOIN](store_sales.ss_sold_date_sk = date_dim.d_date_sk) ----------------------------------PhysicalProject -------------------------------------filter((date_dim.d_year = 2000)(date_dim.d_moy = 2)) ---------------------------------------PhysicalOlapScan[date_dim] -----------------------------PhysicalDistribute -------------------------------hashJoin[LEFT_SEMI_JOIN](item.i_item_id = item.i_item_id) ---------------------------------PhysicalProject -----------------------------------PhysicalOlapScan[item] ---------------------------------PhysicalDistribute +------------------------------------PhysicalOlapScan[store_sales] +----------------------------------PhysicalDistribute +------------------------------------PhysicalProject +--------------------------------------filter((date_dim.d_year = 2000)(date_dim.d_moy = 2)) +----------------------------------------PhysicalOlapScan[date_dim] +------------------------------PhysicalDistribute +--------------------------------hashJoin[LEFT_SEMI_JOIN](item.i_item_id = item.i_item_id) ----------------------------------PhysicalProject -------------------------------------filter(i_color IN ('powder', 'green', 'cyan')) ---------------------------------------PhysicalOlapScan[item] ---------------------------PhysicalDistribute -----------------------------PhysicalProject -------------------------------filter((customer_address.ca_gmt_offset = -6.00)) ---------------------------------PhysicalOlapScan[customer_address] +------------------------------------PhysicalOlapScan[item] +----------------------------------PhysicalDistribute +------------------------------------PhysicalProject +--------------------------------------filter(i_color IN ('powder', 'green', 'cyan')) +----------------------------------------PhysicalOlapScan[item] +--------------------------PhysicalProject +----------------------------filter((customer_address.ca_gmt_offset = -6.00)) +------------------------------PhysicalOlapScan[customer_address] --------------PhysicalProject ----------------hashAgg[GLOBAL] ------------------PhysicalDistribute --------------------hashAgg[LOCAL] ----------------------PhysicalProject ------------------------hashJoin[INNER_JOIN](catalog_sales.cs_bill_addr_sk = customer_address.ca_address_sk) ---------------------------hashJoin[INNER_JOIN](catalog_sales.cs_item_sk = item.i_item_sk) -----------------------------PhysicalProject -------------------------------hashJoin[INNER_JOIN](catalog_sales.cs_sold_date_sk = date_dim.d_date_sk) ---------------------------------PhysicalProject -----------------------------------PhysicalOlapScan[catalog_sales] ---------------------------------PhysicalDistribute +--------------------------PhysicalDistribute +----------------------------hashJoin[INNER_JOIN](catalog_sales.cs_item_sk = item.i_item_sk) +------------------------------PhysicalProject +--------------------------------hashJoin[INNER_JOIN](catalog_sales.cs_sold_date_sk = date_dim.d_date_sk) ----------------------------------PhysicalProject -------------------------------------filter((date_dim.d_year = 2000)(date_dim.d_moy = 2)) ---------------------------------------PhysicalOlapScan[date_dim] -----------------------------PhysicalDistribute -------------------------------hashJoin[LEFT_SEMI_JOIN](item.i_item_id = item.i_item_id) ---------------------------------PhysicalProject -----------------------------------PhysicalOlapScan[item] ---------------------------------PhysicalDistribute +------------------------------------PhysicalOlapScan[catalog_sales] +----------------------------------PhysicalDistribute +------------------------------------PhysicalProject +--------------------------------------filter((date_dim.d_year = 2000)(date_dim.d_moy = 2)) +----------------------------------------PhysicalOlapScan[date_dim] +------------------------------PhysicalDistribute +--------------------------------hashJoin[LEFT_SEMI_JOIN](item.i_item_id = item.i_item_id) ----------------------------------PhysicalProject -------------------------------------filter(i_color IN ('powder', 'green', 'cyan')) ---------------------------------------PhysicalOlapScan[item] ---------------------------PhysicalDistribute -----------------------------PhysicalProject -------------------------------filter((customer_address.ca_gmt_offset = -6.00)) ---------------------------------PhysicalOlapScan[customer_address] +------------------------------------PhysicalOlapScan[item] +----------------------------------PhysicalDistribute +------------------------------------PhysicalProject +--------------------------------------filter(i_color IN ('powder', 'green', 'cyan')) +----------------------------------------PhysicalOlapScan[item] +--------------------------PhysicalProject +----------------------------filter((customer_address.ca_gmt_offset = -6.00)) +------------------------------PhysicalOlapScan[customer_address] --------------PhysicalProject ----------------hashAgg[GLOBAL] ------------------PhysicalDistribute diff --git a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query59.out b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query59.out index 071e2fbc05..9af8591c8f 100644 --- a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query59.out +++ b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query59.out @@ -24,8 +24,9 @@ CteAnchor[cteId= ( CTEId#4=] ) ------------------PhysicalOlapScan[date_dim] ------------PhysicalDistribute --------------hashJoin[INNER_JOIN](y.s_store_id1 = x.s_store_id2)(wss.ss_store_sk = store.s_store_sk) -----------------PhysicalProject -------------------PhysicalOlapScan[store] +----------------PhysicalDistribute +------------------PhysicalProject +--------------------PhysicalOlapScan[store] ----------------PhysicalDistribute ------------------hashJoin[INNER_JOIN](expr_cast(d_week_seq1 as BIGINT) = expr_(d_week_seq2 - 52)) --------------------PhysicalProject @@ -33,8 +34,9 @@ CteAnchor[cteId= ( CTEId#4=] ) --------------------PhysicalDistribute ----------------------PhysicalProject ------------------------hashJoin[INNER_JOIN](wss.ss_store_sk = store.s_store_sk) ---------------------------PhysicalProject -----------------------------PhysicalOlapScan[store] +--------------------------PhysicalDistribute +----------------------------PhysicalProject +------------------------------PhysicalOlapScan[store] --------------------------PhysicalDistribute ----------------------------hashJoin[INNER_JOIN](d.d_week_seq = d_week_seq1) ------------------------------PhysicalProject diff --git a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query6.out b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query6.out index f9346065c2..d5751c034c 100644 --- a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query6.out +++ b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query6.out @@ -11,26 +11,28 @@ PhysicalTopN ----------------hashJoin[LEFT_SEMI_JOIN](j.i_category = i.i_category)(cast(i_current_price as DECIMALV3(38, 5)) > (1.2 * avg(i_current_price))) ------------------PhysicalProject --------------------hashJoin[INNER_JOIN](c.c_customer_sk = s.ss_customer_sk) -----------------------hashJoin[INNER_JOIN](s.ss_item_sk = i.i_item_sk) +----------------------PhysicalDistribute ------------------------PhysicalProject ---------------------------hashJoin[INNER_JOIN](s.ss_sold_date_sk = d.d_date_sk) -----------------------------PhysicalProject -------------------------------PhysicalOlapScan[store_sales] +--------------------------hashJoin[INNER_JOIN](s.ss_item_sk = i.i_item_sk) ----------------------------PhysicalDistribute -------------------------------hashJoin[INNER_JOIN](d.d_month_seq = date_dim.d_month_seq) ---------------------------------PhysicalProject -----------------------------------PhysicalOlapScan[date_dim] ---------------------------------PhysicalDistribute -----------------------------------PhysicalAssertNumRows -------------------------------------hashAgg[GLOBAL] +------------------------------PhysicalProject +--------------------------------hashJoin[INNER_JOIN](s.ss_sold_date_sk = d.d_date_sk) +----------------------------------PhysicalProject +------------------------------------PhysicalOlapScan[store_sales] +----------------------------------PhysicalDistribute +------------------------------------hashJoin[INNER_JOIN](d.d_month_seq = date_dim.d_month_seq) +--------------------------------------PhysicalProject +----------------------------------------PhysicalOlapScan[date_dim] --------------------------------------PhysicalDistribute -----------------------------------------hashAgg[LOCAL] -------------------------------------------PhysicalProject ---------------------------------------------filter((date_dim.d_year = 2002)(date_dim.d_moy = 3)) -----------------------------------------------PhysicalOlapScan[date_dim] -------------------------PhysicalDistribute ---------------------------PhysicalProject -----------------------------PhysicalOlapScan[item] +----------------------------------------PhysicalAssertNumRows +------------------------------------------hashAgg[GLOBAL] +--------------------------------------------PhysicalDistribute +----------------------------------------------hashAgg[LOCAL] +------------------------------------------------PhysicalProject +--------------------------------------------------filter((date_dim.d_year = 2002)(date_dim.d_moy = 3)) +----------------------------------------------------PhysicalOlapScan[date_dim] +----------------------------PhysicalProject +------------------------------PhysicalOlapScan[item] ----------------------PhysicalDistribute ------------------------PhysicalProject --------------------------hashJoin[INNER_JOIN](a.ca_address_sk = c.c_current_addr_sk) diff --git a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query60.out b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query60.out index b7bbdb5594..57ee76f897 100644 --- a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query60.out +++ b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query60.out @@ -13,19 +13,19 @@ PhysicalTopN --------------------hashAgg[LOCAL] ----------------------PhysicalProject ------------------------hashJoin[INNER_JOIN](store_sales.ss_item_sk = item.i_item_sk) ---------------------------PhysicalProject -----------------------------hashJoin[INNER_JOIN](store_sales.ss_addr_sk = customer_address.ca_address_sk) -------------------------------hashJoin[INNER_JOIN](store_sales.ss_sold_date_sk = date_dim.d_date_sk) ---------------------------------PhysicalProject -----------------------------------PhysicalOlapScan[store_sales] ---------------------------------PhysicalDistribute +--------------------------hashJoin[INNER_JOIN](store_sales.ss_addr_sk = customer_address.ca_address_sk) +----------------------------PhysicalDistribute +------------------------------PhysicalProject +--------------------------------hashJoin[INNER_JOIN](store_sales.ss_sold_date_sk = date_dim.d_date_sk) ----------------------------------PhysicalProject -------------------------------------filter((date_dim.d_year = 2000)(date_dim.d_moy = 8)) ---------------------------------------PhysicalOlapScan[date_dim] -------------------------------PhysicalDistribute ---------------------------------PhysicalProject -----------------------------------filter((customer_address.ca_gmt_offset = -7.00)) -------------------------------------PhysicalOlapScan[customer_address] +------------------------------------PhysicalOlapScan[store_sales] +----------------------------------PhysicalDistribute +------------------------------------PhysicalProject +--------------------------------------filter((date_dim.d_year = 2000)(date_dim.d_moy = 8)) +----------------------------------------PhysicalOlapScan[date_dim] +----------------------------PhysicalProject +------------------------------filter((customer_address.ca_gmt_offset = -7.00)) +--------------------------------PhysicalOlapScan[customer_address] --------------------------PhysicalDistribute ----------------------------hashJoin[LEFT_SEMI_JOIN](item.i_item_id = item.i_item_id) ------------------------------PhysicalProject @@ -40,19 +40,19 @@ PhysicalTopN --------------------hashAgg[LOCAL] ----------------------PhysicalProject ------------------------hashJoin[INNER_JOIN](catalog_sales.cs_item_sk = item.i_item_sk) ---------------------------PhysicalProject -----------------------------hashJoin[INNER_JOIN](catalog_sales.cs_bill_addr_sk = customer_address.ca_address_sk) -------------------------------hashJoin[INNER_JOIN](catalog_sales.cs_sold_date_sk = date_dim.d_date_sk) ---------------------------------PhysicalProject -----------------------------------PhysicalOlapScan[catalog_sales] ---------------------------------PhysicalDistribute +--------------------------hashJoin[INNER_JOIN](catalog_sales.cs_bill_addr_sk = customer_address.ca_address_sk) +----------------------------PhysicalDistribute +------------------------------PhysicalProject +--------------------------------hashJoin[INNER_JOIN](catalog_sales.cs_sold_date_sk = date_dim.d_date_sk) ----------------------------------PhysicalProject -------------------------------------filter((date_dim.d_moy = 8)(date_dim.d_year = 2000)) ---------------------------------------PhysicalOlapScan[date_dim] -------------------------------PhysicalDistribute ---------------------------------PhysicalProject -----------------------------------filter((customer_address.ca_gmt_offset = -7.00)) -------------------------------------PhysicalOlapScan[customer_address] +------------------------------------PhysicalOlapScan[catalog_sales] +----------------------------------PhysicalDistribute +------------------------------------PhysicalProject +--------------------------------------filter((date_dim.d_moy = 8)(date_dim.d_year = 2000)) +----------------------------------------PhysicalOlapScan[date_dim] +----------------------------PhysicalProject +------------------------------filter((customer_address.ca_gmt_offset = -7.00)) +--------------------------------PhysicalOlapScan[customer_address] --------------------------PhysicalDistribute ----------------------------hashJoin[LEFT_SEMI_JOIN](item.i_item_id = item.i_item_id) ------------------------------PhysicalProject @@ -67,19 +67,19 @@ PhysicalTopN --------------------hashAgg[LOCAL] ----------------------PhysicalProject ------------------------hashJoin[INNER_JOIN](web_sales.ws_item_sk = item.i_item_sk) ---------------------------PhysicalProject -----------------------------hashJoin[INNER_JOIN](web_sales.ws_bill_addr_sk = customer_address.ca_address_sk) -------------------------------hashJoin[INNER_JOIN](web_sales.ws_sold_date_sk = date_dim.d_date_sk) ---------------------------------PhysicalProject -----------------------------------PhysicalOlapScan[web_sales] ---------------------------------PhysicalDistribute +--------------------------hashJoin[INNER_JOIN](web_sales.ws_bill_addr_sk = customer_address.ca_address_sk) +----------------------------PhysicalDistribute +------------------------------PhysicalProject +--------------------------------hashJoin[INNER_JOIN](web_sales.ws_sold_date_sk = date_dim.d_date_sk) ----------------------------------PhysicalProject -------------------------------------filter((date_dim.d_year = 2000)(date_dim.d_moy = 8)) ---------------------------------------PhysicalOlapScan[date_dim] -------------------------------PhysicalDistribute ---------------------------------PhysicalProject -----------------------------------filter((customer_address.ca_gmt_offset = -7.00)) -------------------------------------PhysicalOlapScan[customer_address] +------------------------------------PhysicalOlapScan[web_sales] +----------------------------------PhysicalDistribute +------------------------------------PhysicalProject +--------------------------------------filter((date_dim.d_year = 2000)(date_dim.d_moy = 8)) +----------------------------------------PhysicalOlapScan[date_dim] +----------------------------PhysicalProject +------------------------------filter((customer_address.ca_gmt_offset = -7.00)) +--------------------------------PhysicalOlapScan[customer_address] --------------------------PhysicalDistribute ----------------------------hashJoin[LEFT_SEMI_JOIN](item.i_item_id = item.i_item_id) ------------------------------PhysicalProject diff --git a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query64.out b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query64.out index 25f6adfcf3..0a8fe40145 100644 --- a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query64.out +++ b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query64.out @@ -1,209 +1,118 @@ -- This file is automatically generated. You should know what you did if you want to edit this -- !ds_shape_64 -- -PhysicalQuickSort ---PhysicalDistribute -----PhysicalQuickSort -------PhysicalProject ---------hashJoin[INNER_JOIN](cs1.item_sk = cs2.item_sk)(cs1.store_name = cs2.store_name)(cs1.store_zip = cs2.store_zip)(cs2.cnt <= cs1.cnt) -----------PhysicalProject -------------hashAgg[GLOBAL] ---------------PhysicalDistribute -----------------hashAgg[LOCAL] +CteAnchor[cteId= ( CTEId#14=] ) +--CteProducer[cteId= ( CTEId#14=] ) +----PhysicalProject +------hashAgg[GLOBAL] +--------PhysicalDistribute +----------hashAgg[LOCAL] +------------PhysicalProject +--------------hashJoin[INNER_JOIN](customer.c_current_addr_sk = ad2.ca_address_sk) +----------------PhysicalProject +------------------PhysicalOlapScan[customer_address] +----------------PhysicalDistribute ------------------PhysicalProject ---------------------hashJoin[INNER_JOIN](customer.c_first_shipto_date_sk = d3.d_date_sk) +--------------------hashJoin[INNER_JOIN](store_sales.ss_item_sk = cs_ui.cs_item_sk) ----------------------PhysicalProject -------------------------PhysicalOlapScan[date_dim] +------------------------filter((sale > (2 * refund))) +--------------------------hashAgg[GLOBAL] +----------------------------PhysicalDistribute +------------------------------hashAgg[LOCAL] +--------------------------------PhysicalProject +----------------------------------hashJoin[INNER_JOIN](catalog_sales.cs_item_sk = catalog_returns.cr_item_sk)(catalog_sales.cs_order_number = catalog_returns.cr_order_number) +------------------------------------PhysicalProject +--------------------------------------PhysicalOlapScan[catalog_sales] +------------------------------------PhysicalProject +--------------------------------------PhysicalOlapScan[catalog_returns] ----------------------PhysicalDistribute ------------------------PhysicalProject ---------------------------hashJoin[INNER_JOIN](hd1.hd_income_band_sk = ib1.ib_income_band_sk) +--------------------------hashJoin[INNER_JOIN](store_sales.ss_sold_date_sk = d1.d_date_sk) ----------------------------PhysicalProject -------------------------------PhysicalOlapScan[income_band] +------------------------------filter(((d1.d_year = 2001) OR (d1.d_year = 2002))) +--------------------------------PhysicalOlapScan[date_dim] ----------------------------PhysicalDistribute ------------------------------PhysicalProject ---------------------------------hashJoin[INNER_JOIN](hd2.hd_income_band_sk = ib2.ib_income_band_sk) +--------------------------------hashJoin[INNER_JOIN](store_sales.ss_hdemo_sk = hd1.hd_demo_sk) ----------------------------------PhysicalProject -------------------------------------PhysicalOlapScan[income_band] +------------------------------------hashJoin[INNER_JOIN](hd1.hd_income_band_sk = ib1.ib_income_band_sk) +--------------------------------------PhysicalProject +----------------------------------------PhysicalOlapScan[household_demographics] +--------------------------------------PhysicalDistribute +----------------------------------------PhysicalProject +------------------------------------------PhysicalOlapScan[income_band] ----------------------------------PhysicalDistribute ------------------------------------PhysicalProject ---------------------------------------hashJoin[INNER_JOIN](customer.c_current_addr_sk = ad2.ca_address_sk) +--------------------------------------hashJoin[INNER_JOIN](store_sales.ss_promo_sk = promotion.p_promo_sk) ----------------------------------------PhysicalProject -------------------------------------------PhysicalOlapScan[customer_address] +------------------------------------------PhysicalOlapScan[promotion] ----------------------------------------PhysicalDistribute ------------------------------------------PhysicalProject ---------------------------------------------hashJoin[INNER_JOIN](customer.c_first_sales_date_sk = d2.d_date_sk) +--------------------------------------------hashJoin[INNER_JOIN](customer.c_first_shipto_date_sk = d3.d_date_sk) ----------------------------------------------PhysicalProject ------------------------------------------------PhysicalOlapScan[date_dim] ----------------------------------------------PhysicalDistribute ------------------------------------------------PhysicalProject ---------------------------------------------------hashJoin[INNER_JOIN](customer.c_current_hdemo_sk = hd2.hd_demo_sk) -----------------------------------------------------PhysicalProject -------------------------------------------------------PhysicalOlapScan[household_demographics] +--------------------------------------------------hashJoin[INNER_JOIN](hd2.hd_income_band_sk = ib2.ib_income_band_sk) +----------------------------------------------------PhysicalDistribute +------------------------------------------------------PhysicalProject +--------------------------------------------------------PhysicalOlapScan[income_band] ----------------------------------------------------PhysicalDistribute ------------------------------------------------------PhysicalProject ---------------------------------------------------------hashJoin[INNER_JOIN](customer.c_current_cdemo_sk = cd2.cd_demo_sk)( not (cd_marital_status = cd_marital_status)) +--------------------------------------------------------hashJoin[INNER_JOIN](customer.c_first_sales_date_sk = d2.d_date_sk) ----------------------------------------------------------PhysicalProject -------------------------------------------------------------PhysicalOlapScan[customer_demographics] +------------------------------------------------------------PhysicalOlapScan[date_dim] ----------------------------------------------------------PhysicalDistribute ------------------------------------------------------------PhysicalProject ---------------------------------------------------------------hashJoin[INNER_JOIN](store_sales.ss_customer_sk = customer.c_customer_sk) +--------------------------------------------------------------hashJoin[INNER_JOIN](customer.c_current_hdemo_sk = hd2.hd_demo_sk) ----------------------------------------------------------------PhysicalProject -------------------------------------------------------------------PhysicalOlapScan[customer] +------------------------------------------------------------------PhysicalOlapScan[household_demographics] ----------------------------------------------------------------PhysicalDistribute ------------------------------------------------------------------PhysicalProject ---------------------------------------------------------------------hashJoin[INNER_JOIN](store_sales.ss_cdemo_sk = cd1.cd_demo_sk) +--------------------------------------------------------------------hashJoin[INNER_JOIN](customer.c_current_cdemo_sk = cd2.cd_demo_sk)( not (cd_marital_status = cd_marital_status)) ----------------------------------------------------------------------PhysicalProject ------------------------------------------------------------------------PhysicalOlapScan[customer_demographics] ----------------------------------------------------------------------PhysicalDistribute ------------------------------------------------------------------------PhysicalProject ---------------------------------------------------------------------------hashJoin[INNER_JOIN](store_sales.ss_item_sk = cs_ui.cs_item_sk) +--------------------------------------------------------------------------hashJoin[INNER_JOIN](store_sales.ss_customer_sk = customer.c_customer_sk) ----------------------------------------------------------------------------PhysicalProject -------------------------------------------------------------------------------filter((sale > (2 * refund))) ---------------------------------------------------------------------------------hashAgg[GLOBAL] -----------------------------------------------------------------------------------PhysicalDistribute -------------------------------------------------------------------------------------hashAgg[LOCAL] ---------------------------------------------------------------------------------------PhysicalProject -----------------------------------------------------------------------------------------hashJoin[INNER_JOIN](catalog_sales.cs_item_sk = catalog_returns.cr_item_sk)(catalog_sales.cs_order_number = catalog_returns.cr_order_number) -------------------------------------------------------------------------------------------PhysicalProject ---------------------------------------------------------------------------------------------PhysicalOlapScan[catalog_sales] -------------------------------------------------------------------------------------------PhysicalProject ---------------------------------------------------------------------------------------------PhysicalOlapScan[catalog_returns] +------------------------------------------------------------------------------PhysicalOlapScan[customer] ----------------------------------------------------------------------------PhysicalDistribute ------------------------------------------------------------------------------PhysicalProject ---------------------------------------------------------------------------------hashJoin[INNER_JOIN](store_sales.ss_sold_date_sk = d1.d_date_sk) +--------------------------------------------------------------------------------hashJoin[INNER_JOIN](store_sales.ss_cdemo_sk = cd1.cd_demo_sk) ----------------------------------------------------------------------------------PhysicalProject -------------------------------------------------------------------------------------hashJoin[INNER_JOIN](store_sales.ss_hdemo_sk = hd1.hd_demo_sk) ---------------------------------------------------------------------------------------PhysicalProject -----------------------------------------------------------------------------------------PhysicalOlapScan[household_demographics] ---------------------------------------------------------------------------------------PhysicalDistribute -----------------------------------------------------------------------------------------PhysicalProject -------------------------------------------------------------------------------------------hashJoin[INNER_JOIN](store_sales.ss_promo_sk = promotion.p_promo_sk) ---------------------------------------------------------------------------------------------PhysicalProject -----------------------------------------------------------------------------------------------hashJoin[INNER_JOIN](store_sales.ss_store_sk = store.s_store_sk) -------------------------------------------------------------------------------------------------PhysicalProject ---------------------------------------------------------------------------------------------------hashJoin[INNER_JOIN](store_sales.ss_addr_sk = ad1.ca_address_sk) -----------------------------------------------------------------------------------------------------PhysicalProject -------------------------------------------------------------------------------------------------------PhysicalOlapScan[customer_address] -----------------------------------------------------------------------------------------------------PhysicalDistribute -------------------------------------------------------------------------------------------------------PhysicalProject ---------------------------------------------------------------------------------------------------------hashJoin[INNER_JOIN](store_sales.ss_item_sk = store_returns.sr_item_sk)(store_sales.ss_ticket_number = store_returns.sr_ticket_number) -----------------------------------------------------------------------------------------------------------PhysicalProject -------------------------------------------------------------------------------------------------------------PhysicalOlapScan[store_returns] -----------------------------------------------------------------------------------------------------------hashJoin[INNER_JOIN](store_sales.ss_item_sk = item_sk) -------------------------------------------------------------------------------------------------------------PhysicalProject ---------------------------------------------------------------------------------------------------------------PhysicalOlapScan[store_sales] -------------------------------------------------------------------------------------------------------------PhysicalDistribute ---------------------------------------------------------------------------------------------------------------PhysicalProject -----------------------------------------------------------------------------------------------------------------filter((item.i_current_price >= 24.00)(item.i_current_price <= 33.00)i_color IN ('blanched', 'medium', 'brown', 'chocolate', 'burlywood', 'drab')) -------------------------------------------------------------------------------------------------------------------PhysicalOlapScan[item] -------------------------------------------------------------------------------------------------PhysicalDistribute ---------------------------------------------------------------------------------------------------PhysicalProject -----------------------------------------------------------------------------------------------------PhysicalOlapScan[store] ---------------------------------------------------------------------------------------------PhysicalDistribute -----------------------------------------------------------------------------------------------PhysicalProject -------------------------------------------------------------------------------------------------PhysicalOlapScan[promotion] +------------------------------------------------------------------------------------PhysicalOlapScan[customer_demographics] ----------------------------------------------------------------------------------PhysicalDistribute ------------------------------------------------------------------------------------PhysicalProject ---------------------------------------------------------------------------------------filter((d1.d_year = 2001)) -----------------------------------------------------------------------------------------PhysicalOlapScan[date_dim] -----------PhysicalDistribute -------------PhysicalProject ---------------hashAgg[GLOBAL] -----------------PhysicalDistribute -------------------hashAgg[LOCAL] ---------------------PhysicalProject -----------------------hashJoin[INNER_JOIN](customer.c_first_shipto_date_sk = d3.d_date_sk) -------------------------PhysicalProject ---------------------------PhysicalOlapScan[date_dim] -------------------------PhysicalDistribute ---------------------------PhysicalProject -----------------------------hashJoin[INNER_JOIN](hd1.hd_income_band_sk = ib1.ib_income_band_sk) -------------------------------PhysicalProject ---------------------------------PhysicalOlapScan[income_band] -------------------------------PhysicalDistribute ---------------------------------PhysicalProject -----------------------------------hashJoin[INNER_JOIN](hd2.hd_income_band_sk = ib2.ib_income_band_sk) -------------------------------------PhysicalProject ---------------------------------------PhysicalOlapScan[income_band] -------------------------------------PhysicalDistribute ---------------------------------------PhysicalProject -----------------------------------------hashJoin[INNER_JOIN](customer.c_current_addr_sk = ad2.ca_address_sk) -------------------------------------------PhysicalProject ---------------------------------------------PhysicalOlapScan[customer_address] -------------------------------------------PhysicalDistribute ---------------------------------------------PhysicalProject -----------------------------------------------hashJoin[INNER_JOIN](customer.c_first_sales_date_sk = d2.d_date_sk) -------------------------------------------------PhysicalProject ---------------------------------------------------PhysicalOlapScan[date_dim] -------------------------------------------------PhysicalDistribute ---------------------------------------------------PhysicalProject -----------------------------------------------------hashJoin[INNER_JOIN](customer.c_current_hdemo_sk = hd2.hd_demo_sk) -------------------------------------------------------PhysicalProject ---------------------------------------------------------PhysicalOlapScan[household_demographics] -------------------------------------------------------PhysicalDistribute ---------------------------------------------------------PhysicalProject -----------------------------------------------------------hashJoin[INNER_JOIN](customer.c_current_cdemo_sk = cd2.cd_demo_sk)( not (cd_marital_status = cd_marital_status)) -------------------------------------------------------------PhysicalProject ---------------------------------------------------------------PhysicalOlapScan[customer_demographics] -------------------------------------------------------------PhysicalDistribute ---------------------------------------------------------------PhysicalProject -----------------------------------------------------------------hashJoin[INNER_JOIN](store_sales.ss_customer_sk = customer.c_customer_sk) -------------------------------------------------------------------PhysicalProject ---------------------------------------------------------------------PhysicalOlapScan[customer] -------------------------------------------------------------------PhysicalDistribute ---------------------------------------------------------------------PhysicalProject -----------------------------------------------------------------------hashJoin[INNER_JOIN](store_sales.ss_cdemo_sk = cd1.cd_demo_sk) -------------------------------------------------------------------------PhysicalProject ---------------------------------------------------------------------------PhysicalOlapScan[customer_demographics] -------------------------------------------------------------------------PhysicalDistribute ---------------------------------------------------------------------------PhysicalProject -----------------------------------------------------------------------------hashJoin[INNER_JOIN](store_sales.ss_item_sk = cs_ui.cs_item_sk) -------------------------------------------------------------------------------PhysicalProject ---------------------------------------------------------------------------------filter((sale > (2 * refund))) -----------------------------------------------------------------------------------hashAgg[GLOBAL] -------------------------------------------------------------------------------------PhysicalDistribute ---------------------------------------------------------------------------------------hashAgg[LOCAL] +--------------------------------------------------------------------------------------hashJoin[INNER_JOIN](store_sales.ss_store_sk = store.s_store_sk) ----------------------------------------------------------------------------------------PhysicalProject -------------------------------------------------------------------------------------------hashJoin[INNER_JOIN](catalog_sales.cs_item_sk = catalog_returns.cr_item_sk)(catalog_sales.cs_order_number = catalog_returns.cr_order_number) ---------------------------------------------------------------------------------------------PhysicalProject -----------------------------------------------------------------------------------------------PhysicalOlapScan[catalog_sales] +------------------------------------------------------------------------------------------hashJoin[INNER_JOIN](store_sales.ss_addr_sk = ad1.ca_address_sk) --------------------------------------------------------------------------------------------PhysicalProject -----------------------------------------------------------------------------------------------PhysicalOlapScan[catalog_returns] -------------------------------------------------------------------------------PhysicalDistribute ---------------------------------------------------------------------------------PhysicalProject -----------------------------------------------------------------------------------hashJoin[INNER_JOIN](store_sales.ss_sold_date_sk = d1.d_date_sk) -------------------------------------------------------------------------------------PhysicalProject ---------------------------------------------------------------------------------------hashJoin[INNER_JOIN](store_sales.ss_hdemo_sk = hd1.hd_demo_sk) -----------------------------------------------------------------------------------------PhysicalProject -------------------------------------------------------------------------------------------PhysicalOlapScan[household_demographics] -----------------------------------------------------------------------------------------PhysicalDistribute -------------------------------------------------------------------------------------------PhysicalProject ---------------------------------------------------------------------------------------------hashJoin[INNER_JOIN](store_sales.ss_promo_sk = promotion.p_promo_sk) +----------------------------------------------------------------------------------------------PhysicalOlapScan[customer_address] +--------------------------------------------------------------------------------------------PhysicalDistribute ----------------------------------------------------------------------------------------------PhysicalProject -------------------------------------------------------------------------------------------------hashJoin[INNER_JOIN](store_sales.ss_store_sk = store.s_store_sk) +------------------------------------------------------------------------------------------------hashJoin[INNER_JOIN](store_sales.ss_item_sk = store_returns.sr_item_sk)(store_sales.ss_ticket_number = store_returns.sr_ticket_number) --------------------------------------------------------------------------------------------------PhysicalProject -----------------------------------------------------------------------------------------------------hashJoin[INNER_JOIN](store_sales.ss_addr_sk = ad1.ca_address_sk) -------------------------------------------------------------------------------------------------------PhysicalProject ---------------------------------------------------------------------------------------------------------PhysicalOlapScan[customer_address] -------------------------------------------------------------------------------------------------------PhysicalDistribute ---------------------------------------------------------------------------------------------------------PhysicalProject -----------------------------------------------------------------------------------------------------------hashJoin[INNER_JOIN](store_sales.ss_item_sk = store_returns.sr_item_sk)(store_sales.ss_ticket_number = store_returns.sr_ticket_number) -------------------------------------------------------------------------------------------------------------PhysicalProject ---------------------------------------------------------------------------------------------------------------PhysicalOlapScan[store_returns] -------------------------------------------------------------------------------------------------------------hashJoin[INNER_JOIN](store_sales.ss_item_sk = item_sk) ---------------------------------------------------------------------------------------------------------------PhysicalProject -----------------------------------------------------------------------------------------------------------------PhysicalOlapScan[store_sales] ---------------------------------------------------------------------------------------------------------------PhysicalDistribute -----------------------------------------------------------------------------------------------------------------PhysicalProject -------------------------------------------------------------------------------------------------------------------filter((item.i_current_price >= 24.00)(item.i_current_price <= 33.00)i_color IN ('blanched', 'medium', 'brown', 'chocolate', 'burlywood', 'drab')) ---------------------------------------------------------------------------------------------------------------------PhysicalOlapScan[item] ---------------------------------------------------------------------------------------------------PhysicalDistribute +----------------------------------------------------------------------------------------------------PhysicalOlapScan[store_returns] +--------------------------------------------------------------------------------------------------hashJoin[INNER_JOIN](store_sales.ss_item_sk = item_sk) ----------------------------------------------------------------------------------------------------PhysicalProject -------------------------------------------------------------------------------------------------------PhysicalOlapScan[store] -----------------------------------------------------------------------------------------------PhysicalDistribute -------------------------------------------------------------------------------------------------PhysicalProject ---------------------------------------------------------------------------------------------------PhysicalOlapScan[promotion] -------------------------------------------------------------------------------------PhysicalDistribute ---------------------------------------------------------------------------------------PhysicalProject -----------------------------------------------------------------------------------------filter((d1.d_year = 2002)) -------------------------------------------------------------------------------------------PhysicalOlapScan[date_dim] +------------------------------------------------------------------------------------------------------PhysicalOlapScan[store_sales] +----------------------------------------------------------------------------------------------------PhysicalDistribute +------------------------------------------------------------------------------------------------------PhysicalProject +--------------------------------------------------------------------------------------------------------filter((item.i_current_price >= 24.00)(item.i_current_price <= 33.00)i_color IN ('blanched', 'medium', 'brown', 'chocolate', 'burlywood', 'drab')) +----------------------------------------------------------------------------------------------------------PhysicalOlapScan[item] +----------------------------------------------------------------------------------------PhysicalDistribute +------------------------------------------------------------------------------------------PhysicalProject +--------------------------------------------------------------------------------------------PhysicalOlapScan[store] +--PhysicalQuickSort +----PhysicalDistribute +------PhysicalQuickSort +--------PhysicalProject +----------hashJoin[INNER_JOIN](cs1.item_sk = cs2.item_sk)(cs1.store_name = cs2.store_name)(cs1.store_zip = cs2.store_zip)(cs2.cnt <= cs1.cnt) +------------PhysicalProject +--------------filter((cs1.syear = 2001)) +----------------CteConsumer[cteId= ( CTEId#14=] ) +------------PhysicalDistribute +--------------PhysicalProject +----------------filter((cs2.syear = 2002)) +------------------CteConsumer[cteId= ( CTEId#14=] ) diff --git a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query68.out b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query68.out index 7bc504cd33..b8d7713b30 100644 --- a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query68.out +++ b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query68.out @@ -10,8 +10,9 @@ PhysicalTopN ----------PhysicalDistribute ------------PhysicalProject --------------hashJoin[INNER_JOIN](dn.ss_customer_sk = customer.c_customer_sk) -----------------PhysicalProject -------------------PhysicalOlapScan[customer] +----------------PhysicalDistribute +------------------PhysicalProject +--------------------PhysicalOlapScan[customer] ----------------PhysicalDistribute ------------------PhysicalProject --------------------hashAgg[LOCAL] diff --git a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query7.out b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query7.out index b4d2c60d9f..1d979be9e1 100644 --- a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query7.out +++ b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query7.out @@ -8,25 +8,25 @@ PhysicalTopN ----------hashAgg[LOCAL] ------------PhysicalProject --------------hashJoin[INNER_JOIN](store_sales.ss_item_sk = item.i_item_sk) -----------------PhysicalProject +----------------PhysicalDistribute ------------------hashJoin[INNER_JOIN](store_sales.ss_promo_sk = promotion.p_promo_sk) ---------------------hashJoin[INNER_JOIN](store_sales.ss_sold_date_sk = date_dim.d_date_sk) -----------------------hashJoin[INNER_JOIN](store_sales.ss_cdemo_sk = customer_demographics.cd_demo_sk) -------------------------PhysicalProject ---------------------------PhysicalOlapScan[store_sales] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN](store_sales.ss_sold_date_sk = date_dim.d_date_sk) +------------------------hashJoin[INNER_JOIN](store_sales.ss_cdemo_sk = customer_demographics.cd_demo_sk) +--------------------------PhysicalProject +----------------------------PhysicalOlapScan[store_sales] +--------------------------PhysicalDistribute +----------------------------PhysicalProject +------------------------------filter((cast(cd_marital_status as VARCHAR(*)) = 'W')(cast(cd_education_status as VARCHAR(*)) = 'College')(cast(cd_gender as VARCHAR(*)) = 'F')) +--------------------------------PhysicalOlapScan[customer_demographics] ------------------------PhysicalDistribute --------------------------PhysicalProject -----------------------------filter((cast(cd_marital_status as VARCHAR(*)) = 'W')(cast(cd_education_status as VARCHAR(*)) = 'College')(cast(cd_gender as VARCHAR(*)) = 'F')) -------------------------------PhysicalOlapScan[customer_demographics] -----------------------PhysicalDistribute -------------------------PhysicalProject ---------------------------filter((date_dim.d_year = 2001)) -----------------------------PhysicalOlapScan[date_dim] +----------------------------filter((date_dim.d_year = 2001)) +------------------------------PhysicalOlapScan[date_dim] --------------------PhysicalDistribute ----------------------PhysicalProject ------------------------filter(((cast(p_channel_email as VARCHAR(*)) = 'N') OR (cast(p_channel_event as VARCHAR(*)) = 'N'))) --------------------------PhysicalOlapScan[promotion] -----------------PhysicalDistribute -------------------PhysicalProject ---------------------PhysicalOlapScan[item] +----------------PhysicalProject +------------------PhysicalOlapScan[item] diff --git a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query74.out b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query74.out index 03f34b4e4d..5c704a265b 100644 --- a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query74.out +++ b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query74.out @@ -27,14 +27,15 @@ CteAnchor[cteId= ( CTEId#4=] ) ------------hashAgg[LOCAL] --------------PhysicalProject ----------------hashJoin[INNER_JOIN](customer.c_customer_sk = web_sales.ws_bill_customer_sk) -------------------hashJoin[INNER_JOIN](web_sales.ws_sold_date_sk = date_dim.d_date_sk) ---------------------PhysicalProject -----------------------filter((('w' = 's') OR ('w' = 'w'))) -------------------------PhysicalOlapScan[web_sales] ---------------------PhysicalDistribute +------------------PhysicalDistribute +--------------------hashJoin[INNER_JOIN](web_sales.ws_sold_date_sk = date_dim.d_date_sk) ----------------------PhysicalProject -------------------------filter(((date_dim.d_year = 1999) OR (date_dim.d_year = 2000))(('w' = 's') OR ('w' = 'w'))) ---------------------------PhysicalOlapScan[date_dim] +------------------------filter((('w' = 's') OR ('w' = 'w'))) +--------------------------PhysicalOlapScan[web_sales] +----------------------PhysicalDistribute +------------------------PhysicalProject +--------------------------filter(((date_dim.d_year = 1999) OR (date_dim.d_year = 2000))(('w' = 's') OR ('w' = 'w'))) +----------------------------PhysicalOlapScan[date_dim] ------------------PhysicalDistribute --------------------PhysicalProject ----------------------filter((('w' = 's') OR ('w' = 'w'))) diff --git a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query79.out b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query79.out index 11ef1cf172..d51a2de969 100644 --- a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query79.out +++ b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query79.out @@ -5,28 +5,29 @@ PhysicalTopN ----PhysicalTopN ------PhysicalProject --------hashJoin[INNER_JOIN](ms.ss_customer_sk = customer.c_customer_sk) -----------PhysicalProject -------------hashAgg[GLOBAL] ---------------PhysicalDistribute -----------------hashAgg[LOCAL] -------------------PhysicalProject ---------------------hashJoin[INNER_JOIN](store_sales.ss_store_sk = store.s_store_sk) -----------------------hashJoin[INNER_JOIN](store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk) -------------------------hashJoin[INNER_JOIN](store_sales.ss_sold_date_sk = date_dim.d_date_sk) ---------------------------PhysicalProject -----------------------------PhysicalOlapScan[store_sales] +----------PhysicalDistribute +------------PhysicalProject +--------------hashAgg[GLOBAL] +----------------PhysicalDistribute +------------------hashAgg[LOCAL] +--------------------PhysicalProject +----------------------hashJoin[INNER_JOIN](store_sales.ss_store_sk = store.s_store_sk) +------------------------hashJoin[INNER_JOIN](store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk) +--------------------------hashJoin[INNER_JOIN](store_sales.ss_sold_date_sk = date_dim.d_date_sk) +----------------------------PhysicalProject +------------------------------PhysicalOlapScan[store_sales] +----------------------------PhysicalDistribute +------------------------------PhysicalProject +--------------------------------filter(d_year IN (1998, 1999, 2000)(date_dim.d_dow = 1)) +----------------------------------PhysicalOlapScan[date_dim] --------------------------PhysicalDistribute ----------------------------PhysicalProject -------------------------------filter(d_year IN (1998, 1999, 2000)(date_dim.d_dow = 1)) ---------------------------------PhysicalOlapScan[date_dim] +------------------------------filter(((household_demographics.hd_dep_count = 5) OR (household_demographics.hd_vehicle_count > 4))) +--------------------------------PhysicalOlapScan[household_demographics] ------------------------PhysicalDistribute --------------------------PhysicalProject -----------------------------filter(((household_demographics.hd_dep_count = 5) OR (household_demographics.hd_vehicle_count > 4))) -------------------------------PhysicalOlapScan[household_demographics] -----------------------PhysicalDistribute -------------------------PhysicalProject ---------------------------filter((store.s_number_employees >= 200)(store.s_number_employees <= 295)) -----------------------------PhysicalOlapScan[store] +----------------------------filter((store.s_number_employees >= 200)(store.s_number_employees <= 295)) +------------------------------PhysicalOlapScan[store] ----------PhysicalDistribute ------------PhysicalProject --------------PhysicalOlapScan[customer] diff --git a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query87.out b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query87.out index 1219c58974..4b5af9e2a8 100644 --- a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query87.out +++ b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query87.out @@ -11,13 +11,15 @@ hashAgg[GLOBAL] ----------------hashAgg[LOCAL] ------------------PhysicalProject --------------------hashJoin[INNER_JOIN](store_sales.ss_customer_sk = customer.c_customer_sk) -----------------------hashJoin[INNER_JOIN](store_sales.ss_sold_date_sk = date_dim.d_date_sk) +----------------------PhysicalDistribute ------------------------PhysicalProject ---------------------------PhysicalOlapScan[store_sales] -------------------------PhysicalDistribute ---------------------------PhysicalProject -----------------------------filter((date_dim.d_month_seq >= 1184)(date_dim.d_month_seq <= 1195)) -------------------------------PhysicalOlapScan[date_dim] +--------------------------hashJoin[INNER_JOIN](store_sales.ss_sold_date_sk = date_dim.d_date_sk) +----------------------------PhysicalProject +------------------------------PhysicalOlapScan[store_sales] +----------------------------PhysicalDistribute +------------------------------PhysicalProject +--------------------------------filter((date_dim.d_month_seq >= 1184)(date_dim.d_month_seq <= 1195)) +----------------------------------PhysicalOlapScan[date_dim] ----------------------PhysicalDistribute ------------------------PhysicalProject --------------------------PhysicalOlapScan[customer] @@ -27,13 +29,15 @@ hashAgg[GLOBAL] ----------------hashAgg[LOCAL] ------------------PhysicalProject --------------------hashJoin[INNER_JOIN](catalog_sales.cs_bill_customer_sk = customer.c_customer_sk) -----------------------hashJoin[INNER_JOIN](catalog_sales.cs_sold_date_sk = date_dim.d_date_sk) +----------------------PhysicalDistribute ------------------------PhysicalProject ---------------------------PhysicalOlapScan[catalog_sales] -------------------------PhysicalDistribute ---------------------------PhysicalProject -----------------------------filter((date_dim.d_month_seq >= 1184)(date_dim.d_month_seq <= 1195)) -------------------------------PhysicalOlapScan[date_dim] +--------------------------hashJoin[INNER_JOIN](catalog_sales.cs_sold_date_sk = date_dim.d_date_sk) +----------------------------PhysicalProject +------------------------------PhysicalOlapScan[catalog_sales] +----------------------------PhysicalDistribute +------------------------------PhysicalProject +--------------------------------filter((date_dim.d_month_seq >= 1184)(date_dim.d_month_seq <= 1195)) +----------------------------------PhysicalOlapScan[date_dim] ----------------------PhysicalDistribute ------------------------PhysicalProject --------------------------PhysicalOlapScan[customer] diff --git a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query88.out b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query88.out index b3db8f84a7..5242db935c 100644 --- a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query88.out +++ b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query88.out @@ -1,33 +1,56 @@ -- This file is automatically generated. You should know what you did if you want to edit this -- !ds_shape_88 -- -NestedLoopJoin[CROSS_JOIN] +PhysicalProject --NestedLoopJoin[CROSS_JOIN] ----NestedLoopJoin[CROSS_JOIN] ------NestedLoopJoin[CROSS_JOIN] --------NestedLoopJoin[CROSS_JOIN] ----------NestedLoopJoin[CROSS_JOIN] ------------NestedLoopJoin[CROSS_JOIN] ---------------hashAgg[GLOBAL] -----------------PhysicalDistribute -------------------hashAgg[LOCAL] ---------------------PhysicalProject -----------------------hashJoin[INNER_JOIN](store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk) -------------------------hashJoin[INNER_JOIN](store_sales.ss_store_sk = store.s_store_sk) ---------------------------hashJoin[INNER_JOIN](store_sales.ss_sold_time_sk = time_dim.t_time_sk) -----------------------------PhysicalProject -------------------------------PhysicalOlapScan[store_sales] +--------------NestedLoopJoin[CROSS_JOIN] +----------------hashAgg[GLOBAL] +------------------PhysicalDistribute +--------------------hashAgg[LOCAL] +----------------------PhysicalProject +------------------------hashJoin[INNER_JOIN](store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk) +--------------------------hashJoin[INNER_JOIN](store_sales.ss_store_sk = store.s_store_sk) +----------------------------hashJoin[INNER_JOIN](store_sales.ss_sold_time_sk = time_dim.t_time_sk) +------------------------------PhysicalProject +--------------------------------PhysicalOlapScan[store_sales] +------------------------------PhysicalDistribute +--------------------------------PhysicalProject +----------------------------------filter((time_dim.t_minute >= 30)(time_dim.t_hour = 8)) +------------------------------------PhysicalOlapScan[time_dim] ----------------------------PhysicalDistribute ------------------------------PhysicalProject ---------------------------------filter((time_dim.t_minute >= 30)(time_dim.t_hour = 8)) -----------------------------------PhysicalOlapScan[time_dim] +--------------------------------filter((store.s_store_name = 'ese')) +----------------------------------PhysicalOlapScan[store] --------------------------PhysicalDistribute ----------------------------PhysicalProject -------------------------------filter((store.s_store_name = 'ese')) ---------------------------------PhysicalOlapScan[store] -------------------------PhysicalDistribute ---------------------------PhysicalProject -----------------------------filter(((((household_demographics.hd_dep_count = -1) AND (household_demographics.hd_vehicle_count <= 1)) OR ((household_demographics.hd_dep_count = 4) AND (household_demographics.hd_vehicle_count <= 6))) OR ((household_demographics.hd_dep_count = 3) AND (household_demographics.hd_vehicle_count <= 5)))) -------------------------------PhysicalOlapScan[household_demographics] +------------------------------filter(((((household_demographics.hd_dep_count = -1) AND (household_demographics.hd_vehicle_count <= 1)) OR ((household_demographics.hd_dep_count = 4) AND (household_demographics.hd_vehicle_count <= 6))) OR ((household_demographics.hd_dep_count = 3) AND (household_demographics.hd_vehicle_count <= 5)))) +--------------------------------PhysicalOlapScan[household_demographics] +----------------PhysicalDistribute +------------------hashAgg[GLOBAL] +--------------------PhysicalDistribute +----------------------hashAgg[LOCAL] +------------------------PhysicalProject +--------------------------hashJoin[INNER_JOIN](store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk) +----------------------------hashJoin[INNER_JOIN](store_sales.ss_store_sk = store.s_store_sk) +------------------------------hashJoin[INNER_JOIN](store_sales.ss_sold_time_sk = time_dim.t_time_sk) +--------------------------------PhysicalProject +----------------------------------PhysicalOlapScan[store_sales] +--------------------------------PhysicalDistribute +----------------------------------PhysicalProject +------------------------------------filter((time_dim.t_hour = 9)(time_dim.t_minute < 30)) +--------------------------------------PhysicalOlapScan[time_dim] +------------------------------PhysicalDistribute +--------------------------------PhysicalProject +----------------------------------filter((store.s_store_name = 'ese')) +------------------------------------PhysicalOlapScan[store] +----------------------------PhysicalDistribute +------------------------------PhysicalProject +--------------------------------filter(((((household_demographics.hd_dep_count = -1) AND (household_demographics.hd_vehicle_count <= 1)) OR ((household_demographics.hd_dep_count = 4) AND (household_demographics.hd_vehicle_count <= 6))) OR ((household_demographics.hd_dep_count = 3) AND (household_demographics.hd_vehicle_count <= 5)))) +----------------------------------PhysicalOlapScan[household_demographics] --------------PhysicalDistribute ----------------hashAgg[GLOBAL] ------------------PhysicalDistribute @@ -40,7 +63,7 @@ NestedLoopJoin[CROSS_JOIN] --------------------------------PhysicalOlapScan[store_sales] ------------------------------PhysicalDistribute --------------------------------PhysicalProject -----------------------------------filter((time_dim.t_hour = 9)(time_dim.t_minute < 30)) +----------------------------------filter((time_dim.t_minute >= 30)(time_dim.t_hour = 9)) ------------------------------------PhysicalOlapScan[time_dim] ----------------------------PhysicalDistribute ------------------------------PhysicalProject @@ -62,7 +85,7 @@ NestedLoopJoin[CROSS_JOIN] ------------------------------PhysicalOlapScan[store_sales] ----------------------------PhysicalDistribute ------------------------------PhysicalProject ---------------------------------filter((time_dim.t_minute >= 30)(time_dim.t_hour = 9)) +--------------------------------filter((time_dim.t_hour = 10)(time_dim.t_minute < 30)) ----------------------------------PhysicalOlapScan[time_dim] --------------------------PhysicalDistribute ----------------------------PhysicalProject @@ -84,7 +107,7 @@ NestedLoopJoin[CROSS_JOIN] ----------------------------PhysicalOlapScan[store_sales] --------------------------PhysicalDistribute ----------------------------PhysicalProject -------------------------------filter((time_dim.t_hour = 10)(time_dim.t_minute < 30)) +------------------------------filter((time_dim.t_minute >= 30)(time_dim.t_hour = 10)) --------------------------------PhysicalOlapScan[time_dim] ------------------------PhysicalDistribute --------------------------PhysicalProject @@ -106,7 +129,7 @@ NestedLoopJoin[CROSS_JOIN] --------------------------PhysicalOlapScan[store_sales] ------------------------PhysicalDistribute --------------------------PhysicalProject -----------------------------filter((time_dim.t_minute >= 30)(time_dim.t_hour = 10)) +----------------------------filter((time_dim.t_minute < 30)(time_dim.t_hour = 11)) ------------------------------PhysicalOlapScan[time_dim] ----------------------PhysicalDistribute ------------------------PhysicalProject @@ -128,7 +151,7 @@ NestedLoopJoin[CROSS_JOIN] ------------------------PhysicalOlapScan[store_sales] ----------------------PhysicalDistribute ------------------------PhysicalProject ---------------------------filter((time_dim.t_minute < 30)(time_dim.t_hour = 11)) +--------------------------filter((time_dim.t_hour = 11)(time_dim.t_minute >= 30)) ----------------------------PhysicalOlapScan[time_dim] --------------------PhysicalDistribute ----------------------PhysicalProject @@ -150,7 +173,7 @@ NestedLoopJoin[CROSS_JOIN] ----------------------PhysicalOlapScan[store_sales] --------------------PhysicalDistribute ----------------------PhysicalProject -------------------------filter((time_dim.t_hour = 11)(time_dim.t_minute >= 30)) +------------------------filter((time_dim.t_hour = 12)(time_dim.t_minute < 30)) --------------------------PhysicalOlapScan[time_dim] ------------------PhysicalDistribute --------------------PhysicalProject @@ -160,26 +183,4 @@ NestedLoopJoin[CROSS_JOIN] ------------------PhysicalProject --------------------filter(((((household_demographics.hd_dep_count = -1) AND (household_demographics.hd_vehicle_count <= 1)) OR ((household_demographics.hd_dep_count = 4) AND (household_demographics.hd_vehicle_count <= 6))) OR ((household_demographics.hd_dep_count = 3) AND (household_demographics.hd_vehicle_count <= 5)))) ----------------------PhysicalOlapScan[household_demographics] ---PhysicalDistribute -----hashAgg[GLOBAL] -------PhysicalDistribute ---------hashAgg[LOCAL] -----------PhysicalProject -------------hashJoin[INNER_JOIN](store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk) ---------------hashJoin[INNER_JOIN](store_sales.ss_store_sk = store.s_store_sk) -----------------hashJoin[INNER_JOIN](store_sales.ss_sold_time_sk = time_dim.t_time_sk) -------------------PhysicalProject ---------------------PhysicalOlapScan[store_sales] -------------------PhysicalDistribute ---------------------PhysicalProject -----------------------filter((time_dim.t_hour = 12)(time_dim.t_minute < 30)) -------------------------PhysicalOlapScan[time_dim] -----------------PhysicalDistribute -------------------PhysicalProject ---------------------filter((store.s_store_name = 'ese')) -----------------------PhysicalOlapScan[store] ---------------PhysicalDistribute -----------------PhysicalProject -------------------filter(((((household_demographics.hd_dep_count = -1) AND (household_demographics.hd_vehicle_count <= 1)) OR ((household_demographics.hd_dep_count = 4) AND (household_demographics.hd_vehicle_count <= 6))) OR ((household_demographics.hd_dep_count = 3) AND (household_demographics.hd_vehicle_count <= 5)))) ---------------------PhysicalOlapScan[household_demographics] diff --git a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query91.out b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query91.out index ab9f2157a4..f856ec0748 100644 --- a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query91.out +++ b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query91.out @@ -23,8 +23,9 @@ PhysicalQuickSort --------------------------hashJoin[INNER_JOIN](household_demographics.hd_demo_sk = customer.c_current_hdemo_sk) ----------------------------PhysicalProject ------------------------------hashJoin[INNER_JOIN](catalog_returns.cr_returning_customer_sk = customer.c_customer_sk) ---------------------------------PhysicalProject -----------------------------------PhysicalOlapScan[customer] +--------------------------------PhysicalDistribute +----------------------------------PhysicalProject +------------------------------------PhysicalOlapScan[customer] --------------------------------PhysicalDistribute ----------------------------------PhysicalProject ------------------------------------hashJoin[INNER_JOIN](catalog_returns.cr_returned_date_sk = date_dim.d_date_sk) diff --git a/regression-test/data/nereids_tpch_shape_sf1000_p0/shape/q3.out b/regression-test/data/nereids_tpch_shape_sf1000_p0/shape/q3.out index aff6e8dcd1..643f478927 100644 --- a/regression-test/data/nereids_tpch_shape_sf1000_p0/shape/q3.out +++ b/regression-test/data/nereids_tpch_shape_sf1000_p0/shape/q3.out @@ -10,12 +10,13 @@ PhysicalTopN --------------PhysicalProject ----------------filter((lineitem.l_shipdate > 1995-03-15)) ------------------PhysicalOlapScan[lineitem] ---------------PhysicalProject -----------------hashJoin[INNER_JOIN](customer.c_custkey = orders.o_custkey) -------------------PhysicalProject ---------------------filter((orders.o_orderdate < 1995-03-15)) -----------------------PhysicalOlapScan[orders] -------------------PhysicalDistribute +--------------PhysicalDistribute +----------------PhysicalProject +------------------hashJoin[INNER_JOIN](customer.c_custkey = orders.o_custkey) +--------------------PhysicalDistribute +----------------------PhysicalProject +------------------------filter((orders.o_orderdate < 1995-03-15)) +--------------------------PhysicalOlapScan[orders] --------------------PhysicalProject ----------------------filter((customer.c_mktsegment = 'BUILDING')) ------------------------PhysicalOlapScan[customer] diff --git a/regression-test/data/nereids_tpch_shape_sf500_p0/shape/q3.out b/regression-test/data/nereids_tpch_shape_sf500_p0/shape/q3.out index aff6e8dcd1..643f478927 100644 --- a/regression-test/data/nereids_tpch_shape_sf500_p0/shape/q3.out +++ b/regression-test/data/nereids_tpch_shape_sf500_p0/shape/q3.out @@ -10,12 +10,13 @@ PhysicalTopN --------------PhysicalProject ----------------filter((lineitem.l_shipdate > 1995-03-15)) ------------------PhysicalOlapScan[lineitem] ---------------PhysicalProject -----------------hashJoin[INNER_JOIN](customer.c_custkey = orders.o_custkey) -------------------PhysicalProject ---------------------filter((orders.o_orderdate < 1995-03-15)) -----------------------PhysicalOlapScan[orders] -------------------PhysicalDistribute +--------------PhysicalDistribute +----------------PhysicalProject +------------------hashJoin[INNER_JOIN](customer.c_custkey = orders.o_custkey) +--------------------PhysicalDistribute +----------------------PhysicalProject +------------------------filter((orders.o_orderdate < 1995-03-15)) +--------------------------PhysicalOlapScan[orders] --------------------PhysicalProject ----------------------filter((customer.c_mktsegment = 'BUILDING')) ------------------------PhysicalOlapScan[customer] --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org