sunchao commented on a change in pull request #32875:
URL: https://github.com/apache/spark/pull/32875#discussion_r721537582
##########
File path:
sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q17.sf100/explain.txt
##########
@@ -1,53 +1,50 @@
== Physical Plan ==
-TakeOrderedAndProject (49)
-+- * HashAggregate (48)
- +- Exchange (47)
- +- * HashAggregate (46)
- +- * Project (45)
- +- * SortMergeJoin Inner (44)
- :- * Sort (35)
- : +- Exchange (34)
- : +- * Project (33)
- : +- * SortMergeJoin Inner (32)
- : :- * Sort (23)
- : : +- Exchange (22)
- : : +- * Project (21)
- : : +- * SortMergeJoin Inner (20)
- : : :- * Sort (14)
- : : : +- Exchange (13)
- : : : +- * Project (12)
- : : : +- * BroadcastHashJoin Inner
BuildRight (11)
- : : : :- * Project (6)
- : : : : +- * BroadcastHashJoin
Inner BuildRight (5)
- : : : : :- * Filter (3)
- : : : : : +- * ColumnarToRow
(2)
- : : : : : +- Scan parquet
default.store_sales (1)
- : : : : +- ReusedExchange (4)
- : : : +- BroadcastExchange (10)
- : : : +- * Filter (9)
- : : : +- * ColumnarToRow (8)
- : : : +- Scan parquet
default.store (7)
- : : +- * Sort (19)
- : : +- Exchange (18)
- : : +- * Filter (17)
- : : +- * ColumnarToRow (16)
- : : +- Scan parquet
default.item (15)
- : +- * Sort (31)
- : +- Exchange (30)
- : +- * Project (29)
- : +- * BroadcastHashJoin Inner BuildRight
(28)
- : :- * Filter (26)
- : : +- * ColumnarToRow (25)
- : : +- Scan parquet
default.store_returns (24)
- : +- ReusedExchange (27)
- +- * Sort (43)
- +- Exchange (42)
- +- * Project (41)
- +- * BroadcastHashJoin Inner BuildRight (40)
- :- * Filter (38)
- : +- * ColumnarToRow (37)
- : +- Scan parquet default.catalog_sales (36)
- +- ReusedExchange (39)
+TakeOrderedAndProject (46)
++- * HashAggregate (45)
+ +- Exchange (44)
+ +- * HashAggregate (43)
+ +- * Project (42)
+ +- * SortMergeJoin Inner (41)
+ :- * Project (32)
+ : +- * SortMergeJoin Inner (31)
Review comment:
comparing to before: `Exchange (22)` is no longer required since join
keys are:
left: [ss_customer_sk#2, **ss_item_sk#1**, ss_ticket_number#4]
right: [sr_customer_sk#18, **sr_item_sk#17**, sr_ticket_number#19]
and partitioning are:
left: (**hashpartitioning(ss_item_sk#1, 5)** or
hashpartitioning(i_item_sk#13, 5))
right: **hashpartitioning(sr_item_sk#17, 5)**
##########
File path:
sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q29.sf100/explain.txt
##########
@@ -1,53 +1,50 @@
== Physical Plan ==
-TakeOrderedAndProject (49)
-+- * HashAggregate (48)
- +- Exchange (47)
- +- * HashAggregate (46)
- +- * Project (45)
- +- * SortMergeJoin Inner (44)
- :- * Sort (35)
- : +- Exchange (34)
- : +- * Project (33)
- : +- * SortMergeJoin Inner (32)
- : :- * Sort (23)
- : : +- Exchange (22)
- : : +- * Project (21)
- : : +- * SortMergeJoin Inner (20)
- : : :- * Sort (14)
- : : : +- Exchange (13)
- : : : +- * Project (12)
- : : : +- * BroadcastHashJoin Inner
BuildRight (11)
- : : : :- * Project (6)
- : : : : +- * BroadcastHashJoin
Inner BuildRight (5)
- : : : : :- * Filter (3)
- : : : : : +- * ColumnarToRow
(2)
- : : : : : +- Scan parquet
default.store_sales (1)
- : : : : +- ReusedExchange (4)
- : : : +- BroadcastExchange (10)
- : : : +- * Filter (9)
- : : : +- * ColumnarToRow (8)
- : : : +- Scan parquet
default.store (7)
- : : +- * Sort (19)
- : : +- Exchange (18)
- : : +- * Filter (17)
- : : +- * ColumnarToRow (16)
- : : +- Scan parquet
default.item (15)
- : +- * Sort (31)
- : +- Exchange (30)
- : +- * Project (29)
- : +- * BroadcastHashJoin Inner BuildRight
(28)
- : :- * Filter (26)
- : : +- * ColumnarToRow (25)
- : : +- Scan parquet
default.store_returns (24)
- : +- ReusedExchange (27)
- +- * Sort (43)
- +- Exchange (42)
- +- * Project (41)
- +- * BroadcastHashJoin Inner BuildRight (40)
- :- * Filter (38)
- : +- * ColumnarToRow (37)
- : +- Scan parquet default.catalog_sales (36)
- +- ReusedExchange (39)
+TakeOrderedAndProject (46)
++- * HashAggregate (45)
+ +- Exchange (44)
+ +- * HashAggregate (43)
+ +- * Project (42)
+ +- * SortMergeJoin Inner (41)
Review comment:
similar to before q17 & q25
##########
File path:
sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v2_7/q72.sf100/explain.txt
##########
@@ -1,74 +1,72 @@
== Physical Plan ==
-TakeOrderedAndProject (70)
-+- * HashAggregate (69)
- +- Exchange (68)
- +- * HashAggregate (67)
- +- * Project (66)
- +- * SortMergeJoin LeftOuter (65)
- :- * Sort (58)
- : +- Exchange (57)
- : +- * Project (56)
- : +- * BroadcastHashJoin LeftOuter BuildRight (55)
- : :- * Project (50)
- : : +- * SortMergeJoin Inner (49)
- : : :- * Sort (37)
- : : : +- Exchange (36)
- : : : +- * Project (35)
- : : : +- * BroadcastHashJoin Inner
BuildRight (34)
- : : : :- * Project (32)
- : : : : +- * SortMergeJoin Inner (31)
- : : : : :- * Sort (25)
- : : : : : +- Exchange (24)
- : : : : : +- * Project (23)
- : : : : : +- *
BroadcastHashJoin Inner BuildRight (22)
- : : : : : :- * Project
(17)
- : : : : : : +- *
BroadcastHashJoin Inner BuildRight (16)
- : : : : : : :- *
Project (10)
- : : : : : : : +- *
BroadcastHashJoin Inner BuildRight (9)
- : : : : : : : :-
* Filter (3)
- : : : : : : : :
+- * ColumnarToRow (2)
- : : : : : : : :
+- Scan parquet default.catalog_sales (1)
- : : : : : : : +-
BroadcastExchange (8)
- : : : : : : :
+- * Project (7)
- : : : : : : :
+- * Filter (6)
- : : : : : : :
+- * ColumnarToRow (5)
- : : : : : : :
+- Scan parquet default.household_demographics (4)
- : : : : : : +-
BroadcastExchange (15)
- : : : : : : +- *
Project (14)
- : : : : : : +-
* Filter (13)
- : : : : : :
+- * ColumnarToRow (12)
- : : : : : :
+- Scan parquet default.customer_demographics (11)
- : : : : : +-
BroadcastExchange (21)
- : : : : : +- * Filter
(20)
- : : : : : +- *
ColumnarToRow (19)
- : : : : : +-
Scan parquet default.date_dim (18)
- : : : : +- * Sort (30)
- : : : : +- Exchange (29)
- : : : : +- * Filter (28)
- : : : : +- * ColumnarToRow
(27)
- : : : : +- Scan parquet
default.item (26)
- : : : +- ReusedExchange (33)
- : : +- * Sort (48)
- : : +- Exchange (47)
- : : +- * Project (46)
- : : +- * BroadcastHashJoin Inner
BuildRight (45)
- : : :- * Filter (40)
- : : : +- * ColumnarToRow (39)
- : : : +- Scan parquet
default.inventory (38)
- : : +- BroadcastExchange (44)
- : : +- * Filter (43)
- : : +- * ColumnarToRow (42)
- : : +- Scan parquet
default.warehouse (41)
- : +- BroadcastExchange (54)
- : +- * Filter (53)
- : +- * ColumnarToRow (52)
- : +- Scan parquet default.promotion (51)
- +- * Sort (64)
- +- Exchange (63)
- +- * Project (62)
- +- * Filter (61)
- +- * ColumnarToRow (60)
- +- Scan parquet default.catalog_returns (59)
+TakeOrderedAndProject (68)
++- * HashAggregate (67)
+ +- Exchange (66)
+ +- * HashAggregate (65)
+ +- * Project (64)
+ +- * SortMergeJoin LeftOuter (63)
+ :- * Sort (56)
+ : +- * Project (55)
+ : +- * BroadcastHashJoin LeftOuter BuildRight (54)
+ : :- * Project (49)
+ : : +- * SortMergeJoin Inner (48)
Review comment:
`Exchange (36)` is no longer required.
join keys:
left: [**cs_item_sk#4**, d_date_sk#26]
right: [**inv_item_sk#27**, inv_date_sk#30]
partitioning:
left: **hashpartitioning(cs_item_sk#4, 5)** or
hashpartitioning(i_item_sk#20, 5)
right: **hashpartitioning(inv_item_sk#27, 5)**
##########
File path:
sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q47.sf100/explain.txt
##########
@@ -1,56 +1,53 @@
== Physical Plan ==
-TakeOrderedAndProject (52)
-+- * Project (51)
- +- * SortMergeJoin Inner (50)
- :- * Project (43)
- : +- * SortMergeJoin Inner (42)
- : :- * Sort (33)
- : : +- Exchange (32)
- : : +- * Project (31)
- : : +- * Filter (30)
- : : +- Window (29)
- : : +- * Filter (28)
- : : +- Window (27)
- : : +- * Sort (26)
- : : +- Exchange (25)
- : : +- * HashAggregate (24)
- : : +- Exchange (23)
- : : +- * HashAggregate (22)
- : : +- * Project (21)
- : : +- * SortMergeJoin Inner
(20)
- : : :- * Sort (14)
- : : : +- Exchange (13)
- : : : +- * Project (12)
- : : : +- *
BroadcastHashJoin Inner BuildRight (11)
- : : : :- * Project
(6)
- : : : : +- *
BroadcastHashJoin Inner BuildRight (5)
- : : : : :- *
Filter (3)
- : : : : : +-
* ColumnarToRow (2)
- : : : : :
+- Scan parquet default.store_sales (1)
- : : : : +-
ReusedExchange (4)
- : : : +-
BroadcastExchange (10)
- : : : +- *
Filter (9)
- : : : +- *
ColumnarToRow (8)
- : : : +-
Scan parquet default.store (7)
- : : +- * Sort (19)
- : : +- Exchange (18)
- : : +- * Filter (17)
- : : +- *
ColumnarToRow (16)
- : : +- Scan
parquet default.item (15)
- : +- * Sort (41)
- : +- Exchange (40)
- : +- * Project (39)
- : +- Window (38)
- : +- * Sort (37)
- : +- Exchange (36)
- : +- * HashAggregate (35)
- : +- ReusedExchange (34)
- +- * Sort (49)
- +- Exchange (48)
- +- * Project (47)
- +- Window (46)
- +- * Sort (45)
- +- ReusedExchange (44)
+TakeOrderedAndProject (49)
++- * Project (48)
+ +- * SortMergeJoin Inner (47)
Review comment:
`Exchange (48)` is no longer required since:
join keys:
left: [i_category#16, i_brand#15, s_store_name#10, s_company_name#11, rn#25]
right: [i_category#38, i_brand#39, s_store_name#40, s_company_name#41,
(rn#44 - 1)]
partitioning:
left: (hashpartitioning(i_category#16, i_brand#15, s_store_name#10,
s_company_name#11, 5) or hashpartitioning(i_category#27, i_brand#28,
s_store_name#29, s_company_name#30, 5))
right (through `ReusedExchange (42)` and then `Exchange (35)`):
hashpartitioning(i_category#27, i_brand#28, s_store_name#29, s_company_name#30,
5)
##########
File path:
sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q57.sf100/explain.txt
##########
@@ -1,56 +1,53 @@
== Physical Plan ==
-TakeOrderedAndProject (52)
-+- * Project (51)
- +- * SortMergeJoin Inner (50)
- :- * Project (43)
- : +- * SortMergeJoin Inner (42)
- : :- * Sort (33)
- : : +- Exchange (32)
- : : +- * Project (31)
- : : +- * Filter (30)
- : : +- Window (29)
- : : +- * Filter (28)
- : : +- Window (27)
- : : +- * Sort (26)
- : : +- Exchange (25)
- : : +- * HashAggregate (24)
- : : +- Exchange (23)
- : : +- * HashAggregate (22)
- : : +- * Project (21)
- : : +- * SortMergeJoin Inner
(20)
- : : :- * Sort (14)
- : : : +- Exchange (13)
- : : : +- * Project (12)
- : : : +- *
BroadcastHashJoin Inner BuildRight (11)
- : : : :- * Project
(6)
- : : : : +- *
BroadcastHashJoin Inner BuildRight (5)
- : : : : :- *
Filter (3)
- : : : : : +-
* ColumnarToRow (2)
- : : : : :
+- Scan parquet default.catalog_sales (1)
- : : : : +-
ReusedExchange (4)
- : : : +-
BroadcastExchange (10)
- : : : +- *
Filter (9)
- : : : +- *
ColumnarToRow (8)
- : : : +-
Scan parquet default.call_center (7)
- : : +- * Sort (19)
- : : +- Exchange (18)
- : : +- * Filter (17)
- : : +- *
ColumnarToRow (16)
- : : +- Scan
parquet default.item (15)
- : +- * Sort (41)
- : +- Exchange (40)
- : +- * Project (39)
- : +- Window (38)
- : +- * Sort (37)
- : +- Exchange (36)
- : +- * HashAggregate (35)
- : +- ReusedExchange (34)
- +- * Sort (49)
- +- Exchange (48)
- +- * Project (47)
- +- Window (46)
- +- * Sort (45)
- +- ReusedExchange (44)
+TakeOrderedAndProject (49)
++- * Project (48)
+ +- * SortMergeJoin Inner (47)
Review comment:
Similar to Q47
##########
File path:
sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q25.sf100/explain.txt
##########
@@ -1,53 +1,50 @@
== Physical Plan ==
-TakeOrderedAndProject (49)
-+- * HashAggregate (48)
- +- Exchange (47)
- +- * HashAggregate (46)
- +- * Project (45)
- +- * SortMergeJoin Inner (44)
- :- * Sort (35)
- : +- Exchange (34)
- : +- * Project (33)
- : +- * SortMergeJoin Inner (32)
- : :- * Sort (23)
- : : +- Exchange (22)
- : : +- * Project (21)
- : : +- * SortMergeJoin Inner (20)
- : : :- * Sort (14)
- : : : +- Exchange (13)
- : : : +- * Project (12)
- : : : +- * BroadcastHashJoin Inner
BuildRight (11)
- : : : :- * Project (6)
- : : : : +- * BroadcastHashJoin
Inner BuildRight (5)
- : : : : :- * Filter (3)
- : : : : : +- * ColumnarToRow
(2)
- : : : : : +- Scan parquet
default.store_sales (1)
- : : : : +- ReusedExchange (4)
- : : : +- BroadcastExchange (10)
- : : : +- * Filter (9)
- : : : +- * ColumnarToRow (8)
- : : : +- Scan parquet
default.store (7)
- : : +- * Sort (19)
- : : +- Exchange (18)
- : : +- * Filter (17)
- : : +- * ColumnarToRow (16)
- : : +- Scan parquet
default.item (15)
- : +- * Sort (31)
- : +- Exchange (30)
- : +- * Project (29)
- : +- * BroadcastHashJoin Inner BuildRight
(28)
- : :- * Filter (26)
- : : +- * ColumnarToRow (25)
- : : +- Scan parquet
default.store_returns (24)
- : +- ReusedExchange (27)
- +- * Sort (43)
- +- Exchange (42)
- +- * Project (41)
- +- * BroadcastHashJoin Inner BuildRight (40)
- :- * Filter (38)
- : +- * ColumnarToRow (37)
- : +- Scan parquet default.catalog_sales (36)
- +- ReusedExchange (39)
+TakeOrderedAndProject (46)
++- * HashAggregate (45)
+ +- Exchange (44)
+ +- * HashAggregate (43)
+ +- * Project (42)
+ +- * SortMergeJoin Inner (41)
+ :- * Project (32)
+ : +- * SortMergeJoin Inner (31)
Review comment:
comparing to before: `Exchange (22)` is no longer required since join
keys are:
left: [ss_customer_sk#2, **ss_item_sk#1**, ss_ticket_number#4]
right: [sr_customer_sk#19, **sr_item_sk#18**, sr_ticket_number#20]
and partitioning are:
left: (**hashpartitioning(ss_item_sk#1, 5)** or
hashpartitioning(i_item_sk#13, 5))
right: **hashpartitioning(sr_item_sk#17, 5)**
##########
File path:
sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q29.sf100/explain.txt
##########
@@ -1,53 +1,50 @@
== Physical Plan ==
-TakeOrderedAndProject (49)
-+- * HashAggregate (48)
- +- Exchange (47)
- +- * HashAggregate (46)
- +- * Project (45)
- +- * SortMergeJoin Inner (44)
- :- * Sort (35)
- : +- Exchange (34)
- : +- * Project (33)
- : +- * SortMergeJoin Inner (32)
- : :- * Sort (23)
- : : +- Exchange (22)
- : : +- * Project (21)
- : : +- * SortMergeJoin Inner (20)
- : : :- * Sort (14)
- : : : +- Exchange (13)
- : : : +- * Project (12)
- : : : +- * BroadcastHashJoin Inner
BuildRight (11)
- : : : :- * Project (6)
- : : : : +- * BroadcastHashJoin
Inner BuildRight (5)
- : : : : :- * Filter (3)
- : : : : : +- * ColumnarToRow
(2)
- : : : : : +- Scan parquet
default.store_sales (1)
- : : : : +- ReusedExchange (4)
- : : : +- BroadcastExchange (10)
- : : : +- * Filter (9)
- : : : +- * ColumnarToRow (8)
- : : : +- Scan parquet
default.store (7)
- : : +- * Sort (19)
- : : +- Exchange (18)
- : : +- * Filter (17)
- : : +- * ColumnarToRow (16)
- : : +- Scan parquet
default.item (15)
- : +- * Sort (31)
- : +- Exchange (30)
- : +- * Project (29)
- : +- * BroadcastHashJoin Inner BuildRight
(28)
- : :- * Filter (26)
- : : +- * ColumnarToRow (25)
- : : +- Scan parquet
default.store_returns (24)
- : +- ReusedExchange (27)
- +- * Sort (43)
- +- Exchange (42)
- +- * Project (41)
- +- * BroadcastHashJoin Inner BuildRight (40)
- :- * Filter (38)
- : +- * ColumnarToRow (37)
- : +- Scan parquet default.catalog_sales (36)
- +- ReusedExchange (39)
+TakeOrderedAndProject (46)
++- * HashAggregate (45)
+ +- Exchange (44)
+ +- * HashAggregate (43)
+ +- * Project (42)
+ +- * SortMergeJoin Inner (41)
+ :- * Project (32)
+ : +- * SortMergeJoin Inner (31)
Review comment:
similar to before q17 & q25
##########
File path:
sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q25.sf100/explain.txt
##########
@@ -1,53 +1,50 @@
== Physical Plan ==
-TakeOrderedAndProject (49)
-+- * HashAggregate (48)
- +- Exchange (47)
- +- * HashAggregate (46)
- +- * Project (45)
- +- * SortMergeJoin Inner (44)
- :- * Sort (35)
- : +- Exchange (34)
- : +- * Project (33)
- : +- * SortMergeJoin Inner (32)
- : :- * Sort (23)
- : : +- Exchange (22)
- : : +- * Project (21)
- : : +- * SortMergeJoin Inner (20)
- : : :- * Sort (14)
- : : : +- Exchange (13)
- : : : +- * Project (12)
- : : : +- * BroadcastHashJoin Inner
BuildRight (11)
- : : : :- * Project (6)
- : : : : +- * BroadcastHashJoin
Inner BuildRight (5)
- : : : : :- * Filter (3)
- : : : : : +- * ColumnarToRow
(2)
- : : : : : +- Scan parquet
default.store_sales (1)
- : : : : +- ReusedExchange (4)
- : : : +- BroadcastExchange (10)
- : : : +- * Filter (9)
- : : : +- * ColumnarToRow (8)
- : : : +- Scan parquet
default.store (7)
- : : +- * Sort (19)
- : : +- Exchange (18)
- : : +- * Filter (17)
- : : +- * ColumnarToRow (16)
- : : +- Scan parquet
default.item (15)
- : +- * Sort (31)
- : +- Exchange (30)
- : +- * Project (29)
- : +- * BroadcastHashJoin Inner BuildRight
(28)
- : :- * Filter (26)
- : : +- * ColumnarToRow (25)
- : : +- Scan parquet
default.store_returns (24)
- : +- ReusedExchange (27)
- +- * Sort (43)
- +- Exchange (42)
- +- * Project (41)
- +- * BroadcastHashJoin Inner BuildRight (40)
- :- * Filter (38)
- : +- * ColumnarToRow (37)
- : +- Scan parquet default.catalog_sales (36)
- +- ReusedExchange (39)
+TakeOrderedAndProject (46)
++- * HashAggregate (45)
+ +- Exchange (44)
+ +- * HashAggregate (43)
+ +- * Project (42)
+ +- * SortMergeJoin Inner (41)
Review comment:
comparing to before: `Exchange (34)` is no longer required since join
keys are:
left: [sr_customer_sk#19, **sr_item_sk#18**]
right: [2]: [cs_bill_customer_sk#26, **cs_item_sk#27**]
and partitioning are:
left: (hashpartitioning(ss_item_sk#1, 5) or hashpartitioning(i_item_sk#14,
5)) or **hashpartitioning(sr_item_sk#18, 5)**
right: **hashpartitioning(cs_item_sk#27, 5)**
##########
File path:
sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v2_7/q51a.sf100/explain.txt
##########
@@ -1,74 +1,72 @@
== Physical Plan ==
-TakeOrderedAndProject (70)
-+- * Filter (69)
- +- * HashAggregate (68)
- +- * HashAggregate (67)
- +- * Project (66)
- +- * SortMergeJoin Inner (65)
- :- Window (60)
- : +- * Sort (59)
- : +- Exchange (58)
- : +- * Project (57)
- : +- * Filter (56)
- : +- SortMergeJoin FullOuter (55)
- : :- * Sort (27)
- : : +- Exchange (26)
- : : +- * HashAggregate (25)
- : : +- * HashAggregate (24)
- : : +- * Project (23)
- : : +- * SortMergeJoin Inner (22)
- : : :- * Sort (15)
- : : : +- Exchange (14)
- : : : +- * Project (13)
- : : : +- Window (12)
- : : : +- * Sort (11)
- : : : +- Exchange
(10)
- : : : +- *
HashAggregate (9)
- : : : +-
Exchange (8)
- : : : +-
* HashAggregate (7)
- : : :
+- * Project (6)
- : : :
+- * BroadcastHashJoin Inner BuildRight (5)
- : : :
:- * Filter (3)
- : : :
: +- * ColumnarToRow (2)
- : : :
: +- Scan parquet default.web_sales (1)
- : : :
+- ReusedExchange (4)
- : : +- * Sort (21)
- : : +- Exchange (20)
- : : +- * Project (19)
- : : +- Window (18)
- : : +- * Sort (17)
- : : +-
ReusedExchange (16)
- : +- * Sort (54)
- : +- Exchange (53)
- : +- * HashAggregate (52)
- : +- * HashAggregate (51)
- : +- * Project (50)
- : +- * SortMergeJoin Inner (49)
- : :- * Sort (42)
- : : +- Exchange (41)
- : : +- * Project (40)
- : : +- Window (39)
- : : +- * Sort (38)
- : : +- Exchange
(37)
- : : +- *
HashAggregate (36)
- : : +-
Exchange (35)
- : : +-
* HashAggregate (34)
- : :
+- * Project (33)
- : :
+- * BroadcastHashJoin Inner BuildRight (32)
- : :
:- * Filter (30)
- : :
: +- * ColumnarToRow (29)
- : :
: +- Scan parquet default.store_sales (28)
- : :
+- ReusedExchange (31)
- : +- * Sort (48)
- : +- Exchange (47)
- : +- * Project (46)
- : +- Window (45)
- : +- * Sort (44)
- : +-
ReusedExchange (43)
- +- * Project (64)
- +- Window (63)
- +- * Sort (62)
- +- ReusedExchange (61)
+TakeOrderedAndProject (68)
++- * Filter (67)
+ +- * HashAggregate (66)
+ +- * HashAggregate (65)
+ +- * Project (64)
+ +- * SortMergeJoin Inner (63)
+ :- Window (58)
+ : +- * Sort (57)
+ : +- Exchange (56)
+ : +- * Project (55)
+ : +- * Filter (54)
+ : +- SortMergeJoin FullOuter (53)
Review comment:
`Exchange (26)` and `Exchange (53)` are no longer required.
join keys:
left: [item_sk#11, d_date#6]
right: [item_sk#37, d_date#32]
partitioning:
left: hashpartitioning(item_sk#11, 5) or hashpartitioning(item_sk#19, 5)
right: hashpartitioning(item_sk#37, 5) or hashpartitioning(item_sk#45, 5)
##########
File path:
sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q57.sf100/explain.txt
##########
@@ -1,56 +1,53 @@
== Physical Plan ==
-TakeOrderedAndProject (52)
-+- * Project (51)
- +- * SortMergeJoin Inner (50)
- :- * Project (43)
- : +- * SortMergeJoin Inner (42)
- : :- * Sort (33)
- : : +- Exchange (32)
- : : +- * Project (31)
- : : +- * Filter (30)
- : : +- Window (29)
- : : +- * Filter (28)
- : : +- Window (27)
- : : +- * Sort (26)
- : : +- Exchange (25)
- : : +- * HashAggregate (24)
- : : +- Exchange (23)
- : : +- * HashAggregate (22)
- : : +- * Project (21)
- : : +- * SortMergeJoin Inner
(20)
- : : :- * Sort (14)
- : : : +- Exchange (13)
- : : : +- * Project (12)
- : : : +- *
BroadcastHashJoin Inner BuildRight (11)
- : : : :- * Project
(6)
- : : : : +- *
BroadcastHashJoin Inner BuildRight (5)
- : : : : :- *
Filter (3)
- : : : : : +-
* ColumnarToRow (2)
- : : : : :
+- Scan parquet default.catalog_sales (1)
- : : : : +-
ReusedExchange (4)
- : : : +-
BroadcastExchange (10)
- : : : +- *
Filter (9)
- : : : +- *
ColumnarToRow (8)
- : : : +-
Scan parquet default.call_center (7)
- : : +- * Sort (19)
- : : +- Exchange (18)
- : : +- * Filter (17)
- : : +- *
ColumnarToRow (16)
- : : +- Scan
parquet default.item (15)
- : +- * Sort (41)
- : +- Exchange (40)
- : +- * Project (39)
- : +- Window (38)
- : +- * Sort (37)
- : +- Exchange (36)
- : +- * HashAggregate (35)
- : +- ReusedExchange (34)
- +- * Sort (49)
- +- Exchange (48)
- +- * Project (47)
- +- Window (46)
- +- * Sort (45)
- +- ReusedExchange (44)
+TakeOrderedAndProject (49)
++- * Project (48)
+ +- * SortMergeJoin Inner (47)
+ :- * Project (41)
+ : +- * SortMergeJoin Inner (40)
Review comment:
Similar to Q47
##########
File path:
sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v2_7/q72.sf100/explain.txt
##########
@@ -1,74 +1,72 @@
== Physical Plan ==
-TakeOrderedAndProject (70)
-+- * HashAggregate (69)
- +- Exchange (68)
- +- * HashAggregate (67)
- +- * Project (66)
- +- * SortMergeJoin LeftOuter (65)
- :- * Sort (58)
- : +- Exchange (57)
- : +- * Project (56)
- : +- * BroadcastHashJoin LeftOuter BuildRight (55)
- : :- * Project (50)
- : : +- * SortMergeJoin Inner (49)
- : : :- * Sort (37)
- : : : +- Exchange (36)
- : : : +- * Project (35)
- : : : +- * BroadcastHashJoin Inner
BuildRight (34)
- : : : :- * Project (32)
- : : : : +- * SortMergeJoin Inner (31)
- : : : : :- * Sort (25)
- : : : : : +- Exchange (24)
- : : : : : +- * Project (23)
- : : : : : +- *
BroadcastHashJoin Inner BuildRight (22)
- : : : : : :- * Project
(17)
- : : : : : : +- *
BroadcastHashJoin Inner BuildRight (16)
- : : : : : : :- *
Project (10)
- : : : : : : : +- *
BroadcastHashJoin Inner BuildRight (9)
- : : : : : : : :-
* Filter (3)
- : : : : : : : :
+- * ColumnarToRow (2)
- : : : : : : : :
+- Scan parquet default.catalog_sales (1)
- : : : : : : : +-
BroadcastExchange (8)
- : : : : : : :
+- * Project (7)
- : : : : : : :
+- * Filter (6)
- : : : : : : :
+- * ColumnarToRow (5)
- : : : : : : :
+- Scan parquet default.household_demographics (4)
- : : : : : : +-
BroadcastExchange (15)
- : : : : : : +- *
Project (14)
- : : : : : : +-
* Filter (13)
- : : : : : :
+- * ColumnarToRow (12)
- : : : : : :
+- Scan parquet default.customer_demographics (11)
- : : : : : +-
BroadcastExchange (21)
- : : : : : +- * Filter
(20)
- : : : : : +- *
ColumnarToRow (19)
- : : : : : +-
Scan parquet default.date_dim (18)
- : : : : +- * Sort (30)
- : : : : +- Exchange (29)
- : : : : +- * Filter (28)
- : : : : +- * ColumnarToRow
(27)
- : : : : +- Scan parquet
default.item (26)
- : : : +- ReusedExchange (33)
- : : +- * Sort (48)
- : : +- Exchange (47)
- : : +- * Project (46)
- : : +- * BroadcastHashJoin Inner
BuildRight (45)
- : : :- * Filter (40)
- : : : +- * ColumnarToRow (39)
- : : : +- Scan parquet
default.inventory (38)
- : : +- BroadcastExchange (44)
- : : +- * Filter (43)
- : : +- * ColumnarToRow (42)
- : : +- Scan parquet
default.warehouse (41)
- : +- BroadcastExchange (54)
- : +- * Filter (53)
- : +- * ColumnarToRow (52)
- : +- Scan parquet default.promotion (51)
- +- * Sort (64)
- +- Exchange (63)
- +- * Project (62)
- +- * Filter (61)
- +- * ColumnarToRow (60)
- +- Scan parquet default.catalog_returns (59)
+TakeOrderedAndProject (68)
++- * HashAggregate (67)
+ +- Exchange (66)
+ +- * HashAggregate (65)
+ +- * Project (64)
+ +- * SortMergeJoin LeftOuter (63)
Review comment:
`Exchange (57)` is no longer required
join keys:
left: [**cs_item_sk#4**, cs_order_number#6]
right: [**cr_item_sk#37**, cr_order_number#38]
partitioning:
left: (**hashpartitioning(cs_item_sk#4, 5)** or
hashpartitioning(i_item_sk#20, 5)) or hashpartitioning(inv_item_sk#27, 5)
right: **hashpartitioning(cr_item_sk#37, 5)**
##########
File path:
sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q17.sf100/explain.txt
##########
@@ -1,53 +1,50 @@
== Physical Plan ==
-TakeOrderedAndProject (49)
-+- * HashAggregate (48)
- +- Exchange (47)
- +- * HashAggregate (46)
- +- * Project (45)
- +- * SortMergeJoin Inner (44)
- :- * Sort (35)
- : +- Exchange (34)
- : +- * Project (33)
- : +- * SortMergeJoin Inner (32)
- : :- * Sort (23)
- : : +- Exchange (22)
- : : +- * Project (21)
- : : +- * SortMergeJoin Inner (20)
- : : :- * Sort (14)
- : : : +- Exchange (13)
- : : : +- * Project (12)
- : : : +- * BroadcastHashJoin Inner
BuildRight (11)
- : : : :- * Project (6)
- : : : : +- * BroadcastHashJoin
Inner BuildRight (5)
- : : : : :- * Filter (3)
- : : : : : +- * ColumnarToRow
(2)
- : : : : : +- Scan parquet
default.store_sales (1)
- : : : : +- ReusedExchange (4)
- : : : +- BroadcastExchange (10)
- : : : +- * Filter (9)
- : : : +- * ColumnarToRow (8)
- : : : +- Scan parquet
default.store (7)
- : : +- * Sort (19)
- : : +- Exchange (18)
- : : +- * Filter (17)
- : : +- * ColumnarToRow (16)
- : : +- Scan parquet
default.item (15)
- : +- * Sort (31)
- : +- Exchange (30)
- : +- * Project (29)
- : +- * BroadcastHashJoin Inner BuildRight
(28)
- : :- * Filter (26)
- : : +- * ColumnarToRow (25)
- : : +- Scan parquet
default.store_returns (24)
- : +- ReusedExchange (27)
- +- * Sort (43)
- +- Exchange (42)
- +- * Project (41)
- +- * BroadcastHashJoin Inner BuildRight (40)
- :- * Filter (38)
- : +- * ColumnarToRow (37)
- : +- Scan parquet default.catalog_sales (36)
- +- ReusedExchange (39)
+TakeOrderedAndProject (46)
++- * HashAggregate (45)
+ +- Exchange (44)
+ +- * HashAggregate (43)
+ +- * Project (42)
+ +- * SortMergeJoin Inner (41)
Review comment:
comparing to before: `Exchange (34)` is no longer required since join
keys are:
left: [sr_customer_sk#18, **sr_item_sk#17**]
right: [2]: [cs_bill_customer_sk#25, **cs_item_sk#26**]
and partitioning are:
left: ((hashpartitioning(ss_item_sk#1, 5) OR hashpartitioning(i_item_sk#13,
5)) or **hashpartitioning(sr_item_sk#17, 5)**
right: **hashpartitioning(cs_item_sk#26, 5)**
##########
File path:
sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q47.sf100/explain.txt
##########
@@ -1,56 +1,53 @@
== Physical Plan ==
-TakeOrderedAndProject (52)
-+- * Project (51)
- +- * SortMergeJoin Inner (50)
- :- * Project (43)
- : +- * SortMergeJoin Inner (42)
- : :- * Sort (33)
- : : +- Exchange (32)
- : : +- * Project (31)
- : : +- * Filter (30)
- : : +- Window (29)
- : : +- * Filter (28)
- : : +- Window (27)
- : : +- * Sort (26)
- : : +- Exchange (25)
- : : +- * HashAggregate (24)
- : : +- Exchange (23)
- : : +- * HashAggregate (22)
- : : +- * Project (21)
- : : +- * SortMergeJoin Inner
(20)
- : : :- * Sort (14)
- : : : +- Exchange (13)
- : : : +- * Project (12)
- : : : +- *
BroadcastHashJoin Inner BuildRight (11)
- : : : :- * Project
(6)
- : : : : +- *
BroadcastHashJoin Inner BuildRight (5)
- : : : : :- *
Filter (3)
- : : : : : +-
* ColumnarToRow (2)
- : : : : :
+- Scan parquet default.store_sales (1)
- : : : : +-
ReusedExchange (4)
- : : : +-
BroadcastExchange (10)
- : : : +- *
Filter (9)
- : : : +- *
ColumnarToRow (8)
- : : : +-
Scan parquet default.store (7)
- : : +- * Sort (19)
- : : +- Exchange (18)
- : : +- * Filter (17)
- : : +- *
ColumnarToRow (16)
- : : +- Scan
parquet default.item (15)
- : +- * Sort (41)
- : +- Exchange (40)
- : +- * Project (39)
- : +- Window (38)
- : +- * Sort (37)
- : +- Exchange (36)
- : +- * HashAggregate (35)
- : +- ReusedExchange (34)
- +- * Sort (49)
- +- Exchange (48)
- +- * Project (47)
- +- Window (46)
- +- * Sort (45)
- +- ReusedExchange (44)
+TakeOrderedAndProject (49)
++- * Project (48)
+ +- * SortMergeJoin Inner (47)
+ :- * Project (41)
+ : +- * SortMergeJoin Inner (40)
Review comment:
`Exchange (32)` and `Exchange(40)` are no longer required since:
join keys:
left: [**i_category#16, i_brand#15, s_store_name#10, s_company_name#11**,
rn#25]
right: [**i_category#27, i_brand#28, s_store_name#29, s_company_name#30**,
(rn#36 + 1)]
partitioning:
left (through `Exchange (25)`): **hashpartitioning(i_category#16,
i_brand#15, s_store_name#10, s_company_name#11, 5)**
right (through `Exchange (35)`): **hashpartitioning(i_category#27,
i_brand#28, s_store_name#29, s_company_name#30, 5)**
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]