== Physical Plan ==
* CometColumnarToRow (146)
+- CometTakeOrderedAndProject (145)
   +- CometUnion (144)
      :- CometHashAggregate (40)
      :  +- CometExchange (39)
      :     +- CometHashAggregate (38)
      :        +- CometProject (37)
      :           +- CometBroadcastHashJoin (36)
      :              :- CometProject (31)
      :              :  +- CometBroadcastHashJoin (30)
      :              :     :- CometProject (25)
      :              :     :  +- CometBroadcastHashJoin (24)
      :              :     :     :- CometProject (19)
      :              :     :     :  +- CometBroadcastHashJoin (18)
      :              :     :     :     :- CometProject (14)
      :              :     :     :     :  +- CometBroadcastHashJoin (13)
      :              :     :     :     :     :- CometProject (8)
      :              :     :     :     :     :  +- CometBroadcastHashJoin (7)
      :              :     :     :     :     :     :- CometFilter (2)
      :              :     :     :     :     :     :  +- CometScan [native_iceberg_compat] parquet spark_catalog.default.catalog_sales (1)
      :              :     :     :     :     :     +- CometBroadcastExchange (6)
      :              :     :     :     :     :        +- CometProject (5)
      :              :     :     :     :     :           +- CometFilter (4)
      :              :     :     :     :     :              +- CometScan [native_iceberg_compat] parquet spark_catalog.default.customer_demographics (3)
      :              :     :     :     :     +- CometBroadcastExchange (12)
      :              :     :     :     :        +- CometProject (11)
      :              :     :     :     :           +- CometFilter (10)
      :              :     :     :     :              +- CometScan [native_iceberg_compat] parquet spark_catalog.default.customer (9)
      :              :     :     :     +- CometBroadcastExchange (17)
      :              :     :     :        +- CometFilter (16)
      :              :     :     :           +- CometScan [native_iceberg_compat] parquet spark_catalog.default.customer_demographics (15)
      :              :     :     +- CometBroadcastExchange (23)
      :              :     :        +- CometProject (22)
      :              :     :           +- CometFilter (21)
      :              :     :              +- CometScan [native_iceberg_compat] parquet spark_catalog.default.customer_address (20)
      :              :     +- CometBroadcastExchange (29)
      :              :        +- CometProject (28)
      :              :           +- CometFilter (27)
      :              :              +- CometScan [native_iceberg_compat] parquet spark_catalog.default.date_dim (26)
      :              +- CometBroadcastExchange (35)
      :                 +- CometProject (34)
      :                    +- CometFilter (33)
      :                       +- CometScan [native_iceberg_compat] parquet spark_catalog.default.item (32)
      :- CometHashAggregate (66)
      :  +- CometExchange (65)
      :     +- CometHashAggregate (64)
      :        +- CometProject (63)
      :           +- CometBroadcastHashJoin (62)
      :              :- CometProject (60)
      :              :  +- CometBroadcastHashJoin (59)
      :              :     :- CometProject (57)
      :              :     :  +- CometBroadcastHashJoin (56)
      :              :     :     :- CometProject (51)
      :              :     :     :  +- CometBroadcastHashJoin (50)
      :              :     :     :     :- CometProject (48)
      :              :     :     :     :  +- CometBroadcastHashJoin (47)
      :              :     :     :     :     :- CometProject (45)
      :              :     :     :     :     :  +- CometBroadcastHashJoin (44)
      :              :     :     :     :     :     :- CometFilter (42)
      :              :     :     :     :     :     :  +- CometScan [native_iceberg_compat] parquet spark_catalog.default.catalog_sales (41)
      :              :     :     :     :     :     +- ReusedExchange (43)
      :              :     :     :     :     +- ReusedExchange (46)
      :              :     :     :     +- ReusedExchange (49)
      :              :     :     +- CometBroadcastExchange (55)
      :              :     :        +- CometProject (54)
      :              :     :           +- CometFilter (53)
      :              :     :              +- CometScan [native_iceberg_compat] parquet spark_catalog.default.customer_address (52)
      :              :     +- ReusedExchange (58)
      :              +- ReusedExchange (61)
      :- CometHashAggregate (92)
      :  +- CometExchange (91)
      :     +- CometHashAggregate (90)
      :        +- CometProject (89)
      :           +- CometBroadcastHashJoin (88)
      :              :- CometProject (86)
      :              :  +- CometBroadcastHashJoin (85)
      :              :     :- CometProject (83)
      :              :     :  +- CometBroadcastHashJoin (82)
      :              :     :     :- CometProject (77)
      :              :     :     :  +- CometBroadcastHashJoin (76)
      :              :     :     :     :- CometProject (74)
      :              :     :     :     :  +- CometBroadcastHashJoin (73)
      :              :     :     :     :     :- CometProject (71)
      :              :     :     :     :     :  +- CometBroadcastHashJoin (70)
      :              :     :     :     :     :     :- CometFilter (68)
      :              :     :     :     :     :     :  +- CometScan [native_iceberg_compat] parquet spark_catalog.default.catalog_sales (67)
      :              :     :     :     :     :     +- ReusedExchange (69)
      :              :     :     :     :     +- ReusedExchange (72)
      :              :     :     :     +- ReusedExchange (75)
      :              :     :     +- CometBroadcastExchange (81)
      :              :     :        +- CometProject (80)
      :              :     :           +- CometFilter (79)
      :              :     :              +- CometScan [native_iceberg_compat] parquet spark_catalog.default.customer_address (78)
      :              :     +- ReusedExchange (84)
      :              +- ReusedExchange (87)
      :- CometHashAggregate (118)
      :  +- CometExchange (117)
      :     +- CometHashAggregate (116)
      :        +- CometProject (115)
      :           +- CometBroadcastHashJoin (114)
      :              :- CometProject (112)
      :              :  +- CometBroadcastHashJoin (111)
      :              :     :- CometProject (109)
      :              :     :  +- CometBroadcastHashJoin (108)
      :              :     :     :- CometProject (103)
      :              :     :     :  +- CometBroadcastHashJoin (102)
      :              :     :     :     :- CometProject (100)
      :              :     :     :     :  +- CometBroadcastHashJoin (99)
      :              :     :     :     :     :- CometProject (97)
      :              :     :     :     :     :  +- CometBroadcastHashJoin (96)
      :              :     :     :     :     :     :- CometFilter (94)
      :              :     :     :     :     :     :  +- CometScan [native_iceberg_compat] parquet spark_catalog.default.catalog_sales (93)
      :              :     :     :     :     :     +- ReusedExchange (95)
      :              :     :     :     :     +- ReusedExchange (98)
      :              :     :     :     +- ReusedExchange (101)
      :              :     :     +- CometBroadcastExchange (107)
      :              :     :        +- CometProject (106)
      :              :     :           +- CometFilter (105)
      :              :     :              +- CometScan [native_iceberg_compat] parquet spark_catalog.default.customer_address (104)
      :              :     +- ReusedExchange (110)
      :              +- ReusedExchange (113)
      +- CometHashAggregate (143)
         +- CometExchange (142)
            +- CometHashAggregate (141)
               +- CometProject (140)
                  +- CometBroadcastHashJoin (139)
                     :- CometProject (135)
                     :  +- CometBroadcastHashJoin (134)
                     :     :- CometProject (132)
                     :     :  +- CometBroadcastHashJoin (131)
                     :     :     :- CometProject (129)
                     :     :     :  +- CometBroadcastHashJoin (128)
                     :     :     :     :- CometProject (126)
                     :     :     :     :  +- CometBroadcastHashJoin (125)
                     :     :     :     :     :- CometProject (123)
                     :     :     :     :     :  +- CometBroadcastHashJoin (122)
                     :     :     :     :     :     :- CometFilter (120)
                     :     :     :     :     :     :  +- CometScan [native_iceberg_compat] parquet spark_catalog.default.catalog_sales (119)
                     :     :     :     :     :     +- ReusedExchange (121)
                     :     :     :     :     +- ReusedExchange (124)
                     :     :     :     +- ReusedExchange (127)
                     :     :     +- ReusedExchange (130)
                     :     +- ReusedExchange (133)
                     +- CometBroadcastExchange (138)
                        +- CometFilter (137)
                           +- CometScan [native_iceberg_compat] parquet spark_catalog.default.item (136)


(1) CometScan [native_iceberg_compat] parquet spark_catalog.default.catalog_sales
Output [9]: [cs_bill_customer_sk#1, cs_bill_cdemo_sk#2, cs_item_sk#3, cs_quantity#4, cs_list_price#5, cs_sales_price#6, cs_coupon_amt#7, cs_net_profit#8, cs_sold_date_sk#9]
Batched: true
Location: InMemoryFileIndex []
PartitionFilters: [isnotnull(cs_sold_date_sk#9), dynamicpruningexpression(cs_sold_date_sk#9 IN dynamicpruning#10)]
PushedFilters: [IsNotNull(cs_bill_cdemo_sk), IsNotNull(cs_bill_customer_sk), IsNotNull(cs_item_sk)]
ReadSchema: struct<cs_bill_customer_sk:int,cs_bill_cdemo_sk:int,cs_item_sk:int,cs_quantity:int,cs_list_price:decimal(7,2),cs_sales_price:decimal(7,2),cs_coupon_amt:decimal(7,2),cs_net_profit:decimal(7,2)>

(2) CometFilter
Input [9]: [cs_bill_customer_sk#1, cs_bill_cdemo_sk#2, cs_item_sk#3, cs_quantity#4, cs_list_price#5, cs_sales_price#6, cs_coupon_amt#7, cs_net_profit#8, cs_sold_date_sk#9]
Condition : ((isnotnull(cs_bill_cdemo_sk#2) AND isnotnull(cs_bill_customer_sk#1)) AND isnotnull(cs_item_sk#3))

(3) CometScan [native_iceberg_compat] parquet spark_catalog.default.customer_demographics
Output [4]: [cd_demo_sk#11, cd_gender#12, cd_education_status#13, cd_dep_count#14]
Batched: true
Location [not included in comparison]/{warehouse_dir}/customer_demographics]
PushedFilters: [IsNotNull(cd_demo_sk)]
ReadSchema: struct<cd_demo_sk:int,cd_gender:string,cd_education_status:string,cd_dep_count:int>

(4) CometFilter
Input [4]: [cd_demo_sk#11, cd_gender#12, cd_education_status#13, cd_dep_count#14]
Condition : (((staticinvoke(class org.apache.spark.sql.catalyst.util.CharVarcharCodegenUtils, StringType, readSidePadding, cd_gender#12, 1, true, false, true) = M) AND (staticinvoke(class org.apache.spark.sql.catalyst.util.CharVarcharCodegenUtils, StringType, readSidePadding, cd_education_status#13, 20, true, false, true) = College             )) AND isnotnull(cd_demo_sk#11))

(5) CometProject
Input [4]: [cd_demo_sk#11, cd_gender#12, cd_education_status#13, cd_dep_count#14]
Arguments: [cd_demo_sk#11, cd_dep_count#14], [cd_demo_sk#11, cd_dep_count#14]

(6) CometBroadcastExchange
Input [2]: [cd_demo_sk#11, cd_dep_count#14]
Arguments: [cd_demo_sk#11, cd_dep_count#14]

(7) CometBroadcastHashJoin
Left output [9]: [cs_bill_customer_sk#1, cs_bill_cdemo_sk#2, cs_item_sk#3, cs_quantity#4, cs_list_price#5, cs_sales_price#6, cs_coupon_amt#7, cs_net_profit#8, cs_sold_date_sk#9]
Right output [2]: [cd_demo_sk#11, cd_dep_count#14]
Arguments: [cs_bill_cdemo_sk#2], [cd_demo_sk#11], Inner, BuildRight

(8) CometProject
Input [11]: [cs_bill_customer_sk#1, cs_bill_cdemo_sk#2, cs_item_sk#3, cs_quantity#4, cs_list_price#5, cs_sales_price#6, cs_coupon_amt#7, cs_net_profit#8, cs_sold_date_sk#9, cd_demo_sk#11, cd_dep_count#14]
Arguments: [cs_bill_customer_sk#1, cs_item_sk#3, cs_quantity#4, cs_list_price#5, cs_sales_price#6, cs_coupon_amt#7, cs_net_profit#8, cs_sold_date_sk#9, cd_dep_count#14], [cs_bill_customer_sk#1, cs_item_sk#3, cs_quantity#4, cs_list_price#5, cs_sales_price#6, cs_coupon_amt#7, cs_net_profit#8, cs_sold_date_sk#9, cd_dep_count#14]

(9) CometScan [native_iceberg_compat] parquet spark_catalog.default.customer
Output [5]: [c_customer_sk#15, c_current_cdemo_sk#16, c_current_addr_sk#17, c_birth_month#18, c_birth_year#19]
Batched: true
Location [not included in comparison]/{warehouse_dir}/customer]
PushedFilters: [In(c_birth_month, [1,10,12,4,5,9]), IsNotNull(c_customer_sk), IsNotNull(c_current_cdemo_sk), IsNotNull(c_current_addr_sk)]
ReadSchema: struct<c_customer_sk:int,c_current_cdemo_sk:int,c_current_addr_sk:int,c_birth_month:int,c_birth_year:int>

(10) CometFilter
Input [5]: [c_customer_sk#15, c_current_cdemo_sk#16, c_current_addr_sk#17, c_birth_month#18, c_birth_year#19]
Condition : (((c_birth_month#18 IN (9,5,12,4,1,10) AND isnotnull(c_customer_sk#15)) AND isnotnull(c_current_cdemo_sk#16)) AND isnotnull(c_current_addr_sk#17))

(11) CometProject
Input [5]: [c_customer_sk#15, c_current_cdemo_sk#16, c_current_addr_sk#17, c_birth_month#18, c_birth_year#19]
Arguments: [c_customer_sk#15, c_current_cdemo_sk#16, c_current_addr_sk#17, c_birth_year#19], [c_customer_sk#15, c_current_cdemo_sk#16, c_current_addr_sk#17, c_birth_year#19]

(12) CometBroadcastExchange
Input [4]: [c_customer_sk#15, c_current_cdemo_sk#16, c_current_addr_sk#17, c_birth_year#19]
Arguments: [c_customer_sk#15, c_current_cdemo_sk#16, c_current_addr_sk#17, c_birth_year#19]

(13) CometBroadcastHashJoin
Left output [9]: [cs_bill_customer_sk#1, cs_item_sk#3, cs_quantity#4, cs_list_price#5, cs_sales_price#6, cs_coupon_amt#7, cs_net_profit#8, cs_sold_date_sk#9, cd_dep_count#14]
Right output [4]: [c_customer_sk#15, c_current_cdemo_sk#16, c_current_addr_sk#17, c_birth_year#19]
Arguments: [cs_bill_customer_sk#1], [c_customer_sk#15], Inner, BuildRight

(14) CometProject
Input [13]: [cs_bill_customer_sk#1, cs_item_sk#3, cs_quantity#4, cs_list_price#5, cs_sales_price#6, cs_coupon_amt#7, cs_net_profit#8, cs_sold_date_sk#9, cd_dep_count#14, c_customer_sk#15, c_current_cdemo_sk#16, c_current_addr_sk#17, c_birth_year#19]
Arguments: [cs_item_sk#3, cs_quantity#4, cs_list_price#5, cs_sales_price#6, cs_coupon_amt#7, cs_net_profit#8, cs_sold_date_sk#9, cd_dep_count#14, c_current_cdemo_sk#16, c_current_addr_sk#17, c_birth_year#19], [cs_item_sk#3, cs_quantity#4, cs_list_price#5, cs_sales_price#6, cs_coupon_amt#7, cs_net_profit#8, cs_sold_date_sk#9, cd_dep_count#14, c_current_cdemo_sk#16, c_current_addr_sk#17, c_birth_year#19]

(15) CometScan [native_iceberg_compat] parquet spark_catalog.default.customer_demographics
Output [1]: [cd_demo_sk#20]
Batched: true
Location [not included in comparison]/{warehouse_dir}/customer_demographics]
PushedFilters: [IsNotNull(cd_demo_sk)]
ReadSchema: struct<cd_demo_sk:int>

(16) CometFilter
Input [1]: [cd_demo_sk#20]
Condition : isnotnull(cd_demo_sk#20)

(17) CometBroadcastExchange
Input [1]: [cd_demo_sk#20]
Arguments: [cd_demo_sk#20]

(18) CometBroadcastHashJoin
Left output [11]: [cs_item_sk#3, cs_quantity#4, cs_list_price#5, cs_sales_price#6, cs_coupon_amt#7, cs_net_profit#8, cs_sold_date_sk#9, cd_dep_count#14, c_current_cdemo_sk#16, c_current_addr_sk#17, c_birth_year#19]
Right output [1]: [cd_demo_sk#20]
Arguments: [c_current_cdemo_sk#16], [cd_demo_sk#20], Inner, BuildRight

(19) CometProject
Input [12]: [cs_item_sk#3, cs_quantity#4, cs_list_price#5, cs_sales_price#6, cs_coupon_amt#7, cs_net_profit#8, cs_sold_date_sk#9, cd_dep_count#14, c_current_cdemo_sk#16, c_current_addr_sk#17, c_birth_year#19, cd_demo_sk#20]
Arguments: [cs_item_sk#3, cs_quantity#4, cs_list_price#5, cs_sales_price#6, cs_coupon_amt#7, cs_net_profit#8, cs_sold_date_sk#9, cd_dep_count#14, c_current_addr_sk#17, c_birth_year#19], [cs_item_sk#3, cs_quantity#4, cs_list_price#5, cs_sales_price#6, cs_coupon_amt#7, cs_net_profit#8, cs_sold_date_sk#9, cd_dep_count#14, c_current_addr_sk#17, c_birth_year#19]

(20) CometScan [native_iceberg_compat] parquet spark_catalog.default.customer_address
Output [4]: [ca_address_sk#21, ca_county#22, ca_state#23, ca_country#24]
Batched: true
Location [not included in comparison]/{warehouse_dir}/customer_address]
PushedFilters: [IsNotNull(ca_address_sk)]
ReadSchema: struct<ca_address_sk:int,ca_county:string,ca_state:string,ca_country:string>

(21) CometFilter
Input [4]: [ca_address_sk#21, ca_county#22, ca_state#23, ca_country#24]
Condition : (staticinvoke(class org.apache.spark.sql.catalyst.util.CharVarcharCodegenUtils, StringType, readSidePadding, ca_state#23, 2, true, false, true) IN (ND,WI,AL,NC,OK,MS,TN) AND isnotnull(ca_address_sk#21))

(22) CometProject
Input [4]: [ca_address_sk#21, ca_county#22, ca_state#23, ca_country#24]
Arguments: [ca_address_sk#21, ca_county#22, ca_state#25, ca_country#24], [ca_address_sk#21, ca_county#22, staticinvoke(class org.apache.spark.sql.catalyst.util.CharVarcharCodegenUtils, StringType, readSidePadding, ca_state#23, 2, true, false, true) AS ca_state#25, ca_country#24]

(23) CometBroadcastExchange
Input [4]: [ca_address_sk#21, ca_county#22, ca_state#25, ca_country#24]
Arguments: [ca_address_sk#21, ca_county#22, ca_state#25, ca_country#24]

(24) CometBroadcastHashJoin
Left output [10]: [cs_item_sk#3, cs_quantity#4, cs_list_price#5, cs_sales_price#6, cs_coupon_amt#7, cs_net_profit#8, cs_sold_date_sk#9, cd_dep_count#14, c_current_addr_sk#17, c_birth_year#19]
Right output [4]: [ca_address_sk#21, ca_county#22, ca_state#25, ca_country#24]
Arguments: [c_current_addr_sk#17], [ca_address_sk#21], Inner, BuildRight

(25) CometProject
Input [14]: [cs_item_sk#3, cs_quantity#4, cs_list_price#5, cs_sales_price#6, cs_coupon_amt#7, cs_net_profit#8, cs_sold_date_sk#9, cd_dep_count#14, c_current_addr_sk#17, c_birth_year#19, ca_address_sk#21, ca_county#22, ca_state#25, ca_country#24]
Arguments: [cs_item_sk#3, cs_quantity#4, cs_list_price#5, cs_sales_price#6, cs_coupon_amt#7, cs_net_profit#8, cs_sold_date_sk#9, cd_dep_count#14, c_birth_year#19, ca_county#22, ca_state#25, ca_country#24], [cs_item_sk#3, cs_quantity#4, cs_list_price#5, cs_sales_price#6, cs_coupon_amt#7, cs_net_profit#8, cs_sold_date_sk#9, cd_dep_count#14, c_birth_year#19, ca_county#22, ca_state#25, ca_country#24]

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

(27) CometFilter
Input [2]: [d_date_sk#26, d_year#27]
Condition : ((isnotnull(d_year#27) AND (d_year#27 = 2001)) AND isnotnull(d_date_sk#26))

(28) CometProject
Input [2]: [d_date_sk#26, d_year#27]
Arguments: [d_date_sk#26], [d_date_sk#26]

(29) CometBroadcastExchange
Input [1]: [d_date_sk#26]
Arguments: [d_date_sk#26]

(30) CometBroadcastHashJoin
Left output [12]: [cs_item_sk#3, cs_quantity#4, cs_list_price#5, cs_sales_price#6, cs_coupon_amt#7, cs_net_profit#8, cs_sold_date_sk#9, cd_dep_count#14, c_birth_year#19, ca_county#22, ca_state#25, ca_country#24]
Right output [1]: [d_date_sk#26]
Arguments: [cs_sold_date_sk#9], [d_date_sk#26], Inner, BuildRight

(31) CometProject
Input [13]: [cs_item_sk#3, cs_quantity#4, cs_list_price#5, cs_sales_price#6, cs_coupon_amt#7, cs_net_profit#8, cs_sold_date_sk#9, cd_dep_count#14, c_birth_year#19, ca_county#22, ca_state#25, ca_country#24, d_date_sk#26]
Arguments: [cs_item_sk#3, cs_quantity#4, cs_list_price#5, cs_sales_price#6, cs_coupon_amt#7, cs_net_profit#8, cd_dep_count#14, c_birth_year#19, ca_county#22, ca_state#25, ca_country#24], [cs_item_sk#3, cs_quantity#4, cs_list_price#5, cs_sales_price#6, cs_coupon_amt#7, cs_net_profit#8, cd_dep_count#14, c_birth_year#19, ca_county#22, ca_state#25, ca_country#24]

(32) CometScan [native_iceberg_compat] parquet spark_catalog.default.item
Output [2]: [i_item_sk#28, i_item_id#29]
Batched: true
Location [not included in comparison]/{warehouse_dir}/item]
PushedFilters: [IsNotNull(i_item_sk)]
ReadSchema: struct<i_item_sk:int,i_item_id:string>

(33) CometFilter
Input [2]: [i_item_sk#28, i_item_id#29]
Condition : isnotnull(i_item_sk#28)

(34) CometProject
Input [2]: [i_item_sk#28, i_item_id#29]
Arguments: [i_item_sk#28, i_item_id#30], [i_item_sk#28, staticinvoke(class org.apache.spark.sql.catalyst.util.CharVarcharCodegenUtils, StringType, readSidePadding, i_item_id#29, 16, true, false, true) AS i_item_id#30]

(35) CometBroadcastExchange
Input [2]: [i_item_sk#28, i_item_id#30]
Arguments: [i_item_sk#28, i_item_id#30]

(36) CometBroadcastHashJoin
Left output [11]: [cs_item_sk#3, cs_quantity#4, cs_list_price#5, cs_sales_price#6, cs_coupon_amt#7, cs_net_profit#8, cd_dep_count#14, c_birth_year#19, ca_county#22, ca_state#25, ca_country#24]
Right output [2]: [i_item_sk#28, i_item_id#30]
Arguments: [cs_item_sk#3], [i_item_sk#28], Inner, BuildRight

(37) CometProject
Input [13]: [cs_item_sk#3, cs_quantity#4, cs_list_price#5, cs_sales_price#6, cs_coupon_amt#7, cs_net_profit#8, cd_dep_count#14, c_birth_year#19, ca_county#22, ca_state#25, ca_country#24, i_item_sk#28, i_item_id#30]
Arguments: [i_item_id#31, ca_country#32, ca_state#33, ca_county#34, agg1#35, agg2#36, agg3#37, agg4#38, agg5#39, agg6#40, agg7#41], [i_item_id#30 AS i_item_id#31, ca_country#24 AS ca_country#32, ca_state#25 AS ca_state#33, ca_county#22 AS ca_county#34, cast(cs_quantity#4 as decimal(12,2)) AS agg1#35, cast(cs_list_price#5 as decimal(12,2)) AS agg2#36, cast(cs_coupon_amt#7 as decimal(12,2)) AS agg3#37, cast(cs_sales_price#6 as decimal(12,2)) AS agg4#38, cast(cs_net_profit#8 as decimal(12,2)) AS agg5#39, cast(c_birth_year#19 as decimal(12,2)) AS agg6#40, cast(cd_dep_count#14 as decimal(12,2)) AS agg7#41]

(38) CometHashAggregate
Input [11]: [i_item_id#31, ca_country#32, ca_state#33, ca_county#34, agg1#35, agg2#36, agg3#37, agg4#38, agg5#39, agg6#40, agg7#41]
Keys [4]: [i_item_id#31, ca_country#32, ca_state#33, ca_county#34]
Functions [7]: [partial_avg(agg1#35), partial_avg(agg2#36), partial_avg(agg3#37), partial_avg(agg4#38), partial_avg(agg5#39), partial_avg(agg6#40), partial_avg(agg7#41)]

(39) CometExchange
Input [18]: [i_item_id#31, ca_country#32, ca_state#33, ca_county#34, sum#42, count#43, sum#44, count#45, sum#46, count#47, sum#48, count#49, sum#50, count#51, sum#52, count#53, sum#54, count#55]
Arguments: hashpartitioning(i_item_id#31, ca_country#32, ca_state#33, ca_county#34, 5), ENSURE_REQUIREMENTS, CometNativeShuffle, [plan_id=1]

(40) CometHashAggregate
Input [18]: [i_item_id#31, ca_country#32, ca_state#33, ca_county#34, sum#42, count#43, sum#44, count#45, sum#46, count#47, sum#48, count#49, sum#50, count#51, sum#52, count#53, sum#54, count#55]
Keys [4]: [i_item_id#31, ca_country#32, ca_state#33, ca_county#34]
Functions [7]: [avg(agg1#35), avg(agg2#36), avg(agg3#37), avg(agg4#38), avg(agg5#39), avg(agg6#40), avg(agg7#41)]

(41) CometScan [native_iceberg_compat] parquet spark_catalog.default.catalog_sales
Output [9]: [cs_bill_customer_sk#56, cs_bill_cdemo_sk#57, cs_item_sk#58, cs_quantity#59, cs_list_price#60, cs_sales_price#61, cs_coupon_amt#62, cs_net_profit#63, cs_sold_date_sk#64]
Batched: true
Location: InMemoryFileIndex []
PartitionFilters: [isnotnull(cs_sold_date_sk#64), dynamicpruningexpression(cs_sold_date_sk#64 IN dynamicpruning#65)]
PushedFilters: [IsNotNull(cs_bill_cdemo_sk), IsNotNull(cs_bill_customer_sk), IsNotNull(cs_item_sk)]
ReadSchema: struct<cs_bill_customer_sk:int,cs_bill_cdemo_sk:int,cs_item_sk:int,cs_quantity:int,cs_list_price:decimal(7,2),cs_sales_price:decimal(7,2),cs_coupon_amt:decimal(7,2),cs_net_profit:decimal(7,2)>

(42) CometFilter
Input [9]: [cs_bill_customer_sk#56, cs_bill_cdemo_sk#57, cs_item_sk#58, cs_quantity#59, cs_list_price#60, cs_sales_price#61, cs_coupon_amt#62, cs_net_profit#63, cs_sold_date_sk#64]
Condition : ((isnotnull(cs_bill_cdemo_sk#57) AND isnotnull(cs_bill_customer_sk#56)) AND isnotnull(cs_item_sk#58))

(43) ReusedExchange [Reuses operator id: 6]
Output [2]: [cd_demo_sk#66, cd_dep_count#67]

(44) CometBroadcastHashJoin
Left output [9]: [cs_bill_customer_sk#56, cs_bill_cdemo_sk#57, cs_item_sk#58, cs_quantity#59, cs_list_price#60, cs_sales_price#61, cs_coupon_amt#62, cs_net_profit#63, cs_sold_date_sk#64]
Right output [2]: [cd_demo_sk#66, cd_dep_count#67]
Arguments: [cs_bill_cdemo_sk#57], [cd_demo_sk#66], Inner, BuildRight

(45) CometProject
Input [11]: [cs_bill_customer_sk#56, cs_bill_cdemo_sk#57, cs_item_sk#58, cs_quantity#59, cs_list_price#60, cs_sales_price#61, cs_coupon_amt#62, cs_net_profit#63, cs_sold_date_sk#64, cd_demo_sk#66, cd_dep_count#67]
Arguments: [cs_bill_customer_sk#56, cs_item_sk#58, cs_quantity#59, cs_list_price#60, cs_sales_price#61, cs_coupon_amt#62, cs_net_profit#63, cs_sold_date_sk#64, cd_dep_count#67], [cs_bill_customer_sk#56, cs_item_sk#58, cs_quantity#59, cs_list_price#60, cs_sales_price#61, cs_coupon_amt#62, cs_net_profit#63, cs_sold_date_sk#64, cd_dep_count#67]

(46) ReusedExchange [Reuses operator id: 12]
Output [4]: [c_customer_sk#68, c_current_cdemo_sk#69, c_current_addr_sk#70, c_birth_year#71]

(47) CometBroadcastHashJoin
Left output [9]: [cs_bill_customer_sk#56, cs_item_sk#58, cs_quantity#59, cs_list_price#60, cs_sales_price#61, cs_coupon_amt#62, cs_net_profit#63, cs_sold_date_sk#64, cd_dep_count#67]
Right output [4]: [c_customer_sk#68, c_current_cdemo_sk#69, c_current_addr_sk#70, c_birth_year#71]
Arguments: [cs_bill_customer_sk#56], [c_customer_sk#68], Inner, BuildRight

(48) CometProject
Input [13]: [cs_bill_customer_sk#56, cs_item_sk#58, cs_quantity#59, cs_list_price#60, cs_sales_price#61, cs_coupon_amt#62, cs_net_profit#63, cs_sold_date_sk#64, cd_dep_count#67, c_customer_sk#68, c_current_cdemo_sk#69, c_current_addr_sk#70, c_birth_year#71]
Arguments: [cs_item_sk#58, cs_quantity#59, cs_list_price#60, cs_sales_price#61, cs_coupon_amt#62, cs_net_profit#63, cs_sold_date_sk#64, cd_dep_count#67, c_current_cdemo_sk#69, c_current_addr_sk#70, c_birth_year#71], [cs_item_sk#58, cs_quantity#59, cs_list_price#60, cs_sales_price#61, cs_coupon_amt#62, cs_net_profit#63, cs_sold_date_sk#64, cd_dep_count#67, c_current_cdemo_sk#69, c_current_addr_sk#70, c_birth_year#71]

(49) ReusedExchange [Reuses operator id: 17]
Output [1]: [cd_demo_sk#72]

(50) CometBroadcastHashJoin
Left output [11]: [cs_item_sk#58, cs_quantity#59, cs_list_price#60, cs_sales_price#61, cs_coupon_amt#62, cs_net_profit#63, cs_sold_date_sk#64, cd_dep_count#67, c_current_cdemo_sk#69, c_current_addr_sk#70, c_birth_year#71]
Right output [1]: [cd_demo_sk#72]
Arguments: [c_current_cdemo_sk#69], [cd_demo_sk#72], Inner, BuildRight

(51) CometProject
Input [12]: [cs_item_sk#58, cs_quantity#59, cs_list_price#60, cs_sales_price#61, cs_coupon_amt#62, cs_net_profit#63, cs_sold_date_sk#64, cd_dep_count#67, c_current_cdemo_sk#69, c_current_addr_sk#70, c_birth_year#71, cd_demo_sk#72]
Arguments: [cs_item_sk#58, cs_quantity#59, cs_list_price#60, cs_sales_price#61, cs_coupon_amt#62, cs_net_profit#63, cs_sold_date_sk#64, cd_dep_count#67, c_current_addr_sk#70, c_birth_year#71], [cs_item_sk#58, cs_quantity#59, cs_list_price#60, cs_sales_price#61, cs_coupon_amt#62, cs_net_profit#63, cs_sold_date_sk#64, cd_dep_count#67, c_current_addr_sk#70, c_birth_year#71]

(52) CometScan [native_iceberg_compat] parquet spark_catalog.default.customer_address
Output [3]: [ca_address_sk#73, ca_state#74, ca_country#75]
Batched: true
Location [not included in comparison]/{warehouse_dir}/customer_address]
PushedFilters: [IsNotNull(ca_address_sk)]
ReadSchema: struct<ca_address_sk:int,ca_state:string,ca_country:string>

(53) CometFilter
Input [3]: [ca_address_sk#73, ca_state#74, ca_country#75]
Condition : (staticinvoke(class org.apache.spark.sql.catalyst.util.CharVarcharCodegenUtils, StringType, readSidePadding, ca_state#74, 2, true, false, true) IN (ND,WI,AL,NC,OK,MS,TN) AND isnotnull(ca_address_sk#73))

(54) CometProject
Input [3]: [ca_address_sk#73, ca_state#74, ca_country#75]
Arguments: [ca_address_sk#73, ca_state#25, ca_country#75], [ca_address_sk#73, staticinvoke(class org.apache.spark.sql.catalyst.util.CharVarcharCodegenUtils, StringType, readSidePadding, ca_state#74, 2, true, false, true) AS ca_state#25, ca_country#75]

(55) CometBroadcastExchange
Input [3]: [ca_address_sk#73, ca_state#25, ca_country#75]
Arguments: [ca_address_sk#73, ca_state#25, ca_country#75]

(56) CometBroadcastHashJoin
Left output [10]: [cs_item_sk#58, cs_quantity#59, cs_list_price#60, cs_sales_price#61, cs_coupon_amt#62, cs_net_profit#63, cs_sold_date_sk#64, cd_dep_count#67, c_current_addr_sk#70, c_birth_year#71]
Right output [3]: [ca_address_sk#73, ca_state#25, ca_country#75]
Arguments: [c_current_addr_sk#70], [ca_address_sk#73], Inner, BuildRight

(57) CometProject
Input [13]: [cs_item_sk#58, cs_quantity#59, cs_list_price#60, cs_sales_price#61, cs_coupon_amt#62, cs_net_profit#63, cs_sold_date_sk#64, cd_dep_count#67, c_current_addr_sk#70, c_birth_year#71, ca_address_sk#73, ca_state#25, ca_country#75]
Arguments: [cs_item_sk#58, cs_quantity#59, cs_list_price#60, cs_sales_price#61, cs_coupon_amt#62, cs_net_profit#63, cs_sold_date_sk#64, cd_dep_count#67, c_birth_year#71, ca_state#25, ca_country#75], [cs_item_sk#58, cs_quantity#59, cs_list_price#60, cs_sales_price#61, cs_coupon_amt#62, cs_net_profit#63, cs_sold_date_sk#64, cd_dep_count#67, c_birth_year#71, ca_state#25, ca_country#75]

(58) ReusedExchange [Reuses operator id: 29]
Output [1]: [d_date_sk#76]

(59) CometBroadcastHashJoin
Left output [11]: [cs_item_sk#58, cs_quantity#59, cs_list_price#60, cs_sales_price#61, cs_coupon_amt#62, cs_net_profit#63, cs_sold_date_sk#64, cd_dep_count#67, c_birth_year#71, ca_state#25, ca_country#75]
Right output [1]: [d_date_sk#76]
Arguments: [cs_sold_date_sk#64], [d_date_sk#76], Inner, BuildRight

(60) CometProject
Input [12]: [cs_item_sk#58, cs_quantity#59, cs_list_price#60, cs_sales_price#61, cs_coupon_amt#62, cs_net_profit#63, cs_sold_date_sk#64, cd_dep_count#67, c_birth_year#71, ca_state#25, ca_country#75, d_date_sk#76]
Arguments: [cs_item_sk#58, cs_quantity#59, cs_list_price#60, cs_sales_price#61, cs_coupon_amt#62, cs_net_profit#63, cd_dep_count#67, c_birth_year#71, ca_state#25, ca_country#75], [cs_item_sk#58, cs_quantity#59, cs_list_price#60, cs_sales_price#61, cs_coupon_amt#62, cs_net_profit#63, cd_dep_count#67, c_birth_year#71, ca_state#25, ca_country#75]

(61) ReusedExchange [Reuses operator id: 35]
Output [2]: [i_item_sk#77, i_item_id#30]

(62) CometBroadcastHashJoin
Left output [10]: [cs_item_sk#58, cs_quantity#59, cs_list_price#60, cs_sales_price#61, cs_coupon_amt#62, cs_net_profit#63, cd_dep_count#67, c_birth_year#71, ca_state#25, ca_country#75]
Right output [2]: [i_item_sk#77, i_item_id#30]
Arguments: [cs_item_sk#58], [i_item_sk#77], Inner, BuildRight

(63) CometProject
Input [12]: [cs_item_sk#58, cs_quantity#59, cs_list_price#60, cs_sales_price#61, cs_coupon_amt#62, cs_net_profit#63, cd_dep_count#67, c_birth_year#71, ca_state#25, ca_country#75, i_item_sk#77, i_item_id#30]
Arguments: [i_item_id#30, ca_country#75, ca_state#25, agg1#78, agg2#79, agg3#80, agg4#81, agg5#82, agg6#83, agg7#84], [i_item_id#30, ca_country#75, ca_state#25, cast(cs_quantity#59 as decimal(12,2)) AS agg1#78, cast(cs_list_price#60 as decimal(12,2)) AS agg2#79, cast(cs_coupon_amt#62 as decimal(12,2)) AS agg3#80, cast(cs_sales_price#61 as decimal(12,2)) AS agg4#81, cast(cs_net_profit#63 as decimal(12,2)) AS agg5#82, cast(c_birth_year#71 as decimal(12,2)) AS agg6#83, cast(cd_dep_count#67 as decimal(12,2)) AS agg7#84]

(64) CometHashAggregate
Input [10]: [i_item_id#30, ca_country#75, ca_state#25, agg1#78, agg2#79, agg3#80, agg4#81, agg5#82, agg6#83, agg7#84]
Keys [3]: [i_item_id#30, ca_country#75, ca_state#25]
Functions [7]: [partial_avg(agg1#78), partial_avg(agg2#79), partial_avg(agg3#80), partial_avg(agg4#81), partial_avg(agg5#82), partial_avg(agg6#83), partial_avg(agg7#84)]

(65) CometExchange
Input [17]: [i_item_id#30, ca_country#75, ca_state#25, sum#85, count#86, sum#87, count#88, sum#89, count#90, sum#91, count#92, sum#93, count#94, sum#95, count#96, sum#97, count#98]
Arguments: hashpartitioning(i_item_id#30, ca_country#75, ca_state#25, 5), ENSURE_REQUIREMENTS, CometNativeShuffle, [plan_id=2]

(66) CometHashAggregate
Input [17]: [i_item_id#30, ca_country#75, ca_state#25, sum#85, count#86, sum#87, count#88, sum#89, count#90, sum#91, count#92, sum#93, count#94, sum#95, count#96, sum#97, count#98]
Keys [3]: [i_item_id#30, ca_country#75, ca_state#25]
Functions [7]: [avg(agg1#78), avg(agg2#79), avg(agg3#80), avg(agg4#81), avg(agg5#82), avg(agg6#83), avg(agg7#84)]

(67) CometScan [native_iceberg_compat] parquet spark_catalog.default.catalog_sales
Output [9]: [cs_bill_customer_sk#99, cs_bill_cdemo_sk#100, cs_item_sk#101, cs_quantity#102, cs_list_price#103, cs_sales_price#104, cs_coupon_amt#105, cs_net_profit#106, cs_sold_date_sk#107]
Batched: true
Location: InMemoryFileIndex []
PartitionFilters: [isnotnull(cs_sold_date_sk#107), dynamicpruningexpression(cs_sold_date_sk#107 IN dynamicpruning#108)]
PushedFilters: [IsNotNull(cs_bill_cdemo_sk), IsNotNull(cs_bill_customer_sk), IsNotNull(cs_item_sk)]
ReadSchema: struct<cs_bill_customer_sk:int,cs_bill_cdemo_sk:int,cs_item_sk:int,cs_quantity:int,cs_list_price:decimal(7,2),cs_sales_price:decimal(7,2),cs_coupon_amt:decimal(7,2),cs_net_profit:decimal(7,2)>

(68) CometFilter
Input [9]: [cs_bill_customer_sk#99, cs_bill_cdemo_sk#100, cs_item_sk#101, cs_quantity#102, cs_list_price#103, cs_sales_price#104, cs_coupon_amt#105, cs_net_profit#106, cs_sold_date_sk#107]
Condition : ((isnotnull(cs_bill_cdemo_sk#100) AND isnotnull(cs_bill_customer_sk#99)) AND isnotnull(cs_item_sk#101))

(69) ReusedExchange [Reuses operator id: 6]
Output [2]: [cd_demo_sk#109, cd_dep_count#110]

(70) CometBroadcastHashJoin
Left output [9]: [cs_bill_customer_sk#99, cs_bill_cdemo_sk#100, cs_item_sk#101, cs_quantity#102, cs_list_price#103, cs_sales_price#104, cs_coupon_amt#105, cs_net_profit#106, cs_sold_date_sk#107]
Right output [2]: [cd_demo_sk#109, cd_dep_count#110]
Arguments: [cs_bill_cdemo_sk#100], [cd_demo_sk#109], Inner, BuildRight

(71) CometProject
Input [11]: [cs_bill_customer_sk#99, cs_bill_cdemo_sk#100, cs_item_sk#101, cs_quantity#102, cs_list_price#103, cs_sales_price#104, cs_coupon_amt#105, cs_net_profit#106, cs_sold_date_sk#107, cd_demo_sk#109, cd_dep_count#110]
Arguments: [cs_bill_customer_sk#99, cs_item_sk#101, cs_quantity#102, cs_list_price#103, cs_sales_price#104, cs_coupon_amt#105, cs_net_profit#106, cs_sold_date_sk#107, cd_dep_count#110], [cs_bill_customer_sk#99, cs_item_sk#101, cs_quantity#102, cs_list_price#103, cs_sales_price#104, cs_coupon_amt#105, cs_net_profit#106, cs_sold_date_sk#107, cd_dep_count#110]

(72) ReusedExchange [Reuses operator id: 12]
Output [4]: [c_customer_sk#111, c_current_cdemo_sk#112, c_current_addr_sk#113, c_birth_year#114]

(73) CometBroadcastHashJoin
Left output [9]: [cs_bill_customer_sk#99, cs_item_sk#101, cs_quantity#102, cs_list_price#103, cs_sales_price#104, cs_coupon_amt#105, cs_net_profit#106, cs_sold_date_sk#107, cd_dep_count#110]
Right output [4]: [c_customer_sk#111, c_current_cdemo_sk#112, c_current_addr_sk#113, c_birth_year#114]
Arguments: [cs_bill_customer_sk#99], [c_customer_sk#111], Inner, BuildRight

(74) CometProject
Input [13]: [cs_bill_customer_sk#99, cs_item_sk#101, cs_quantity#102, cs_list_price#103, cs_sales_price#104, cs_coupon_amt#105, cs_net_profit#106, cs_sold_date_sk#107, cd_dep_count#110, c_customer_sk#111, c_current_cdemo_sk#112, c_current_addr_sk#113, c_birth_year#114]
Arguments: [cs_item_sk#101, cs_quantity#102, cs_list_price#103, cs_sales_price#104, cs_coupon_amt#105, cs_net_profit#106, cs_sold_date_sk#107, cd_dep_count#110, c_current_cdemo_sk#112, c_current_addr_sk#113, c_birth_year#114], [cs_item_sk#101, cs_quantity#102, cs_list_price#103, cs_sales_price#104, cs_coupon_amt#105, cs_net_profit#106, cs_sold_date_sk#107, cd_dep_count#110, c_current_cdemo_sk#112, c_current_addr_sk#113, c_birth_year#114]

(75) ReusedExchange [Reuses operator id: 17]
Output [1]: [cd_demo_sk#115]

(76) CometBroadcastHashJoin
Left output [11]: [cs_item_sk#101, cs_quantity#102, cs_list_price#103, cs_sales_price#104, cs_coupon_amt#105, cs_net_profit#106, cs_sold_date_sk#107, cd_dep_count#110, c_current_cdemo_sk#112, c_current_addr_sk#113, c_birth_year#114]
Right output [1]: [cd_demo_sk#115]
Arguments: [c_current_cdemo_sk#112], [cd_demo_sk#115], Inner, BuildRight

(77) CometProject
Input [12]: [cs_item_sk#101, cs_quantity#102, cs_list_price#103, cs_sales_price#104, cs_coupon_amt#105, cs_net_profit#106, cs_sold_date_sk#107, cd_dep_count#110, c_current_cdemo_sk#112, c_current_addr_sk#113, c_birth_year#114, cd_demo_sk#115]
Arguments: [cs_item_sk#101, cs_quantity#102, cs_list_price#103, cs_sales_price#104, cs_coupon_amt#105, cs_net_profit#106, cs_sold_date_sk#107, cd_dep_count#110, c_current_addr_sk#113, c_birth_year#114], [cs_item_sk#101, cs_quantity#102, cs_list_price#103, cs_sales_price#104, cs_coupon_amt#105, cs_net_profit#106, cs_sold_date_sk#107, cd_dep_count#110, c_current_addr_sk#113, c_birth_year#114]

(78) CometScan [native_iceberg_compat] parquet spark_catalog.default.customer_address
Output [3]: [ca_address_sk#116, ca_state#117, ca_country#118]
Batched: true
Location [not included in comparison]/{warehouse_dir}/customer_address]
PushedFilters: [IsNotNull(ca_address_sk)]
ReadSchema: struct<ca_address_sk:int,ca_state:string,ca_country:string>

(79) CometFilter
Input [3]: [ca_address_sk#116, ca_state#117, ca_country#118]
Condition : (staticinvoke(class org.apache.spark.sql.catalyst.util.CharVarcharCodegenUtils, StringType, readSidePadding, ca_state#117, 2, true, false, true) IN (ND,WI,AL,NC,OK,MS,TN) AND isnotnull(ca_address_sk#116))

(80) CometProject
Input [3]: [ca_address_sk#116, ca_state#117, ca_country#118]
Arguments: [ca_address_sk#116, ca_country#118], [ca_address_sk#116, ca_country#118]

(81) CometBroadcastExchange
Input [2]: [ca_address_sk#116, ca_country#118]
Arguments: [ca_address_sk#116, ca_country#118]

(82) CometBroadcastHashJoin
Left output [10]: [cs_item_sk#101, cs_quantity#102, cs_list_price#103, cs_sales_price#104, cs_coupon_amt#105, cs_net_profit#106, cs_sold_date_sk#107, cd_dep_count#110, c_current_addr_sk#113, c_birth_year#114]
Right output [2]: [ca_address_sk#116, ca_country#118]
Arguments: [c_current_addr_sk#113], [ca_address_sk#116], Inner, BuildRight

(83) CometProject
Input [12]: [cs_item_sk#101, cs_quantity#102, cs_list_price#103, cs_sales_price#104, cs_coupon_amt#105, cs_net_profit#106, cs_sold_date_sk#107, cd_dep_count#110, c_current_addr_sk#113, c_birth_year#114, ca_address_sk#116, ca_country#118]
Arguments: [cs_item_sk#101, cs_quantity#102, cs_list_price#103, cs_sales_price#104, cs_coupon_amt#105, cs_net_profit#106, cs_sold_date_sk#107, cd_dep_count#110, c_birth_year#114, ca_country#118], [cs_item_sk#101, cs_quantity#102, cs_list_price#103, cs_sales_price#104, cs_coupon_amt#105, cs_net_profit#106, cs_sold_date_sk#107, cd_dep_count#110, c_birth_year#114, ca_country#118]

(84) ReusedExchange [Reuses operator id: 29]
Output [1]: [d_date_sk#119]

(85) CometBroadcastHashJoin
Left output [10]: [cs_item_sk#101, cs_quantity#102, cs_list_price#103, cs_sales_price#104, cs_coupon_amt#105, cs_net_profit#106, cs_sold_date_sk#107, cd_dep_count#110, c_birth_year#114, ca_country#118]
Right output [1]: [d_date_sk#119]
Arguments: [cs_sold_date_sk#107], [d_date_sk#119], Inner, BuildRight

(86) CometProject
Input [11]: [cs_item_sk#101, cs_quantity#102, cs_list_price#103, cs_sales_price#104, cs_coupon_amt#105, cs_net_profit#106, cs_sold_date_sk#107, cd_dep_count#110, c_birth_year#114, ca_country#118, d_date_sk#119]
Arguments: [cs_item_sk#101, cs_quantity#102, cs_list_price#103, cs_sales_price#104, cs_coupon_amt#105, cs_net_profit#106, cd_dep_count#110, c_birth_year#114, ca_country#118], [cs_item_sk#101, cs_quantity#102, cs_list_price#103, cs_sales_price#104, cs_coupon_amt#105, cs_net_profit#106, cd_dep_count#110, c_birth_year#114, ca_country#118]

(87) ReusedExchange [Reuses operator id: 35]
Output [2]: [i_item_sk#120, i_item_id#30]

(88) CometBroadcastHashJoin
Left output [9]: [cs_item_sk#101, cs_quantity#102, cs_list_price#103, cs_sales_price#104, cs_coupon_amt#105, cs_net_profit#106, cd_dep_count#110, c_birth_year#114, ca_country#118]
Right output [2]: [i_item_sk#120, i_item_id#30]
Arguments: [cs_item_sk#101], [i_item_sk#120], Inner, BuildRight

(89) CometProject
Input [11]: [cs_item_sk#101, cs_quantity#102, cs_list_price#103, cs_sales_price#104, cs_coupon_amt#105, cs_net_profit#106, cd_dep_count#110, c_birth_year#114, ca_country#118, i_item_sk#120, i_item_id#30]
Arguments: [i_item_id#30, ca_country#118, agg1#121, agg2#122, agg3#123, agg4#124, agg5#125, agg6#126, agg7#127], [i_item_id#30, ca_country#118, cast(cs_quantity#102 as decimal(12,2)) AS agg1#121, cast(cs_list_price#103 as decimal(12,2)) AS agg2#122, cast(cs_coupon_amt#105 as decimal(12,2)) AS agg3#123, cast(cs_sales_price#104 as decimal(12,2)) AS agg4#124, cast(cs_net_profit#106 as decimal(12,2)) AS agg5#125, cast(c_birth_year#114 as decimal(12,2)) AS agg6#126, cast(cd_dep_count#110 as decimal(12,2)) AS agg7#127]

(90) CometHashAggregate
Input [9]: [i_item_id#30, ca_country#118, agg1#121, agg2#122, agg3#123, agg4#124, agg5#125, agg6#126, agg7#127]
Keys [2]: [i_item_id#30, ca_country#118]
Functions [7]: [partial_avg(agg1#121), partial_avg(agg2#122), partial_avg(agg3#123), partial_avg(agg4#124), partial_avg(agg5#125), partial_avg(agg6#126), partial_avg(agg7#127)]

(91) CometExchange
Input [16]: [i_item_id#30, ca_country#118, sum#128, count#129, sum#130, count#131, sum#132, count#133, sum#134, count#135, sum#136, count#137, sum#138, count#139, sum#140, count#141]
Arguments: hashpartitioning(i_item_id#30, ca_country#118, 5), ENSURE_REQUIREMENTS, CometNativeShuffle, [plan_id=3]

(92) CometHashAggregate
Input [16]: [i_item_id#30, ca_country#118, sum#128, count#129, sum#130, count#131, sum#132, count#133, sum#134, count#135, sum#136, count#137, sum#138, count#139, sum#140, count#141]
Keys [2]: [i_item_id#30, ca_country#118]
Functions [7]: [avg(agg1#121), avg(agg2#122), avg(agg3#123), avg(agg4#124), avg(agg5#125), avg(agg6#126), avg(agg7#127)]

(93) CometScan [native_iceberg_compat] parquet spark_catalog.default.catalog_sales
Output [9]: [cs_bill_customer_sk#142, cs_bill_cdemo_sk#143, cs_item_sk#144, cs_quantity#145, cs_list_price#146, cs_sales_price#147, cs_coupon_amt#148, cs_net_profit#149, cs_sold_date_sk#150]
Batched: true
Location: InMemoryFileIndex []
PartitionFilters: [isnotnull(cs_sold_date_sk#150), dynamicpruningexpression(cs_sold_date_sk#150 IN dynamicpruning#151)]
PushedFilters: [IsNotNull(cs_bill_cdemo_sk), IsNotNull(cs_bill_customer_sk), IsNotNull(cs_item_sk)]
ReadSchema: struct<cs_bill_customer_sk:int,cs_bill_cdemo_sk:int,cs_item_sk:int,cs_quantity:int,cs_list_price:decimal(7,2),cs_sales_price:decimal(7,2),cs_coupon_amt:decimal(7,2),cs_net_profit:decimal(7,2)>

(94) CometFilter
Input [9]: [cs_bill_customer_sk#142, cs_bill_cdemo_sk#143, cs_item_sk#144, cs_quantity#145, cs_list_price#146, cs_sales_price#147, cs_coupon_amt#148, cs_net_profit#149, cs_sold_date_sk#150]
Condition : ((isnotnull(cs_bill_cdemo_sk#143) AND isnotnull(cs_bill_customer_sk#142)) AND isnotnull(cs_item_sk#144))

(95) ReusedExchange [Reuses operator id: 6]
Output [2]: [cd_demo_sk#152, cd_dep_count#153]

(96) CometBroadcastHashJoin
Left output [9]: [cs_bill_customer_sk#142, cs_bill_cdemo_sk#143, cs_item_sk#144, cs_quantity#145, cs_list_price#146, cs_sales_price#147, cs_coupon_amt#148, cs_net_profit#149, cs_sold_date_sk#150]
Right output [2]: [cd_demo_sk#152, cd_dep_count#153]
Arguments: [cs_bill_cdemo_sk#143], [cd_demo_sk#152], Inner, BuildRight

(97) CometProject
Input [11]: [cs_bill_customer_sk#142, cs_bill_cdemo_sk#143, cs_item_sk#144, cs_quantity#145, cs_list_price#146, cs_sales_price#147, cs_coupon_amt#148, cs_net_profit#149, cs_sold_date_sk#150, cd_demo_sk#152, cd_dep_count#153]
Arguments: [cs_bill_customer_sk#142, cs_item_sk#144, cs_quantity#145, cs_list_price#146, cs_sales_price#147, cs_coupon_amt#148, cs_net_profit#149, cs_sold_date_sk#150, cd_dep_count#153], [cs_bill_customer_sk#142, cs_item_sk#144, cs_quantity#145, cs_list_price#146, cs_sales_price#147, cs_coupon_amt#148, cs_net_profit#149, cs_sold_date_sk#150, cd_dep_count#153]

(98) ReusedExchange [Reuses operator id: 12]
Output [4]: [c_customer_sk#154, c_current_cdemo_sk#155, c_current_addr_sk#156, c_birth_year#157]

(99) CometBroadcastHashJoin
Left output [9]: [cs_bill_customer_sk#142, cs_item_sk#144, cs_quantity#145, cs_list_price#146, cs_sales_price#147, cs_coupon_amt#148, cs_net_profit#149, cs_sold_date_sk#150, cd_dep_count#153]
Right output [4]: [c_customer_sk#154, c_current_cdemo_sk#155, c_current_addr_sk#156, c_birth_year#157]
Arguments: [cs_bill_customer_sk#142], [c_customer_sk#154], Inner, BuildRight

(100) CometProject
Input [13]: [cs_bill_customer_sk#142, cs_item_sk#144, cs_quantity#145, cs_list_price#146, cs_sales_price#147, cs_coupon_amt#148, cs_net_profit#149, cs_sold_date_sk#150, cd_dep_count#153, c_customer_sk#154, c_current_cdemo_sk#155, c_current_addr_sk#156, c_birth_year#157]
Arguments: [cs_item_sk#144, cs_quantity#145, cs_list_price#146, cs_sales_price#147, cs_coupon_amt#148, cs_net_profit#149, cs_sold_date_sk#150, cd_dep_count#153, c_current_cdemo_sk#155, c_current_addr_sk#156, c_birth_year#157], [cs_item_sk#144, cs_quantity#145, cs_list_price#146, cs_sales_price#147, cs_coupon_amt#148, cs_net_profit#149, cs_sold_date_sk#150, cd_dep_count#153, c_current_cdemo_sk#155, c_current_addr_sk#156, c_birth_year#157]

(101) ReusedExchange [Reuses operator id: 17]
Output [1]: [cd_demo_sk#158]

(102) CometBroadcastHashJoin
Left output [11]: [cs_item_sk#144, cs_quantity#145, cs_list_price#146, cs_sales_price#147, cs_coupon_amt#148, cs_net_profit#149, cs_sold_date_sk#150, cd_dep_count#153, c_current_cdemo_sk#155, c_current_addr_sk#156, c_birth_year#157]
Right output [1]: [cd_demo_sk#158]
Arguments: [c_current_cdemo_sk#155], [cd_demo_sk#158], Inner, BuildRight

(103) CometProject
Input [12]: [cs_item_sk#144, cs_quantity#145, cs_list_price#146, cs_sales_price#147, cs_coupon_amt#148, cs_net_profit#149, cs_sold_date_sk#150, cd_dep_count#153, c_current_cdemo_sk#155, c_current_addr_sk#156, c_birth_year#157, cd_demo_sk#158]
Arguments: [cs_item_sk#144, cs_quantity#145, cs_list_price#146, cs_sales_price#147, cs_coupon_amt#148, cs_net_profit#149, cs_sold_date_sk#150, cd_dep_count#153, c_current_addr_sk#156, c_birth_year#157], [cs_item_sk#144, cs_quantity#145, cs_list_price#146, cs_sales_price#147, cs_coupon_amt#148, cs_net_profit#149, cs_sold_date_sk#150, cd_dep_count#153, c_current_addr_sk#156, c_birth_year#157]

(104) CometScan [native_iceberg_compat] parquet spark_catalog.default.customer_address
Output [2]: [ca_address_sk#159, ca_state#160]
Batched: true
Location [not included in comparison]/{warehouse_dir}/customer_address]
PushedFilters: [IsNotNull(ca_address_sk)]
ReadSchema: struct<ca_address_sk:int,ca_state:string>

(105) CometFilter
Input [2]: [ca_address_sk#159, ca_state#160]
Condition : (staticinvoke(class org.apache.spark.sql.catalyst.util.CharVarcharCodegenUtils, StringType, readSidePadding, ca_state#160, 2, true, false, true) IN (ND,WI,AL,NC,OK,MS,TN) AND isnotnull(ca_address_sk#159))

(106) CometProject
Input [2]: [ca_address_sk#159, ca_state#160]
Arguments: [ca_address_sk#159], [ca_address_sk#159]

(107) CometBroadcastExchange
Input [1]: [ca_address_sk#159]
Arguments: [ca_address_sk#159]

(108) CometBroadcastHashJoin
Left output [10]: [cs_item_sk#144, cs_quantity#145, cs_list_price#146, cs_sales_price#147, cs_coupon_amt#148, cs_net_profit#149, cs_sold_date_sk#150, cd_dep_count#153, c_current_addr_sk#156, c_birth_year#157]
Right output [1]: [ca_address_sk#159]
Arguments: [c_current_addr_sk#156], [ca_address_sk#159], Inner, BuildRight

(109) CometProject
Input [11]: [cs_item_sk#144, cs_quantity#145, cs_list_price#146, cs_sales_price#147, cs_coupon_amt#148, cs_net_profit#149, cs_sold_date_sk#150, cd_dep_count#153, c_current_addr_sk#156, c_birth_year#157, ca_address_sk#159]
Arguments: [cs_item_sk#144, cs_quantity#145, cs_list_price#146, cs_sales_price#147, cs_coupon_amt#148, cs_net_profit#149, cs_sold_date_sk#150, cd_dep_count#153, c_birth_year#157], [cs_item_sk#144, cs_quantity#145, cs_list_price#146, cs_sales_price#147, cs_coupon_amt#148, cs_net_profit#149, cs_sold_date_sk#150, cd_dep_count#153, c_birth_year#157]

(110) ReusedExchange [Reuses operator id: 29]
Output [1]: [d_date_sk#161]

(111) CometBroadcastHashJoin
Left output [9]: [cs_item_sk#144, cs_quantity#145, cs_list_price#146, cs_sales_price#147, cs_coupon_amt#148, cs_net_profit#149, cs_sold_date_sk#150, cd_dep_count#153, c_birth_year#157]
Right output [1]: [d_date_sk#161]
Arguments: [cs_sold_date_sk#150], [d_date_sk#161], Inner, BuildRight

(112) CometProject
Input [10]: [cs_item_sk#144, cs_quantity#145, cs_list_price#146, cs_sales_price#147, cs_coupon_amt#148, cs_net_profit#149, cs_sold_date_sk#150, cd_dep_count#153, c_birth_year#157, d_date_sk#161]
Arguments: [cs_item_sk#144, cs_quantity#145, cs_list_price#146, cs_sales_price#147, cs_coupon_amt#148, cs_net_profit#149, cd_dep_count#153, c_birth_year#157], [cs_item_sk#144, cs_quantity#145, cs_list_price#146, cs_sales_price#147, cs_coupon_amt#148, cs_net_profit#149, cd_dep_count#153, c_birth_year#157]

(113) ReusedExchange [Reuses operator id: 35]
Output [2]: [i_item_sk#162, i_item_id#30]

(114) CometBroadcastHashJoin
Left output [8]: [cs_item_sk#144, cs_quantity#145, cs_list_price#146, cs_sales_price#147, cs_coupon_amt#148, cs_net_profit#149, cd_dep_count#153, c_birth_year#157]
Right output [2]: [i_item_sk#162, i_item_id#30]
Arguments: [cs_item_sk#144], [i_item_sk#162], Inner, BuildRight

(115) CometProject
Input [10]: [cs_item_sk#144, cs_quantity#145, cs_list_price#146, cs_sales_price#147, cs_coupon_amt#148, cs_net_profit#149, cd_dep_count#153, c_birth_year#157, i_item_sk#162, i_item_id#30]
Arguments: [i_item_id#30, agg1#163, agg2#164, agg3#165, agg4#166, agg5#167, agg6#168, agg7#169], [i_item_id#30, cast(cs_quantity#145 as decimal(12,2)) AS agg1#163, cast(cs_list_price#146 as decimal(12,2)) AS agg2#164, cast(cs_coupon_amt#148 as decimal(12,2)) AS agg3#165, cast(cs_sales_price#147 as decimal(12,2)) AS agg4#166, cast(cs_net_profit#149 as decimal(12,2)) AS agg5#167, cast(c_birth_year#157 as decimal(12,2)) AS agg6#168, cast(cd_dep_count#153 as decimal(12,2)) AS agg7#169]

(116) CometHashAggregate
Input [8]: [i_item_id#30, agg1#163, agg2#164, agg3#165, agg4#166, agg5#167, agg6#168, agg7#169]
Keys [1]: [i_item_id#30]
Functions [7]: [partial_avg(agg1#163), partial_avg(agg2#164), partial_avg(agg3#165), partial_avg(agg4#166), partial_avg(agg5#167), partial_avg(agg6#168), partial_avg(agg7#169)]

(117) CometExchange
Input [15]: [i_item_id#30, sum#170, count#171, sum#172, count#173, sum#174, count#175, sum#176, count#177, sum#178, count#179, sum#180, count#181, sum#182, count#183]
Arguments: hashpartitioning(i_item_id#30, 5), ENSURE_REQUIREMENTS, CometNativeShuffle, [plan_id=4]

(118) CometHashAggregate
Input [15]: [i_item_id#30, sum#170, count#171, sum#172, count#173, sum#174, count#175, sum#176, count#177, sum#178, count#179, sum#180, count#181, sum#182, count#183]
Keys [1]: [i_item_id#30]
Functions [7]: [avg(agg1#163), avg(agg2#164), avg(agg3#165), avg(agg4#166), avg(agg5#167), avg(agg6#168), avg(agg7#169)]

(119) CometScan [native_iceberg_compat] parquet spark_catalog.default.catalog_sales
Output [9]: [cs_bill_customer_sk#184, cs_bill_cdemo_sk#185, cs_item_sk#186, cs_quantity#187, cs_list_price#188, cs_sales_price#189, cs_coupon_amt#190, cs_net_profit#191, cs_sold_date_sk#192]
Batched: true
Location: InMemoryFileIndex []
PartitionFilters: [isnotnull(cs_sold_date_sk#192), dynamicpruningexpression(cs_sold_date_sk#192 IN dynamicpruning#193)]
PushedFilters: [IsNotNull(cs_bill_cdemo_sk), IsNotNull(cs_bill_customer_sk), IsNotNull(cs_item_sk)]
ReadSchema: struct<cs_bill_customer_sk:int,cs_bill_cdemo_sk:int,cs_item_sk:int,cs_quantity:int,cs_list_price:decimal(7,2),cs_sales_price:decimal(7,2),cs_coupon_amt:decimal(7,2),cs_net_profit:decimal(7,2)>

(120) CometFilter
Input [9]: [cs_bill_customer_sk#184, cs_bill_cdemo_sk#185, cs_item_sk#186, cs_quantity#187, cs_list_price#188, cs_sales_price#189, cs_coupon_amt#190, cs_net_profit#191, cs_sold_date_sk#192]
Condition : ((isnotnull(cs_bill_cdemo_sk#185) AND isnotnull(cs_bill_customer_sk#184)) AND isnotnull(cs_item_sk#186))

(121) ReusedExchange [Reuses operator id: 6]
Output [2]: [cd_demo_sk#194, cd_dep_count#195]

(122) CometBroadcastHashJoin
Left output [9]: [cs_bill_customer_sk#184, cs_bill_cdemo_sk#185, cs_item_sk#186, cs_quantity#187, cs_list_price#188, cs_sales_price#189, cs_coupon_amt#190, cs_net_profit#191, cs_sold_date_sk#192]
Right output [2]: [cd_demo_sk#194, cd_dep_count#195]
Arguments: [cs_bill_cdemo_sk#185], [cd_demo_sk#194], Inner, BuildRight

(123) CometProject
Input [11]: [cs_bill_customer_sk#184, cs_bill_cdemo_sk#185, cs_item_sk#186, cs_quantity#187, cs_list_price#188, cs_sales_price#189, cs_coupon_amt#190, cs_net_profit#191, cs_sold_date_sk#192, cd_demo_sk#194, cd_dep_count#195]
Arguments: [cs_bill_customer_sk#184, cs_item_sk#186, cs_quantity#187, cs_list_price#188, cs_sales_price#189, cs_coupon_amt#190, cs_net_profit#191, cs_sold_date_sk#192, cd_dep_count#195], [cs_bill_customer_sk#184, cs_item_sk#186, cs_quantity#187, cs_list_price#188, cs_sales_price#189, cs_coupon_amt#190, cs_net_profit#191, cs_sold_date_sk#192, cd_dep_count#195]

(124) ReusedExchange [Reuses operator id: 12]
Output [4]: [c_customer_sk#196, c_current_cdemo_sk#197, c_current_addr_sk#198, c_birth_year#199]

(125) CometBroadcastHashJoin
Left output [9]: [cs_bill_customer_sk#184, cs_item_sk#186, cs_quantity#187, cs_list_price#188, cs_sales_price#189, cs_coupon_amt#190, cs_net_profit#191, cs_sold_date_sk#192, cd_dep_count#195]
Right output [4]: [c_customer_sk#196, c_current_cdemo_sk#197, c_current_addr_sk#198, c_birth_year#199]
Arguments: [cs_bill_customer_sk#184], [c_customer_sk#196], Inner, BuildRight

(126) CometProject
Input [13]: [cs_bill_customer_sk#184, cs_item_sk#186, cs_quantity#187, cs_list_price#188, cs_sales_price#189, cs_coupon_amt#190, cs_net_profit#191, cs_sold_date_sk#192, cd_dep_count#195, c_customer_sk#196, c_current_cdemo_sk#197, c_current_addr_sk#198, c_birth_year#199]
Arguments: [cs_item_sk#186, cs_quantity#187, cs_list_price#188, cs_sales_price#189, cs_coupon_amt#190, cs_net_profit#191, cs_sold_date_sk#192, cd_dep_count#195, c_current_cdemo_sk#197, c_current_addr_sk#198, c_birth_year#199], [cs_item_sk#186, cs_quantity#187, cs_list_price#188, cs_sales_price#189, cs_coupon_amt#190, cs_net_profit#191, cs_sold_date_sk#192, cd_dep_count#195, c_current_cdemo_sk#197, c_current_addr_sk#198, c_birth_year#199]

(127) ReusedExchange [Reuses operator id: 17]
Output [1]: [cd_demo_sk#200]

(128) CometBroadcastHashJoin
Left output [11]: [cs_item_sk#186, cs_quantity#187, cs_list_price#188, cs_sales_price#189, cs_coupon_amt#190, cs_net_profit#191, cs_sold_date_sk#192, cd_dep_count#195, c_current_cdemo_sk#197, c_current_addr_sk#198, c_birth_year#199]
Right output [1]: [cd_demo_sk#200]
Arguments: [c_current_cdemo_sk#197], [cd_demo_sk#200], Inner, BuildRight

(129) CometProject
Input [12]: [cs_item_sk#186, cs_quantity#187, cs_list_price#188, cs_sales_price#189, cs_coupon_amt#190, cs_net_profit#191, cs_sold_date_sk#192, cd_dep_count#195, c_current_cdemo_sk#197, c_current_addr_sk#198, c_birth_year#199, cd_demo_sk#200]
Arguments: [cs_item_sk#186, cs_quantity#187, cs_list_price#188, cs_sales_price#189, cs_coupon_amt#190, cs_net_profit#191, cs_sold_date_sk#192, cd_dep_count#195, c_current_addr_sk#198, c_birth_year#199], [cs_item_sk#186, cs_quantity#187, cs_list_price#188, cs_sales_price#189, cs_coupon_amt#190, cs_net_profit#191, cs_sold_date_sk#192, cd_dep_count#195, c_current_addr_sk#198, c_birth_year#199]

(130) ReusedExchange [Reuses operator id: 107]
Output [1]: [ca_address_sk#201]

(131) CometBroadcastHashJoin
Left output [10]: [cs_item_sk#186, cs_quantity#187, cs_list_price#188, cs_sales_price#189, cs_coupon_amt#190, cs_net_profit#191, cs_sold_date_sk#192, cd_dep_count#195, c_current_addr_sk#198, c_birth_year#199]
Right output [1]: [ca_address_sk#201]
Arguments: [c_current_addr_sk#198], [ca_address_sk#201], Inner, BuildRight

(132) CometProject
Input [11]: [cs_item_sk#186, cs_quantity#187, cs_list_price#188, cs_sales_price#189, cs_coupon_amt#190, cs_net_profit#191, cs_sold_date_sk#192, cd_dep_count#195, c_current_addr_sk#198, c_birth_year#199, ca_address_sk#201]
Arguments: [cs_item_sk#186, cs_quantity#187, cs_list_price#188, cs_sales_price#189, cs_coupon_amt#190, cs_net_profit#191, cs_sold_date_sk#192, cd_dep_count#195, c_birth_year#199], [cs_item_sk#186, cs_quantity#187, cs_list_price#188, cs_sales_price#189, cs_coupon_amt#190, cs_net_profit#191, cs_sold_date_sk#192, cd_dep_count#195, c_birth_year#199]

(133) ReusedExchange [Reuses operator id: 29]
Output [1]: [d_date_sk#202]

(134) CometBroadcastHashJoin
Left output [9]: [cs_item_sk#186, cs_quantity#187, cs_list_price#188, cs_sales_price#189, cs_coupon_amt#190, cs_net_profit#191, cs_sold_date_sk#192, cd_dep_count#195, c_birth_year#199]
Right output [1]: [d_date_sk#202]
Arguments: [cs_sold_date_sk#192], [d_date_sk#202], Inner, BuildRight

(135) CometProject
Input [10]: [cs_item_sk#186, cs_quantity#187, cs_list_price#188, cs_sales_price#189, cs_coupon_amt#190, cs_net_profit#191, cs_sold_date_sk#192, cd_dep_count#195, c_birth_year#199, d_date_sk#202]
Arguments: [cs_item_sk#186, cs_quantity#187, cs_list_price#188, cs_sales_price#189, cs_coupon_amt#190, cs_net_profit#191, cd_dep_count#195, c_birth_year#199], [cs_item_sk#186, cs_quantity#187, cs_list_price#188, cs_sales_price#189, cs_coupon_amt#190, cs_net_profit#191, cd_dep_count#195, c_birth_year#199]

(136) CometScan [native_iceberg_compat] parquet spark_catalog.default.item
Output [1]: [i_item_sk#203]
Batched: true
Location [not included in comparison]/{warehouse_dir}/item]
PushedFilters: [IsNotNull(i_item_sk)]
ReadSchema: struct<i_item_sk:int>

(137) CometFilter
Input [1]: [i_item_sk#203]
Condition : isnotnull(i_item_sk#203)

(138) CometBroadcastExchange
Input [1]: [i_item_sk#203]
Arguments: [i_item_sk#203]

(139) CometBroadcastHashJoin
Left output [8]: [cs_item_sk#186, cs_quantity#187, cs_list_price#188, cs_sales_price#189, cs_coupon_amt#190, cs_net_profit#191, cd_dep_count#195, c_birth_year#199]
Right output [1]: [i_item_sk#203]
Arguments: [cs_item_sk#186], [i_item_sk#203], Inner, BuildRight

(140) CometProject
Input [9]: [cs_item_sk#186, cs_quantity#187, cs_list_price#188, cs_sales_price#189, cs_coupon_amt#190, cs_net_profit#191, cd_dep_count#195, c_birth_year#199, i_item_sk#203]
Arguments: [agg1#204, agg2#205, agg3#206, agg4#207, agg5#208, agg6#209, agg7#210], [cast(cs_quantity#187 as decimal(12,2)) AS agg1#204, cast(cs_list_price#188 as decimal(12,2)) AS agg2#205, cast(cs_coupon_amt#190 as decimal(12,2)) AS agg3#206, cast(cs_sales_price#189 as decimal(12,2)) AS agg4#207, cast(cs_net_profit#191 as decimal(12,2)) AS agg5#208, cast(c_birth_year#199 as decimal(12,2)) AS agg6#209, cast(cd_dep_count#195 as decimal(12,2)) AS agg7#210]

(141) CometHashAggregate
Input [7]: [agg1#204, agg2#205, agg3#206, agg4#207, agg5#208, agg6#209, agg7#210]
Keys: []
Functions [7]: [partial_avg(agg1#204), partial_avg(agg2#205), partial_avg(agg3#206), partial_avg(agg4#207), partial_avg(agg5#208), partial_avg(agg6#209), partial_avg(agg7#210)]

(142) CometExchange
Input [14]: [sum#211, count#212, sum#213, count#214, sum#215, count#216, sum#217, count#218, sum#219, count#220, sum#221, count#222, sum#223, count#224]
Arguments: SinglePartition, ENSURE_REQUIREMENTS, CometNativeShuffle, [plan_id=5]

(143) CometHashAggregate
Input [14]: [sum#211, count#212, sum#213, count#214, sum#215, count#216, sum#217, count#218, sum#219, count#220, sum#221, count#222, sum#223, count#224]
Keys: []
Functions [7]: [avg(agg1#204), avg(agg2#205), avg(agg3#206), avg(agg4#207), avg(agg5#208), avg(agg6#209), avg(agg7#210)]

(144) CometUnion
Child 0 Input [11]: [i_item_id#31, ca_country#32, ca_state#33, ca_county#34, agg1#225, agg2#226, agg3#227, agg4#228, agg5#229, agg6#230, agg7#231]
Child 1 Input [11]: [i_item_id#30, ca_country#75, ca_state#25, county#232, agg1#233, agg2#234, agg3#235, agg4#236, agg5#237, agg6#238, agg7#239]
Child 2 Input [11]: [i_item_id#30, ca_country#118, ca_state#240, county#241, agg1#242, agg2#243, agg3#244, agg4#245, agg5#246, agg6#247, agg7#248]
Child 3 Input [11]: [i_item_id#30, ca_country#249, ca_state#250, county#251, agg1#252, agg2#253, agg3#254, agg4#255, agg5#256, agg6#257, agg7#258]
Child 4 Input [11]: [i_item_id#259, ca_country#260, ca_state#261, county#262, agg1#263, agg2#264, agg3#265, agg4#266, agg5#267, agg6#268, agg7#269]

(145) CometTakeOrderedAndProject
Input [11]: [i_item_id#31, ca_country#32, ca_state#33, ca_county#34, agg1#225, agg2#226, agg3#227, agg4#228, agg5#229, agg6#230, agg7#231]
Arguments: TakeOrderedAndProject(limit=100, orderBy=[ca_country#32 ASC NULLS FIRST,ca_state#33 ASC NULLS FIRST,ca_county#34 ASC NULLS FIRST,i_item_id#31 ASC NULLS FIRST], output=[i_item_id#31,ca_country#32,ca_state#33,ca_county#34,agg1#225,agg2#226,agg3#227,agg4#228,agg5#229,agg6#230,agg7#231]), [i_item_id#31, ca_country#32, ca_state#33, ca_county#34, agg1#225, agg2#226, agg3#227, agg4#228, agg5#229, agg6#230, agg7#231], 100, 0, [ca_country#32 ASC NULLS FIRST, ca_state#33 ASC NULLS FIRST, ca_county#34 ASC NULLS FIRST, i_item_id#31 ASC NULLS FIRST], [i_item_id#31, ca_country#32, ca_state#33, ca_county#34, agg1#225, agg2#226, agg3#227, agg4#228, agg5#229, agg6#230, agg7#231]

(146) CometColumnarToRow [codegen id : 1]
Input [11]: [i_item_id#31, ca_country#32, ca_state#33, ca_county#34, agg1#225, agg2#226, agg3#227, agg4#228, agg5#229, agg6#230, agg7#231]

===== Subqueries =====

Subquery:1 Hosting operator id = 1 Hosting Expression = cs_sold_date_sk#9 IN dynamicpruning#10
BroadcastExchange (151)
+- * CometColumnarToRow (150)
   +- CometProject (149)
      +- CometFilter (148)
         +- CometScan [native_iceberg_compat] parquet spark_catalog.default.date_dim (147)


(147) CometScan [native_iceberg_compat] parquet spark_catalog.default.date_dim
Output [2]: [d_date_sk#26, d_year#27]
Batched: true
Location [not included in comparison]/{warehouse_dir}/date_dim]
PushedFilters: [IsNotNull(d_year), EqualTo(d_year,2001), IsNotNull(d_date_sk)]
ReadSchema: struct<d_date_sk:int,d_year:int>

(148) CometFilter
Input [2]: [d_date_sk#26, d_year#27]
Condition : ((isnotnull(d_year#27) AND (d_year#27 = 2001)) AND isnotnull(d_date_sk#26))

(149) CometProject
Input [2]: [d_date_sk#26, d_year#27]
Arguments: [d_date_sk#26], [d_date_sk#26]

(150) CometColumnarToRow [codegen id : 1]
Input [1]: [d_date_sk#26]

(151) BroadcastExchange
Input [1]: [d_date_sk#26]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, true] as bigint)),false), [plan_id=6]

Subquery:2 Hosting operator id = 41 Hosting Expression = cs_sold_date_sk#64 IN dynamicpruning#10

Subquery:3 Hosting operator id = 67 Hosting Expression = cs_sold_date_sk#107 IN dynamicpruning#10

Subquery:4 Hosting operator id = 93 Hosting Expression = cs_sold_date_sk#150 IN dynamicpruning#10

Subquery:5 Hosting operator id = 119 Hosting Expression = cs_sold_date_sk#192 IN dynamicpruning#10


