== Physical Plan ==
VeloxColumnarToRow (100)
+- TakeOrderedAndProjectExecTransformer (99)
   +- ^ ProjectExecTransformer (97)
      +- ^ RegularHashAggregateExecTransformer (96)
         +- ^ InputIteratorTransformer (95)
            +- ColumnarExchange (93)
               +- VeloxResizeBatches (92)
                  +- ^ ProjectExecTransformer (90)
                     +- ^ FlushableHashAggregateExecTransformer (89)
                        +- ^ ProjectExecTransformer (88)
                           +- ^ ShuffledHashJoinExecTransformer LeftOuter BuildLeft (87)
                              :- ^ InputIteratorTransformer (78)
                              :  +- ColumnarExchange (76)
                              :     +- VeloxResizeBatches (75)
                              :        +- ^ ProjectExecTransformer (73)
                              :           +- ^ BroadcastHashJoinExecTransformer LeftOuter BuildRight (72)
                              :              :- ^ ProjectExecTransformer (65)
                              :              :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (64)
                              :              :     :- ^ ProjectExecTransformer (57)
                              :              :     :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (56)
                              :              :     :     :- ^ ProjectExecTransformer (49)
                              :              :     :     :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (48)
                              :              :     :     :     :- ^ ProjectExecTransformer (44)
                              :              :     :     :     :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (43)
                              :              :     :     :     :     :- ^ ProjectExecTransformer (35)
                              :              :     :     :     :     :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (34)
                              :              :     :     :     :     :     :- ^ ProjectExecTransformer (26)
                              :              :     :     :     :     :     :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (25)
                              :              :     :     :     :     :     :     :- ^ ProjectExecTransformer (18)
                              :              :     :     :     :     :     :     :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (17)
                              :              :     :     :     :     :     :     :     :- ^ ProjectExecTransformer (10)
                              :              :     :     :     :     :     :     :     :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (9)
                              :              :     :     :     :     :     :     :     :     :- ^ FilterExecTransformer (2)
                              :              :     :     :     :     :     :     :     :     :  +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.catalog_sales (1)
                              :              :     :     :     :     :     :     :     :     +- ^ InputIteratorTransformer (8)
                              :              :     :     :     :     :     :     :     :        +- ColumnarBroadcastExchange (6)
                              :              :     :     :     :     :     :     :     :           +- ^ FilterExecTransformer (4)
                              :              :     :     :     :     :     :     :     :              +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.inventory (3)
                              :              :     :     :     :     :     :     :     +- ^ InputIteratorTransformer (16)
                              :              :     :     :     :     :     :     :        +- ColumnarBroadcastExchange (14)
                              :              :     :     :     :     :     :     :           +- ^ FilterExecTransformer (12)
                              :              :     :     :     :     :     :     :              +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.warehouse (11)
                              :              :     :     :     :     :     :     +- ^ InputIteratorTransformer (24)
                              :              :     :     :     :     :     :        +- ColumnarBroadcastExchange (22)
                              :              :     :     :     :     :     :           +- ^ FilterExecTransformer (20)
                              :              :     :     :     :     :     :              +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.item (19)
                              :              :     :     :     :     :     +- ^ InputIteratorTransformer (33)
                              :              :     :     :     :     :        +- ColumnarBroadcastExchange (31)
                              :              :     :     :     :     :           +- ^ ProjectExecTransformer (29)
                              :              :     :     :     :     :              +- ^ FilterExecTransformer (28)
                              :              :     :     :     :     :                 +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.customer_demographics (27)
                              :              :     :     :     :     +- ^ InputIteratorTransformer (42)
                              :              :     :     :     :        +- ColumnarBroadcastExchange (40)
                              :              :     :     :     :           +- ^ ProjectExecTransformer (38)
                              :              :     :     :     :              +- ^ FilterExecTransformer (37)
                              :              :     :     :     :                 +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.household_demographics (36)
                              :              :     :     :     +- ^ InputIteratorTransformer (47)
                              :              :     :     :        +- ReusedExchange (45)
                              :              :     :     +- ^ InputIteratorTransformer (55)
                              :              :     :        +- ColumnarBroadcastExchange (53)
                              :              :     :           +- ^ FilterExecTransformer (51)
                              :              :     :              +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.date_dim (50)
                              :              :     +- ^ InputIteratorTransformer (63)
                              :              :        +- ColumnarBroadcastExchange (61)
                              :              :           +- ^ FilterExecTransformer (59)
                              :              :              +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.date_dim (58)
                              :              +- ^ InputIteratorTransformer (71)
                              :                 +- ColumnarBroadcastExchange (69)
                              :                    +- ^ FilterExecTransformer (67)
                              :                       +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.promotion (66)
                              +- ^ InputIteratorTransformer (86)
                                 +- ColumnarExchange (84)
                                    +- VeloxResizeBatches (83)
                                       +- ^ ProjectExecTransformer (81)
                                          +- ^ FilterExecTransformer (80)
                                             +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.catalog_returns (79)


(1) FileSourceScanExecTransformer 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) FilterExecTransformer
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]
Arguments: ((((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) FileSourceScanExecTransformer 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) FilterExecTransformer
Input [4]: [inv_item_sk#10, inv_warehouse_sk#11, inv_quantity_on_hand#12, inv_date_sk#13]
Arguments: ((isnotnull(inv_quantity_on_hand#12) AND isnotnull(inv_item_sk#10)) AND isnotnull(inv_warehouse_sk#11))

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

(6) ColumnarBroadcastExchange
Input [4]: [inv_item_sk#10, inv_warehouse_sk#11, inv_quantity_on_hand#12, inv_date_sk#13]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, false] as bigint)),false), [plan_id=1]

(7) InputAdapter
Input [4]: [inv_item_sk#10, inv_warehouse_sk#11, inv_quantity_on_hand#12, inv_date_sk#13]

(8) InputIteratorTransformer
Input [4]: [inv_item_sk#10, inv_warehouse_sk#11, inv_quantity_on_hand#12, inv_date_sk#13]

(9) BroadcastHashJoinExecTransformer
Left keys [1]: [cs_item_sk#4]
Right keys [1]: [inv_item_sk#10]
Join type: Inner
Join condition: (inv_quantity_on_hand#12 < cs_quantity#7)

(10) ProjectExecTransformer
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]
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]

(11) FileSourceScanExecTransformer parquet spark_catalog.default.warehouse
Output [2]: [w_warehouse_sk#14, w_warehouse_name#15]
Batched: true
Location: InMemoryFileIndex [{warehouse_dir}/warehouse]
PushedFilters: [IsNotNull(w_warehouse_sk)]
ReadSchema: struct<w_warehouse_sk:int,w_warehouse_name:string>

(12) FilterExecTransformer
Input [2]: [w_warehouse_sk#14, w_warehouse_name#15]
Arguments: isnotnull(w_warehouse_sk#14)

(13) WholeStageCodegenTransformer (3)
Input [2]: [w_warehouse_sk#14, w_warehouse_name#15]
Arguments: false

(14) ColumnarBroadcastExchange
Input [2]: [w_warehouse_sk#14, w_warehouse_name#15]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, false] as bigint)),false), [plan_id=2]

(15) InputAdapter
Input [2]: [w_warehouse_sk#14, w_warehouse_name#15]

(16) InputIteratorTransformer
Input [2]: [w_warehouse_sk#14, w_warehouse_name#15]

(17) BroadcastHashJoinExecTransformer
Left keys [1]: [inv_warehouse_sk#11]
Right keys [1]: [w_warehouse_sk#14]
Join type: Inner
Join condition: None

(18) ProjectExecTransformer
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]
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]

(19) FileSourceScanExecTransformer parquet spark_catalog.default.item
Output [2]: [i_item_sk#16, i_item_desc#17]
Batched: true
Location: InMemoryFileIndex [{warehouse_dir}/item]
PushedFilters: [IsNotNull(i_item_sk)]
ReadSchema: struct<i_item_sk:int,i_item_desc:string>

(20) FilterExecTransformer
Input [2]: [i_item_sk#16, i_item_desc#17]
Arguments: isnotnull(i_item_sk#16)

(21) WholeStageCodegenTransformer (4)
Input [2]: [i_item_sk#16, i_item_desc#17]
Arguments: false

(22) ColumnarBroadcastExchange
Input [2]: [i_item_sk#16, i_item_desc#17]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, false] as bigint)),false), [plan_id=3]

(23) InputAdapter
Input [2]: [i_item_sk#16, i_item_desc#17]

(24) InputIteratorTransformer
Input [2]: [i_item_sk#16, i_item_desc#17]

(25) BroadcastHashJoinExecTransformer
Left keys [1]: [cs_item_sk#4]
Right keys [1]: [i_item_sk#16]
Join type: Inner
Join condition: None

(26) ProjectExecTransformer
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]
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]

(27) FileSourceScanExecTransformer parquet spark_catalog.default.customer_demographics
Output [2]: [cd_demo_sk#18, cd_marital_status#19]
Batched: true
Location: InMemoryFileIndex [{warehouse_dir}/customer_demographics]
PushedFilters: [IsNotNull(cd_marital_status), EqualTo(cd_marital_status,M), IsNotNull(cd_demo_sk)]
ReadSchema: struct<cd_demo_sk:int,cd_marital_status:string>

(28) FilterExecTransformer
Input [2]: [cd_demo_sk#18, cd_marital_status#19]
Arguments: ((isnotnull(cd_marital_status#19) AND (cd_marital_status#19 = M)) AND isnotnull(cd_demo_sk#18))

(29) ProjectExecTransformer
Output [1]: [cd_demo_sk#18]
Input [2]: [cd_demo_sk#18, cd_marital_status#19]

(30) WholeStageCodegenTransformer (5)
Input [1]: [cd_demo_sk#18]
Arguments: false

(31) ColumnarBroadcastExchange
Input [1]: [cd_demo_sk#18]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, true] as bigint)),false), [plan_id=4]

(32) InputAdapter
Input [1]: [cd_demo_sk#18]

(33) InputIteratorTransformer
Input [1]: [cd_demo_sk#18]

(34) BroadcastHashJoinExecTransformer
Left keys [1]: [cs_bill_cdemo_sk#2]
Right keys [1]: [cd_demo_sk#18]
Join type: Inner
Join condition: None

(35) ProjectExecTransformer
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]
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]

(36) FileSourceScanExecTransformer parquet spark_catalog.default.household_demographics
Output [2]: [hd_demo_sk#20, hd_buy_potential#21]
Batched: true
Location: InMemoryFileIndex [{warehouse_dir}/household_demographics]
PushedFilters: [IsNotNull(hd_buy_potential), EqualTo(hd_buy_potential,1001-5000      ), IsNotNull(hd_demo_sk)]
ReadSchema: struct<hd_demo_sk:int,hd_buy_potential:string>

(37) FilterExecTransformer
Input [2]: [hd_demo_sk#20, hd_buy_potential#21]
Arguments: ((isnotnull(hd_buy_potential#21) AND (hd_buy_potential#21 = 1001-5000      )) AND isnotnull(hd_demo_sk#20))

(38) ProjectExecTransformer
Output [1]: [hd_demo_sk#20]
Input [2]: [hd_demo_sk#20, hd_buy_potential#21]

(39) WholeStageCodegenTransformer (6)
Input [1]: [hd_demo_sk#20]
Arguments: false

(40) ColumnarBroadcastExchange
Input [1]: [hd_demo_sk#20]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, true] as bigint)),false), [plan_id=5]

(41) InputAdapter
Input [1]: [hd_demo_sk#20]

(42) InputIteratorTransformer
Input [1]: [hd_demo_sk#20]

(43) BroadcastHashJoinExecTransformer
Left keys [1]: [cs_bill_hdemo_sk#3]
Right keys [1]: [hd_demo_sk#20]
Join type: Inner
Join condition: None

(44) ProjectExecTransformer
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]
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]

(45) ReusedExchange [Reuses operator id: 105]
Output [3]: [d_date_sk#22, d_date#23, d_week_seq#24]

(46) InputAdapter
Input [3]: [d_date_sk#22, d_date#23, d_week_seq#24]

(47) InputIteratorTransformer
Input [3]: [d_date_sk#22, d_date#23, d_week_seq#24]

(48) BroadcastHashJoinExecTransformer
Left keys [1]: [cs_sold_date_sk#8]
Right keys [1]: [d_date_sk#22]
Join type: Inner
Join condition: None

(49) ProjectExecTransformer
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]
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]

(50) FileSourceScanExecTransformer parquet spark_catalog.default.date_dim
Output [2]: [d_date_sk#25, d_week_seq#26]
Batched: true
Location: InMemoryFileIndex [{warehouse_dir}/date_dim]
PushedFilters: [IsNotNull(d_week_seq), IsNotNull(d_date_sk)]
ReadSchema: struct<d_date_sk:int,d_week_seq:int>

(51) FilterExecTransformer
Input [2]: [d_date_sk#25, d_week_seq#26]
Arguments: (isnotnull(d_week_seq#26) AND isnotnull(d_date_sk#25))

(52) WholeStageCodegenTransformer (8)
Input [2]: [d_date_sk#25, d_week_seq#26]
Arguments: false

(53) ColumnarBroadcastExchange
Input [2]: [d_date_sk#25, d_week_seq#26]
Arguments: HashedRelationBroadcastMode(List((shiftleft(cast(input[1, int, false] as bigint), 32) | (cast(input[0, int, false] as bigint) & 4294967295))),false), [plan_id=6]

(54) InputAdapter
Input [2]: [d_date_sk#25, d_week_seq#26]

(55) InputIteratorTransformer
Input [2]: [d_date_sk#25, d_week_seq#26]

(56) BroadcastHashJoinExecTransformer
Left keys [2]: [d_week_seq#24, inv_date_sk#13]
Right keys [2]: [d_week_seq#26, d_date_sk#25]
Join type: Inner
Join condition: None

(57) ProjectExecTransformer
Output [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]
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#25, d_week_seq#26]

(58) FileSourceScanExecTransformer parquet spark_catalog.default.date_dim
Output [2]: [d_date_sk#27, d_date#28]
Batched: true
Location: InMemoryFileIndex [{warehouse_dir}/date_dim]
PushedFilters: [IsNotNull(d_date), IsNotNull(d_date_sk)]
ReadSchema: struct<d_date_sk:int,d_date:date>

(59) FilterExecTransformer
Input [2]: [d_date_sk#27, d_date#28]
Arguments: (isnotnull(d_date#28) AND isnotnull(d_date_sk#27))

(60) WholeStageCodegenTransformer (9)
Input [2]: [d_date_sk#27, d_date#28]
Arguments: false

(61) ColumnarBroadcastExchange
Input [2]: [d_date_sk#27, d_date#28]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, false] as bigint)),false), [plan_id=7]

(62) InputAdapter
Input [2]: [d_date_sk#27, d_date#28]

(63) InputIteratorTransformer
Input [2]: [d_date_sk#27, d_date#28]

(64) BroadcastHashJoinExecTransformer
Left keys [1]: [cs_ship_date_sk#1]
Right keys [1]: [d_date_sk#27]
Join type: Inner
Join condition: (d_date#28 > date_add(d_date#23, 5))

(65) ProjectExecTransformer
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#27, d_date#28]

(66) FileSourceScanExecTransformer parquet spark_catalog.default.promotion
Output [1]: [p_promo_sk#29]
Batched: true
Location: InMemoryFileIndex [{warehouse_dir}/promotion]
PushedFilters: [IsNotNull(p_promo_sk)]
ReadSchema: struct<p_promo_sk:int>

(67) FilterExecTransformer
Input [1]: [p_promo_sk#29]
Arguments: isnotnull(p_promo_sk#29)

(68) WholeStageCodegenTransformer (10)
Input [1]: [p_promo_sk#29]
Arguments: false

(69) ColumnarBroadcastExchange
Input [1]: [p_promo_sk#29]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, false] as bigint)),false), [plan_id=8]

(70) InputAdapter
Input [1]: [p_promo_sk#29]

(71) InputIteratorTransformer
Input [1]: [p_promo_sk#29]

(72) BroadcastHashJoinExecTransformer
Left keys [1]: [cs_promo_sk#5]
Right keys [1]: [p_promo_sk#29]
Join type: LeftOuter
Join condition: None

(73) ProjectExecTransformer
Output [6]: [hash(cs_item_sk#4, cs_order_number#6, 42) AS hash_partition_key#30, 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#29]

(74) WholeStageCodegenTransformer (11)
Input [6]: [hash_partition_key#30, cs_item_sk#4, cs_order_number#6, w_warehouse_name#15, i_item_desc#17, d_week_seq#24]
Arguments: false

(75) VeloxResizeBatches
Input [6]: [hash_partition_key#30, cs_item_sk#4, cs_order_number#6, w_warehouse_name#15, i_item_desc#17, d_week_seq#24]
Arguments: 1024, 2147483647, 10485760

(76) ColumnarExchange
Input [6]: [hash_partition_key#30, 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, 1), ENSURE_REQUIREMENTS, [cs_item_sk#4, cs_order_number#6, w_warehouse_name#15, i_item_desc#17, d_week_seq#24], [plan_id=9], [shuffle_writer_type=hash]

(77) InputAdapter
Input [5]: [cs_item_sk#4, cs_order_number#6, w_warehouse_name#15, i_item_desc#17, d_week_seq#24]

(78) InputIteratorTransformer
Input [5]: [cs_item_sk#4, cs_order_number#6, w_warehouse_name#15, i_item_desc#17, d_week_seq#24]

(79) FileSourceScanExecTransformer parquet spark_catalog.default.catalog_returns
Output [3]: [cr_item_sk#31, cr_order_number#32, cr_returned_date_sk#33]
Batched: true
Location: CatalogFileIndex [{warehouse_dir}/catalog_returns]
PushedFilters: [IsNotNull(cr_item_sk), IsNotNull(cr_order_number)]
ReadSchema: struct<cr_item_sk:int,cr_order_number:int>

(80) FilterExecTransformer
Input [3]: [cr_item_sk#31, cr_order_number#32, cr_returned_date_sk#33]
Arguments: (isnotnull(cr_item_sk#31) AND isnotnull(cr_order_number#32))

(81) ProjectExecTransformer
Output [3]: [hash(cr_item_sk#31, cr_order_number#32, 42) AS hash_partition_key#34, cr_item_sk#31, cr_order_number#32]
Input [3]: [cr_item_sk#31, cr_order_number#32, cr_returned_date_sk#33]

(82) WholeStageCodegenTransformer (12)
Input [3]: [hash_partition_key#34, cr_item_sk#31, cr_order_number#32]
Arguments: false

(83) VeloxResizeBatches
Input [3]: [hash_partition_key#34, cr_item_sk#31, cr_order_number#32]
Arguments: 1024, 2147483647, 10485760

(84) ColumnarExchange
Input [3]: [hash_partition_key#34, cr_item_sk#31, cr_order_number#32]
Arguments: hashpartitioning(cr_item_sk#31, cr_order_number#32, 1), ENSURE_REQUIREMENTS, [cr_item_sk#31, cr_order_number#32], [plan_id=10], [shuffle_writer_type=hash]

(85) InputAdapter
Input [2]: [cr_item_sk#31, cr_order_number#32]

(86) InputIteratorTransformer
Input [2]: [cr_item_sk#31, cr_order_number#32]

(87) ShuffledHashJoinExecTransformer
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

(88) ProjectExecTransformer
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]

(89) FlushableHashAggregateExecTransformer
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#35]
Results [4]: [i_item_desc#17, w_warehouse_name#15, d_week_seq#24, count#36]

(90) ProjectExecTransformer
Output [5]: [hash(i_item_desc#17, w_warehouse_name#15, d_week_seq#24, 42) AS hash_partition_key#37, i_item_desc#17, w_warehouse_name#15, d_week_seq#24, count#36]
Input [4]: [i_item_desc#17, w_warehouse_name#15, d_week_seq#24, count#36]

(91) WholeStageCodegenTransformer (13)
Input [5]: [hash_partition_key#37, i_item_desc#17, w_warehouse_name#15, d_week_seq#24, count#36]
Arguments: false

(92) VeloxResizeBatches
Input [5]: [hash_partition_key#37, i_item_desc#17, w_warehouse_name#15, d_week_seq#24, count#36]
Arguments: 1024, 2147483647, 10485760

(93) ColumnarExchange
Input [5]: [hash_partition_key#37, i_item_desc#17, w_warehouse_name#15, d_week_seq#24, count#36]
Arguments: hashpartitioning(i_item_desc#17, w_warehouse_name#15, d_week_seq#24, 1), ENSURE_REQUIREMENTS, [i_item_desc#17, w_warehouse_name#15, d_week_seq#24, count#36], [plan_id=11], [shuffle_writer_type=hash]

(94) InputAdapter
Input [4]: [i_item_desc#17, w_warehouse_name#15, d_week_seq#24, count#36]

(95) InputIteratorTransformer
Input [4]: [i_item_desc#17, w_warehouse_name#15, d_week_seq#24, count#36]

(96) RegularHashAggregateExecTransformer
Input [4]: [i_item_desc#17, w_warehouse_name#15, d_week_seq#24, count#36]
Keys [3]: [i_item_desc#17, w_warehouse_name#15, d_week_seq#24]
Functions [1]: [count(1)]
Aggregate Attributes [1]: [count(1)#38]
Results [4]: [i_item_desc#17, w_warehouse_name#15, d_week_seq#24, count(1)#38]

(97) ProjectExecTransformer
Output [6]: [i_item_desc#17, w_warehouse_name#15, d_week_seq#24, count(1)#38 AS no_promo#39, count(1)#38 AS promo#40, count(1)#38 AS total_cnt#41]
Input [4]: [i_item_desc#17, w_warehouse_name#15, d_week_seq#24, count(1)#38]

(98) WholeStageCodegenTransformer (14)
Input [6]: [i_item_desc#17, w_warehouse_name#15, d_week_seq#24, no_promo#39, promo#40, total_cnt#41]
Arguments: false

(99) TakeOrderedAndProjectExecTransformer
Input [6]: [i_item_desc#17, w_warehouse_name#15, d_week_seq#24, no_promo#39, promo#40, total_cnt#41]
Arguments: 100, [total_cnt#41 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#39, promo#40, total_cnt#41], 0

(100) VeloxColumnarToRow
Input [6]: [i_item_desc#17, w_warehouse_name#15, d_week_seq#24, no_promo#39, promo#40, total_cnt#41]

===== Subqueries =====

Subquery:1 Hosting operator id = 1 Hosting Expression = cs_sold_date_sk#8 IN dynamicpruning#9
ColumnarBroadcastExchange (105)
+- ^ ProjectExecTransformer (103)
   +- ^ FilterExecTransformer (102)
      +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.date_dim (101)


(101) FileSourceScanExecTransformer parquet spark_catalog.default.date_dim
Output [4]: [d_date_sk#22, d_date#23, d_week_seq#24, d_year#42]
Batched: true
Location: InMemoryFileIndex [{warehouse_dir}/date_dim]
PushedFilters: [IsNotNull(d_year), EqualTo(d_year,2001), 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>

(102) FilterExecTransformer
Input [4]: [d_date_sk#22, d_date#23, d_week_seq#24, d_year#42]
Arguments: ((((isnotnull(d_year#42) AND (d_year#42 = 2001)) AND isnotnull(d_date_sk#22)) AND isnotnull(d_week_seq#24)) AND isnotnull(d_date#23))

(103) ProjectExecTransformer
Output [3]: [d_date_sk#22, d_date#23, d_week_seq#24]
Input [4]: [d_date_sk#22, d_date#23, d_week_seq#24, d_year#42]

(104) WholeStageCodegenTransformer (1)
Input [3]: [d_date_sk#22, d_date#23, d_week_seq#24]
Arguments: false

(105) ColumnarBroadcastExchange
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=12]


