== Physical Plan ==
VeloxColumnarToRow (77)
+- ^ SortExecTransformer (75)
   +- ^ InputIteratorTransformer (74)
      +- ColumnarExchange (72)
         +- VeloxResizeBatches (71)
            +- ^ FilterExecTransformer (69)
               +- ^ RegularHashAggregateExecTransformer (68)
                  +- ^ InputIteratorTransformer (67)
                     +- ColumnarExchange (65)
                        +- VeloxResizeBatches (64)
                           +- ^ ProjectExecTransformer (62)
                              +- ^ FlushableHashAggregateExecTransformer (61)
                                 +- ^ ProjectExecTransformer (60)
                                    +- ^ RegularHashAggregateExecTransformer (59)
                                       +- ^ InputIteratorTransformer (58)
                                          +- ColumnarExchange (56)
                                             +- VeloxResizeBatches (55)
                                                +- ^ ProjectExecTransformer (53)
                                                   +- ^ FlushableHashAggregateExecTransformer (52)
                                                      +- ^ ProjectExecTransformer (51)
                                                         +- ^ ShuffledHashJoinExecTransformer Inner BuildLeft (50)
                                                            :- ^ InputIteratorTransformer (41)
                                                            :  +- ColumnarExchange (39)
                                                            :     +- VeloxResizeBatches (38)
                                                            :        +- ^ ProjectExecTransformer (36)
                                                            :           +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (35)
                                                            :              :- ^ ProjectExecTransformer (28)
                                                            :              :  +- ^ BroadcastHashJoinExecTransformer Inner BuildLeft (27)
                                                            :              :     :- ^ InputIteratorTransformer (23)
                                                            :              :     :  +- ColumnarBroadcastExchange (21)
                                                            :              :     :     +- ^ ProjectExecTransformer (19)
                                                            :              :     :        +- ^ BroadcastHashJoinExecTransformer Inner BuildLeft (18)
                                                            :              :     :           :- ^ InputIteratorTransformer (15)
                                                            :              :     :           :  +- ColumnarBroadcastExchange (13)
                                                            :              :     :           :     +- ^ ProjectExecTransformer (11)
                                                            :              :     :           :        +- ^ BroadcastHashJoinExecTransformer Inner BuildLeft (10)
                                                            :              :     :           :           :- ^ InputIteratorTransformer (7)
                                                            :              :     :           :           :  +- ColumnarBroadcastExchange (5)
                                                            :              :     :           :           :     +- ^ ProjectExecTransformer (3)
                                                            :              :     :           :           :        +- ^ FilterExecTransformer (2)
                                                            :              :     :           :           :           +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.store (1)
                                                            :              :     :           :           +- ^ FilterExecTransformer (9)
                                                            :              :     :           :              +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.customer_address (8)
                                                            :              :     :           +- ^ FilterExecTransformer (17)
                                                            :              :     :              +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.customer (16)
                                                            :              :     +- ^ ProjectExecTransformer (26)
                                                            :              :        +- ^ FilterExecTransformer (25)
                                                            :              :           +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.store_sales (24)
                                                            :              +- ^ InputIteratorTransformer (34)
                                                            :                 +- ColumnarBroadcastExchange (32)
                                                            :                    +- ^ FilterExecTransformer (30)
                                                            :                       +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.item (29)
                                                            +- ^ InputIteratorTransformer (49)
                                                               +- ColumnarExchange (47)
                                                                  +- VeloxResizeBatches (46)
                                                                     +- ^ ProjectExecTransformer (44)
                                                                        +- ^ FilterExecTransformer (43)
                                                                           +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.store_returns (42)


(1) FileSourceScanExecTransformer parquet spark_catalog.default.store
Output [5]: [s_store_sk#1, s_store_name#2, s_market_id#3, s_state#4, s_zip#5]
Batched: true
Location: InMemoryFileIndex [{warehouse_dir}/store]
PushedFilters: [IsNotNull(s_market_id), EqualTo(s_market_id,8), IsNotNull(s_store_sk), IsNotNull(s_zip)]
ReadSchema: struct<s_store_sk:int,s_store_name:string,s_market_id:int,s_state:string,s_zip:string>

(2) FilterExecTransformer
Input [5]: [s_store_sk#1, s_store_name#2, s_market_id#3, s_state#4, s_zip#5]
Arguments: (((isnotnull(s_market_id#3) AND (s_market_id#3 = 8)) AND isnotnull(s_store_sk#1)) AND isnotnull(s_zip#5))

(3) ProjectExecTransformer
Output [4]: [s_store_sk#1, s_store_name#2, s_state#4, s_zip#5]
Input [5]: [s_store_sk#1, s_store_name#2, s_market_id#3, s_state#4, s_zip#5]

(4) WholeStageCodegenTransformer (10)
Input [4]: [s_store_sk#1, s_store_name#2, s_state#4, s_zip#5]
Arguments: false

(5) ColumnarBroadcastExchange
Input [4]: [s_store_sk#1, s_store_name#2, s_state#4, s_zip#5]
Arguments: HashedRelationBroadcastMode(List(input[3, string, true]),false), [plan_id=1]

(6) InputAdapter
Input [4]: [s_store_sk#1, s_store_name#2, s_state#4, s_zip#5]

(7) InputIteratorTransformer
Input [4]: [s_store_sk#1, s_store_name#2, s_state#4, s_zip#5]

(8) FileSourceScanExecTransformer parquet spark_catalog.default.customer_address
Output [4]: [ca_address_sk#6, ca_state#7, ca_zip#8, ca_country#9]
Batched: true
Location: InMemoryFileIndex [{warehouse_dir}/customer_address]
PushedFilters: [IsNotNull(ca_address_sk), IsNotNull(ca_country), IsNotNull(ca_zip)]
ReadSchema: struct<ca_address_sk:int,ca_state:string,ca_zip:string,ca_country:string>

(9) FilterExecTransformer
Input [4]: [ca_address_sk#6, ca_state#7, ca_zip#8, ca_country#9]
Arguments: ((isnotnull(ca_address_sk#6) AND isnotnull(ca_country#9)) AND isnotnull(ca_zip#8))

(10) BroadcastHashJoinExecTransformer
Left keys [1]: [s_zip#5]
Right keys [1]: [ca_zip#8]
Join type: Inner
Join condition: None

(11) ProjectExecTransformer
Output [6]: [s_store_sk#1, s_store_name#2, s_state#4, ca_address_sk#6, ca_state#7, ca_country#9]
Input [8]: [s_store_sk#1, s_store_name#2, s_state#4, s_zip#5, ca_address_sk#6, ca_state#7, ca_zip#8, ca_country#9]

(12) WholeStageCodegenTransformer (11)
Input [6]: [s_store_sk#1, s_store_name#2, s_state#4, ca_address_sk#6, ca_state#7, ca_country#9]
Arguments: false

(13) ColumnarBroadcastExchange
Input [6]: [s_store_sk#1, s_store_name#2, s_state#4, ca_address_sk#6, ca_state#7, ca_country#9]
Arguments: HashedRelationBroadcastMode(List(input[3, int, true], upper(input[5, string, true])),false), [plan_id=2]

(14) InputAdapter
Input [6]: [s_store_sk#1, s_store_name#2, s_state#4, ca_address_sk#6, ca_state#7, ca_country#9]

(15) InputIteratorTransformer
Input [6]: [s_store_sk#1, s_store_name#2, s_state#4, ca_address_sk#6, ca_state#7, ca_country#9]

(16) FileSourceScanExecTransformer parquet spark_catalog.default.customer
Output [5]: [c_customer_sk#10, c_current_addr_sk#11, c_first_name#12, c_last_name#13, c_birth_country#14]
Batched: true
Location: InMemoryFileIndex [{warehouse_dir}/customer]
PushedFilters: [IsNotNull(c_customer_sk), IsNotNull(c_current_addr_sk), IsNotNull(c_birth_country)]
ReadSchema: struct<c_customer_sk:int,c_current_addr_sk:int,c_first_name:string,c_last_name:string,c_birth_country:string>

(17) FilterExecTransformer
Input [5]: [c_customer_sk#10, c_current_addr_sk#11, c_first_name#12, c_last_name#13, c_birth_country#14]
Arguments: ((isnotnull(c_customer_sk#10) AND isnotnull(c_current_addr_sk#11)) AND isnotnull(c_birth_country#14))

(18) BroadcastHashJoinExecTransformer
Left keys [2]: [ca_address_sk#6, upper(ca_country#9)]
Right keys [2]: [c_current_addr_sk#11, c_birth_country#14]
Join type: Inner
Join condition: None

(19) ProjectExecTransformer
Output [7]: [s_store_sk#1, s_store_name#2, s_state#4, ca_state#7, c_customer_sk#10, c_first_name#12, c_last_name#13]
Input [11]: [s_store_sk#1, s_store_name#2, s_state#4, ca_address_sk#6, ca_state#7, ca_country#9, c_customer_sk#10, c_current_addr_sk#11, c_first_name#12, c_last_name#13, c_birth_country#14]

(20) WholeStageCodegenTransformer (12)
Input [7]: [s_store_sk#1, s_store_name#2, s_state#4, ca_state#7, c_customer_sk#10, c_first_name#12, c_last_name#13]
Arguments: false

(21) ColumnarBroadcastExchange
Input [7]: [s_store_sk#1, s_store_name#2, s_state#4, ca_state#7, c_customer_sk#10, c_first_name#12, c_last_name#13]
Arguments: HashedRelationBroadcastMode(List((shiftleft(cast(input[0, int, true] as bigint), 32) | (cast(input[4, int, true] as bigint) & 4294967295))),false), [plan_id=3]

(22) InputAdapter
Input [7]: [s_store_sk#1, s_store_name#2, s_state#4, ca_state#7, c_customer_sk#10, c_first_name#12, c_last_name#13]

(23) InputIteratorTransformer
Input [7]: [s_store_sk#1, s_store_name#2, s_state#4, ca_state#7, c_customer_sk#10, c_first_name#12, c_last_name#13]

(24) FileSourceScanExecTransformer parquet spark_catalog.default.store_sales
Output [6]: [ss_item_sk#15, ss_customer_sk#16, ss_store_sk#17, ss_ticket_number#18, ss_net_paid#19, ss_sold_date_sk#20]
Batched: true
Location: CatalogFileIndex [{warehouse_dir}/store_sales]
PushedFilters: [IsNotNull(ss_ticket_number), IsNotNull(ss_item_sk), IsNotNull(ss_store_sk), IsNotNull(ss_customer_sk)]
ReadSchema: struct<ss_item_sk:int,ss_customer_sk:int,ss_store_sk:int,ss_ticket_number:int,ss_net_paid:decimal(7,2)>

(25) FilterExecTransformer
Input [6]: [ss_item_sk#15, ss_customer_sk#16, ss_store_sk#17, ss_ticket_number#18, ss_net_paid#19, ss_sold_date_sk#20]
Arguments: (((isnotnull(ss_ticket_number#18) AND isnotnull(ss_item_sk#15)) AND isnotnull(ss_store_sk#17)) AND isnotnull(ss_customer_sk#16))

(26) ProjectExecTransformer
Output [5]: [ss_item_sk#15, ss_customer_sk#16, ss_store_sk#17, ss_ticket_number#18, ss_net_paid#19]
Input [6]: [ss_item_sk#15, ss_customer_sk#16, ss_store_sk#17, ss_ticket_number#18, ss_net_paid#19, ss_sold_date_sk#20]

(27) BroadcastHashJoinExecTransformer
Left keys [2]: [s_store_sk#1, c_customer_sk#10]
Right keys [2]: [ss_store_sk#17, ss_customer_sk#16]
Join type: Inner
Join condition: None

(28) ProjectExecTransformer
Output [8]: [s_store_name#2, s_state#4, ca_state#7, c_first_name#12, c_last_name#13, ss_item_sk#15, ss_ticket_number#18, ss_net_paid#19]
Input [12]: [s_store_sk#1, s_store_name#2, s_state#4, ca_state#7, c_customer_sk#10, c_first_name#12, c_last_name#13, ss_item_sk#15, ss_customer_sk#16, ss_store_sk#17, ss_ticket_number#18, ss_net_paid#19]

(29) FileSourceScanExecTransformer parquet spark_catalog.default.item
Output [6]: [i_item_sk#21, i_current_price#22, i_size#23, i_color#24, i_units#25, i_manager_id#26]
Batched: true
Location: InMemoryFileIndex [{warehouse_dir}/item]
PushedFilters: [IsNotNull(i_color), EqualTo(i_color,pale                ), IsNotNull(i_item_sk)]
ReadSchema: struct<i_item_sk:int,i_current_price:decimal(7,2),i_size:string,i_color:string,i_units:string,i_manager_id:int>

(30) FilterExecTransformer
Input [6]: [i_item_sk#21, i_current_price#22, i_size#23, i_color#24, i_units#25, i_manager_id#26]
Arguments: ((isnotnull(i_color#24) AND (i_color#24 = pale                )) AND isnotnull(i_item_sk#21))

(31) WholeStageCodegenTransformer (13)
Input [6]: [i_item_sk#21, i_current_price#22, i_size#23, i_color#24, i_units#25, i_manager_id#26]
Arguments: false

(32) ColumnarBroadcastExchange
Input [6]: [i_item_sk#21, i_current_price#22, i_size#23, i_color#24, i_units#25, i_manager_id#26]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, false] as bigint)),false), [plan_id=4]

(33) InputAdapter
Input [6]: [i_item_sk#21, i_current_price#22, i_size#23, i_color#24, i_units#25, i_manager_id#26]

(34) InputIteratorTransformer
Input [6]: [i_item_sk#21, i_current_price#22, i_size#23, i_color#24, i_units#25, i_manager_id#26]

(35) BroadcastHashJoinExecTransformer
Left keys [1]: [ss_item_sk#15]
Right keys [1]: [i_item_sk#21]
Join type: Inner
Join condition: None

(36) ProjectExecTransformer
Output [14]: [hash(ss_ticket_number#18, ss_item_sk#15, 42) AS hash_partition_key#27, s_store_name#2, s_state#4, ca_state#7, c_first_name#12, c_last_name#13, ss_item_sk#15, ss_ticket_number#18, ss_net_paid#19, i_current_price#22, i_size#23, i_color#24, i_units#25, i_manager_id#26]
Input [14]: [s_store_name#2, s_state#4, ca_state#7, c_first_name#12, c_last_name#13, ss_item_sk#15, ss_ticket_number#18, ss_net_paid#19, i_item_sk#21, i_current_price#22, i_size#23, i_color#24, i_units#25, i_manager_id#26]

(37) WholeStageCodegenTransformer (14)
Input [14]: [hash_partition_key#27, s_store_name#2, s_state#4, ca_state#7, c_first_name#12, c_last_name#13, ss_item_sk#15, ss_ticket_number#18, ss_net_paid#19, i_current_price#22, i_size#23, i_color#24, i_units#25, i_manager_id#26]
Arguments: false

(38) VeloxResizeBatches
Input [14]: [hash_partition_key#27, s_store_name#2, s_state#4, ca_state#7, c_first_name#12, c_last_name#13, ss_item_sk#15, ss_ticket_number#18, ss_net_paid#19, i_current_price#22, i_size#23, i_color#24, i_units#25, i_manager_id#26]
Arguments: 1024, 2147483647, 10485760

(39) ColumnarExchange
Input [14]: [hash_partition_key#27, s_store_name#2, s_state#4, ca_state#7, c_first_name#12, c_last_name#13, ss_item_sk#15, ss_ticket_number#18, ss_net_paid#19, i_current_price#22, i_size#23, i_color#24, i_units#25, i_manager_id#26]
Arguments: hashpartitioning(ss_ticket_number#18, ss_item_sk#15, 1), ENSURE_REQUIREMENTS, [s_store_name#2, s_state#4, ca_state#7, c_first_name#12, c_last_name#13, ss_item_sk#15, ss_ticket_number#18, ss_net_paid#19, i_current_price#22, i_size#23, i_color#24, i_units#25, i_manager_id#26], [plan_id=5], [shuffle_writer_type=hash]

(40) InputAdapter
Input [13]: [s_store_name#2, s_state#4, ca_state#7, c_first_name#12, c_last_name#13, ss_item_sk#15, ss_ticket_number#18, ss_net_paid#19, i_current_price#22, i_size#23, i_color#24, i_units#25, i_manager_id#26]

(41) InputIteratorTransformer
Input [13]: [s_store_name#2, s_state#4, ca_state#7, c_first_name#12, c_last_name#13, ss_item_sk#15, ss_ticket_number#18, ss_net_paid#19, i_current_price#22, i_size#23, i_color#24, i_units#25, i_manager_id#26]

(42) FileSourceScanExecTransformer parquet spark_catalog.default.store_returns
Output [3]: [sr_item_sk#28, sr_ticket_number#29, sr_returned_date_sk#30]
Batched: true
Location: CatalogFileIndex [{warehouse_dir}/store_returns]
PushedFilters: [IsNotNull(sr_ticket_number), IsNotNull(sr_item_sk)]
ReadSchema: struct<sr_item_sk:int,sr_ticket_number:int>

(43) FilterExecTransformer
Input [3]: [sr_item_sk#28, sr_ticket_number#29, sr_returned_date_sk#30]
Arguments: (isnotnull(sr_ticket_number#29) AND isnotnull(sr_item_sk#28))

(44) ProjectExecTransformer
Output [3]: [hash(sr_ticket_number#29, sr_item_sk#28, 42) AS hash_partition_key#31, sr_item_sk#28, sr_ticket_number#29]
Input [3]: [sr_item_sk#28, sr_ticket_number#29, sr_returned_date_sk#30]

(45) WholeStageCodegenTransformer (15)
Input [3]: [hash_partition_key#31, sr_item_sk#28, sr_ticket_number#29]
Arguments: false

(46) VeloxResizeBatches
Input [3]: [hash_partition_key#31, sr_item_sk#28, sr_ticket_number#29]
Arguments: 1024, 2147483647, 10485760

(47) ColumnarExchange
Input [3]: [hash_partition_key#31, sr_item_sk#28, sr_ticket_number#29]
Arguments: hashpartitioning(sr_ticket_number#29, sr_item_sk#28, 1), ENSURE_REQUIREMENTS, [sr_item_sk#28, sr_ticket_number#29], [plan_id=6], [shuffle_writer_type=hash]

(48) InputAdapter
Input [2]: [sr_item_sk#28, sr_ticket_number#29]

(49) InputIteratorTransformer
Input [2]: [sr_item_sk#28, sr_ticket_number#29]

(50) ShuffledHashJoinExecTransformer
Left keys [2]: [ss_ticket_number#18, ss_item_sk#15]
Right keys [2]: [sr_ticket_number#29, sr_item_sk#28]
Join type: Inner
Join condition: None

(51) ProjectExecTransformer
Output [11]: [s_store_name#2, s_state#4, i_current_price#22, i_size#23, i_color#24, i_units#25, i_manager_id#26, c_first_name#12, c_last_name#13, ca_state#7, UnscaledValue(ss_net_paid#19) AS _pre_1#32]
Input [15]: [s_store_name#2, s_state#4, ca_state#7, c_first_name#12, c_last_name#13, ss_item_sk#15, ss_ticket_number#18, ss_net_paid#19, i_current_price#22, i_size#23, i_color#24, i_units#25, i_manager_id#26, sr_item_sk#28, sr_ticket_number#29]

(52) FlushableHashAggregateExecTransformer
Input [11]: [s_store_name#2, s_state#4, i_current_price#22, i_size#23, i_color#24, i_units#25, i_manager_id#26, c_first_name#12, c_last_name#13, ca_state#7, _pre_1#32]
Keys [10]: [c_last_name#13, c_first_name#12, s_store_name#2, ca_state#7, s_state#4, i_color#24, i_current_price#22, i_manager_id#26, i_units#25, i_size#23]
Functions [1]: [partial_sum(_pre_1#32)]
Aggregate Attributes [1]: [sum#33]
Results [11]: [c_last_name#13, c_first_name#12, s_store_name#2, ca_state#7, s_state#4, i_color#24, i_current_price#22, i_manager_id#26, i_units#25, i_size#23, sum#34]

(53) ProjectExecTransformer
Output [12]: [hash(c_last_name#13, c_first_name#12, s_store_name#2, ca_state#7, s_state#4, i_color#24, i_current_price#22, i_manager_id#26, i_units#25, i_size#23, 42) AS hash_partition_key#35, c_last_name#13, c_first_name#12, s_store_name#2, ca_state#7, s_state#4, i_color#24, i_current_price#22, i_manager_id#26, i_units#25, i_size#23, sum#34]
Input [11]: [c_last_name#13, c_first_name#12, s_store_name#2, ca_state#7, s_state#4, i_color#24, i_current_price#22, i_manager_id#26, i_units#25, i_size#23, sum#34]

(54) WholeStageCodegenTransformer (16)
Input [12]: [hash_partition_key#35, c_last_name#13, c_first_name#12, s_store_name#2, ca_state#7, s_state#4, i_color#24, i_current_price#22, i_manager_id#26, i_units#25, i_size#23, sum#34]
Arguments: false

(55) VeloxResizeBatches
Input [12]: [hash_partition_key#35, c_last_name#13, c_first_name#12, s_store_name#2, ca_state#7, s_state#4, i_color#24, i_current_price#22, i_manager_id#26, i_units#25, i_size#23, sum#34]
Arguments: 1024, 2147483647, 10485760

(56) ColumnarExchange
Input [12]: [hash_partition_key#35, c_last_name#13, c_first_name#12, s_store_name#2, ca_state#7, s_state#4, i_color#24, i_current_price#22, i_manager_id#26, i_units#25, i_size#23, sum#34]
Arguments: hashpartitioning(c_last_name#13, c_first_name#12, s_store_name#2, ca_state#7, s_state#4, i_color#24, i_current_price#22, i_manager_id#26, i_units#25, i_size#23, 1), ENSURE_REQUIREMENTS, [c_last_name#13, c_first_name#12, s_store_name#2, ca_state#7, s_state#4, i_color#24, i_current_price#22, i_manager_id#26, i_units#25, i_size#23, sum#34], [plan_id=7], [shuffle_writer_type=hash]

(57) InputAdapter
Input [11]: [c_last_name#13, c_first_name#12, s_store_name#2, ca_state#7, s_state#4, i_color#24, i_current_price#22, i_manager_id#26, i_units#25, i_size#23, sum#34]

(58) InputIteratorTransformer
Input [11]: [c_last_name#13, c_first_name#12, s_store_name#2, ca_state#7, s_state#4, i_color#24, i_current_price#22, i_manager_id#26, i_units#25, i_size#23, sum#34]

(59) RegularHashAggregateExecTransformer
Input [11]: [c_last_name#13, c_first_name#12, s_store_name#2, ca_state#7, s_state#4, i_color#24, i_current_price#22, i_manager_id#26, i_units#25, i_size#23, sum#34]
Keys [10]: [c_last_name#13, c_first_name#12, s_store_name#2, ca_state#7, s_state#4, i_color#24, i_current_price#22, i_manager_id#26, i_units#25, i_size#23]
Functions [1]: [sum(UnscaledValue(ss_net_paid#19))]
Aggregate Attributes [1]: [sum(UnscaledValue(ss_net_paid#19))#36]
Results [11]: [c_last_name#13, c_first_name#12, s_store_name#2, ca_state#7, s_state#4, i_color#24, i_current_price#22, i_manager_id#26, i_units#25, i_size#23, sum(UnscaledValue(ss_net_paid#19))#36]

(60) ProjectExecTransformer
Output [4]: [c_last_name#13, c_first_name#12, s_store_name#2, MakeDecimal(sum(UnscaledValue(ss_net_paid#19))#36,17,2) AS netpaid#37]
Input [11]: [c_last_name#13, c_first_name#12, s_store_name#2, ca_state#7, s_state#4, i_color#24, i_current_price#22, i_manager_id#26, i_units#25, i_size#23, sum(UnscaledValue(ss_net_paid#19))#36]

(61) FlushableHashAggregateExecTransformer
Input [4]: [c_last_name#13, c_first_name#12, s_store_name#2, netpaid#37]
Keys [3]: [c_last_name#13, c_first_name#12, s_store_name#2]
Functions [1]: [partial_sum(netpaid#37)]
Aggregate Attributes [2]: [sum#38, isEmpty#39]
Results [5]: [c_last_name#13, c_first_name#12, s_store_name#2, sum#40, isEmpty#41]

(62) ProjectExecTransformer
Output [6]: [hash(c_last_name#13, c_first_name#12, s_store_name#2, 42) AS hash_partition_key#42, c_last_name#13, c_first_name#12, s_store_name#2, sum#40, isEmpty#41]
Input [5]: [c_last_name#13, c_first_name#12, s_store_name#2, sum#40, isEmpty#41]

(63) WholeStageCodegenTransformer (17)
Input [6]: [hash_partition_key#42, c_last_name#13, c_first_name#12, s_store_name#2, sum#40, isEmpty#41]
Arguments: false

(64) VeloxResizeBatches
Input [6]: [hash_partition_key#42, c_last_name#13, c_first_name#12, s_store_name#2, sum#40, isEmpty#41]
Arguments: 1024, 2147483647, 10485760

(65) ColumnarExchange
Input [6]: [hash_partition_key#42, c_last_name#13, c_first_name#12, s_store_name#2, sum#40, isEmpty#41]
Arguments: hashpartitioning(c_last_name#13, c_first_name#12, s_store_name#2, 1), ENSURE_REQUIREMENTS, [c_last_name#13, c_first_name#12, s_store_name#2, sum#40, isEmpty#41], [plan_id=8], [shuffle_writer_type=hash]

(66) InputAdapter
Input [5]: [c_last_name#13, c_first_name#12, s_store_name#2, sum#40, isEmpty#41]

(67) InputIteratorTransformer
Input [5]: [c_last_name#13, c_first_name#12, s_store_name#2, sum#40, isEmpty#41]

(68) RegularHashAggregateExecTransformer
Input [5]: [c_last_name#13, c_first_name#12, s_store_name#2, sum#40, isEmpty#41]
Keys [3]: [c_last_name#13, c_first_name#12, s_store_name#2]
Functions [1]: [sum(netpaid#37)]
Aggregate Attributes [1]: [sum(netpaid#37)#43]
Results [4]: [c_last_name#13, c_first_name#12, s_store_name#2, sum(netpaid#37)#43 AS paid#44]

(69) FilterExecTransformer
Input [4]: [c_last_name#13, c_first_name#12, s_store_name#2, paid#44]
Arguments: (isnotnull(paid#44) AND (cast(paid#44 as decimal(33,8)) > cast(Subquery scalar-subquery#45, [id=#9] as decimal(33,8))))

(70) WholeStageCodegenTransformer (18)
Input [4]: [c_last_name#13, c_first_name#12, s_store_name#2, paid#44]
Arguments: false

(71) VeloxResizeBatches
Input [4]: [c_last_name#13, c_first_name#12, s_store_name#2, paid#44]
Arguments: 1024, 2147483647, 10485760

(72) ColumnarExchange
Input [4]: [c_last_name#13, c_first_name#12, s_store_name#2, paid#44]
Arguments: rangepartitioning(c_last_name#13 ASC NULLS FIRST, c_first_name#12 ASC NULLS FIRST, s_store_name#2 ASC NULLS FIRST, 1), ENSURE_REQUIREMENTS, [plan_id=10], [shuffle_writer_type=hash]

(73) InputAdapter
Input [4]: [c_last_name#13, c_first_name#12, s_store_name#2, paid#44]

(74) InputIteratorTransformer
Input [4]: [c_last_name#13, c_first_name#12, s_store_name#2, paid#44]

(75) SortExecTransformer
Input [4]: [c_last_name#13, c_first_name#12, s_store_name#2, paid#44]
Arguments: [c_last_name#13 ASC NULLS FIRST, c_first_name#12 ASC NULLS FIRST, s_store_name#2 ASC NULLS FIRST], true, 0

(76) WholeStageCodegenTransformer (19)
Input [4]: [c_last_name#13, c_first_name#12, s_store_name#2, paid#44]
Arguments: false

(77) VeloxColumnarToRow
Input [4]: [c_last_name#13, c_first_name#12, s_store_name#2, paid#44]

===== Subqueries =====

Subquery:1 Hosting operator id = 69 Hosting Expression = Subquery scalar-subquery#45, [id=#9]
VeloxColumnarToRow (123)
+- ^ ProjectExecTransformer (121)
   +- ^ RegularHashAggregateExecTransformer (120)
      +- ^ ProjectExecTransformer (119)
         +- ^ RegularHashAggregateExecTransformer (118)
            +- ^ InputIteratorTransformer (117)
               +- ColumnarExchange (115)
                  +- VeloxResizeBatches (114)
                     +- ^ ProjectExecTransformer (112)
                        +- ^ FlushableHashAggregateExecTransformer (111)
                           +- ^ ProjectExecTransformer (110)
                              +- ^ ShuffledHashJoinExecTransformer Inner BuildLeft (109)
                                 :- ^ InputIteratorTransformer (105)
                                 :  +- ColumnarExchange (103)
                                 :     +- VeloxResizeBatches (102)
                                 :        +- ^ ProjectExecTransformer (100)
                                 :           +- ^ ShuffledHashJoinExecTransformer Inner BuildRight (99)
                                 :              :- ^ InputIteratorTransformer (90)
                                 :              :  +- ColumnarExchange (88)
                                 :              :     +- VeloxResizeBatches (87)
                                 :              :        +- ^ ProjectExecTransformer (85)
                                 :              :           +- ^ BroadcastHashJoinExecTransformer Inner BuildLeft (84)
                                 :              :              :- ^ InputIteratorTransformer (80)
                                 :              :              :  +- ReusedExchange (78)
                                 :              :              +- ^ ProjectExecTransformer (83)
                                 :              :                 +- ^ FilterExecTransformer (82)
                                 :              :                    +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.store_sales (81)
                                 :              +- ^ InputIteratorTransformer (98)
                                 :                 +- ColumnarExchange (96)
                                 :                    +- VeloxResizeBatches (95)
                                 :                       +- ^ ProjectExecTransformer (93)
                                 :                          +- ^ FilterExecTransformer (92)
                                 :                             +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.item (91)
                                 +- ^ InputIteratorTransformer (108)
                                    +- ReusedExchange (106)


(78) ReusedExchange [Reuses operator id: 21]
Output [7]: [s_store_sk#46, s_store_name#47, s_state#48, ca_state#49, c_customer_sk#50, c_first_name#51, c_last_name#52]

(79) InputAdapter
Input [7]: [s_store_sk#46, s_store_name#47, s_state#48, ca_state#49, c_customer_sk#50, c_first_name#51, c_last_name#52]

(80) InputIteratorTransformer
Input [7]: [s_store_sk#46, s_store_name#47, s_state#48, ca_state#49, c_customer_sk#50, c_first_name#51, c_last_name#52]

(81) FileSourceScanExecTransformer parquet spark_catalog.default.store_sales
Output [6]: [ss_item_sk#53, ss_customer_sk#54, ss_store_sk#55, ss_ticket_number#56, ss_net_paid#57, ss_sold_date_sk#58]
Batched: true
Location: CatalogFileIndex [{warehouse_dir}/store_sales]
PushedFilters: [IsNotNull(ss_ticket_number), IsNotNull(ss_item_sk), IsNotNull(ss_store_sk), IsNotNull(ss_customer_sk)]
ReadSchema: struct<ss_item_sk:int,ss_customer_sk:int,ss_store_sk:int,ss_ticket_number:int,ss_net_paid:decimal(7,2)>

(82) FilterExecTransformer
Input [6]: [ss_item_sk#53, ss_customer_sk#54, ss_store_sk#55, ss_ticket_number#56, ss_net_paid#57, ss_sold_date_sk#58]
Arguments: (((isnotnull(ss_ticket_number#56) AND isnotnull(ss_item_sk#53)) AND isnotnull(ss_store_sk#55)) AND isnotnull(ss_customer_sk#54))

(83) ProjectExecTransformer
Output [5]: [ss_item_sk#53, ss_customer_sk#54, ss_store_sk#55, ss_ticket_number#56, ss_net_paid#57]
Input [6]: [ss_item_sk#53, ss_customer_sk#54, ss_store_sk#55, ss_ticket_number#56, ss_net_paid#57, ss_sold_date_sk#58]

(84) BroadcastHashJoinExecTransformer
Left keys [2]: [s_store_sk#46, c_customer_sk#50]
Right keys [2]: [ss_store_sk#55, ss_customer_sk#54]
Join type: Inner
Join condition: None

(85) ProjectExecTransformer
Output [9]: [hash(ss_item_sk#53, 42) AS hash_partition_key#59, s_store_name#47, s_state#48, ca_state#49, c_first_name#51, c_last_name#52, ss_item_sk#53, ss_ticket_number#56, ss_net_paid#57]
Input [12]: [s_store_sk#46, s_store_name#47, s_state#48, ca_state#49, c_customer_sk#50, c_first_name#51, c_last_name#52, ss_item_sk#53, ss_customer_sk#54, ss_store_sk#55, ss_ticket_number#56, ss_net_paid#57]

(86) WholeStageCodegenTransformer (4)
Input [9]: [hash_partition_key#59, s_store_name#47, s_state#48, ca_state#49, c_first_name#51, c_last_name#52, ss_item_sk#53, ss_ticket_number#56, ss_net_paid#57]
Arguments: false

(87) VeloxResizeBatches
Input [9]: [hash_partition_key#59, s_store_name#47, s_state#48, ca_state#49, c_first_name#51, c_last_name#52, ss_item_sk#53, ss_ticket_number#56, ss_net_paid#57]
Arguments: 1024, 2147483647, 10485760

(88) ColumnarExchange
Input [9]: [hash_partition_key#59, s_store_name#47, s_state#48, ca_state#49, c_first_name#51, c_last_name#52, ss_item_sk#53, ss_ticket_number#56, ss_net_paid#57]
Arguments: hashpartitioning(ss_item_sk#53, 1), ENSURE_REQUIREMENTS, [s_store_name#47, s_state#48, ca_state#49, c_first_name#51, c_last_name#52, ss_item_sk#53, ss_ticket_number#56, ss_net_paid#57], [plan_id=11], [shuffle_writer_type=hash]

(89) InputAdapter
Input [8]: [s_store_name#47, s_state#48, ca_state#49, c_first_name#51, c_last_name#52, ss_item_sk#53, ss_ticket_number#56, ss_net_paid#57]

(90) InputIteratorTransformer
Input [8]: [s_store_name#47, s_state#48, ca_state#49, c_first_name#51, c_last_name#52, ss_item_sk#53, ss_ticket_number#56, ss_net_paid#57]

(91) FileSourceScanExecTransformer parquet spark_catalog.default.item
Output [6]: [i_item_sk#60, i_current_price#61, i_size#62, i_color#63, i_units#64, i_manager_id#65]
Batched: true
Location: InMemoryFileIndex [{warehouse_dir}/item]
PushedFilters: [IsNotNull(i_item_sk)]
ReadSchema: struct<i_item_sk:int,i_current_price:decimal(7,2),i_size:string,i_color:string,i_units:string,i_manager_id:int>

(92) FilterExecTransformer
Input [6]: [i_item_sk#60, i_current_price#61, i_size#62, i_color#63, i_units#64, i_manager_id#65]
Arguments: isnotnull(i_item_sk#60)

(93) ProjectExecTransformer
Output [7]: [hash(i_item_sk#60, 42) AS hash_partition_key#66, i_item_sk#60, i_current_price#61, i_size#62, i_color#63, i_units#64, i_manager_id#65]
Input [6]: [i_item_sk#60, i_current_price#61, i_size#62, i_color#63, i_units#64, i_manager_id#65]

(94) WholeStageCodegenTransformer (5)
Input [7]: [hash_partition_key#66, i_item_sk#60, i_current_price#61, i_size#62, i_color#63, i_units#64, i_manager_id#65]
Arguments: false

(95) VeloxResizeBatches
Input [7]: [hash_partition_key#66, i_item_sk#60, i_current_price#61, i_size#62, i_color#63, i_units#64, i_manager_id#65]
Arguments: 1024, 2147483647, 10485760

(96) ColumnarExchange
Input [7]: [hash_partition_key#66, i_item_sk#60, i_current_price#61, i_size#62, i_color#63, i_units#64, i_manager_id#65]
Arguments: hashpartitioning(i_item_sk#60, 1), ENSURE_REQUIREMENTS, [i_item_sk#60, i_current_price#61, i_size#62, i_color#63, i_units#64, i_manager_id#65], [plan_id=12], [shuffle_writer_type=hash]

(97) InputAdapter
Input [6]: [i_item_sk#60, i_current_price#61, i_size#62, i_color#63, i_units#64, i_manager_id#65]

(98) InputIteratorTransformer
Input [6]: [i_item_sk#60, i_current_price#61, i_size#62, i_color#63, i_units#64, i_manager_id#65]

(99) ShuffledHashJoinExecTransformer
Left keys [1]: [ss_item_sk#53]
Right keys [1]: [i_item_sk#60]
Join type: Inner
Join condition: None

(100) ProjectExecTransformer
Output [14]: [hash(ss_ticket_number#56, ss_item_sk#53, 42) AS hash_partition_key#67, s_store_name#47, s_state#48, ca_state#49, c_first_name#51, c_last_name#52, ss_item_sk#53, ss_ticket_number#56, ss_net_paid#57, i_current_price#61, i_size#62, i_color#63, i_units#64, i_manager_id#65]
Input [14]: [s_store_name#47, s_state#48, ca_state#49, c_first_name#51, c_last_name#52, ss_item_sk#53, ss_ticket_number#56, ss_net_paid#57, i_item_sk#60, i_current_price#61, i_size#62, i_color#63, i_units#64, i_manager_id#65]

(101) WholeStageCodegenTransformer (6)
Input [14]: [hash_partition_key#67, s_store_name#47, s_state#48, ca_state#49, c_first_name#51, c_last_name#52, ss_item_sk#53, ss_ticket_number#56, ss_net_paid#57, i_current_price#61, i_size#62, i_color#63, i_units#64, i_manager_id#65]
Arguments: false

(102) VeloxResizeBatches
Input [14]: [hash_partition_key#67, s_store_name#47, s_state#48, ca_state#49, c_first_name#51, c_last_name#52, ss_item_sk#53, ss_ticket_number#56, ss_net_paid#57, i_current_price#61, i_size#62, i_color#63, i_units#64, i_manager_id#65]
Arguments: 1024, 2147483647, 10485760

(103) ColumnarExchange
Input [14]: [hash_partition_key#67, s_store_name#47, s_state#48, ca_state#49, c_first_name#51, c_last_name#52, ss_item_sk#53, ss_ticket_number#56, ss_net_paid#57, i_current_price#61, i_size#62, i_color#63, i_units#64, i_manager_id#65]
Arguments: hashpartitioning(ss_ticket_number#56, ss_item_sk#53, 1), ENSURE_REQUIREMENTS, [s_store_name#47, s_state#48, ca_state#49, c_first_name#51, c_last_name#52, ss_item_sk#53, ss_ticket_number#56, ss_net_paid#57, i_current_price#61, i_size#62, i_color#63, i_units#64, i_manager_id#65], [plan_id=13], [shuffle_writer_type=hash]

(104) InputAdapter
Input [13]: [s_store_name#47, s_state#48, ca_state#49, c_first_name#51, c_last_name#52, ss_item_sk#53, ss_ticket_number#56, ss_net_paid#57, i_current_price#61, i_size#62, i_color#63, i_units#64, i_manager_id#65]

(105) InputIteratorTransformer
Input [13]: [s_store_name#47, s_state#48, ca_state#49, c_first_name#51, c_last_name#52, ss_item_sk#53, ss_ticket_number#56, ss_net_paid#57, i_current_price#61, i_size#62, i_color#63, i_units#64, i_manager_id#65]

(106) ReusedExchange [Reuses operator id: 47]
Output [2]: [sr_item_sk#68, sr_ticket_number#69]

(107) InputAdapter
Input [2]: [sr_item_sk#68, sr_ticket_number#69]

(108) InputIteratorTransformer
Input [2]: [sr_item_sk#68, sr_ticket_number#69]

(109) ShuffledHashJoinExecTransformer
Left keys [2]: [ss_ticket_number#56, ss_item_sk#53]
Right keys [2]: [sr_ticket_number#69, sr_item_sk#68]
Join type: Inner
Join condition: None

(110) ProjectExecTransformer
Output [11]: [s_store_name#47, s_state#48, i_current_price#61, i_size#62, i_color#63, i_units#64, i_manager_id#65, c_first_name#51, c_last_name#52, ca_state#49, UnscaledValue(ss_net_paid#57) AS _pre_2#70]
Input [15]: [s_store_name#47, s_state#48, ca_state#49, c_first_name#51, c_last_name#52, ss_item_sk#53, ss_ticket_number#56, ss_net_paid#57, i_current_price#61, i_size#62, i_color#63, i_units#64, i_manager_id#65, sr_item_sk#68, sr_ticket_number#69]

(111) FlushableHashAggregateExecTransformer
Input [11]: [s_store_name#47, s_state#48, i_current_price#61, i_size#62, i_color#63, i_units#64, i_manager_id#65, c_first_name#51, c_last_name#52, ca_state#49, _pre_2#70]
Keys [10]: [c_last_name#52, c_first_name#51, s_store_name#47, ca_state#49, s_state#48, i_color#63, i_current_price#61, i_manager_id#65, i_units#64, i_size#62]
Functions [1]: [partial_sum(_pre_2#70)]
Aggregate Attributes [1]: [sum#71]
Results [11]: [c_last_name#52, c_first_name#51, s_store_name#47, ca_state#49, s_state#48, i_color#63, i_current_price#61, i_manager_id#65, i_units#64, i_size#62, sum#72]

(112) ProjectExecTransformer
Output [12]: [hash(c_last_name#52, c_first_name#51, s_store_name#47, ca_state#49, s_state#48, i_color#63, i_current_price#61, i_manager_id#65, i_units#64, i_size#62, 42) AS hash_partition_key#73, c_last_name#52, c_first_name#51, s_store_name#47, ca_state#49, s_state#48, i_color#63, i_current_price#61, i_manager_id#65, i_units#64, i_size#62, sum#72]
Input [11]: [c_last_name#52, c_first_name#51, s_store_name#47, ca_state#49, s_state#48, i_color#63, i_current_price#61, i_manager_id#65, i_units#64, i_size#62, sum#72]

(113) WholeStageCodegenTransformer (8)
Input [12]: [hash_partition_key#73, c_last_name#52, c_first_name#51, s_store_name#47, ca_state#49, s_state#48, i_color#63, i_current_price#61, i_manager_id#65, i_units#64, i_size#62, sum#72]
Arguments: false

(114) VeloxResizeBatches
Input [12]: [hash_partition_key#73, c_last_name#52, c_first_name#51, s_store_name#47, ca_state#49, s_state#48, i_color#63, i_current_price#61, i_manager_id#65, i_units#64, i_size#62, sum#72]
Arguments: 1024, 2147483647, 10485760

(115) ColumnarExchange
Input [12]: [hash_partition_key#73, c_last_name#52, c_first_name#51, s_store_name#47, ca_state#49, s_state#48, i_color#63, i_current_price#61, i_manager_id#65, i_units#64, i_size#62, sum#72]
Arguments: hashpartitioning(c_last_name#52, c_first_name#51, s_store_name#47, ca_state#49, s_state#48, i_color#63, i_current_price#61, i_manager_id#65, i_units#64, i_size#62, 1), ENSURE_REQUIREMENTS, [c_last_name#52, c_first_name#51, s_store_name#47, ca_state#49, s_state#48, i_color#63, i_current_price#61, i_manager_id#65, i_units#64, i_size#62, sum#72], [plan_id=14], [shuffle_writer_type=hash]

(116) InputAdapter
Input [11]: [c_last_name#52, c_first_name#51, s_store_name#47, ca_state#49, s_state#48, i_color#63, i_current_price#61, i_manager_id#65, i_units#64, i_size#62, sum#72]

(117) InputIteratorTransformer
Input [11]: [c_last_name#52, c_first_name#51, s_store_name#47, ca_state#49, s_state#48, i_color#63, i_current_price#61, i_manager_id#65, i_units#64, i_size#62, sum#72]

(118) RegularHashAggregateExecTransformer
Input [11]: [c_last_name#52, c_first_name#51, s_store_name#47, ca_state#49, s_state#48, i_color#63, i_current_price#61, i_manager_id#65, i_units#64, i_size#62, sum#72]
Keys [10]: [c_last_name#52, c_first_name#51, s_store_name#47, ca_state#49, s_state#48, i_color#63, i_current_price#61, i_manager_id#65, i_units#64, i_size#62]
Functions [1]: [sum(UnscaledValue(ss_net_paid#57))]
Aggregate Attributes [1]: [sum(UnscaledValue(ss_net_paid#57))#36]
Results [11]: [c_last_name#52, c_first_name#51, s_store_name#47, ca_state#49, s_state#48, i_color#63, i_current_price#61, i_manager_id#65, i_units#64, i_size#62, sum(UnscaledValue(ss_net_paid#57))#36]

(119) ProjectExecTransformer
Output [1]: [MakeDecimal(sum(UnscaledValue(ss_net_paid#57))#36,17,2) AS netpaid#74]
Input [11]: [c_last_name#52, c_first_name#51, s_store_name#47, ca_state#49, s_state#48, i_color#63, i_current_price#61, i_manager_id#65, i_units#64, i_size#62, sum(UnscaledValue(ss_net_paid#57))#36]

(120) RegularHashAggregateExecTransformer
Input [1]: [netpaid#74]
Keys: []
Functions [1]: [avg(netpaid#74)]
Aggregate Attributes [1]: [avg(netpaid#74)#75]
Results [1]: [avg(netpaid#74)#75]

(121) ProjectExecTransformer
Output [1]: [(0.05 * avg(netpaid#74)#75) AS (0.05 * avg(netpaid))#76]
Input [1]: [avg(netpaid#74)#75]

(122) WholeStageCodegenTransformer (9)
Input [1]: [(0.05 * avg(netpaid))#76]
Arguments: false

(123) VeloxColumnarToRow
Input [1]: [(0.05 * avg(netpaid))#76]


