== Physical Plan ==
* Filter (47)
+- * HashAggregate (46)
   +- * CometColumnarToRow (45)
      +- CometColumnarExchange (44)
         +- * HashAggregate (43)
            +- * HashAggregate (42)
               +- * CometColumnarToRow (41)
                  +- CometColumnarExchange (40)
                     +- * HashAggregate (39)
                        +- * Project (38)
                           +- * BroadcastHashJoin Inner BuildRight (37)
                              :- * CometColumnarToRow (31)
                              :  +- CometProject (30)
                              :     +- CometBroadcastHashJoin (29)
                              :        :- CometProject (24)
                              :        :  +- CometBroadcastHashJoin (23)
                              :        :     :- CometProject (18)
                              :        :     :  +- CometBroadcastHashJoin (17)
                              :        :     :     :- CometProject (12)
                              :        :     :     :  +- CometSortMergeJoin (11)
                              :        :     :     :     :- CometSort (5)
                              :        :     :     :     :  +- CometExchange (4)
                              :        :     :     :     :     +- CometProject (3)
                              :        :     :     :     :        +- CometFilter (2)
                              :        :     :     :     :           +- CometScan [native_iceberg_compat] parquet spark_catalog.default.store_sales (1)
                              :        :     :     :     +- CometSort (10)
                              :        :     :     :        +- CometExchange (9)
                              :        :     :     :           +- CometProject (8)
                              :        :     :     :              +- CometFilter (7)
                              :        :     :     :                 +- CometScan [native_iceberg_compat] parquet spark_catalog.default.store_returns (6)
                              :        :     :     +- CometBroadcastExchange (16)
                              :        :     :        +- CometProject (15)
                              :        :     :           +- CometFilter (14)
                              :        :     :              +- CometScan [native_iceberg_compat] parquet spark_catalog.default.store (13)
                              :        :     +- CometBroadcastExchange (22)
                              :        :        +- CometProject (21)
                              :        :           +- CometFilter (20)
                              :        :              +- CometScan [native_iceberg_compat] parquet spark_catalog.default.item (19)
                              :        +- CometBroadcastExchange (28)
                              :           +- CometProject (27)
                              :              +- CometFilter (26)
                              :                 +- CometScan [native_iceberg_compat] parquet spark_catalog.default.customer (25)
                              +- BroadcastExchange (36)
                                 +- * CometColumnarToRow (35)
                                    +- CometProject (34)
                                       +- CometFilter (33)
                                          +- CometScan [native_iceberg_compat] parquet spark_catalog.default.customer_address (32)


(1) CometScan [native_iceberg_compat] 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 [not included in comparison]/{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) CometFilter
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]
Condition : (((isnotnull(ss_ticket_number#4) AND isnotnull(ss_item_sk#1)) AND isnotnull(ss_store_sk#3)) AND isnotnull(ss_customer_sk#2))

(3) CometProject
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: [ss_item_sk#1, ss_customer_sk#2, ss_store_sk#3, ss_ticket_number#4, ss_net_paid#5], [ss_item_sk#1, ss_customer_sk#2, ss_store_sk#3, ss_ticket_number#4, ss_net_paid#5]

(4) CometExchange
Input [5]: [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, 5), ENSURE_REQUIREMENTS, CometNativeShuffle, [plan_id=1]

(5) CometSort
Input [5]: [ss_item_sk#1, ss_customer_sk#2, ss_store_sk#3, ss_ticket_number#4, ss_net_paid#5]
Arguments: [ss_item_sk#1, ss_customer_sk#2, ss_store_sk#3, ss_ticket_number#4, ss_net_paid#5], [ss_ticket_number#4 ASC NULLS FIRST, ss_item_sk#1 ASC NULLS FIRST]

(6) CometScan [native_iceberg_compat] parquet spark_catalog.default.store_returns
Output [3]: [sr_item_sk#7, sr_ticket_number#8, sr_returned_date_sk#9]
Batched: true
Location [not included in comparison]/{warehouse_dir}/store_returns]
PushedFilters: [IsNotNull(sr_ticket_number), IsNotNull(sr_item_sk)]
ReadSchema: struct<sr_item_sk:int,sr_ticket_number:int>

(7) CometFilter
Input [3]: [sr_item_sk#7, sr_ticket_number#8, sr_returned_date_sk#9]
Condition : (isnotnull(sr_ticket_number#8) AND isnotnull(sr_item_sk#7))

(8) CometProject
Input [3]: [sr_item_sk#7, sr_ticket_number#8, sr_returned_date_sk#9]
Arguments: [sr_item_sk#7, sr_ticket_number#8], [sr_item_sk#7, sr_ticket_number#8]

(9) CometExchange
Input [2]: [sr_item_sk#7, sr_ticket_number#8]
Arguments: hashpartitioning(sr_ticket_number#8, sr_item_sk#7, 5), ENSURE_REQUIREMENTS, CometNativeShuffle, [plan_id=2]

(10) CometSort
Input [2]: [sr_item_sk#7, sr_ticket_number#8]
Arguments: [sr_item_sk#7, sr_ticket_number#8], [sr_ticket_number#8 ASC NULLS FIRST, sr_item_sk#7 ASC NULLS FIRST]

(11) CometSortMergeJoin
Left output [5]: [ss_item_sk#1, ss_customer_sk#2, ss_store_sk#3, ss_ticket_number#4, ss_net_paid#5]
Right output [2]: [sr_item_sk#7, sr_ticket_number#8]
Arguments: [ss_ticket_number#4, ss_item_sk#1], [sr_ticket_number#8, sr_item_sk#7], Inner

(12) CometProject
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#7, sr_ticket_number#8]
Arguments: [ss_item_sk#1, ss_customer_sk#2, ss_store_sk#3, ss_net_paid#5], [ss_item_sk#1, ss_customer_sk#2, ss_store_sk#3, ss_net_paid#5]

(13) CometScan [native_iceberg_compat] parquet spark_catalog.default.store
Output [5]: [s_store_sk#10, s_store_name#11, s_market_id#12, s_state#13, s_zip#14]
Batched: true
Location [not included in comparison]/{warehouse_dir}/store]
PushedFilters: [IsNotNull(s_market_id), EqualTo(s_market_id,8), IsNotNull(s_store_sk)]
ReadSchema: struct<s_store_sk:int,s_store_name:string,s_market_id:int,s_state:string,s_zip:string>

(14) CometFilter
Input [5]: [s_store_sk#10, s_store_name#11, s_market_id#12, s_state#13, s_zip#14]
Condition : (((isnotnull(s_market_id#12) AND (s_market_id#12 = 8)) AND isnotnull(s_store_sk#10)) AND isnotnull(staticinvoke(class org.apache.spark.sql.catalyst.util.CharVarcharCodegenUtils, StringType, readSidePadding, s_zip#14, 10, true, false, true)))

(15) CometProject
Input [5]: [s_store_sk#10, s_store_name#11, s_market_id#12, s_state#13, s_zip#14]
Arguments: [s_store_sk#10, s_store_name#11, s_state#15, s_zip#16], [s_store_sk#10, s_store_name#11, staticinvoke(class org.apache.spark.sql.catalyst.util.CharVarcharCodegenUtils, StringType, readSidePadding, s_state#13, 2, true, false, true) AS s_state#15, staticinvoke(class org.apache.spark.sql.catalyst.util.CharVarcharCodegenUtils, StringType, readSidePadding, s_zip#14, 10, true, false, true) AS s_zip#16]

(16) CometBroadcastExchange
Input [4]: [s_store_sk#10, s_store_name#11, s_state#15, s_zip#16]
Arguments: [s_store_sk#10, s_store_name#11, s_state#15, s_zip#16]

(17) CometBroadcastHashJoin
Left output [4]: [ss_item_sk#1, ss_customer_sk#2, ss_store_sk#3, ss_net_paid#5]
Right output [4]: [s_store_sk#10, s_store_name#11, s_state#15, s_zip#16]
Arguments: [ss_store_sk#3], [s_store_sk#10], Inner, BuildRight

(18) CometProject
Input [8]: [ss_item_sk#1, ss_customer_sk#2, ss_store_sk#3, ss_net_paid#5, s_store_sk#10, s_store_name#11, s_state#15, s_zip#16]
Arguments: [ss_item_sk#1, ss_customer_sk#2, ss_net_paid#5, s_store_name#11, s_state#15, s_zip#16], [ss_item_sk#1, ss_customer_sk#2, ss_net_paid#5, s_store_name#11, s_state#15, s_zip#16]

(19) CometScan [native_iceberg_compat] 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 [not included in comparison]/{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>

(20) CometFilter
Input [6]: [i_item_sk#17, i_current_price#18, i_size#19, i_color#20, i_units#21, i_manager_id#22]
Condition : ((staticinvoke(class org.apache.spark.sql.catalyst.util.CharVarcharCodegenUtils, StringType, readSidePadding, i_color#20, 20, true, false, true) = pale                ) AND isnotnull(i_item_sk#17))

(21) CometProject
Input [6]: [i_item_sk#17, i_current_price#18, i_size#19, i_color#20, i_units#21, i_manager_id#22]
Arguments: [i_item_sk#17, i_current_price#18, i_size#23, i_color#24, i_units#25, i_manager_id#22], [i_item_sk#17, i_current_price#18, staticinvoke(class org.apache.spark.sql.catalyst.util.CharVarcharCodegenUtils, StringType, readSidePadding, i_size#19, 20, true, false, true) AS i_size#23, staticinvoke(class org.apache.spark.sql.catalyst.util.CharVarcharCodegenUtils, StringType, readSidePadding, i_color#20, 20, true, false, true) AS i_color#24, staticinvoke(class org.apache.spark.sql.catalyst.util.CharVarcharCodegenUtils, StringType, readSidePadding, i_units#21, 10, true, false, true) AS i_units#25, i_manager_id#22]

(22) CometBroadcastExchange
Input [6]: [i_item_sk#17, i_current_price#18, i_size#23, i_color#24, i_units#25, i_manager_id#22]
Arguments: [i_item_sk#17, i_current_price#18, i_size#23, i_color#24, i_units#25, i_manager_id#22]

(23) CometBroadcastHashJoin
Left output [6]: [ss_item_sk#1, ss_customer_sk#2, ss_net_paid#5, s_store_name#11, s_state#15, s_zip#16]
Right output [6]: [i_item_sk#17, i_current_price#18, i_size#23, i_color#24, i_units#25, i_manager_id#22]
Arguments: [ss_item_sk#1], [i_item_sk#17], Inner, BuildRight

(24) CometProject
Input [12]: [ss_item_sk#1, ss_customer_sk#2, ss_net_paid#5, s_store_name#11, s_state#15, s_zip#16, i_item_sk#17, i_current_price#18, i_size#23, i_color#24, i_units#25, i_manager_id#22]
Arguments: [ss_customer_sk#2, ss_net_paid#5, s_store_name#11, s_state#15, s_zip#16, i_current_price#18, i_size#23, i_color#24, i_units#25, i_manager_id#22], [ss_customer_sk#2, ss_net_paid#5, s_store_name#11, s_state#15, s_zip#16, i_current_price#18, i_size#23, i_color#24, i_units#25, i_manager_id#22]

(25) CometScan [native_iceberg_compat] parquet spark_catalog.default.customer
Output [4]: [c_customer_sk#26, c_first_name#27, c_last_name#28, c_birth_country#29]
Batched: true
Location [not included in comparison]/{warehouse_dir}/customer]
PushedFilters: [IsNotNull(c_customer_sk), IsNotNull(c_birth_country)]
ReadSchema: struct<c_customer_sk:int,c_first_name:string,c_last_name:string,c_birth_country:string>

(26) CometFilter
Input [4]: [c_customer_sk#26, c_first_name#27, c_last_name#28, c_birth_country#29]
Condition : (isnotnull(c_customer_sk#26) AND isnotnull(c_birth_country#29))

(27) CometProject
Input [4]: [c_customer_sk#26, c_first_name#27, c_last_name#28, c_birth_country#29]
Arguments: [c_customer_sk#26, c_first_name#30, c_last_name#31, c_birth_country#29], [c_customer_sk#26, staticinvoke(class org.apache.spark.sql.catalyst.util.CharVarcharCodegenUtils, StringType, readSidePadding, c_first_name#27, 20, true, false, true) AS c_first_name#30, staticinvoke(class org.apache.spark.sql.catalyst.util.CharVarcharCodegenUtils, StringType, readSidePadding, c_last_name#28, 30, true, false, true) AS c_last_name#31, c_birth_country#29]

(28) CometBroadcastExchange
Input [4]: [c_customer_sk#26, c_first_name#30, c_last_name#31, c_birth_country#29]
Arguments: [c_customer_sk#26, c_first_name#30, c_last_name#31, c_birth_country#29]

(29) CometBroadcastHashJoin
Left output [10]: [ss_customer_sk#2, ss_net_paid#5, s_store_name#11, s_state#15, s_zip#16, i_current_price#18, i_size#23, i_color#24, i_units#25, i_manager_id#22]
Right output [4]: [c_customer_sk#26, c_first_name#30, c_last_name#31, c_birth_country#29]
Arguments: [ss_customer_sk#2], [c_customer_sk#26], Inner, BuildRight

(30) CometProject
Input [14]: [ss_customer_sk#2, ss_net_paid#5, s_store_name#11, s_state#15, s_zip#16, i_current_price#18, i_size#23, i_color#24, i_units#25, i_manager_id#22, c_customer_sk#26, c_first_name#30, c_last_name#31, c_birth_country#29]
Arguments: [ss_net_paid#5, s_store_name#11, s_state#15, s_zip#16, i_current_price#18, i_size#23, i_color#24, i_units#25, i_manager_id#22, c_first_name#30, c_last_name#31, c_birth_country#29], [ss_net_paid#5, s_store_name#11, s_state#15, s_zip#16, i_current_price#18, i_size#23, i_color#24, i_units#25, i_manager_id#22, c_first_name#30, c_last_name#31, c_birth_country#29]

(31) CometColumnarToRow [codegen id : 2]
Input [12]: [ss_net_paid#5, s_store_name#11, s_state#15, s_zip#16, i_current_price#18, i_size#23, i_color#24, i_units#25, i_manager_id#22, c_first_name#30, c_last_name#31, c_birth_country#29]

(32) CometScan [native_iceberg_compat] parquet spark_catalog.default.customer_address
Output [3]: [ca_state#32, ca_zip#33, ca_country#34]
Batched: true
Location [not included in comparison]/{warehouse_dir}/customer_address]
PushedFilters: [IsNotNull(ca_country)]
ReadSchema: struct<ca_state:string,ca_zip:string,ca_country:string>

(33) CometFilter
Input [3]: [ca_state#32, ca_zip#33, ca_country#34]
Condition : (isnotnull(ca_country#34) AND isnotnull(staticinvoke(class org.apache.spark.sql.catalyst.util.CharVarcharCodegenUtils, StringType, readSidePadding, ca_zip#33, 10, true, false, true)))

(34) CometProject
Input [3]: [ca_state#32, ca_zip#33, ca_country#34]
Arguments: [ca_state#35, ca_zip#36, ca_country#34], [staticinvoke(class org.apache.spark.sql.catalyst.util.CharVarcharCodegenUtils, StringType, readSidePadding, ca_state#32, 2, true, false, true) AS ca_state#35, staticinvoke(class org.apache.spark.sql.catalyst.util.CharVarcharCodegenUtils, StringType, readSidePadding, ca_zip#33, 10, true, false, true) AS ca_zip#36, ca_country#34]

(35) CometColumnarToRow [codegen id : 1]
Input [3]: [ca_state#35, ca_zip#36, ca_country#34]

(36) BroadcastExchange
Input [3]: [ca_state#35, ca_zip#36, ca_country#34]
Arguments: HashedRelationBroadcastMode(List(upper(input[2, string, true]), input[1, string, true]),false), [plan_id=3]

(37) BroadcastHashJoin [codegen id : 2]
Left keys [2]: [c_birth_country#29, s_zip#16]
Right keys [2]: [upper(ca_country#34), ca_zip#36]
Join type: Inner
Join condition: None

(38) Project [codegen id : 2]
Output [11]: [ss_net_paid#5, s_store_name#11, s_state#15, i_current_price#18, i_size#23, i_color#24, i_units#25, i_manager_id#22, c_first_name#30, c_last_name#31, ca_state#35]
Input [15]: [ss_net_paid#5, s_store_name#11, s_state#15, s_zip#16, i_current_price#18, i_size#23, i_color#24, i_units#25, i_manager_id#22, c_first_name#30, c_last_name#31, c_birth_country#29, ca_state#35, ca_zip#36, ca_country#34]

(39) HashAggregate [codegen id : 2]
Input [11]: [ss_net_paid#5, s_store_name#11, s_state#15, i_current_price#18, i_size#23, i_color#24, i_units#25, i_manager_id#22, c_first_name#30, c_last_name#31, ca_state#35]
Keys [10]: [c_last_name#31, c_first_name#30, s_store_name#11, ca_state#35, s_state#15, i_color#24, i_current_price#18, i_manager_id#22, i_units#25, i_size#23]
Functions [1]: [partial_sum(UnscaledValue(ss_net_paid#5))]
Aggregate Attributes [1]: [sum#37]
Results [11]: [c_last_name#31, c_first_name#30, s_store_name#11, ca_state#35, s_state#15, i_color#24, i_current_price#18, i_manager_id#22, i_units#25, i_size#23, sum#38]

(40) CometColumnarExchange
Input [11]: [c_last_name#31, c_first_name#30, s_store_name#11, ca_state#35, s_state#15, i_color#24, i_current_price#18, i_manager_id#22, i_units#25, i_size#23, sum#38]
Arguments: hashpartitioning(c_last_name#31, c_first_name#30, s_store_name#11, ca_state#35, s_state#15, i_color#24, i_current_price#18, i_manager_id#22, i_units#25, i_size#23, 5), ENSURE_REQUIREMENTS, CometColumnarShuffle, [plan_id=4]

(41) CometColumnarToRow [codegen id : 3]
Input [11]: [c_last_name#31, c_first_name#30, s_store_name#11, ca_state#35, s_state#15, i_color#24, i_current_price#18, i_manager_id#22, i_units#25, i_size#23, sum#38]

(42) HashAggregate [codegen id : 3]
Input [11]: [c_last_name#31, c_first_name#30, s_store_name#11, ca_state#35, s_state#15, i_color#24, i_current_price#18, i_manager_id#22, i_units#25, i_size#23, sum#38]
Keys [10]: [c_last_name#31, c_first_name#30, s_store_name#11, ca_state#35, s_state#15, i_color#24, i_current_price#18, i_manager_id#22, i_units#25, i_size#23]
Functions [1]: [sum(UnscaledValue(ss_net_paid#5))]
Aggregate Attributes [1]: [sum(UnscaledValue(ss_net_paid#5))#39]
Results [4]: [c_last_name#31, c_first_name#30, s_store_name#11, MakeDecimal(sum(UnscaledValue(ss_net_paid#5))#39,17,2) AS netpaid#40]

(43) HashAggregate [codegen id : 3]
Input [4]: [c_last_name#31, c_first_name#30, s_store_name#11, netpaid#40]
Keys [3]: [c_last_name#31, c_first_name#30, s_store_name#11]
Functions [1]: [partial_sum(netpaid#40)]
Aggregate Attributes [2]: [sum#41, isEmpty#42]
Results [5]: [c_last_name#31, c_first_name#30, s_store_name#11, sum#43, isEmpty#44]

(44) CometColumnarExchange
Input [5]: [c_last_name#31, c_first_name#30, s_store_name#11, sum#43, isEmpty#44]
Arguments: hashpartitioning(c_last_name#31, c_first_name#30, s_store_name#11, 5), ENSURE_REQUIREMENTS, CometColumnarShuffle, [plan_id=5]

(45) CometColumnarToRow [codegen id : 4]
Input [5]: [c_last_name#31, c_first_name#30, s_store_name#11, sum#43, isEmpty#44]

(46) HashAggregate [codegen id : 4]
Input [5]: [c_last_name#31, c_first_name#30, s_store_name#11, sum#43, isEmpty#44]
Keys [3]: [c_last_name#31, c_first_name#30, s_store_name#11]
Functions [1]: [sum(netpaid#40)]
Aggregate Attributes [1]: [sum(netpaid#40)#45]
Results [4]: [c_last_name#31, c_first_name#30, s_store_name#11, sum(netpaid#40)#45 AS paid#46]

(47) Filter [codegen id : 4]
Input [4]: [c_last_name#31, c_first_name#30, s_store_name#11, paid#46]
Condition : (isnotnull(paid#46) AND (cast(paid#46 as decimal(33,8)) > cast(Subquery scalar-subquery#47, [id=#48] as decimal(33,8))))

===== Subqueries =====

Subquery:1 Hosting operator id = 47 Hosting Expression = Subquery scalar-subquery#47, [id=#48]
* HashAggregate (77)
+- * CometColumnarToRow (76)
   +- CometColumnarExchange (75)
      +- * HashAggregate (74)
         +- * HashAggregate (73)
            +- * CometColumnarToRow (72)
               +- CometColumnarExchange (71)
                  +- * HashAggregate (70)
                     +- * Project (69)
                        +- * BroadcastHashJoin Inner BuildRight (68)
                           :- * CometColumnarToRow (66)
                           :  +- CometProject (65)
                           :     +- CometBroadcastHashJoin (64)
                           :        :- CometProject (62)
                           :        :  +- CometBroadcastHashJoin (61)
                           :        :     :- CometProject (56)
                           :        :     :  +- CometBroadcastHashJoin (55)
                           :        :     :     :- CometProject (53)
                           :        :     :     :  +- CometSortMergeJoin (52)
                           :        :     :     :     :- CometSort (49)
                           :        :     :     :     :  +- ReusedExchange (48)
                           :        :     :     :     +- CometSort (51)
                           :        :     :     :        +- ReusedExchange (50)
                           :        :     :     +- ReusedExchange (54)
                           :        :     +- CometBroadcastExchange (60)
                           :        :        +- CometProject (59)
                           :        :           +- CometFilter (58)
                           :        :              +- CometScan [native_iceberg_compat] parquet spark_catalog.default.item (57)
                           :        +- ReusedExchange (63)
                           +- ReusedExchange (67)


(48) ReusedExchange [Reuses operator id: 4]
Output [5]: [ss_item_sk#49, ss_customer_sk#50, ss_store_sk#51, ss_ticket_number#52, ss_net_paid#53]

(49) CometSort
Input [5]: [ss_item_sk#49, ss_customer_sk#50, ss_store_sk#51, ss_ticket_number#52, ss_net_paid#53]
Arguments: [ss_item_sk#49, ss_customer_sk#50, ss_store_sk#51, ss_ticket_number#52, ss_net_paid#53], [ss_ticket_number#52 ASC NULLS FIRST, ss_item_sk#49 ASC NULLS FIRST]

(50) ReusedExchange [Reuses operator id: 9]
Output [2]: [sr_item_sk#54, sr_ticket_number#55]

(51) CometSort
Input [2]: [sr_item_sk#54, sr_ticket_number#55]
Arguments: [sr_item_sk#54, sr_ticket_number#55], [sr_ticket_number#55 ASC NULLS FIRST, sr_item_sk#54 ASC NULLS FIRST]

(52) CometSortMergeJoin
Left output [5]: [ss_item_sk#49, ss_customer_sk#50, ss_store_sk#51, ss_ticket_number#52, ss_net_paid#53]
Right output [2]: [sr_item_sk#54, sr_ticket_number#55]
Arguments: [ss_ticket_number#52, ss_item_sk#49], [sr_ticket_number#55, sr_item_sk#54], Inner

(53) CometProject
Input [7]: [ss_item_sk#49, ss_customer_sk#50, ss_store_sk#51, ss_ticket_number#52, ss_net_paid#53, sr_item_sk#54, sr_ticket_number#55]
Arguments: [ss_item_sk#49, ss_customer_sk#50, ss_store_sk#51, ss_net_paid#53], [ss_item_sk#49, ss_customer_sk#50, ss_store_sk#51, ss_net_paid#53]

(54) ReusedExchange [Reuses operator id: 16]
Output [4]: [s_store_sk#56, s_store_name#57, s_state#15, s_zip#16]

(55) CometBroadcastHashJoin
Left output [4]: [ss_item_sk#49, ss_customer_sk#50, ss_store_sk#51, ss_net_paid#53]
Right output [4]: [s_store_sk#56, s_store_name#57, s_state#15, s_zip#16]
Arguments: [ss_store_sk#51], [s_store_sk#56], Inner, BuildRight

(56) CometProject
Input [8]: [ss_item_sk#49, ss_customer_sk#50, ss_store_sk#51, ss_net_paid#53, s_store_sk#56, s_store_name#57, s_state#15, s_zip#16]
Arguments: [ss_item_sk#49, ss_customer_sk#50, ss_net_paid#53, s_store_name#57, s_state#15, s_zip#16], [ss_item_sk#49, ss_customer_sk#50, ss_net_paid#53, s_store_name#57, s_state#15, s_zip#16]

(57) CometScan [native_iceberg_compat] parquet spark_catalog.default.item
Output [6]: [i_item_sk#58, i_current_price#59, i_size#60, i_color#61, i_units#62, i_manager_id#63]
Batched: true
Location [not included in comparison]/{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>

(58) CometFilter
Input [6]: [i_item_sk#58, i_current_price#59, i_size#60, i_color#61, i_units#62, i_manager_id#63]
Condition : isnotnull(i_item_sk#58)

(59) CometProject
Input [6]: [i_item_sk#58, i_current_price#59, i_size#60, i_color#61, i_units#62, i_manager_id#63]
Arguments: [i_item_sk#58, i_current_price#59, i_size#23, i_color#24, i_units#25, i_manager_id#63], [i_item_sk#58, i_current_price#59, staticinvoke(class org.apache.spark.sql.catalyst.util.CharVarcharCodegenUtils, StringType, readSidePadding, i_size#60, 20, true, false, true) AS i_size#23, staticinvoke(class org.apache.spark.sql.catalyst.util.CharVarcharCodegenUtils, StringType, readSidePadding, i_color#61, 20, true, false, true) AS i_color#24, staticinvoke(class org.apache.spark.sql.catalyst.util.CharVarcharCodegenUtils, StringType, readSidePadding, i_units#62, 10, true, false, true) AS i_units#25, i_manager_id#63]

(60) CometBroadcastExchange
Input [6]: [i_item_sk#58, i_current_price#59, i_size#23, i_color#24, i_units#25, i_manager_id#63]
Arguments: [i_item_sk#58, i_current_price#59, i_size#23, i_color#24, i_units#25, i_manager_id#63]

(61) CometBroadcastHashJoin
Left output [6]: [ss_item_sk#49, ss_customer_sk#50, ss_net_paid#53, s_store_name#57, s_state#15, s_zip#16]
Right output [6]: [i_item_sk#58, i_current_price#59, i_size#23, i_color#24, i_units#25, i_manager_id#63]
Arguments: [ss_item_sk#49], [i_item_sk#58], Inner, BuildRight

(62) CometProject
Input [12]: [ss_item_sk#49, ss_customer_sk#50, ss_net_paid#53, s_store_name#57, s_state#15, s_zip#16, i_item_sk#58, i_current_price#59, i_size#23, i_color#24, i_units#25, i_manager_id#63]
Arguments: [ss_customer_sk#50, ss_net_paid#53, s_store_name#57, s_state#15, s_zip#16, i_current_price#59, i_size#23, i_color#24, i_units#25, i_manager_id#63], [ss_customer_sk#50, ss_net_paid#53, s_store_name#57, s_state#15, s_zip#16, i_current_price#59, i_size#23, i_color#24, i_units#25, i_manager_id#63]

(63) ReusedExchange [Reuses operator id: 28]
Output [4]: [c_customer_sk#64, c_first_name#30, c_last_name#31, c_birth_country#65]

(64) CometBroadcastHashJoin
Left output [10]: [ss_customer_sk#50, ss_net_paid#53, s_store_name#57, s_state#15, s_zip#16, i_current_price#59, i_size#23, i_color#24, i_units#25, i_manager_id#63]
Right output [4]: [c_customer_sk#64, c_first_name#30, c_last_name#31, c_birth_country#65]
Arguments: [ss_customer_sk#50], [c_customer_sk#64], Inner, BuildRight

(65) CometProject
Input [14]: [ss_customer_sk#50, ss_net_paid#53, s_store_name#57, s_state#15, s_zip#16, i_current_price#59, i_size#23, i_color#24, i_units#25, i_manager_id#63, c_customer_sk#64, c_first_name#30, c_last_name#31, c_birth_country#65]
Arguments: [ss_net_paid#53, s_store_name#57, s_state#15, s_zip#16, i_current_price#59, i_size#23, i_color#24, i_units#25, i_manager_id#63, c_first_name#30, c_last_name#31, c_birth_country#65], [ss_net_paid#53, s_store_name#57, s_state#15, s_zip#16, i_current_price#59, i_size#23, i_color#24, i_units#25, i_manager_id#63, c_first_name#30, c_last_name#31, c_birth_country#65]

(66) CometColumnarToRow [codegen id : 2]
Input [12]: [ss_net_paid#53, s_store_name#57, s_state#15, s_zip#16, i_current_price#59, i_size#23, i_color#24, i_units#25, i_manager_id#63, c_first_name#30, c_last_name#31, c_birth_country#65]

(67) ReusedExchange [Reuses operator id: 36]
Output [3]: [ca_state#35, ca_zip#36, ca_country#66]

(68) BroadcastHashJoin [codegen id : 2]
Left keys [2]: [c_birth_country#65, s_zip#16]
Right keys [2]: [upper(ca_country#66), ca_zip#36]
Join type: Inner
Join condition: None

(69) Project [codegen id : 2]
Output [11]: [ss_net_paid#53, s_store_name#57, s_state#15, i_current_price#59, i_size#23, i_color#24, i_units#25, i_manager_id#63, c_first_name#30, c_last_name#31, ca_state#35]
Input [15]: [ss_net_paid#53, s_store_name#57, s_state#15, s_zip#16, i_current_price#59, i_size#23, i_color#24, i_units#25, i_manager_id#63, c_first_name#30, c_last_name#31, c_birth_country#65, ca_state#35, ca_zip#36, ca_country#66]

(70) HashAggregate [codegen id : 2]
Input [11]: [ss_net_paid#53, s_store_name#57, s_state#15, i_current_price#59, i_size#23, i_color#24, i_units#25, i_manager_id#63, c_first_name#30, c_last_name#31, ca_state#35]
Keys [10]: [c_last_name#31, c_first_name#30, s_store_name#57, ca_state#35, s_state#15, i_color#24, i_current_price#59, i_manager_id#63, i_units#25, i_size#23]
Functions [1]: [partial_sum(UnscaledValue(ss_net_paid#53))]
Aggregate Attributes [1]: [sum#67]
Results [11]: [c_last_name#31, c_first_name#30, s_store_name#57, ca_state#35, s_state#15, i_color#24, i_current_price#59, i_manager_id#63, i_units#25, i_size#23, sum#68]

(71) CometColumnarExchange
Input [11]: [c_last_name#31, c_first_name#30, s_store_name#57, ca_state#35, s_state#15, i_color#24, i_current_price#59, i_manager_id#63, i_units#25, i_size#23, sum#68]
Arguments: hashpartitioning(c_last_name#31, c_first_name#30, s_store_name#57, ca_state#35, s_state#15, i_color#24, i_current_price#59, i_manager_id#63, i_units#25, i_size#23, 5), ENSURE_REQUIREMENTS, CometColumnarShuffle, [plan_id=6]

(72) CometColumnarToRow [codegen id : 3]
Input [11]: [c_last_name#31, c_first_name#30, s_store_name#57, ca_state#35, s_state#15, i_color#24, i_current_price#59, i_manager_id#63, i_units#25, i_size#23, sum#68]

(73) HashAggregate [codegen id : 3]
Input [11]: [c_last_name#31, c_first_name#30, s_store_name#57, ca_state#35, s_state#15, i_color#24, i_current_price#59, i_manager_id#63, i_units#25, i_size#23, sum#68]
Keys [10]: [c_last_name#31, c_first_name#30, s_store_name#57, ca_state#35, s_state#15, i_color#24, i_current_price#59, i_manager_id#63, i_units#25, i_size#23]
Functions [1]: [sum(UnscaledValue(ss_net_paid#53))]
Aggregate Attributes [1]: [sum(UnscaledValue(ss_net_paid#53))#39]
Results [1]: [MakeDecimal(sum(UnscaledValue(ss_net_paid#53))#39,17,2) AS netpaid#69]

(74) HashAggregate [codegen id : 3]
Input [1]: [netpaid#69]
Keys: []
Functions [1]: [partial_avg(netpaid#69)]
Aggregate Attributes [2]: [sum#70, count#71]
Results [2]: [sum#72, count#73]

(75) CometColumnarExchange
Input [2]: [sum#72, count#73]
Arguments: SinglePartition, ENSURE_REQUIREMENTS, CometColumnarShuffle, [plan_id=7]

(76) CometColumnarToRow [codegen id : 4]
Input [2]: [sum#72, count#73]

(77) HashAggregate [codegen id : 4]
Input [2]: [sum#72, count#73]
Keys: []
Functions [1]: [avg(netpaid#69)]
Aggregate Attributes [1]: [avg(netpaid#69)#74]
Results [1]: [(0.05 * avg(netpaid#69)#74) AS (0.05 * avg(netpaid))#75]


