This is an automated email from the ASF dual-hosted git repository.
englefly 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 987b29ded5 [fix](nereids)avoid to derive rowCount NaN (#20523)
987b29ded5 is described below
commit 987b29ded5ca636f6e2ff1cb94a5b6ea232568b8
Author: minghong <[email protected]>
AuthorDate: Sat Jun 10 15:40:14 2023 +0800
[fix](nereids)avoid to derive rowCount NaN (#20523)
the formula used to compute ndv after filter implies that the new rowCount
is smaller than the original rowCount. When we apply this formula to join, we
should add branch if new row count is bigger than original row count.
when new row count is bigger, the ndv is not changed.
---
.../org/apache/doris/statistics/Statistics.java | 3 +
.../nereids_tpcds_shape_sf100_p0/shape/query72.out | 73 ++++++------
.../nereids_tpcds_shape_sf100_p0/shape/query75.out | 121 ++++++++++----------
.../nereids_tpcds_shape_sf100_p0/shape/query80.out | 123 +++++++++++----------
4 files changed, 162 insertions(+), 158 deletions(-)
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 10f2d8a0ff..9ec904d418 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
@@ -47,6 +47,9 @@ public class Statistics {
* @return the new ndv after filter
*/
public static double computeNdv(double ndv, double newRowCount, double
oldRowCount) {
+ if (newRowCount > oldRowCount) {
+ return ndv;
+ }
double selectOneTuple = newRowCount /
StatsMathUtil.nonZeroDivisor(oldRowCount);
double allTuplesOfSameDistinctValueNotSelected = Math.pow((1 -
selectOneTuple), oldRowCount / ndv);
return Math.min(ndv * (1 - allTuplesOfSameDistinctValueNotSelected),
newRowCount);
diff --git
a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query72.out
b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query72.out
index 76f2ff62a5..f3d8b331c2 100644
--- a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query72.out
+++ b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query72.out
@@ -7,53 +7,54 @@ PhysicalTopN
--------PhysicalDistribute
----------hashAgg[LOCAL]
------------PhysicalProject
---------------hashJoin[INNER_JOIN](warehouse.w_warehouse_sk =
inventory.inv_warehouse_sk)
+--------------hashJoin[LEFT_OUTER_JOIN](catalog_sales.cs_promo_sk =
promotion.p_promo_sk)
----------------PhysicalProject
-------------------hashJoin[INNER_JOIN](catalog_sales.cs_item_sk =
inventory.inv_item_sk)(inventory.inv_date_sk =
d2.d_date_sk)(inventory.inv_quantity_on_hand < catalog_sales.cs_quantity)
---------------------PhysicalOlapScan[inventory]
---------------------PhysicalDistribute
-----------------------PhysicalProject
-------------------------hashJoin[INNER_JOIN](item.i_item_sk =
catalog_sales.cs_item_sk)
+------------------hashJoin[INNER_JOIN](warehouse.w_warehouse_sk =
inventory.inv_warehouse_sk)
+--------------------PhysicalProject
+----------------------hashJoin[INNER_JOIN](item.i_item_sk =
catalog_sales.cs_item_sk)
+------------------------PhysicalProject
+--------------------------PhysicalOlapScan[item]
+------------------------PhysicalDistribute
--------------------------PhysicalProject
-----------------------------PhysicalOlapScan[item]
---------------------------PhysicalDistribute
-----------------------------PhysicalProject
-------------------------------hashJoin[INNER_JOIN](d1.d_week_seq =
d2.d_week_seq)
+----------------------------hashJoin[RIGHT_OUTER_JOIN](catalog_returns.cr_item_sk
= catalog_sales.cs_item_sk)(catalog_returns.cr_order_number =
catalog_sales.cs_order_number)
+------------------------------PhysicalProject
+--------------------------------PhysicalOlapScan[catalog_returns]
+------------------------------PhysicalDistribute
--------------------------------PhysicalProject
-----------------------------------hashJoin[LEFT_OUTER_JOIN](catalog_sales.cs_promo_sk
= promotion.p_promo_sk)
+----------------------------------hashJoin[INNER_JOIN](catalog_sales.cs_ship_date_sk
= d3.d_date_sk)(d3.d_date > cast((cast(d_date as BIGINT) + 5) as DATEV2))
------------------------------------PhysicalProject
---------------------------------------hashJoin[RIGHT_OUTER_JOIN](catalog_returns.cr_item_sk
= catalog_sales.cs_item_sk)(catalog_returns.cr_order_number =
catalog_sales.cs_order_number)
-----------------------------------------PhysicalProject
-------------------------------------------PhysicalOlapScan[catalog_returns]
+--------------------------------------hashJoin[INNER_JOIN](inventory.inv_date_sk
= d2.d_date_sk)(d1.d_week_seq = d2.d_week_seq)
----------------------------------------PhysicalProject
-------------------------------------------hashJoin[INNER_JOIN](catalog_sales.cs_bill_cdemo_sk
= customer_demographics.cd_demo_sk)
---------------------------------------------hashJoin[INNER_JOIN](catalog_sales.cs_ship_date_sk
= d3.d_date_sk)(d3.d_date > cast((cast(d_date as BIGINT) + 5) as DATEV2))
-----------------------------------------------hashJoin[INNER_JOIN](catalog_sales.cs_sold_date_sk
= d1.d_date_sk)
-------------------------------------------------hashJoin[INNER_JOIN](catalog_sales.cs_bill_hdemo_sk
= household_demographics.hd_demo_sk)
---------------------------------------------------PhysicalProject
-----------------------------------------------------PhysicalOlapScan[catalog_sales]
+------------------------------------------hashJoin[INNER_JOIN](catalog_sales.cs_item_sk
= inventory.inv_item_sk)(inventory.inv_quantity_on_hand <
catalog_sales.cs_quantity)
+--------------------------------------------PhysicalOlapScan[inventory]
+--------------------------------------------PhysicalDistribute
+----------------------------------------------hashJoin[INNER_JOIN](catalog_sales.cs_bill_cdemo_sk
= customer_demographics.cd_demo_sk)
+------------------------------------------------hashJoin[INNER_JOIN](catalog_sales.cs_sold_date_sk
= d1.d_date_sk)
+--------------------------------------------------hashJoin[INNER_JOIN](catalog_sales.cs_bill_hdemo_sk
= household_demographics.hd_demo_sk)
+----------------------------------------------------PhysicalProject
+------------------------------------------------------PhysicalOlapScan[catalog_sales]
+----------------------------------------------------PhysicalDistribute
+------------------------------------------------------PhysicalProject
+--------------------------------------------------------filter((cast(hd_buy_potential
as VARCHAR(*)) = '501-1000'))
+----------------------------------------------------------PhysicalOlapScan[household_demographics]
--------------------------------------------------PhysicalDistribute
----------------------------------------------------PhysicalProject
-------------------------------------------------------filter((cast(hd_buy_potential
as VARCHAR(*)) = '501-1000'))
---------------------------------------------------------PhysicalOlapScan[household_demographics]
+------------------------------------------------------filter((d1.d_year =
2002))
+--------------------------------------------------------PhysicalOlapScan[date_dim]
------------------------------------------------PhysicalDistribute
--------------------------------------------------PhysicalProject
-----------------------------------------------------filter((d1.d_year = 2002))
-------------------------------------------------------PhysicalOlapScan[date_dim]
-----------------------------------------------PhysicalDistribute
-------------------------------------------------PhysicalProject
---------------------------------------------------PhysicalOlapScan[date_dim]
---------------------------------------------PhysicalDistribute
-----------------------------------------------PhysicalProject
-------------------------------------------------filter((cast(cd_marital_status
as VARCHAR(*)) = 'W'))
---------------------------------------------------PhysicalOlapScan[customer_demographics]
+----------------------------------------------------filter((cast(cd_marital_status
as VARCHAR(*)) = 'W'))
+------------------------------------------------------PhysicalOlapScan[customer_demographics]
+----------------------------------------PhysicalDistribute
+------------------------------------------PhysicalProject
+--------------------------------------------PhysicalOlapScan[date_dim]
------------------------------------PhysicalDistribute
--------------------------------------PhysicalProject
-----------------------------------------PhysicalOlapScan[promotion]
---------------------------------PhysicalDistribute
-----------------------------------PhysicalProject
-------------------------------------PhysicalOlapScan[date_dim]
+----------------------------------------PhysicalOlapScan[date_dim]
+--------------------PhysicalDistribute
+----------------------PhysicalProject
+------------------------PhysicalOlapScan[warehouse]
----------------PhysicalDistribute
------------------PhysicalProject
---------------------PhysicalOlapScan[warehouse]
+--------------------PhysicalOlapScan[promotion]
diff --git
a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query75.out
b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query75.out
index 4997e1c25c..066c40621d 100644
--- a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query75.out
+++ b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query75.out
@@ -2,76 +2,73 @@
-- !ds_shape_75 --
CteAnchor[cteId= ( CTEId#3=] )
--CteProducer[cteId= ( CTEId#3=] )
-----hashAgg[GLOBAL]
-------PhysicalDistribute
---------hashAgg[LOCAL]
-----------hashAgg[GLOBAL]
-------------PhysicalDistribute
---------------hashAgg[LOCAL]
-----------------PhysicalUnion
-------------------hashAgg[GLOBAL]
---------------------PhysicalDistribute
-----------------------hashAgg[LOCAL]
-------------------------PhysicalUnion
+----hashAgg[LOCAL]
+------hashAgg[GLOBAL]
+--------PhysicalDistribute
+----------hashAgg[LOCAL]
+------------PhysicalUnion
+--------------hashAgg[GLOBAL]
+----------------PhysicalDistribute
+------------------hashAgg[LOCAL]
+--------------------PhysicalUnion
+----------------------PhysicalProject
+------------------------hashJoin[RIGHT_OUTER_JOIN](catalog_sales.cs_item_sk =
catalog_returns.cr_item_sk)(catalog_sales.cs_order_number =
catalog_returns.cr_order_number)
--------------------------PhysicalProject
-----------------------------hashJoin[RIGHT_OUTER_JOIN](catalog_sales.cs_item_sk
= catalog_returns.cr_item_sk)(catalog_sales.cs_order_number =
catalog_returns.cr_order_number)
-------------------------------PhysicalProject
---------------------------------PhysicalOlapScan[catalog_returns]
-------------------------------PhysicalProject
---------------------------------hashJoin[INNER_JOIN](date_dim.d_date_sk =
catalog_sales.cs_sold_date_sk)
-----------------------------------hashJoin[INNER_JOIN](item.i_item_sk =
catalog_sales.cs_item_sk)
-------------------------------------PhysicalProject
---------------------------------------PhysicalOlapScan[catalog_sales]
-------------------------------------PhysicalDistribute
---------------------------------------PhysicalProject
-----------------------------------------filter((cast(i_category as VARCHAR(*))
= 'Home'))
-------------------------------------------PhysicalOlapScan[item]
-----------------------------------PhysicalDistribute
-------------------------------------PhysicalProject
---------------------------------------filter(((date_dim.d_year = 1998) OR
(date_dim.d_year = 1999)))
-----------------------------------------PhysicalOlapScan[date_dim]
+----------------------------PhysicalOlapScan[catalog_returns]
--------------------------PhysicalProject
-----------------------------hashJoin[RIGHT_OUTER_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]
-------------------------------PhysicalProject
---------------------------------hashJoin[INNER_JOIN](date_dim.d_date_sk =
store_sales.ss_sold_date_sk)
-----------------------------------hashJoin[INNER_JOIN](item.i_item_sk =
store_sales.ss_item_sk)
-------------------------------------PhysicalProject
---------------------------------------PhysicalOlapScan[store_sales]
-------------------------------------PhysicalDistribute
---------------------------------------PhysicalProject
-----------------------------------------filter((cast(i_category as VARCHAR(*))
= 'Home'))
-------------------------------------------PhysicalOlapScan[item]
-----------------------------------PhysicalDistribute
-------------------------------------PhysicalProject
---------------------------------------filter(((date_dim.d_year = 1998) OR
(date_dim.d_year = 1999)))
-----------------------------------------PhysicalOlapScan[date_dim]
-------------------PhysicalProject
---------------------hashJoin[RIGHT_OUTER_JOIN](web_sales.ws_item_sk =
web_returns.wr_item_sk)(web_sales.ws_order_number = web_returns.wr_order_number)
+----------------------------hashJoin[INNER_JOIN](date_dim.d_date_sk =
catalog_sales.cs_sold_date_sk)
+------------------------------hashJoin[INNER_JOIN](item.i_item_sk =
catalog_sales.cs_item_sk)
+--------------------------------PhysicalProject
+----------------------------------PhysicalOlapScan[catalog_sales]
+--------------------------------PhysicalDistribute
+----------------------------------PhysicalProject
+------------------------------------filter((cast(i_category as VARCHAR(*)) =
'Home'))
+--------------------------------------PhysicalOlapScan[item]
+------------------------------PhysicalDistribute
+--------------------------------PhysicalProject
+----------------------------------filter(((date_dim.d_year = 1998) OR
(date_dim.d_year = 1999)))
+------------------------------------PhysicalOlapScan[date_dim]
----------------------PhysicalProject
-------------------------PhysicalOlapScan[web_returns]
-----------------------PhysicalProject
-------------------------hashJoin[INNER_JOIN](date_dim.d_date_sk =
web_sales.ws_sold_date_sk)
---------------------------hashJoin[INNER_JOIN](item.i_item_sk =
web_sales.ws_item_sk)
-----------------------------PhysicalProject
-------------------------------PhysicalOlapScan[web_sales]
-----------------------------PhysicalDistribute
-------------------------------PhysicalProject
---------------------------------filter((cast(i_category as VARCHAR(*)) =
'Home'))
-----------------------------------PhysicalOlapScan[item]
---------------------------PhysicalDistribute
-----------------------------PhysicalProject
-------------------------------filter(((date_dim.d_year = 1998) OR
(date_dim.d_year = 1999)))
---------------------------------PhysicalOlapScan[date_dim]
+------------------------hashJoin[RIGHT_OUTER_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]
+--------------------------PhysicalProject
+----------------------------hashJoin[INNER_JOIN](date_dim.d_date_sk =
store_sales.ss_sold_date_sk)
+------------------------------hashJoin[INNER_JOIN](item.i_item_sk =
store_sales.ss_item_sk)
+--------------------------------PhysicalProject
+----------------------------------PhysicalOlapScan[store_sales]
+--------------------------------PhysicalDistribute
+----------------------------------PhysicalProject
+------------------------------------filter((cast(i_category as VARCHAR(*)) =
'Home'))
+--------------------------------------PhysicalOlapScan[item]
+------------------------------PhysicalDistribute
+--------------------------------PhysicalProject
+----------------------------------filter(((date_dim.d_year = 1998) OR
(date_dim.d_year = 1999)))
+------------------------------------PhysicalOlapScan[date_dim]
+--------------PhysicalProject
+----------------hashJoin[RIGHT_OUTER_JOIN](web_sales.ws_item_sk =
web_returns.wr_item_sk)(web_sales.ws_order_number = web_returns.wr_order_number)
+------------------PhysicalProject
+--------------------PhysicalOlapScan[web_returns]
+------------------PhysicalProject
+--------------------hashJoin[INNER_JOIN](date_dim.d_date_sk =
web_sales.ws_sold_date_sk)
+----------------------hashJoin[INNER_JOIN](item.i_item_sk =
web_sales.ws_item_sk)
+------------------------PhysicalProject
+--------------------------PhysicalOlapScan[web_sales]
+------------------------PhysicalDistribute
+--------------------------PhysicalProject
+----------------------------filter((cast(i_category as VARCHAR(*)) = 'Home'))
+------------------------------PhysicalOlapScan[item]
+----------------------PhysicalDistribute
+------------------------PhysicalProject
+--------------------------filter(((date_dim.d_year = 1998) OR (date_dim.d_year
= 1999)))
+----------------------------PhysicalOlapScan[date_dim]
--PhysicalTopN
----PhysicalDistribute
------PhysicalTopN
--------PhysicalProject
----------hashJoin[INNER_JOIN](curr_yr.i_brand_id =
prev_yr.i_brand_id)(curr_yr.i_class_id =
prev_yr.i_class_id)(curr_yr.i_category_id =
prev_yr.i_category_id)(curr_yr.i_manufact_id =
prev_yr.i_manufact_id)((cast(cast(sales_cnt as DECIMALV3(17, 2)) as
DECIMALV3(23, 8)) / cast(sales_cnt as DECIMALV3(17, 2))) < 0.900000)
-------------PhysicalDistribute
---------------filter((curr_yr.d_year = 1999))
-----------------CteConsumer[cteId= ( CTEId#3=] )
+------------filter((curr_yr.d_year = 1999))
+--------------CteConsumer[cteId= ( CTEId#3=] )
------------PhysicalDistribute
--------------filter((prev_yr.d_year = 1998))
----------------CteConsumer[cteId= ( CTEId#3=] )
diff --git
a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query80.out
b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query80.out
index 29730c3a44..be4f8708a0 100644
--- a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query80.out
+++ b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query80.out
@@ -14,89 +14,92 @@ PhysicalTopN
----------------------PhysicalDistribute
------------------------hashAgg[LOCAL]
--------------------------PhysicalProject
-----------------------------hashJoin[RIGHT_OUTER_JOIN](store_sales.ss_item_sk
= store_returns.sr_item_sk)(store_sales.ss_ticket_number =
store_returns.sr_ticket_number)
+----------------------------hashJoin[INNER_JOIN](store_sales.ss_store_sk =
store.s_store_sk)
------------------------------PhysicalProject
---------------------------------PhysicalOlapScan[store_returns]
-------------------------------PhysicalProject
---------------------------------hashJoin[INNER_JOIN](store_sales.ss_store_sk =
store.s_store_sk)
-----------------------------------hashJoin[INNER_JOIN](store_sales.ss_promo_sk
= promotion.p_promo_sk)
-------------------------------------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)
-----------------------------------------PhysicalProject
-------------------------------------------PhysicalOlapScan[store_sales]
+--------------------------------hashJoin[RIGHT_OUTER_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]
+----------------------------------PhysicalProject
+------------------------------------hashJoin[INNER_JOIN](store_sales.ss_promo_sk
= promotion.p_promo_sk)
+--------------------------------------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)
+------------------------------------------PhysicalProject
+--------------------------------------------PhysicalOlapScan[store_sales]
+------------------------------------------PhysicalDistribute
+--------------------------------------------PhysicalProject
+----------------------------------------------filter((date_dim.d_date >=
1998-08-28)(date_dim.d_date <= 1998-09-27))
+------------------------------------------------PhysicalOlapScan[date_dim]
----------------------------------------PhysicalDistribute
------------------------------------------PhysicalProject
---------------------------------------------filter((date_dim.d_date >=
1998-08-28)(date_dim.d_date <= 1998-09-27))
-----------------------------------------------PhysicalOlapScan[date_dim]
+--------------------------------------------filter((item.i_current_price >
50.00))
+----------------------------------------------PhysicalOlapScan[item]
--------------------------------------PhysicalDistribute
----------------------------------------PhysicalProject
-------------------------------------------filter((item.i_current_price >
50.00))
---------------------------------------------PhysicalOlapScan[item]
-------------------------------------PhysicalDistribute
---------------------------------------PhysicalProject
-----------------------------------------filter((cast(p_channel_tv as
VARCHAR(*)) = 'N'))
-------------------------------------------PhysicalOlapScan[promotion]
-----------------------------------PhysicalDistribute
-------------------------------------PhysicalProject
---------------------------------------PhysicalOlapScan[store]
+------------------------------------------filter((cast(p_channel_tv as
VARCHAR(*)) = 'N'))
+--------------------------------------------PhysicalOlapScan[promotion]
+------------------------------PhysicalDistribute
+--------------------------------PhysicalProject
+----------------------------------PhysicalOlapScan[store]
------------------PhysicalProject
--------------------hashAgg[GLOBAL]
----------------------PhysicalDistribute
------------------------hashAgg[LOCAL]
--------------------------PhysicalProject
-----------------------------hashJoin[RIGHT_OUTER_JOIN](catalog_sales.cs_item_sk
= catalog_returns.cr_item_sk)(catalog_sales.cs_order_number =
catalog_returns.cr_order_number)
+----------------------------hashJoin[INNER_JOIN](catalog_sales.cs_catalog_page_sk
= catalog_page.cp_catalog_page_sk)
------------------------------PhysicalProject
---------------------------------PhysicalOlapScan[catalog_returns]
-------------------------------PhysicalProject
---------------------------------hashJoin[INNER_JOIN](catalog_sales.cs_catalog_page_sk
= catalog_page.cp_catalog_page_sk)
-----------------------------------hashJoin[INNER_JOIN](catalog_sales.cs_promo_sk
= promotion.p_promo_sk)
-------------------------------------hashJoin[INNER_JOIN](catalog_sales.cs_item_sk
= item.i_item_sk)
---------------------------------------hashJoin[INNER_JOIN](catalog_sales.cs_sold_date_sk
= date_dim.d_date_sk)
-----------------------------------------PhysicalProject
-------------------------------------------PhysicalOlapScan[catalog_sales]
+--------------------------------hashJoin[RIGHT_OUTER_JOIN](catalog_sales.cs_item_sk
= catalog_returns.cr_item_sk)(catalog_sales.cs_order_number =
catalog_returns.cr_order_number)
+----------------------------------PhysicalProject
+------------------------------------PhysicalOlapScan[catalog_returns]
+----------------------------------PhysicalProject
+------------------------------------hashJoin[INNER_JOIN](catalog_sales.cs_promo_sk
= promotion.p_promo_sk)
+--------------------------------------hashJoin[INNER_JOIN](catalog_sales.cs_item_sk
= item.i_item_sk)
+----------------------------------------hashJoin[INNER_JOIN](catalog_sales.cs_sold_date_sk
= date_dim.d_date_sk)
+------------------------------------------PhysicalProject
+--------------------------------------------PhysicalOlapScan[catalog_sales]
+------------------------------------------PhysicalDistribute
+--------------------------------------------PhysicalProject
+----------------------------------------------filter((date_dim.d_date >=
1998-08-28)(date_dim.d_date <= 1998-09-27))
+------------------------------------------------PhysicalOlapScan[date_dim]
----------------------------------------PhysicalDistribute
------------------------------------------PhysicalProject
---------------------------------------------filter((date_dim.d_date >=
1998-08-28)(date_dim.d_date <= 1998-09-27))
-----------------------------------------------PhysicalOlapScan[date_dim]
+--------------------------------------------filter((item.i_current_price >
50.00))
+----------------------------------------------PhysicalOlapScan[item]
--------------------------------------PhysicalDistribute
----------------------------------------PhysicalProject
-------------------------------------------filter((item.i_current_price >
50.00))
---------------------------------------------PhysicalOlapScan[item]
-------------------------------------PhysicalDistribute
---------------------------------------PhysicalProject
-----------------------------------------filter((cast(p_channel_tv as
VARCHAR(*)) = 'N'))
-------------------------------------------PhysicalOlapScan[promotion]
-----------------------------------PhysicalDistribute
-------------------------------------PhysicalProject
---------------------------------------PhysicalOlapScan[catalog_page]
+------------------------------------------filter((cast(p_channel_tv as
VARCHAR(*)) = 'N'))
+--------------------------------------------PhysicalOlapScan[promotion]
+------------------------------PhysicalDistribute
+--------------------------------PhysicalProject
+----------------------------------PhysicalOlapScan[catalog_page]
------------------PhysicalProject
--------------------hashAgg[GLOBAL]
----------------------PhysicalDistribute
------------------------hashAgg[LOCAL]
--------------------------PhysicalProject
-----------------------------hashJoin[RIGHT_OUTER_JOIN](web_sales.ws_item_sk =
web_returns.wr_item_sk)(web_sales.ws_order_number = web_returns.wr_order_number)
-------------------------------PhysicalProject
---------------------------------PhysicalOlapScan[web_returns]
+----------------------------hashJoin[INNER_JOIN](web_sales.ws_web_site_sk =
web_site.web_site_sk)
------------------------------PhysicalProject
---------------------------------hashJoin[INNER_JOIN](web_sales.ws_web_site_sk
= web_site.web_site_sk)
-----------------------------------hashJoin[INNER_JOIN](web_sales.ws_promo_sk =
promotion.p_promo_sk)
-------------------------------------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]
+--------------------------------hashJoin[RIGHT_OUTER_JOIN](web_sales.ws_item_sk
= web_returns.wr_item_sk)(web_sales.ws_order_number =
web_returns.wr_order_number)
+----------------------------------PhysicalProject
+------------------------------------PhysicalOlapScan[web_returns]
+----------------------------------PhysicalProject
+------------------------------------hashJoin[INNER_JOIN](web_sales.ws_promo_sk
= promotion.p_promo_sk)
+--------------------------------------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-08-28)(date_dim.d_date <= 1998-09-27))
+------------------------------------------------PhysicalOlapScan[date_dim]
----------------------------------------PhysicalDistribute
------------------------------------------PhysicalProject
---------------------------------------------filter((date_dim.d_date >=
1998-08-28)(date_dim.d_date <= 1998-09-27))
-----------------------------------------------PhysicalOlapScan[date_dim]
+--------------------------------------------filter((item.i_current_price >
50.00))
+----------------------------------------------PhysicalOlapScan[item]
--------------------------------------PhysicalDistribute
----------------------------------------PhysicalProject
-------------------------------------------filter((item.i_current_price >
50.00))
---------------------------------------------PhysicalOlapScan[item]
-------------------------------------PhysicalDistribute
---------------------------------------PhysicalProject
-----------------------------------------filter((cast(p_channel_tv as
VARCHAR(*)) = 'N'))
-------------------------------------------PhysicalOlapScan[promotion]
-----------------------------------PhysicalDistribute
-------------------------------------PhysicalProject
---------------------------------------PhysicalOlapScan[web_site]
+------------------------------------------filter((cast(p_channel_tv as
VARCHAR(*)) = 'N'))
+--------------------------------------------PhysicalOlapScan[promotion]
+------------------------------PhysicalDistribute
+--------------------------------PhysicalProject
+----------------------------------PhysicalOlapScan[web_site]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]