== 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)
                                                         +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (50)
                                                            :- ^ ProjectExecTransformer (43)
                                                            :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (42)
                                                            :     :- ^ ProjectExecTransformer (35)
                                                            :     :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (34)
                                                            :     :     :- ^ ProjectExecTransformer (27)
                                                            :     :     :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (26)
                                                            :     :     :     :- ^ ProjectExecTransformer (18)
                                                            :     :     :     :  +- ^ ShuffledHashJoinExecTransformer Inner BuildRight (17)
                                                            :     :     :     :     :- ^ InputIteratorTransformer (8)
                                                            :     :     :     :     :  +- ColumnarExchange (6)
                                                            :     :     :     :     :     +- VeloxResizeBatches (5)
                                                            :     :     :     :     :        +- ^ ProjectExecTransformer (3)
                                                            :     :     :     :     :           +- ^ FilterExecTransformer (2)
                                                            :     :     :     :     :              +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.store_sales (1)
                                                            :     :     :     :     +- ^ InputIteratorTransformer (16)
                                                            :     :     :     :        +- ColumnarExchange (14)
                                                            :     :     :     :           +- VeloxResizeBatches (13)
                                                            :     :     :     :              +- ^ ProjectExecTransformer (11)
                                                            :     :     :     :                 +- ^ FilterExecTransformer (10)
                                                            :     :     :     :                    +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.store_returns (9)
                                                            :     :     :     +- ^ InputIteratorTransformer (25)
                                                            :     :     :        +- ColumnarBroadcastExchange (23)
                                                            :     :     :           +- ^ ProjectExecTransformer (21)
                                                            :     :     :              +- ^ FilterExecTransformer (20)
                                                            :     :     :                 +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.store (19)
                                                            :     :     +- ^ InputIteratorTransformer (33)
                                                            :     :        +- ColumnarBroadcastExchange (31)
                                                            :     :           +- ^ FilterExecTransformer (29)
                                                            :     :              +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.item (28)
                                                            :     +- ^ InputIteratorTransformer (41)
                                                            :        +- ColumnarBroadcastExchange (39)
                                                            :           +- ^ FilterExecTransformer (37)
                                                            :              +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.customer (36)
                                                            +- ^ InputIteratorTransformer (49)
                                                               +- ColumnarBroadcastExchange (47)
                                                                  +- ^ FilterExecTransformer (45)
                                                                     +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.customer_address (44)


(1) FileSourceScanExecTransformer parquet spark_catalog.default.store_sales
Output [6]: [ss_item_sk#1, ss_customer_sk#2, ss_store_sk#3, ss_ticket_number#4, ss_net_paid#5, ss_sold_date_sk#6]
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)>

(2) FilterExecTransformer
Input [6]: [ss_item_sk#1, ss_customer_sk#2, ss_store_sk#3, ss_ticket_number#4, ss_net_paid#5, ss_sold_date_sk#6]
Arguments: (((isnotnull(ss_ticket_number#4) AND isnotnull(ss_item_sk#1)) AND isnotnull(ss_store_sk#3)) AND isnotnull(ss_customer_sk#2))

(3) ProjectExecTransformer
Output [6]: [hash(ss_ticket_number#4, ss_item_sk#1, 42) AS hash_partition_key#7, ss_item_sk#1, ss_customer_sk#2, ss_store_sk#3, ss_ticket_number#4, ss_net_paid#5]
Input [6]: [ss_item_sk#1, ss_customer_sk#2, ss_store_sk#3, ss_ticket_number#4, ss_net_paid#5, ss_sold_date_sk#6]

(4) WholeStageCodegenTransformer (9)
Input [6]: [hash_partition_key#7, ss_item_sk#1, ss_customer_sk#2, ss_store_sk#3, ss_ticket_number#4, ss_net_paid#5]
Arguments: false

(5) VeloxResizeBatches
Input [6]: [hash_partition_key#7, ss_item_sk#1, ss_customer_sk#2, ss_store_sk#3, ss_ticket_number#4, ss_net_paid#5]
Arguments: 1024, 2147483647, 10485760

(6) ColumnarExchange
Input [6]: [hash_partition_key#7, ss_item_sk#1, ss_customer_sk#2, ss_store_sk#3, ss_ticket_number#4, ss_net_paid#5]
Arguments: hashpartitioning(ss_ticket_number#4, ss_item_sk#1, 1), ENSURE_REQUIREMENTS, [ss_item_sk#1, ss_customer_sk#2, ss_store_sk#3, ss_ticket_number#4, ss_net_paid#5], [plan_id=1], [shuffle_writer_type=hash]

(7) InputAdapter
Input [5]: [ss_item_sk#1, ss_customer_sk#2, ss_store_sk#3, ss_ticket_number#4, ss_net_paid#5]

(8) InputIteratorTransformer
Input [5]: [ss_item_sk#1, ss_customer_sk#2, ss_store_sk#3, ss_ticket_number#4, ss_net_paid#5]

(9) FileSourceScanExecTransformer parquet spark_catalog.default.store_returns
Output [3]: [sr_item_sk#8, sr_ticket_number#9, sr_returned_date_sk#10]
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>

(10) FilterExecTransformer
Input [3]: [sr_item_sk#8, sr_ticket_number#9, sr_returned_date_sk#10]
Arguments: (isnotnull(sr_ticket_number#9) AND isnotnull(sr_item_sk#8))

(11) ProjectExecTransformer
Output [3]: [hash(sr_ticket_number#9, sr_item_sk#8, 42) AS hash_partition_key#11, sr_item_sk#8, sr_ticket_number#9]
Input [3]: [sr_item_sk#8, sr_ticket_number#9, sr_returned_date_sk#10]

(12) WholeStageCodegenTransformer (10)
Input [3]: [hash_partition_key#11, sr_item_sk#8, sr_ticket_number#9]
Arguments: false

(13) VeloxResizeBatches
Input [3]: [hash_partition_key#11, sr_item_sk#8, sr_ticket_number#9]
Arguments: 1024, 2147483647, 10485760

(14) ColumnarExchange
Input [3]: [hash_partition_key#11, sr_item_sk#8, sr_ticket_number#9]
Arguments: hashpartitioning(sr_ticket_number#9, sr_item_sk#8, 1), ENSURE_REQUIREMENTS, [sr_item_sk#8, sr_ticket_number#9], [plan_id=2], [shuffle_writer_type=hash]

(15) InputAdapter
Input [2]: [sr_item_sk#8, sr_ticket_number#9]

(16) InputIteratorTransformer
Input [2]: [sr_item_sk#8, sr_ticket_number#9]

(17) ShuffledHashJoinExecTransformer
Left keys [2]: [ss_ticket_number#4, ss_item_sk#1]
Right keys [2]: [sr_ticket_number#9, sr_item_sk#8]
Join type: Inner
Join condition: None

(18) ProjectExecTransformer
Output [4]: [ss_item_sk#1, ss_customer_sk#2, ss_store_sk#3, ss_net_paid#5]
Input [7]: [ss_item_sk#1, ss_customer_sk#2, ss_store_sk#3, ss_ticket_number#4, ss_net_paid#5, sr_item_sk#8, sr_ticket_number#9]

(19) FileSourceScanExecTransformer parquet spark_catalog.default.store
Output [5]: [s_store_sk#12, s_store_name#13, s_market_id#14, s_state#15, s_zip#16]
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>

(20) FilterExecTransformer
Input [5]: [s_store_sk#12, s_store_name#13, s_market_id#14, s_state#15, s_zip#16]
Arguments: (((isnotnull(s_market_id#14) AND (s_market_id#14 = 8)) AND isnotnull(s_store_sk#12)) AND isnotnull(s_zip#16))

(21) ProjectExecTransformer
Output [4]: [s_store_sk#12, s_store_name#13, s_state#15, s_zip#16]
Input [5]: [s_store_sk#12, s_store_name#13, s_market_id#14, s_state#15, s_zip#16]

(22) WholeStageCodegenTransformer (11)
Input [4]: [s_store_sk#12, s_store_name#13, s_state#15, s_zip#16]
Arguments: false

(23) ColumnarBroadcastExchange
Input [4]: [s_store_sk#12, s_store_name#13, s_state#15, s_zip#16]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, true] as bigint)),false), [plan_id=3]

(24) InputAdapter
Input [4]: [s_store_sk#12, s_store_name#13, s_state#15, s_zip#16]

(25) InputIteratorTransformer
Input [4]: [s_store_sk#12, s_store_name#13, s_state#15, s_zip#16]

(26) BroadcastHashJoinExecTransformer
Left keys [1]: [ss_store_sk#3]
Right keys [1]: [s_store_sk#12]
Join type: Inner
Join condition: None

(27) ProjectExecTransformer
Output [6]: [ss_item_sk#1, ss_customer_sk#2, ss_net_paid#5, s_store_name#13, s_state#15, s_zip#16]
Input [8]: [ss_item_sk#1, ss_customer_sk#2, ss_store_sk#3, ss_net_paid#5, s_store_sk#12, s_store_name#13, s_state#15, s_zip#16]

(28) FileSourceScanExecTransformer parquet spark_catalog.default.item
Output [6]: [i_item_sk#17, i_current_price#18, i_size#19, i_color#20, i_units#21, i_manager_id#22]
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>

(29) FilterExecTransformer
Input [6]: [i_item_sk#17, i_current_price#18, i_size#19, i_color#20, i_units#21, i_manager_id#22]
Arguments: ((isnotnull(i_color#20) AND (i_color#20 = pale                )) AND isnotnull(i_item_sk#17))

(30) WholeStageCodegenTransformer (12)
Input [6]: [i_item_sk#17, i_current_price#18, i_size#19, i_color#20, i_units#21, i_manager_id#22]
Arguments: false

(31) ColumnarBroadcastExchange
Input [6]: [i_item_sk#17, i_current_price#18, i_size#19, i_color#20, i_units#21, i_manager_id#22]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, false] as bigint)),false), [plan_id=4]

(32) InputAdapter
Input [6]: [i_item_sk#17, i_current_price#18, i_size#19, i_color#20, i_units#21, i_manager_id#22]

(33) InputIteratorTransformer
Input [6]: [i_item_sk#17, i_current_price#18, i_size#19, i_color#20, i_units#21, i_manager_id#22]

(34) BroadcastHashJoinExecTransformer
Left keys [1]: [ss_item_sk#1]
Right keys [1]: [i_item_sk#17]
Join type: Inner
Join condition: None

(35) ProjectExecTransformer
Output [10]: [ss_customer_sk#2, ss_net_paid#5, s_store_name#13, s_state#15, s_zip#16, i_current_price#18, i_size#19, i_color#20, i_units#21, i_manager_id#22]
Input [12]: [ss_item_sk#1, ss_customer_sk#2, ss_net_paid#5, s_store_name#13, s_state#15, s_zip#16, i_item_sk#17, i_current_price#18, i_size#19, i_color#20, i_units#21, i_manager_id#22]

(36) FileSourceScanExecTransformer parquet spark_catalog.default.customer
Output [5]: [c_customer_sk#23, c_current_addr_sk#24, c_first_name#25, c_last_name#26, c_birth_country#27]
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>

(37) FilterExecTransformer
Input [5]: [c_customer_sk#23, c_current_addr_sk#24, c_first_name#25, c_last_name#26, c_birth_country#27]
Arguments: ((isnotnull(c_customer_sk#23) AND isnotnull(c_current_addr_sk#24)) AND isnotnull(c_birth_country#27))

(38) WholeStageCodegenTransformer (13)
Input [5]: [c_customer_sk#23, c_current_addr_sk#24, c_first_name#25, c_last_name#26, c_birth_country#27]
Arguments: false

(39) ColumnarBroadcastExchange
Input [5]: [c_customer_sk#23, c_current_addr_sk#24, c_first_name#25, c_last_name#26, c_birth_country#27]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, false] as bigint)),false), [plan_id=5]

(40) InputAdapter
Input [5]: [c_customer_sk#23, c_current_addr_sk#24, c_first_name#25, c_last_name#26, c_birth_country#27]

(41) InputIteratorTransformer
Input [5]: [c_customer_sk#23, c_current_addr_sk#24, c_first_name#25, c_last_name#26, c_birth_country#27]

(42) BroadcastHashJoinExecTransformer
Left keys [1]: [ss_customer_sk#2]
Right keys [1]: [c_customer_sk#23]
Join type: Inner
Join condition: None

(43) ProjectExecTransformer
Output [13]: [ss_net_paid#5, s_store_name#13, s_state#15, s_zip#16, i_current_price#18, i_size#19, i_color#20, i_units#21, i_manager_id#22, c_current_addr_sk#24, c_first_name#25, c_last_name#26, c_birth_country#27]
Input [15]: [ss_customer_sk#2, ss_net_paid#5, s_store_name#13, s_state#15, s_zip#16, i_current_price#18, i_size#19, i_color#20, i_units#21, i_manager_id#22, c_customer_sk#23, c_current_addr_sk#24, c_first_name#25, c_last_name#26, c_birth_country#27]

(44) FileSourceScanExecTransformer parquet spark_catalog.default.customer_address
Output [4]: [ca_address_sk#28, ca_state#29, ca_zip#30, ca_country#31]
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>

(45) FilterExecTransformer
Input [4]: [ca_address_sk#28, ca_state#29, ca_zip#30, ca_country#31]
Arguments: ((isnotnull(ca_address_sk#28) AND isnotnull(ca_country#31)) AND isnotnull(ca_zip#30))

(46) WholeStageCodegenTransformer (14)
Input [4]: [ca_address_sk#28, ca_state#29, ca_zip#30, ca_country#31]
Arguments: false

(47) ColumnarBroadcastExchange
Input [4]: [ca_address_sk#28, ca_state#29, ca_zip#30, ca_country#31]
Arguments: HashedRelationBroadcastMode(List(input[0, int, false], upper(input[3, string, false]), input[2, string, false]),false), [plan_id=6]

(48) InputAdapter
Input [4]: [ca_address_sk#28, ca_state#29, ca_zip#30, ca_country#31]

(49) InputIteratorTransformer
Input [4]: [ca_address_sk#28, ca_state#29, ca_zip#30, ca_country#31]

(50) BroadcastHashJoinExecTransformer
Left keys [3]: [c_current_addr_sk#24, c_birth_country#27, s_zip#16]
Right keys [3]: [ca_address_sk#28, upper(ca_country#31), ca_zip#30]
Join type: Inner
Join condition: None

(51) ProjectExecTransformer
Output [11]: [s_store_name#13, s_state#15, i_current_price#18, i_size#19, i_color#20, i_units#21, i_manager_id#22, c_first_name#25, c_last_name#26, ca_state#29, UnscaledValue(ss_net_paid#5) AS _pre_1#32]
Input [17]: [ss_net_paid#5, s_store_name#13, s_state#15, s_zip#16, i_current_price#18, i_size#19, i_color#20, i_units#21, i_manager_id#22, c_current_addr_sk#24, c_first_name#25, c_last_name#26, c_birth_country#27, ca_address_sk#28, ca_state#29, ca_zip#30, ca_country#31]

(52) FlushableHashAggregateExecTransformer
Input [11]: [s_store_name#13, s_state#15, i_current_price#18, i_size#19, i_color#20, i_units#21, i_manager_id#22, c_first_name#25, c_last_name#26, ca_state#29, _pre_1#32]
Keys [10]: [c_last_name#26, c_first_name#25, s_store_name#13, ca_state#29, s_state#15, i_color#20, i_current_price#18, i_manager_id#22, i_units#21, i_size#19]
Functions [1]: [partial_sum(_pre_1#32)]
Aggregate Attributes [1]: [sum#33]
Results [11]: [c_last_name#26, c_first_name#25, s_store_name#13, ca_state#29, s_state#15, i_color#20, i_current_price#18, i_manager_id#22, i_units#21, i_size#19, sum#34]

(53) ProjectExecTransformer
Output [12]: [hash(c_last_name#26, c_first_name#25, s_store_name#13, ca_state#29, s_state#15, i_color#20, i_current_price#18, i_manager_id#22, i_units#21, i_size#19, 42) AS hash_partition_key#35, c_last_name#26, c_first_name#25, s_store_name#13, ca_state#29, s_state#15, i_color#20, i_current_price#18, i_manager_id#22, i_units#21, i_size#19, sum#34]
Input [11]: [c_last_name#26, c_first_name#25, s_store_name#13, ca_state#29, s_state#15, i_color#20, i_current_price#18, i_manager_id#22, i_units#21, i_size#19, sum#34]

(54) WholeStageCodegenTransformer (15)
Input [12]: [hash_partition_key#35, c_last_name#26, c_first_name#25, s_store_name#13, ca_state#29, s_state#15, i_color#20, i_current_price#18, i_manager_id#22, i_units#21, i_size#19, sum#34]
Arguments: false

(55) VeloxResizeBatches
Input [12]: [hash_partition_key#35, c_last_name#26, c_first_name#25, s_store_name#13, ca_state#29, s_state#15, i_color#20, i_current_price#18, i_manager_id#22, i_units#21, i_size#19, sum#34]
Arguments: 1024, 2147483647, 10485760

(56) ColumnarExchange
Input [12]: [hash_partition_key#35, c_last_name#26, c_first_name#25, s_store_name#13, ca_state#29, s_state#15, i_color#20, i_current_price#18, i_manager_id#22, i_units#21, i_size#19, sum#34]
Arguments: hashpartitioning(c_last_name#26, c_first_name#25, s_store_name#13, ca_state#29, s_state#15, i_color#20, i_current_price#18, i_manager_id#22, i_units#21, i_size#19, 1), ENSURE_REQUIREMENTS, [c_last_name#26, c_first_name#25, s_store_name#13, ca_state#29, s_state#15, i_color#20, i_current_price#18, i_manager_id#22, i_units#21, i_size#19, sum#34], [plan_id=7], [shuffle_writer_type=hash]

(57) InputAdapter
Input [11]: [c_last_name#26, c_first_name#25, s_store_name#13, ca_state#29, s_state#15, i_color#20, i_current_price#18, i_manager_id#22, i_units#21, i_size#19, sum#34]

(58) InputIteratorTransformer
Input [11]: [c_last_name#26, c_first_name#25, s_store_name#13, ca_state#29, s_state#15, i_color#20, i_current_price#18, i_manager_id#22, i_units#21, i_size#19, sum#34]

(59) RegularHashAggregateExecTransformer
Input [11]: [c_last_name#26, c_first_name#25, s_store_name#13, ca_state#29, s_state#15, i_color#20, i_current_price#18, i_manager_id#22, i_units#21, i_size#19, sum#34]
Keys [10]: [c_last_name#26, c_first_name#25, s_store_name#13, ca_state#29, s_state#15, i_color#20, i_current_price#18, i_manager_id#22, i_units#21, i_size#19]
Functions [1]: [sum(UnscaledValue(ss_net_paid#5))]
Aggregate Attributes [1]: [sum(UnscaledValue(ss_net_paid#5))#36]
Results [11]: [c_last_name#26, c_first_name#25, s_store_name#13, ca_state#29, s_state#15, i_color#20, i_current_price#18, i_manager_id#22, i_units#21, i_size#19, sum(UnscaledValue(ss_net_paid#5))#36]

(60) ProjectExecTransformer
Output [4]: [c_last_name#26, c_first_name#25, s_store_name#13, MakeDecimal(sum(UnscaledValue(ss_net_paid#5))#36,17,2) AS netpaid#37]
Input [11]: [c_last_name#26, c_first_name#25, s_store_name#13, ca_state#29, s_state#15, i_color#20, i_current_price#18, i_manager_id#22, i_units#21, i_size#19, sum(UnscaledValue(ss_net_paid#5))#36]

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

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

(63) WholeStageCodegenTransformer (16)
Input [6]: [hash_partition_key#42, c_last_name#26, c_first_name#25, s_store_name#13, sum#40, isEmpty#41]
Arguments: false

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

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

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

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

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

(69) FilterExecTransformer
Input [4]: [c_last_name#26, c_first_name#25, s_store_name#13, 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 (17)
Input [4]: [c_last_name#26, c_first_name#25, s_store_name#13, paid#44]
Arguments: false

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

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

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

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

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

(76) WholeStageCodegenTransformer (18)
Input [4]: [c_last_name#26, c_first_name#25, s_store_name#13, paid#44]
Arguments: false

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

===== Subqueries =====

Subquery:1 Hosting operator id = 69 Hosting Expression = Subquery scalar-subquery#45, [id=#9]
VeloxColumnarToRow (121)
+- ^ ProjectExecTransformer (119)
   +- ^ RegularHashAggregateExecTransformer (118)
      +- ^ ProjectExecTransformer (117)
         +- ^ RegularHashAggregateExecTransformer (116)
            +- ^ InputIteratorTransformer (115)
               +- ColumnarExchange (113)
                  +- VeloxResizeBatches (112)
                     +- ^ ProjectExecTransformer (110)
                        +- ^ FlushableHashAggregateExecTransformer (109)
                           +- ^ ProjectExecTransformer (108)
                              +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (107)
                                 :- ^ ProjectExecTransformer (103)
                                 :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (102)
                                 :     :- ^ ProjectExecTransformer (98)
                                 :     :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (97)
                                 :     :     :- ^ ProjectExecTransformer (90)
                                 :     :     :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (89)
                                 :     :     :     :- ^ ProjectExecTransformer (85)
                                 :     :     :     :  +- ^ ShuffledHashJoinExecTransformer Inner BuildRight (84)
                                 :     :     :     :     :- ^ InputIteratorTransformer (80)
                                 :     :     :     :     :  +- ReusedExchange (78)
                                 :     :     :     :     +- ^ InputIteratorTransformer (83)
                                 :     :     :     :        +- ReusedExchange (81)
                                 :     :     :     +- ^ InputIteratorTransformer (88)
                                 :     :     :        +- ReusedExchange (86)
                                 :     :     +- ^ InputIteratorTransformer (96)
                                 :     :        +- ColumnarBroadcastExchange (94)
                                 :     :           +- ^ FilterExecTransformer (92)
                                 :     :              +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.item (91)
                                 :     +- ^ InputIteratorTransformer (101)
                                 :        +- ReusedExchange (99)
                                 +- ^ InputIteratorTransformer (106)
                                    +- ReusedExchange (104)


(78) ReusedExchange [Reuses operator id: 6]
Output [5]: [ss_item_sk#46, ss_customer_sk#47, ss_store_sk#48, ss_ticket_number#49, ss_net_paid#50]

(79) InputAdapter
Input [5]: [ss_item_sk#46, ss_customer_sk#47, ss_store_sk#48, ss_ticket_number#49, ss_net_paid#50]

(80) InputIteratorTransformer
Input [5]: [ss_item_sk#46, ss_customer_sk#47, ss_store_sk#48, ss_ticket_number#49, ss_net_paid#50]

(81) ReusedExchange [Reuses operator id: 14]
Output [2]: [sr_item_sk#51, sr_ticket_number#52]

(82) InputAdapter
Input [2]: [sr_item_sk#51, sr_ticket_number#52]

(83) InputIteratorTransformer
Input [2]: [sr_item_sk#51, sr_ticket_number#52]

(84) ShuffledHashJoinExecTransformer
Left keys [2]: [ss_ticket_number#49, ss_item_sk#46]
Right keys [2]: [sr_ticket_number#52, sr_item_sk#51]
Join type: Inner
Join condition: None

(85) ProjectExecTransformer
Output [4]: [ss_item_sk#46, ss_customer_sk#47, ss_store_sk#48, ss_net_paid#50]
Input [7]: [ss_item_sk#46, ss_customer_sk#47, ss_store_sk#48, ss_ticket_number#49, ss_net_paid#50, sr_item_sk#51, sr_ticket_number#52]

(86) ReusedExchange [Reuses operator id: 23]
Output [4]: [s_store_sk#53, s_store_name#54, s_state#55, s_zip#56]

(87) InputAdapter
Input [4]: [s_store_sk#53, s_store_name#54, s_state#55, s_zip#56]

(88) InputIteratorTransformer
Input [4]: [s_store_sk#53, s_store_name#54, s_state#55, s_zip#56]

(89) BroadcastHashJoinExecTransformer
Left keys [1]: [ss_store_sk#48]
Right keys [1]: [s_store_sk#53]
Join type: Inner
Join condition: None

(90) ProjectExecTransformer
Output [6]: [ss_item_sk#46, ss_customer_sk#47, ss_net_paid#50, s_store_name#54, s_state#55, s_zip#56]
Input [8]: [ss_item_sk#46, ss_customer_sk#47, ss_store_sk#48, ss_net_paid#50, s_store_sk#53, s_store_name#54, s_state#55, s_zip#56]

(91) FileSourceScanExecTransformer parquet spark_catalog.default.item
Output [6]: [i_item_sk#57, i_current_price#58, i_size#59, i_color#60, i_units#61, i_manager_id#62]
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#57, i_current_price#58, i_size#59, i_color#60, i_units#61, i_manager_id#62]
Arguments: isnotnull(i_item_sk#57)

(93) WholeStageCodegenTransformer (4)
Input [6]: [i_item_sk#57, i_current_price#58, i_size#59, i_color#60, i_units#61, i_manager_id#62]
Arguments: false

(94) ColumnarBroadcastExchange
Input [6]: [i_item_sk#57, i_current_price#58, i_size#59, i_color#60, i_units#61, i_manager_id#62]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, false] as bigint)),false), [plan_id=11]

(95) InputAdapter
Input [6]: [i_item_sk#57, i_current_price#58, i_size#59, i_color#60, i_units#61, i_manager_id#62]

(96) InputIteratorTransformer
Input [6]: [i_item_sk#57, i_current_price#58, i_size#59, i_color#60, i_units#61, i_manager_id#62]

(97) BroadcastHashJoinExecTransformer
Left keys [1]: [ss_item_sk#46]
Right keys [1]: [i_item_sk#57]
Join type: Inner
Join condition: None

(98) ProjectExecTransformer
Output [10]: [ss_customer_sk#47, ss_net_paid#50, s_store_name#54, s_state#55, s_zip#56, i_current_price#58, i_size#59, i_color#60, i_units#61, i_manager_id#62]
Input [12]: [ss_item_sk#46, ss_customer_sk#47, ss_net_paid#50, s_store_name#54, s_state#55, s_zip#56, i_item_sk#57, i_current_price#58, i_size#59, i_color#60, i_units#61, i_manager_id#62]

(99) ReusedExchange [Reuses operator id: 39]
Output [5]: [c_customer_sk#63, c_current_addr_sk#64, c_first_name#65, c_last_name#66, c_birth_country#67]

(100) InputAdapter
Input [5]: [c_customer_sk#63, c_current_addr_sk#64, c_first_name#65, c_last_name#66, c_birth_country#67]

(101) InputIteratorTransformer
Input [5]: [c_customer_sk#63, c_current_addr_sk#64, c_first_name#65, c_last_name#66, c_birth_country#67]

(102) BroadcastHashJoinExecTransformer
Left keys [1]: [ss_customer_sk#47]
Right keys [1]: [c_customer_sk#63]
Join type: Inner
Join condition: None

(103) ProjectExecTransformer
Output [13]: [ss_net_paid#50, s_store_name#54, s_state#55, s_zip#56, i_current_price#58, i_size#59, i_color#60, i_units#61, i_manager_id#62, c_current_addr_sk#64, c_first_name#65, c_last_name#66, c_birth_country#67]
Input [15]: [ss_customer_sk#47, ss_net_paid#50, s_store_name#54, s_state#55, s_zip#56, i_current_price#58, i_size#59, i_color#60, i_units#61, i_manager_id#62, c_customer_sk#63, c_current_addr_sk#64, c_first_name#65, c_last_name#66, c_birth_country#67]

(104) ReusedExchange [Reuses operator id: 47]
Output [4]: [ca_address_sk#68, ca_state#69, ca_zip#70, ca_country#71]

(105) InputAdapter
Input [4]: [ca_address_sk#68, ca_state#69, ca_zip#70, ca_country#71]

(106) InputIteratorTransformer
Input [4]: [ca_address_sk#68, ca_state#69, ca_zip#70, ca_country#71]

(107) BroadcastHashJoinExecTransformer
Left keys [3]: [c_current_addr_sk#64, c_birth_country#67, s_zip#56]
Right keys [3]: [ca_address_sk#68, upper(ca_country#71), ca_zip#70]
Join type: Inner
Join condition: None

(108) ProjectExecTransformer
Output [11]: [s_store_name#54, s_state#55, i_current_price#58, i_size#59, i_color#60, i_units#61, i_manager_id#62, c_first_name#65, c_last_name#66, ca_state#69, UnscaledValue(ss_net_paid#50) AS _pre_2#72]
Input [17]: [ss_net_paid#50, s_store_name#54, s_state#55, s_zip#56, i_current_price#58, i_size#59, i_color#60, i_units#61, i_manager_id#62, c_current_addr_sk#64, c_first_name#65, c_last_name#66, c_birth_country#67, ca_address_sk#68, ca_state#69, ca_zip#70, ca_country#71]

(109) FlushableHashAggregateExecTransformer
Input [11]: [s_store_name#54, s_state#55, i_current_price#58, i_size#59, i_color#60, i_units#61, i_manager_id#62, c_first_name#65, c_last_name#66, ca_state#69, _pre_2#72]
Keys [10]: [c_last_name#66, c_first_name#65, s_store_name#54, ca_state#69, s_state#55, i_color#60, i_current_price#58, i_manager_id#62, i_units#61, i_size#59]
Functions [1]: [partial_sum(_pre_2#72)]
Aggregate Attributes [1]: [sum#73]
Results [11]: [c_last_name#66, c_first_name#65, s_store_name#54, ca_state#69, s_state#55, i_color#60, i_current_price#58, i_manager_id#62, i_units#61, i_size#59, sum#74]

(110) ProjectExecTransformer
Output [12]: [hash(c_last_name#66, c_first_name#65, s_store_name#54, ca_state#69, s_state#55, i_color#60, i_current_price#58, i_manager_id#62, i_units#61, i_size#59, 42) AS hash_partition_key#75, c_last_name#66, c_first_name#65, s_store_name#54, ca_state#69, s_state#55, i_color#60, i_current_price#58, i_manager_id#62, i_units#61, i_size#59, sum#74]
Input [11]: [c_last_name#66, c_first_name#65, s_store_name#54, ca_state#69, s_state#55, i_color#60, i_current_price#58, i_manager_id#62, i_units#61, i_size#59, sum#74]

(111) WholeStageCodegenTransformer (7)
Input [12]: [hash_partition_key#75, c_last_name#66, c_first_name#65, s_store_name#54, ca_state#69, s_state#55, i_color#60, i_current_price#58, i_manager_id#62, i_units#61, i_size#59, sum#74]
Arguments: false

(112) VeloxResizeBatches
Input [12]: [hash_partition_key#75, c_last_name#66, c_first_name#65, s_store_name#54, ca_state#69, s_state#55, i_color#60, i_current_price#58, i_manager_id#62, i_units#61, i_size#59, sum#74]
Arguments: 1024, 2147483647, 10485760

(113) ColumnarExchange
Input [12]: [hash_partition_key#75, c_last_name#66, c_first_name#65, s_store_name#54, ca_state#69, s_state#55, i_color#60, i_current_price#58, i_manager_id#62, i_units#61, i_size#59, sum#74]
Arguments: hashpartitioning(c_last_name#66, c_first_name#65, s_store_name#54, ca_state#69, s_state#55, i_color#60, i_current_price#58, i_manager_id#62, i_units#61, i_size#59, 1), ENSURE_REQUIREMENTS, [c_last_name#66, c_first_name#65, s_store_name#54, ca_state#69, s_state#55, i_color#60, i_current_price#58, i_manager_id#62, i_units#61, i_size#59, sum#74], [plan_id=12], [shuffle_writer_type=hash]

(114) InputAdapter
Input [11]: [c_last_name#66, c_first_name#65, s_store_name#54, ca_state#69, s_state#55, i_color#60, i_current_price#58, i_manager_id#62, i_units#61, i_size#59, sum#74]

(115) InputIteratorTransformer
Input [11]: [c_last_name#66, c_first_name#65, s_store_name#54, ca_state#69, s_state#55, i_color#60, i_current_price#58, i_manager_id#62, i_units#61, i_size#59, sum#74]

(116) RegularHashAggregateExecTransformer
Input [11]: [c_last_name#66, c_first_name#65, s_store_name#54, ca_state#69, s_state#55, i_color#60, i_current_price#58, i_manager_id#62, i_units#61, i_size#59, sum#74]
Keys [10]: [c_last_name#66, c_first_name#65, s_store_name#54, ca_state#69, s_state#55, i_color#60, i_current_price#58, i_manager_id#62, i_units#61, i_size#59]
Functions [1]: [sum(UnscaledValue(ss_net_paid#50))]
Aggregate Attributes [1]: [sum(UnscaledValue(ss_net_paid#50))#36]
Results [11]: [c_last_name#66, c_first_name#65, s_store_name#54, ca_state#69, s_state#55, i_color#60, i_current_price#58, i_manager_id#62, i_units#61, i_size#59, sum(UnscaledValue(ss_net_paid#50))#36]

(117) ProjectExecTransformer
Output [1]: [MakeDecimal(sum(UnscaledValue(ss_net_paid#50))#36,17,2) AS netpaid#76]
Input [11]: [c_last_name#66, c_first_name#65, s_store_name#54, ca_state#69, s_state#55, i_color#60, i_current_price#58, i_manager_id#62, i_units#61, i_size#59, sum(UnscaledValue(ss_net_paid#50))#36]

(118) RegularHashAggregateExecTransformer
Input [1]: [netpaid#76]
Keys: []
Functions [1]: [avg(netpaid#76)]
Aggregate Attributes [1]: [avg(netpaid#76)#77]
Results [1]: [avg(netpaid#76)#77]

(119) ProjectExecTransformer
Output [1]: [(0.05 * avg(netpaid#76)#77) AS (0.05 * avg(netpaid))#78]
Input [1]: [avg(netpaid#76)#77]

(120) WholeStageCodegenTransformer (8)
Input [1]: [(0.05 * avg(netpaid))#78]
Arguments: false

(121) VeloxColumnarToRow
Input [1]: [(0.05 * avg(netpaid))#78]


