== Physical Plan ==
TakeOrderedAndProject (67)
+- * HashAggregate (66)
   +- Exchange (65)
      +- * HashAggregate (64)
         +- * Project (63)
            +- * SortMergeJoin LeftOuter (62)
               :- * Sort (55)
               :  +- Exchange (54)
               :     +- * Project (53)
               :        +- * BroadcastHashJoin LeftOuter BuildRight (52)
               :           :- * Project (47)
               :           :  +- * BroadcastHashJoin Inner BuildRight (46)
               :           :     :- * ColumnarToRow (41)
               :           :     :  +- CometProject (40)
               :           :     :     +- CometBroadcastHashJoin (39)
               :           :     :        :- CometProject (35)
               :           :     :        :  +- CometBroadcastHashJoin (34)
               :           :     :        :     :- CometProject (29)
               :           :     :        :     :  +- CometBroadcastHashJoin (28)
               :           :     :        :     :     :- CometProject (23)
               :           :     :        :     :     :  +- CometBroadcastHashJoin (22)
               :           :     :        :     :     :     :- CometProject (17)
               :           :     :        :     :     :     :  +- CometBroadcastHashJoin (16)
               :           :     :        :     :     :     :     :- CometProject (12)
               :           :     :        :     :     :     :     :  +- CometBroadcastHashJoin (11)
               :           :     :        :     :     :     :     :     :- CometProject (7)
               :           :     :        :     :     :     :     :     :  +- CometBroadcastHashJoin (6)
               :           :     :        :     :     :     :     :     :     :- CometFilter (2)
               :           :     :        :     :     :     :     :     :     :  +- CometScan parquet spark_catalog.default.catalog_sales (1)
               :           :     :        :     :     :     :     :     :     +- CometBroadcastExchange (5)
               :           :     :        :     :     :     :     :     :        +- CometFilter (4)
               :           :     :        :     :     :     :     :     :           +- CometScan parquet spark_catalog.default.inventory (3)
               :           :     :        :     :     :     :     :     +- CometBroadcastExchange (10)
               :           :     :        :     :     :     :     :        +- CometFilter (9)
               :           :     :        :     :     :     :     :           +- CometScan parquet spark_catalog.default.warehouse (8)
               :           :     :        :     :     :     :     +- CometBroadcastExchange (15)
               :           :     :        :     :     :     :        +- CometFilter (14)
               :           :     :        :     :     :     :           +- CometScan parquet spark_catalog.default.item (13)
               :           :     :        :     :     :     +- CometBroadcastExchange (21)
               :           :     :        :     :     :        +- CometProject (20)
               :           :     :        :     :     :           +- CometFilter (19)
               :           :     :        :     :     :              +- CometScan parquet spark_catalog.default.customer_demographics (18)
               :           :     :        :     :     +- CometBroadcastExchange (27)
               :           :     :        :     :        +- CometProject (26)
               :           :     :        :     :           +- CometFilter (25)
               :           :     :        :     :              +- CometScan parquet spark_catalog.default.household_demographics (24)
               :           :     :        :     +- CometBroadcastExchange (33)
               :           :     :        :        +- CometProject (32)
               :           :     :        :           +- CometFilter (31)
               :           :     :        :              +- CometScan parquet spark_catalog.default.date_dim (30)
               :           :     :        +- CometBroadcastExchange (38)
               :           :     :           +- CometFilter (37)
               :           :     :              +- CometScan parquet spark_catalog.default.date_dim (36)
               :           :     +- BroadcastExchange (45)
               :           :        +- * ColumnarToRow (44)
               :           :           +- CometFilter (43)
               :           :              +- CometScan parquet spark_catalog.default.date_dim (42)
               :           +- BroadcastExchange (51)
               :              +- * ColumnarToRow (50)
               :                 +- CometFilter (49)
               :                    +- CometScan parquet spark_catalog.default.promotion (48)
               +- * Sort (61)
                  +- Exchange (60)
                     +- * ColumnarToRow (59)
                        +- CometProject (58)
                           +- CometFilter (57)
                              +- CometScan parquet spark_catalog.default.catalog_returns (56)


(1) Scan parquet spark_catalog.default.catalog_sales
Output [8]: [cs_ship_date_sk#1, cs_bill_cdemo_sk#2, cs_bill_hdemo_sk#3, cs_item_sk#4, cs_promo_sk#5, cs_order_number#6, cs_quantity#7, cs_sold_date_sk#8]
Batched: true
Location: InMemoryFileIndex []
PartitionFilters: [isnotnull(cs_sold_date_sk#8), dynamicpruningexpression(cs_sold_date_sk#8 IN dynamicpruning#9)]
PushedFilters: [IsNotNull(cs_quantity), IsNotNull(cs_item_sk), IsNotNull(cs_bill_cdemo_sk), IsNotNull(cs_bill_hdemo_sk), IsNotNull(cs_ship_date_sk)]
ReadSchema: struct<cs_ship_date_sk:int,cs_bill_cdemo_sk:int,cs_bill_hdemo_sk:int,cs_item_sk:int,cs_promo_sk:int,cs_order_number:int,cs_quantity:int>

(2) CometFilter
Input [8]: [cs_ship_date_sk#1, cs_bill_cdemo_sk#2, cs_bill_hdemo_sk#3, cs_item_sk#4, cs_promo_sk#5, cs_order_number#6, cs_quantity#7, cs_sold_date_sk#8]
Condition : ((((isnotnull(cs_quantity#7) AND isnotnull(cs_item_sk#4)) AND isnotnull(cs_bill_cdemo_sk#2)) AND isnotnull(cs_bill_hdemo_sk#3)) AND isnotnull(cs_ship_date_sk#1))

(3) Scan parquet spark_catalog.default.inventory
Output [4]: [inv_item_sk#10, inv_warehouse_sk#11, inv_quantity_on_hand#12, inv_date_sk#13]
Batched: true
Location: InMemoryFileIndex []
PartitionFilters: [isnotnull(inv_date_sk#13)]
PushedFilters: [IsNotNull(inv_quantity_on_hand), IsNotNull(inv_item_sk), IsNotNull(inv_warehouse_sk)]
ReadSchema: struct<inv_item_sk:int,inv_warehouse_sk:int,inv_quantity_on_hand:int>

(4) CometFilter
Input [4]: [inv_item_sk#10, inv_warehouse_sk#11, inv_quantity_on_hand#12, inv_date_sk#13]
Condition : ((isnotnull(inv_quantity_on_hand#12) AND isnotnull(inv_item_sk#10)) AND isnotnull(inv_warehouse_sk#11))

(5) CometBroadcastExchange
Input [4]: [inv_item_sk#10, inv_warehouse_sk#11, inv_quantity_on_hand#12, inv_date_sk#13]
Arguments: [inv_item_sk#10, inv_warehouse_sk#11, inv_quantity_on_hand#12, inv_date_sk#13]

(6) CometBroadcastHashJoin
Left output [8]: [cs_ship_date_sk#1, cs_bill_cdemo_sk#2, cs_bill_hdemo_sk#3, cs_item_sk#4, cs_promo_sk#5, cs_order_number#6, cs_quantity#7, cs_sold_date_sk#8]
Right output [4]: [inv_item_sk#10, inv_warehouse_sk#11, inv_quantity_on_hand#12, inv_date_sk#13]
Arguments: [cs_item_sk#4], [inv_item_sk#10], Inner, (inv_quantity_on_hand#12 < cs_quantity#7), BuildRight

(7) CometProject
Input [12]: [cs_ship_date_sk#1, cs_bill_cdemo_sk#2, cs_bill_hdemo_sk#3, cs_item_sk#4, cs_promo_sk#5, cs_order_number#6, cs_quantity#7, cs_sold_date_sk#8, inv_item_sk#10, inv_warehouse_sk#11, inv_quantity_on_hand#12, inv_date_sk#13]
Arguments: [cs_ship_date_sk#1, cs_bill_cdemo_sk#2, cs_bill_hdemo_sk#3, cs_item_sk#4, cs_promo_sk#5, cs_order_number#6, cs_sold_date_sk#8, inv_warehouse_sk#11, inv_date_sk#13], [cs_ship_date_sk#1, cs_bill_cdemo_sk#2, cs_bill_hdemo_sk#3, cs_item_sk#4, cs_promo_sk#5, cs_order_number#6, cs_sold_date_sk#8, inv_warehouse_sk#11, inv_date_sk#13]

(8) Scan parquet spark_catalog.default.warehouse
Output [2]: [w_warehouse_sk#14, w_warehouse_name#15]
Batched: true
Location [not included in comparison]/{warehouse_dir}/warehouse]
PushedFilters: [IsNotNull(w_warehouse_sk)]
ReadSchema: struct<w_warehouse_sk:int,w_warehouse_name:string>

(9) CometFilter
Input [2]: [w_warehouse_sk#14, w_warehouse_name#15]
Condition : isnotnull(w_warehouse_sk#14)

(10) CometBroadcastExchange
Input [2]: [w_warehouse_sk#14, w_warehouse_name#15]
Arguments: [w_warehouse_sk#14, w_warehouse_name#15]

(11) CometBroadcastHashJoin
Left output [9]: [cs_ship_date_sk#1, cs_bill_cdemo_sk#2, cs_bill_hdemo_sk#3, cs_item_sk#4, cs_promo_sk#5, cs_order_number#6, cs_sold_date_sk#8, inv_warehouse_sk#11, inv_date_sk#13]
Right output [2]: [w_warehouse_sk#14, w_warehouse_name#15]
Arguments: [inv_warehouse_sk#11], [w_warehouse_sk#14], Inner, BuildRight

(12) CometProject
Input [11]: [cs_ship_date_sk#1, cs_bill_cdemo_sk#2, cs_bill_hdemo_sk#3, cs_item_sk#4, cs_promo_sk#5, cs_order_number#6, cs_sold_date_sk#8, inv_warehouse_sk#11, inv_date_sk#13, w_warehouse_sk#14, w_warehouse_name#15]
Arguments: [cs_ship_date_sk#1, cs_bill_cdemo_sk#2, cs_bill_hdemo_sk#3, cs_item_sk#4, cs_promo_sk#5, cs_order_number#6, cs_sold_date_sk#8, inv_date_sk#13, w_warehouse_name#15], [cs_ship_date_sk#1, cs_bill_cdemo_sk#2, cs_bill_hdemo_sk#3, cs_item_sk#4, cs_promo_sk#5, cs_order_number#6, cs_sold_date_sk#8, inv_date_sk#13, w_warehouse_name#15]

(13) Scan parquet spark_catalog.default.item
Output [2]: [i_item_sk#16, i_item_desc#17]
Batched: true
Location [not included in comparison]/{warehouse_dir}/item]
PushedFilters: [IsNotNull(i_item_sk)]
ReadSchema: struct<i_item_sk:int,i_item_desc:string>

(14) CometFilter
Input [2]: [i_item_sk#16, i_item_desc#17]
Condition : isnotnull(i_item_sk#16)

(15) CometBroadcastExchange
Input [2]: [i_item_sk#16, i_item_desc#17]
Arguments: [i_item_sk#16, i_item_desc#17]

(16) CometBroadcastHashJoin
Left output [9]: [cs_ship_date_sk#1, cs_bill_cdemo_sk#2, cs_bill_hdemo_sk#3, cs_item_sk#4, cs_promo_sk#5, cs_order_number#6, cs_sold_date_sk#8, inv_date_sk#13, w_warehouse_name#15]
Right output [2]: [i_item_sk#16, i_item_desc#17]
Arguments: [cs_item_sk#4], [i_item_sk#16], Inner, BuildRight

(17) CometProject
Input [11]: [cs_ship_date_sk#1, cs_bill_cdemo_sk#2, cs_bill_hdemo_sk#3, cs_item_sk#4, cs_promo_sk#5, cs_order_number#6, cs_sold_date_sk#8, inv_date_sk#13, w_warehouse_name#15, i_item_sk#16, i_item_desc#17]
Arguments: [cs_ship_date_sk#1, cs_bill_cdemo_sk#2, cs_bill_hdemo_sk#3, cs_item_sk#4, cs_promo_sk#5, cs_order_number#6, cs_sold_date_sk#8, inv_date_sk#13, w_warehouse_name#15, i_item_desc#17], [cs_ship_date_sk#1, cs_bill_cdemo_sk#2, cs_bill_hdemo_sk#3, cs_item_sk#4, cs_promo_sk#5, cs_order_number#6, cs_sold_date_sk#8, inv_date_sk#13, w_warehouse_name#15, i_item_desc#17]

(18) Scan parquet spark_catalog.default.customer_demographics
Output [2]: [cd_demo_sk#18, cd_marital_status#19]
Batched: true
Location [not included in comparison]/{warehouse_dir}/customer_demographics]
PushedFilters: [IsNotNull(cd_marital_status), EqualTo(cd_marital_status,D), IsNotNull(cd_demo_sk)]
ReadSchema: struct<cd_demo_sk:int,cd_marital_status:string>

(19) CometFilter
Input [2]: [cd_demo_sk#18, cd_marital_status#19]
Condition : ((isnotnull(cd_marital_status#19) AND (cd_marital_status#19 = D)) AND isnotnull(cd_demo_sk#18))

(20) CometProject
Input [2]: [cd_demo_sk#18, cd_marital_status#19]
Arguments: [cd_demo_sk#18], [cd_demo_sk#18]

(21) CometBroadcastExchange
Input [1]: [cd_demo_sk#18]
Arguments: [cd_demo_sk#18]

(22) CometBroadcastHashJoin
Left output [10]: [cs_ship_date_sk#1, cs_bill_cdemo_sk#2, cs_bill_hdemo_sk#3, cs_item_sk#4, cs_promo_sk#5, cs_order_number#6, cs_sold_date_sk#8, inv_date_sk#13, w_warehouse_name#15, i_item_desc#17]
Right output [1]: [cd_demo_sk#18]
Arguments: [cs_bill_cdemo_sk#2], [cd_demo_sk#18], Inner, BuildRight

(23) CometProject
Input [11]: [cs_ship_date_sk#1, cs_bill_cdemo_sk#2, cs_bill_hdemo_sk#3, cs_item_sk#4, cs_promo_sk#5, cs_order_number#6, cs_sold_date_sk#8, inv_date_sk#13, w_warehouse_name#15, i_item_desc#17, cd_demo_sk#18]
Arguments: [cs_ship_date_sk#1, cs_bill_hdemo_sk#3, cs_item_sk#4, cs_promo_sk#5, cs_order_number#6, cs_sold_date_sk#8, inv_date_sk#13, w_warehouse_name#15, i_item_desc#17], [cs_ship_date_sk#1, cs_bill_hdemo_sk#3, cs_item_sk#4, cs_promo_sk#5, cs_order_number#6, cs_sold_date_sk#8, inv_date_sk#13, w_warehouse_name#15, i_item_desc#17]

(24) Scan parquet spark_catalog.default.household_demographics
Output [2]: [hd_demo_sk#20, hd_buy_potential#21]
Batched: true
Location [not included in comparison]/{warehouse_dir}/household_demographics]
PushedFilters: [IsNotNull(hd_buy_potential), EqualTo(hd_buy_potential,>10000         ), IsNotNull(hd_demo_sk)]
ReadSchema: struct<hd_demo_sk:int,hd_buy_potential:string>

(25) CometFilter
Input [2]: [hd_demo_sk#20, hd_buy_potential#21]
Condition : ((isnotnull(hd_buy_potential#21) AND (hd_buy_potential#21 = >10000         )) AND isnotnull(hd_demo_sk#20))

(26) CometProject
Input [2]: [hd_demo_sk#20, hd_buy_potential#21]
Arguments: [hd_demo_sk#20], [hd_demo_sk#20]

(27) CometBroadcastExchange
Input [1]: [hd_demo_sk#20]
Arguments: [hd_demo_sk#20]

(28) CometBroadcastHashJoin
Left output [9]: [cs_ship_date_sk#1, cs_bill_hdemo_sk#3, cs_item_sk#4, cs_promo_sk#5, cs_order_number#6, cs_sold_date_sk#8, inv_date_sk#13, w_warehouse_name#15, i_item_desc#17]
Right output [1]: [hd_demo_sk#20]
Arguments: [cs_bill_hdemo_sk#3], [hd_demo_sk#20], Inner, BuildRight

(29) CometProject
Input [10]: [cs_ship_date_sk#1, cs_bill_hdemo_sk#3, cs_item_sk#4, cs_promo_sk#5, cs_order_number#6, cs_sold_date_sk#8, inv_date_sk#13, w_warehouse_name#15, i_item_desc#17, hd_demo_sk#20]
Arguments: [cs_ship_date_sk#1, cs_item_sk#4, cs_promo_sk#5, cs_order_number#6, cs_sold_date_sk#8, inv_date_sk#13, w_warehouse_name#15, i_item_desc#17], [cs_ship_date_sk#1, cs_item_sk#4, cs_promo_sk#5, cs_order_number#6, cs_sold_date_sk#8, inv_date_sk#13, w_warehouse_name#15, i_item_desc#17]

(30) Scan parquet spark_catalog.default.date_dim
Output [4]: [d_date_sk#22, d_date#23, d_week_seq#24, d_year#25]
Batched: true
Location [not included in comparison]/{warehouse_dir}/date_dim]
PushedFilters: [IsNotNull(d_year), EqualTo(d_year,1999), IsNotNull(d_date_sk), IsNotNull(d_week_seq), IsNotNull(d_date)]
ReadSchema: struct<d_date_sk:int,d_date:date,d_week_seq:int,d_year:int>

(31) CometFilter
Input [4]: [d_date_sk#22, d_date#23, d_week_seq#24, d_year#25]
Condition : ((((isnotnull(d_year#25) AND (d_year#25 = 1999)) AND isnotnull(d_date_sk#22)) AND isnotnull(d_week_seq#24)) AND isnotnull(d_date#23))

(32) CometProject
Input [4]: [d_date_sk#22, d_date#23, d_week_seq#24, d_year#25]
Arguments: [d_date_sk#22, d_date#23, d_week_seq#24], [d_date_sk#22, d_date#23, d_week_seq#24]

(33) CometBroadcastExchange
Input [3]: [d_date_sk#22, d_date#23, d_week_seq#24]
Arguments: [d_date_sk#22, d_date#23, d_week_seq#24]

(34) CometBroadcastHashJoin
Left output [8]: [cs_ship_date_sk#1, cs_item_sk#4, cs_promo_sk#5, cs_order_number#6, cs_sold_date_sk#8, inv_date_sk#13, w_warehouse_name#15, i_item_desc#17]
Right output [3]: [d_date_sk#22, d_date#23, d_week_seq#24]
Arguments: [cs_sold_date_sk#8], [d_date_sk#22], Inner, BuildRight

(35) CometProject
Input [11]: [cs_ship_date_sk#1, cs_item_sk#4, cs_promo_sk#5, cs_order_number#6, cs_sold_date_sk#8, inv_date_sk#13, w_warehouse_name#15, i_item_desc#17, d_date_sk#22, d_date#23, d_week_seq#24]
Arguments: [cs_ship_date_sk#1, cs_item_sk#4, cs_promo_sk#5, cs_order_number#6, inv_date_sk#13, w_warehouse_name#15, i_item_desc#17, d_date#23, d_week_seq#24], [cs_ship_date_sk#1, cs_item_sk#4, cs_promo_sk#5, cs_order_number#6, inv_date_sk#13, w_warehouse_name#15, i_item_desc#17, d_date#23, d_week_seq#24]

(36) Scan parquet spark_catalog.default.date_dim
Output [2]: [d_date_sk#26, d_week_seq#27]
Batched: true
Location [not included in comparison]/{warehouse_dir}/date_dim]
PushedFilters: [IsNotNull(d_week_seq), IsNotNull(d_date_sk)]
ReadSchema: struct<d_date_sk:int,d_week_seq:int>

(37) CometFilter
Input [2]: [d_date_sk#26, d_week_seq#27]
Condition : (isnotnull(d_week_seq#27) AND isnotnull(d_date_sk#26))

(38) CometBroadcastExchange
Input [2]: [d_date_sk#26, d_week_seq#27]
Arguments: [d_date_sk#26, d_week_seq#27]

(39) CometBroadcastHashJoin
Left output [9]: [cs_ship_date_sk#1, cs_item_sk#4, cs_promo_sk#5, cs_order_number#6, inv_date_sk#13, w_warehouse_name#15, i_item_desc#17, d_date#23, d_week_seq#24]
Right output [2]: [d_date_sk#26, d_week_seq#27]
Arguments: [d_week_seq#24, inv_date_sk#13], [d_week_seq#27, d_date_sk#26], Inner, BuildRight

(40) CometProject
Input [11]: [cs_ship_date_sk#1, cs_item_sk#4, cs_promo_sk#5, cs_order_number#6, inv_date_sk#13, w_warehouse_name#15, i_item_desc#17, d_date#23, d_week_seq#24, d_date_sk#26, d_week_seq#27]
Arguments: [cs_ship_date_sk#1, cs_item_sk#4, cs_promo_sk#5, cs_order_number#6, w_warehouse_name#15, i_item_desc#17, d_date#23, d_week_seq#24], [cs_ship_date_sk#1, cs_item_sk#4, cs_promo_sk#5, cs_order_number#6, w_warehouse_name#15, i_item_desc#17, d_date#23, d_week_seq#24]

(41) ColumnarToRow [codegen id : 3]
Input [8]: [cs_ship_date_sk#1, cs_item_sk#4, cs_promo_sk#5, cs_order_number#6, w_warehouse_name#15, i_item_desc#17, d_date#23, d_week_seq#24]

(42) Scan parquet spark_catalog.default.date_dim
Output [2]: [d_date_sk#28, d_date#29]
Batched: true
Location [not included in comparison]/{warehouse_dir}/date_dim]
PushedFilters: [IsNotNull(d_date), IsNotNull(d_date_sk)]
ReadSchema: struct<d_date_sk:int,d_date:date>

(43) CometFilter
Input [2]: [d_date_sk#28, d_date#29]
Condition : (isnotnull(d_date#29) AND isnotnull(d_date_sk#28))

(44) ColumnarToRow [codegen id : 1]
Input [2]: [d_date_sk#28, d_date#29]

(45) BroadcastExchange
Input [2]: [d_date_sk#28, d_date#29]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, false] as bigint)),false), [plan_id=1]

(46) BroadcastHashJoin [codegen id : 3]
Left keys [1]: [cs_ship_date_sk#1]
Right keys [1]: [d_date_sk#28]
Join type: Inner
Join condition: (d_date#29 > date_add(d_date#23, 5))

(47) Project [codegen id : 3]
Output [6]: [cs_item_sk#4, cs_promo_sk#5, cs_order_number#6, w_warehouse_name#15, i_item_desc#17, d_week_seq#24]
Input [10]: [cs_ship_date_sk#1, cs_item_sk#4, cs_promo_sk#5, cs_order_number#6, w_warehouse_name#15, i_item_desc#17, d_date#23, d_week_seq#24, d_date_sk#28, d_date#29]

(48) Scan parquet spark_catalog.default.promotion
Output [1]: [p_promo_sk#30]
Batched: true
Location [not included in comparison]/{warehouse_dir}/promotion]
PushedFilters: [IsNotNull(p_promo_sk)]
ReadSchema: struct<p_promo_sk:int>

(49) CometFilter
Input [1]: [p_promo_sk#30]
Condition : isnotnull(p_promo_sk#30)

(50) ColumnarToRow [codegen id : 2]
Input [1]: [p_promo_sk#30]

(51) BroadcastExchange
Input [1]: [p_promo_sk#30]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, false] as bigint)),false), [plan_id=2]

(52) BroadcastHashJoin [codegen id : 3]
Left keys [1]: [cs_promo_sk#5]
Right keys [1]: [p_promo_sk#30]
Join type: LeftOuter
Join condition: None

(53) Project [codegen id : 3]
Output [5]: [cs_item_sk#4, cs_order_number#6, w_warehouse_name#15, i_item_desc#17, d_week_seq#24]
Input [7]: [cs_item_sk#4, cs_promo_sk#5, cs_order_number#6, w_warehouse_name#15, i_item_desc#17, d_week_seq#24, p_promo_sk#30]

(54) Exchange
Input [5]: [cs_item_sk#4, cs_order_number#6, w_warehouse_name#15, i_item_desc#17, d_week_seq#24]
Arguments: hashpartitioning(cs_item_sk#4, cs_order_number#6, 5), ENSURE_REQUIREMENTS, [plan_id=3]

(55) Sort [codegen id : 4]
Input [5]: [cs_item_sk#4, cs_order_number#6, w_warehouse_name#15, i_item_desc#17, d_week_seq#24]
Arguments: [cs_item_sk#4 ASC NULLS FIRST, cs_order_number#6 ASC NULLS FIRST], false, 0

(56) Scan parquet spark_catalog.default.catalog_returns
Output [3]: [cr_item_sk#31, cr_order_number#32, cr_returned_date_sk#33]
Batched: true
Location [not included in comparison]/{warehouse_dir}/catalog_returns]
PushedFilters: [IsNotNull(cr_item_sk), IsNotNull(cr_order_number)]
ReadSchema: struct<cr_item_sk:int,cr_order_number:int>

(57) CometFilter
Input [3]: [cr_item_sk#31, cr_order_number#32, cr_returned_date_sk#33]
Condition : (isnotnull(cr_item_sk#31) AND isnotnull(cr_order_number#32))

(58) CometProject
Input [3]: [cr_item_sk#31, cr_order_number#32, cr_returned_date_sk#33]
Arguments: [cr_item_sk#31, cr_order_number#32], [cr_item_sk#31, cr_order_number#32]

(59) ColumnarToRow [codegen id : 5]
Input [2]: [cr_item_sk#31, cr_order_number#32]

(60) Exchange
Input [2]: [cr_item_sk#31, cr_order_number#32]
Arguments: hashpartitioning(cr_item_sk#31, cr_order_number#32, 5), ENSURE_REQUIREMENTS, [plan_id=4]

(61) Sort [codegen id : 6]
Input [2]: [cr_item_sk#31, cr_order_number#32]
Arguments: [cr_item_sk#31 ASC NULLS FIRST, cr_order_number#32 ASC NULLS FIRST], false, 0

(62) SortMergeJoin [codegen id : 7]
Left keys [2]: [cs_item_sk#4, cs_order_number#6]
Right keys [2]: [cr_item_sk#31, cr_order_number#32]
Join type: LeftOuter
Join condition: None

(63) Project [codegen id : 7]
Output [3]: [w_warehouse_name#15, i_item_desc#17, d_week_seq#24]
Input [7]: [cs_item_sk#4, cs_order_number#6, w_warehouse_name#15, i_item_desc#17, d_week_seq#24, cr_item_sk#31, cr_order_number#32]

(64) HashAggregate [codegen id : 7]
Input [3]: [w_warehouse_name#15, i_item_desc#17, d_week_seq#24]
Keys [3]: [i_item_desc#17, w_warehouse_name#15, d_week_seq#24]
Functions [1]: [partial_count(1)]
Aggregate Attributes [1]: [count#34]
Results [4]: [i_item_desc#17, w_warehouse_name#15, d_week_seq#24, count#35]

(65) Exchange
Input [4]: [i_item_desc#17, w_warehouse_name#15, d_week_seq#24, count#35]
Arguments: hashpartitioning(i_item_desc#17, w_warehouse_name#15, d_week_seq#24, 5), ENSURE_REQUIREMENTS, [plan_id=5]

(66) HashAggregate [codegen id : 8]
Input [4]: [i_item_desc#17, w_warehouse_name#15, d_week_seq#24, count#35]
Keys [3]: [i_item_desc#17, w_warehouse_name#15, d_week_seq#24]
Functions [1]: [count(1)]
Aggregate Attributes [1]: [count(1)#36]
Results [6]: [i_item_desc#17, w_warehouse_name#15, d_week_seq#24, count(1)#36 AS no_promo#37, count(1)#36 AS promo#38, count(1)#36 AS total_cnt#39]

(67) TakeOrderedAndProject
Input [6]: [i_item_desc#17, w_warehouse_name#15, d_week_seq#24, no_promo#37, promo#38, total_cnt#39]
Arguments: 100, [total_cnt#39 DESC NULLS LAST, i_item_desc#17 ASC NULLS FIRST, w_warehouse_name#15 ASC NULLS FIRST, d_week_seq#24 ASC NULLS FIRST], [i_item_desc#17, w_warehouse_name#15, d_week_seq#24, no_promo#37, promo#38, total_cnt#39]

===== Subqueries =====

Subquery:1 Hosting operator id = 1 Hosting Expression = cs_sold_date_sk#8 IN dynamicpruning#9
BroadcastExchange (72)
+- * ColumnarToRow (71)
   +- CometProject (70)
      +- CometFilter (69)
         +- CometScan parquet spark_catalog.default.date_dim (68)


(68) Scan parquet spark_catalog.default.date_dim
Output [4]: [d_date_sk#22, d_date#23, d_week_seq#24, d_year#25]
Batched: true
Location [not included in comparison]/{warehouse_dir}/date_dim]
PushedFilters: [IsNotNull(d_year), EqualTo(d_year,1999), IsNotNull(d_date_sk), IsNotNull(d_week_seq), IsNotNull(d_date)]
ReadSchema: struct<d_date_sk:int,d_date:date,d_week_seq:int,d_year:int>

(69) CometFilter
Input [4]: [d_date_sk#22, d_date#23, d_week_seq#24, d_year#25]
Condition : ((((isnotnull(d_year#25) AND (d_year#25 = 1999)) AND isnotnull(d_date_sk#22)) AND isnotnull(d_week_seq#24)) AND isnotnull(d_date#23))

(70) CometProject
Input [4]: [d_date_sk#22, d_date#23, d_week_seq#24, d_year#25]
Arguments: [d_date_sk#22, d_date#23, d_week_seq#24], [d_date_sk#22, d_date#23, d_week_seq#24]

(71) ColumnarToRow [codegen id : 1]
Input [3]: [d_date_sk#22, d_date#23, d_week_seq#24]

(72) BroadcastExchange
Input [3]: [d_date_sk#22, d_date#23, d_week_seq#24]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, true] as bigint)),false), [plan_id=6]


