== Physical Plan ==
* CometColumnarToRow (185)
+- CometSort (184)
   +- CometColumnarExchange (183)
      +- CometProject (182)
         +- CometSortMergeJoin (181)
            :- CometSort (112)
            :  +- CometColumnarExchange (111)
            :     +- * HashAggregate (110)
            :        +- * HashAggregate (109)
            :           +- * Project (108)
            :              +- * BroadcastHashJoin Inner BuildRight (107)
            :                 :- * Project (101)
            :                 :  +- * BroadcastHashJoin Inner BuildRight (100)
            :                 :     :- * Project (98)
            :                 :     :  +- * BroadcastHashJoin Inner BuildRight (97)
            :                 :     :     :- * Project (92)
            :                 :     :     :  +- * BroadcastHashJoin Inner BuildRight (91)
            :                 :     :     :     :- * Project (89)
            :                 :     :     :     :  +- * BroadcastHashJoin Inner BuildRight (88)
            :                 :     :     :     :     :- * Project (82)
            :                 :     :     :     :     :  +- * BroadcastHashJoin Inner BuildRight (81)
            :                 :     :     :     :     :     :- * Project (79)
            :                 :     :     :     :     :     :  +- * BroadcastHashJoin Inner BuildRight (78)
            :                 :     :     :     :     :     :     :- * Project (73)
            :                 :     :     :     :     :     :     :  +- * BroadcastHashJoin Inner BuildRight (72)
            :                 :     :     :     :     :     :     :     :- * Project (67)
            :                 :     :     :     :     :     :     :     :  +- * BroadcastHashJoin Inner BuildRight (66)
            :                 :     :     :     :     :     :     :     :     :- * Project (64)
            :                 :     :     :     :     :     :     :     :     :  +- * BroadcastHashJoin Inner BuildRight (63)
            :                 :     :     :     :     :     :     :     :     :     :- * Project (57)
            :                 :     :     :     :     :     :     :     :     :     :  +- * BroadcastHashJoin Inner BuildRight (56)
            :                 :     :     :     :     :     :     :     :     :     :     :- * Project (54)
            :                 :     :     :     :     :     :     :     :     :     :     :  +- * BroadcastHashJoin Inner BuildRight (53)
            :                 :     :     :     :     :     :     :     :     :     :     :     :- * Project (48)
            :                 :     :     :     :     :     :     :     :     :     :     :     :  +- * BroadcastHashJoin Inner BuildRight (47)
            :                 :     :     :     :     :     :     :     :     :     :     :     :     :- * Project (42)
            :                 :     :     :     :     :     :     :     :     :     :     :     :     :  +- * BroadcastHashJoin Inner BuildRight (41)
            :                 :     :     :     :     :     :     :     :     :     :     :     :     :     :- * Project (35)
            :                 :     :     :     :     :     :     :     :     :     :     :     :     :     :  +- * BroadcastHashJoin Inner BuildRight (34)
            :                 :     :     :     :     :     :     :     :     :     :     :     :     :     :     :- * Project (32)
            :                 :     :     :     :     :     :     :     :     :     :     :     :     :     :     :  +- * SortMergeJoin Inner (31)
            :                 :     :     :     :     :     :     :     :     :     :     :     :     :     :     :     :- * CometColumnarToRow (11)
            :                 :     :     :     :     :     :     :     :     :     :     :     :     :     :     :     :  +- CometSort (10)
            :                 :     :     :     :     :     :     :     :     :     :     :     :     :     :     :     :     +- CometExchange (9)
            :                 :     :     :     :     :     :     :     :     :     :     :     :     :     :     :     :        +- CometProject (8)
            :                 :     :     :     :     :     :     :     :     :     :     :     :     :     :     :     :           +- CometBroadcastHashJoin (7)
            :                 :     :     :     :     :     :     :     :     :     :     :     :     :     :     :     :              :- CometBroadcastExchange (3)
            :                 :     :     :     :     :     :     :     :     :     :     :     :     :     :     :     :              :  +- CometFilter (2)
            :                 :     :     :     :     :     :     :     :     :     :     :     :     :     :     :     :              :     +- CometScan [native_iceberg_compat] parquet spark_catalog.default.store_sales (1)
            :                 :     :     :     :     :     :     :     :     :     :     :     :     :     :     :     :              +- CometProject (6)
            :                 :     :     :     :     :     :     :     :     :     :     :     :     :     :     :     :                 +- CometFilter (5)
            :                 :     :     :     :     :     :     :     :     :     :     :     :     :     :     :     :                    +- CometScan [native_iceberg_compat] parquet spark_catalog.default.store_returns (4)
            :                 :     :     :     :     :     :     :     :     :     :     :     :     :     :     :     +- * Sort (30)
            :                 :     :     :     :     :     :     :     :     :     :     :     :     :     :     :        +- * Project (29)
            :                 :     :     :     :     :     :     :     :     :     :     :     :     :     :     :           +- * Filter (28)
            :                 :     :     :     :     :     :     :     :     :     :     :     :     :     :     :              +- * HashAggregate (27)
            :                 :     :     :     :     :     :     :     :     :     :     :     :     :     :     :                 +- * CometColumnarToRow (26)
            :                 :     :     :     :     :     :     :     :     :     :     :     :     :     :     :                    +- CometExchange (25)
            :                 :     :     :     :     :     :     :     :     :     :     :     :     :     :     :                       +- CometHashAggregate (24)
            :                 :     :     :     :     :     :     :     :     :     :     :     :     :     :     :                          +- CometProject (23)
            :                 :     :     :     :     :     :     :     :     :     :     :     :     :     :     :                             +- CometSortMergeJoin (22)
            :                 :     :     :     :     :     :     :     :     :     :     :     :     :     :     :                                :- CometSort (16)
            :                 :     :     :     :     :     :     :     :     :     :     :     :     :     :     :                                :  +- CometExchange (15)
            :                 :     :     :     :     :     :     :     :     :     :     :     :     :     :     :                                :     +- CometProject (14)
            :                 :     :     :     :     :     :     :     :     :     :     :     :     :     :     :                                :        +- CometFilter (13)
            :                 :     :     :     :     :     :     :     :     :     :     :     :     :     :     :                                :           +- CometScan [native_iceberg_compat] parquet spark_catalog.default.catalog_sales (12)
            :                 :     :     :     :     :     :     :     :     :     :     :     :     :     :     :                                +- CometSort (21)
            :                 :     :     :     :     :     :     :     :     :     :     :     :     :     :     :                                   +- CometExchange (20)
            :                 :     :     :     :     :     :     :     :     :     :     :     :     :     :     :                                      +- CometProject (19)
            :                 :     :     :     :     :     :     :     :     :     :     :     :     :     :     :                                         +- CometFilter (18)
            :                 :     :     :     :     :     :     :     :     :     :     :     :     :     :     :                                            +- CometScan [native_iceberg_compat] parquet spark_catalog.default.catalog_returns (17)
            :                 :     :     :     :     :     :     :     :     :     :     :     :     :     :     +- ReusedExchange (33)
            :                 :     :     :     :     :     :     :     :     :     :     :     :     :     +- BroadcastExchange (40)
            :                 :     :     :     :     :     :     :     :     :     :     :     :     :        +- * CometColumnarToRow (39)
            :                 :     :     :     :     :     :     :     :     :     :     :     :     :           +- CometProject (38)
            :                 :     :     :     :     :     :     :     :     :     :     :     :     :              +- CometFilter (37)
            :                 :     :     :     :     :     :     :     :     :     :     :     :     :                 +- CometScan [native_iceberg_compat] parquet spark_catalog.default.store (36)
            :                 :     :     :     :     :     :     :     :     :     :     :     :     +- BroadcastExchange (46)
            :                 :     :     :     :     :     :     :     :     :     :     :     :        +- * CometColumnarToRow (45)
            :                 :     :     :     :     :     :     :     :     :     :     :     :           +- CometFilter (44)
            :                 :     :     :     :     :     :     :     :     :     :     :     :              +- CometScan [native_iceberg_compat] parquet spark_catalog.default.customer (43)
            :                 :     :     :     :     :     :     :     :     :     :     :     +- BroadcastExchange (52)
            :                 :     :     :     :     :     :     :     :     :     :     :        +- * CometColumnarToRow (51)
            :                 :     :     :     :     :     :     :     :     :     :     :           +- CometFilter (50)
            :                 :     :     :     :     :     :     :     :     :     :     :              +- CometScan [native_iceberg_compat] parquet spark_catalog.default.date_dim (49)
            :                 :     :     :     :     :     :     :     :     :     :     +- ReusedExchange (55)
            :                 :     :     :     :     :     :     :     :     :     +- BroadcastExchange (62)
            :                 :     :     :     :     :     :     :     :     :        +- * CometColumnarToRow (61)
            :                 :     :     :     :     :     :     :     :     :           +- CometProject (60)
            :                 :     :     :     :     :     :     :     :     :              +- CometFilter (59)
            :                 :     :     :     :     :     :     :     :     :                 +- CometScan [native_iceberg_compat] parquet spark_catalog.default.customer_demographics (58)
            :                 :     :     :     :     :     :     :     :     +- ReusedExchange (65)
            :                 :     :     :     :     :     :     :     +- BroadcastExchange (71)
            :                 :     :     :     :     :     :     :        +- * CometColumnarToRow (70)
            :                 :     :     :     :     :     :     :           +- CometFilter (69)
            :                 :     :     :     :     :     :     :              +- CometScan [native_iceberg_compat] parquet spark_catalog.default.promotion (68)
            :                 :     :     :     :     :     :     +- BroadcastExchange (77)
            :                 :     :     :     :     :     :        +- * CometColumnarToRow (76)
            :                 :     :     :     :     :     :           +- CometFilter (75)
            :                 :     :     :     :     :     :              +- CometScan [native_iceberg_compat] parquet spark_catalog.default.household_demographics (74)
            :                 :     :     :     :     :     +- ReusedExchange (80)
            :                 :     :     :     :     +- BroadcastExchange (87)
            :                 :     :     :     :        +- * CometColumnarToRow (86)
            :                 :     :     :     :           +- CometProject (85)
            :                 :     :     :     :              +- CometFilter (84)
            :                 :     :     :     :                 +- CometScan [native_iceberg_compat] parquet spark_catalog.default.customer_address (83)
            :                 :     :     :     +- ReusedExchange (90)
            :                 :     :     +- BroadcastExchange (96)
            :                 :     :        +- * CometColumnarToRow (95)
            :                 :     :           +- CometFilter (94)
            :                 :     :              +- CometScan [native_iceberg_compat] parquet spark_catalog.default.income_band (93)
            :                 :     +- ReusedExchange (99)
            :                 +- BroadcastExchange (106)
            :                    +- * CometColumnarToRow (105)
            :                       +- CometProject (104)
            :                          +- CometFilter (103)
            :                             +- CometScan [native_iceberg_compat] parquet spark_catalog.default.item (102)
            +- CometSort (180)
               +- CometColumnarExchange (179)
                  +- * HashAggregate (178)
                     +- * HashAggregate (177)
                        +- * Project (176)
                           +- * BroadcastHashJoin Inner BuildRight (175)
                              :- * Project (173)
                              :  +- * BroadcastHashJoin Inner BuildRight (172)
                              :     :- * Project (170)
                              :     :  +- * BroadcastHashJoin Inner BuildRight (169)
                              :     :     :- * Project (167)
                              :     :     :  +- * BroadcastHashJoin Inner BuildRight (166)
                              :     :     :     :- * Project (164)
                              :     :     :     :  +- * BroadcastHashJoin Inner BuildRight (163)
                              :     :     :     :     :- * Project (161)
                              :     :     :     :     :  +- * BroadcastHashJoin Inner BuildRight (160)
                              :     :     :     :     :     :- * Project (158)
                              :     :     :     :     :     :  +- * BroadcastHashJoin Inner BuildRight (157)
                              :     :     :     :     :     :     :- * Project (155)
                              :     :     :     :     :     :     :  +- * BroadcastHashJoin Inner BuildRight (154)
                              :     :     :     :     :     :     :     :- * Project (152)
                              :     :     :     :     :     :     :     :  +- * BroadcastHashJoin Inner BuildRight (151)
                              :     :     :     :     :     :     :     :     :- * Project (149)
                              :     :     :     :     :     :     :     :     :  +- * BroadcastHashJoin Inner BuildRight (148)
                              :     :     :     :     :     :     :     :     :     :- * Project (146)
                              :     :     :     :     :     :     :     :     :     :  +- * BroadcastHashJoin Inner BuildRight (145)
                              :     :     :     :     :     :     :     :     :     :     :- * Project (143)
                              :     :     :     :     :     :     :     :     :     :     :  +- * BroadcastHashJoin Inner BuildRight (142)
                              :     :     :     :     :     :     :     :     :     :     :     :- * Project (140)
                              :     :     :     :     :     :     :     :     :     :     :     :  +- * BroadcastHashJoin Inner BuildRight (139)
                              :     :     :     :     :     :     :     :     :     :     :     :     :- * Project (137)
                              :     :     :     :     :     :     :     :     :     :     :     :     :  +- * BroadcastHashJoin Inner BuildRight (136)
                              :     :     :     :     :     :     :     :     :     :     :     :     :     :- * Project (134)
                              :     :     :     :     :     :     :     :     :     :     :     :     :     :  +- * BroadcastHashJoin Inner BuildRight (133)
                              :     :     :     :     :     :     :     :     :     :     :     :     :     :     :- * Project (131)
                              :     :     :     :     :     :     :     :     :     :     :     :     :     :     :  +- * SortMergeJoin Inner (130)
                              :     :     :     :     :     :     :     :     :     :     :     :     :     :     :     :- * CometColumnarToRow (123)
                              :     :     :     :     :     :     :     :     :     :     :     :     :     :     :     :  +- CometSort (122)
                              :     :     :     :     :     :     :     :     :     :     :     :     :     :     :     :     +- CometExchange (121)
                              :     :     :     :     :     :     :     :     :     :     :     :     :     :     :     :        +- CometProject (120)
                              :     :     :     :     :     :     :     :     :     :     :     :     :     :     :     :           +- CometBroadcastHashJoin (119)
                              :     :     :     :     :     :     :     :     :     :     :     :     :     :     :     :              :- CometBroadcastExchange (115)
                              :     :     :     :     :     :     :     :     :     :     :     :     :     :     :     :              :  +- CometFilter (114)
                              :     :     :     :     :     :     :     :     :     :     :     :     :     :     :     :              :     +- CometScan [native_iceberg_compat] parquet spark_catalog.default.store_sales (113)
                              :     :     :     :     :     :     :     :     :     :     :     :     :     :     :     :              +- CometProject (118)
                              :     :     :     :     :     :     :     :     :     :     :     :     :     :     :     :                 +- CometFilter (117)
                              :     :     :     :     :     :     :     :     :     :     :     :     :     :     :     :                    +- CometScan [native_iceberg_compat] parquet spark_catalog.default.store_returns (116)
                              :     :     :     :     :     :     :     :     :     :     :     :     :     :     :     +- * Sort (129)
                              :     :     :     :     :     :     :     :     :     :     :     :     :     :     :        +- * Project (128)
                              :     :     :     :     :     :     :     :     :     :     :     :     :     :     :           +- * Filter (127)
                              :     :     :     :     :     :     :     :     :     :     :     :     :     :     :              +- * HashAggregate (126)
                              :     :     :     :     :     :     :     :     :     :     :     :     :     :     :                 +- * CometColumnarToRow (125)
                              :     :     :     :     :     :     :     :     :     :     :     :     :     :     :                    +- ReusedExchange (124)
                              :     :     :     :     :     :     :     :     :     :     :     :     :     :     +- ReusedExchange (132)
                              :     :     :     :     :     :     :     :     :     :     :     :     :     +- ReusedExchange (135)
                              :     :     :     :     :     :     :     :     :     :     :     :     +- ReusedExchange (138)
                              :     :     :     :     :     :     :     :     :     :     :     +- ReusedExchange (141)
                              :     :     :     :     :     :     :     :     :     :     +- ReusedExchange (144)
                              :     :     :     :     :     :     :     :     :     +- ReusedExchange (147)
                              :     :     :     :     :     :     :     :     +- ReusedExchange (150)
                              :     :     :     :     :     :     :     +- ReusedExchange (153)
                              :     :     :     :     :     :     +- ReusedExchange (156)
                              :     :     :     :     :     +- ReusedExchange (159)
                              :     :     :     :     +- ReusedExchange (162)
                              :     :     :     +- ReusedExchange (165)
                              :     :     +- ReusedExchange (168)
                              :     +- ReusedExchange (171)
                              +- ReusedExchange (174)


(1) CometScan [native_iceberg_compat] parquet spark_catalog.default.store_sales
Output [12]: [ss_item_sk#1, ss_customer_sk#2, ss_cdemo_sk#3, ss_hdemo_sk#4, ss_addr_sk#5, ss_store_sk#6, ss_promo_sk#7, ss_ticket_number#8, ss_wholesale_cost#9, ss_list_price#10, ss_coupon_amt#11, ss_sold_date_sk#12]
Batched: true
Location: InMemoryFileIndex []
PartitionFilters: [isnotnull(ss_sold_date_sk#12), dynamicpruningexpression(ss_sold_date_sk#12 IN dynamicpruning#13)]
PushedFilters: [IsNotNull(ss_item_sk), IsNotNull(ss_ticket_number), IsNotNull(ss_store_sk), IsNotNull(ss_customer_sk), IsNotNull(ss_cdemo_sk), IsNotNull(ss_promo_sk), IsNotNull(ss_hdemo_sk), IsNotNull(ss_addr_sk)]
ReadSchema: struct<ss_item_sk:int,ss_customer_sk:int,ss_cdemo_sk:int,ss_hdemo_sk:int,ss_addr_sk:int,ss_store_sk:int,ss_promo_sk:int,ss_ticket_number:int,ss_wholesale_cost:decimal(7,2),ss_list_price:decimal(7,2),ss_coupon_amt:decimal(7,2)>

(2) CometFilter
Input [12]: [ss_item_sk#1, ss_customer_sk#2, ss_cdemo_sk#3, ss_hdemo_sk#4, ss_addr_sk#5, ss_store_sk#6, ss_promo_sk#7, ss_ticket_number#8, ss_wholesale_cost#9, ss_list_price#10, ss_coupon_amt#11, ss_sold_date_sk#12]
Condition : (((((((isnotnull(ss_item_sk#1) AND isnotnull(ss_ticket_number#8)) AND isnotnull(ss_store_sk#6)) AND isnotnull(ss_customer_sk#2)) AND isnotnull(ss_cdemo_sk#3)) AND isnotnull(ss_promo_sk#7)) AND isnotnull(ss_hdemo_sk#4)) AND isnotnull(ss_addr_sk#5))

(3) CometBroadcastExchange
Input [12]: [ss_item_sk#1, ss_customer_sk#2, ss_cdemo_sk#3, ss_hdemo_sk#4, ss_addr_sk#5, ss_store_sk#6, ss_promo_sk#7, ss_ticket_number#8, ss_wholesale_cost#9, ss_list_price#10, ss_coupon_amt#11, ss_sold_date_sk#12]
Arguments: [ss_item_sk#1, ss_customer_sk#2, ss_cdemo_sk#3, ss_hdemo_sk#4, ss_addr_sk#5, ss_store_sk#6, ss_promo_sk#7, ss_ticket_number#8, ss_wholesale_cost#9, ss_list_price#10, ss_coupon_amt#11, ss_sold_date_sk#12]

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

(5) CometFilter
Input [3]: [sr_item_sk#14, sr_ticket_number#15, sr_returned_date_sk#16]
Condition : (isnotnull(sr_item_sk#14) AND isnotnull(sr_ticket_number#15))

(6) CometProject
Input [3]: [sr_item_sk#14, sr_ticket_number#15, sr_returned_date_sk#16]
Arguments: [sr_item_sk#14, sr_ticket_number#15], [sr_item_sk#14, sr_ticket_number#15]

(7) CometBroadcastHashJoin
Left output [12]: [ss_item_sk#1, ss_customer_sk#2, ss_cdemo_sk#3, ss_hdemo_sk#4, ss_addr_sk#5, ss_store_sk#6, ss_promo_sk#7, ss_ticket_number#8, ss_wholesale_cost#9, ss_list_price#10, ss_coupon_amt#11, ss_sold_date_sk#12]
Right output [2]: [sr_item_sk#14, sr_ticket_number#15]
Arguments: [ss_item_sk#1, ss_ticket_number#8], [sr_item_sk#14, sr_ticket_number#15], Inner, BuildLeft

(8) CometProject
Input [14]: [ss_item_sk#1, ss_customer_sk#2, ss_cdemo_sk#3, ss_hdemo_sk#4, ss_addr_sk#5, ss_store_sk#6, ss_promo_sk#7, ss_ticket_number#8, ss_wholesale_cost#9, ss_list_price#10, ss_coupon_amt#11, ss_sold_date_sk#12, sr_item_sk#14, sr_ticket_number#15]
Arguments: [ss_item_sk#1, ss_customer_sk#2, ss_cdemo_sk#3, ss_hdemo_sk#4, ss_addr_sk#5, ss_store_sk#6, ss_promo_sk#7, ss_wholesale_cost#9, ss_list_price#10, ss_coupon_amt#11, ss_sold_date_sk#12], [ss_item_sk#1, ss_customer_sk#2, ss_cdemo_sk#3, ss_hdemo_sk#4, ss_addr_sk#5, ss_store_sk#6, ss_promo_sk#7, ss_wholesale_cost#9, ss_list_price#10, ss_coupon_amt#11, ss_sold_date_sk#12]

(9) CometExchange
Input [11]: [ss_item_sk#1, ss_customer_sk#2, ss_cdemo_sk#3, ss_hdemo_sk#4, ss_addr_sk#5, ss_store_sk#6, ss_promo_sk#7, ss_wholesale_cost#9, ss_list_price#10, ss_coupon_amt#11, ss_sold_date_sk#12]
Arguments: hashpartitioning(ss_item_sk#1, 5), ENSURE_REQUIREMENTS, CometNativeShuffle, [plan_id=1]

(10) CometSort
Input [11]: [ss_item_sk#1, ss_customer_sk#2, ss_cdemo_sk#3, ss_hdemo_sk#4, ss_addr_sk#5, ss_store_sk#6, ss_promo_sk#7, ss_wholesale_cost#9, ss_list_price#10, ss_coupon_amt#11, ss_sold_date_sk#12]
Arguments: [ss_item_sk#1, ss_customer_sk#2, ss_cdemo_sk#3, ss_hdemo_sk#4, ss_addr_sk#5, ss_store_sk#6, ss_promo_sk#7, ss_wholesale_cost#9, ss_list_price#10, ss_coupon_amt#11, ss_sold_date_sk#12], [ss_item_sk#1 ASC NULLS FIRST]

(11) CometColumnarToRow [codegen id : 1]
Input [11]: [ss_item_sk#1, ss_customer_sk#2, ss_cdemo_sk#3, ss_hdemo_sk#4, ss_addr_sk#5, ss_store_sk#6, ss_promo_sk#7, ss_wholesale_cost#9, ss_list_price#10, ss_coupon_amt#11, ss_sold_date_sk#12]

(12) CometScan [native_iceberg_compat] parquet spark_catalog.default.catalog_sales
Output [4]: [cs_item_sk#17, cs_order_number#18, cs_ext_list_price#19, cs_sold_date_sk#20]
Batched: true
Location [not included in comparison]/{warehouse_dir}/catalog_sales]
PushedFilters: [IsNotNull(cs_item_sk), IsNotNull(cs_order_number)]
ReadSchema: struct<cs_item_sk:int,cs_order_number:int,cs_ext_list_price:decimal(7,2)>

(13) CometFilter
Input [4]: [cs_item_sk#17, cs_order_number#18, cs_ext_list_price#19, cs_sold_date_sk#20]
Condition : (isnotnull(cs_item_sk#17) AND isnotnull(cs_order_number#18))

(14) CometProject
Input [4]: [cs_item_sk#17, cs_order_number#18, cs_ext_list_price#19, cs_sold_date_sk#20]
Arguments: [cs_item_sk#17, cs_order_number#18, cs_ext_list_price#19], [cs_item_sk#17, cs_order_number#18, cs_ext_list_price#19]

(15) CometExchange
Input [3]: [cs_item_sk#17, cs_order_number#18, cs_ext_list_price#19]
Arguments: hashpartitioning(cs_item_sk#17, cs_order_number#18, 5), ENSURE_REQUIREMENTS, CometNativeShuffle, [plan_id=2]

(16) CometSort
Input [3]: [cs_item_sk#17, cs_order_number#18, cs_ext_list_price#19]
Arguments: [cs_item_sk#17, cs_order_number#18, cs_ext_list_price#19], [cs_item_sk#17 ASC NULLS FIRST, cs_order_number#18 ASC NULLS FIRST]

(17) CometScan [native_iceberg_compat] parquet spark_catalog.default.catalog_returns
Output [6]: [cr_item_sk#21, cr_order_number#22, cr_refunded_cash#23, cr_reversed_charge#24, cr_store_credit#25, cr_returned_date_sk#26]
Batched: true
Location [not included in comparison]/{warehouse_dir}/catalog_returns]
PushedFilters: [IsNotNull(cr_item_sk), IsNotNull(cr_order_number)]
ReadSchema: struct<cr_item_sk:int,cr_order_number:int,cr_refunded_cash:decimal(7,2),cr_reversed_charge:decimal(7,2),cr_store_credit:decimal(7,2)>

(18) CometFilter
Input [6]: [cr_item_sk#21, cr_order_number#22, cr_refunded_cash#23, cr_reversed_charge#24, cr_store_credit#25, cr_returned_date_sk#26]
Condition : (isnotnull(cr_item_sk#21) AND isnotnull(cr_order_number#22))

(19) CometProject
Input [6]: [cr_item_sk#21, cr_order_number#22, cr_refunded_cash#23, cr_reversed_charge#24, cr_store_credit#25, cr_returned_date_sk#26]
Arguments: [cr_item_sk#21, cr_order_number#22, cr_refunded_cash#23, cr_reversed_charge#24, cr_store_credit#25], [cr_item_sk#21, cr_order_number#22, cr_refunded_cash#23, cr_reversed_charge#24, cr_store_credit#25]

(20) CometExchange
Input [5]: [cr_item_sk#21, cr_order_number#22, cr_refunded_cash#23, cr_reversed_charge#24, cr_store_credit#25]
Arguments: hashpartitioning(cr_item_sk#21, cr_order_number#22, 5), ENSURE_REQUIREMENTS, CometNativeShuffle, [plan_id=3]

(21) CometSort
Input [5]: [cr_item_sk#21, cr_order_number#22, cr_refunded_cash#23, cr_reversed_charge#24, cr_store_credit#25]
Arguments: [cr_item_sk#21, cr_order_number#22, cr_refunded_cash#23, cr_reversed_charge#24, cr_store_credit#25], [cr_item_sk#21 ASC NULLS FIRST, cr_order_number#22 ASC NULLS FIRST]

(22) CometSortMergeJoin
Left output [3]: [cs_item_sk#17, cs_order_number#18, cs_ext_list_price#19]
Right output [5]: [cr_item_sk#21, cr_order_number#22, cr_refunded_cash#23, cr_reversed_charge#24, cr_store_credit#25]
Arguments: [cs_item_sk#17, cs_order_number#18], [cr_item_sk#21, cr_order_number#22], Inner

(23) CometProject
Input [8]: [cs_item_sk#17, cs_order_number#18, cs_ext_list_price#19, cr_item_sk#21, cr_order_number#22, cr_refunded_cash#23, cr_reversed_charge#24, cr_store_credit#25]
Arguments: [cs_item_sk#17, cs_ext_list_price#19, cr_refunded_cash#23, cr_reversed_charge#24, cr_store_credit#25], [cs_item_sk#17, cs_ext_list_price#19, cr_refunded_cash#23, cr_reversed_charge#24, cr_store_credit#25]

(24) CometHashAggregate
Input [5]: [cs_item_sk#17, cs_ext_list_price#19, cr_refunded_cash#23, cr_reversed_charge#24, cr_store_credit#25]
Keys [1]: [cs_item_sk#17]
Functions [2]: [partial_sum(UnscaledValue(cs_ext_list_price#19)), partial_sum(((cr_refunded_cash#23 + cr_reversed_charge#24) + cr_store_credit#25))]

(25) CometExchange
Input [4]: [cs_item_sk#17, sum#27, sum#28, isEmpty#29]
Arguments: hashpartitioning(cs_item_sk#17, 5), ENSURE_REQUIREMENTS, CometNativeShuffle, [plan_id=4]

(26) CometColumnarToRow [codegen id : 2]
Input [4]: [cs_item_sk#17, sum#27, sum#28, isEmpty#29]

(27) HashAggregate [codegen id : 2]
Input [4]: [cs_item_sk#17, sum#27, sum#28, isEmpty#29]
Keys [1]: [cs_item_sk#17]
Functions [2]: [sum(UnscaledValue(cs_ext_list_price#19)), sum(((cr_refunded_cash#23 + cr_reversed_charge#24) + cr_store_credit#25))]
Aggregate Attributes [2]: [sum(UnscaledValue(cs_ext_list_price#19))#30, sum(((cr_refunded_cash#23 + cr_reversed_charge#24) + cr_store_credit#25))#31]
Results [3]: [cs_item_sk#17, MakeDecimal(sum(UnscaledValue(cs_ext_list_price#19))#30,17,2) AS sale#32, sum(((cr_refunded_cash#23 + cr_reversed_charge#24) + cr_store_credit#25))#31 AS refund#33]

(28) Filter [codegen id : 2]
Input [3]: [cs_item_sk#17, sale#32, refund#33]
Condition : ((isnotnull(sale#32) AND isnotnull(refund#33)) AND (cast(sale#32 as decimal(21,2)) > (2 * refund#33)))

(29) Project [codegen id : 2]
Output [1]: [cs_item_sk#17]
Input [3]: [cs_item_sk#17, sale#32, refund#33]

(30) Sort [codegen id : 2]
Input [1]: [cs_item_sk#17]
Arguments: [cs_item_sk#17 ASC NULLS FIRST], false, 0

(31) SortMergeJoin [codegen id : 18]
Left keys [1]: [ss_item_sk#1]
Right keys [1]: [cs_item_sk#17]
Join type: Inner
Join condition: None

(32) Project [codegen id : 18]
Output [11]: [ss_item_sk#1, ss_customer_sk#2, ss_cdemo_sk#3, ss_hdemo_sk#4, ss_addr_sk#5, ss_store_sk#6, ss_promo_sk#7, ss_wholesale_cost#9, ss_list_price#10, ss_coupon_amt#11, ss_sold_date_sk#12]
Input [12]: [ss_item_sk#1, ss_customer_sk#2, ss_cdemo_sk#3, ss_hdemo_sk#4, ss_addr_sk#5, ss_store_sk#6, ss_promo_sk#7, ss_wholesale_cost#9, ss_list_price#10, ss_coupon_amt#11, ss_sold_date_sk#12, cs_item_sk#17]

(33) ReusedExchange [Reuses operator id: 189]
Output [2]: [d_date_sk#34, d_year#35]

(34) BroadcastHashJoin [codegen id : 18]
Left keys [1]: [ss_sold_date_sk#12]
Right keys [1]: [d_date_sk#34]
Join type: Inner
Join condition: None

(35) Project [codegen id : 18]
Output [11]: [ss_item_sk#1, ss_customer_sk#2, ss_cdemo_sk#3, ss_hdemo_sk#4, ss_addr_sk#5, ss_store_sk#6, ss_promo_sk#7, ss_wholesale_cost#9, ss_list_price#10, ss_coupon_amt#11, d_year#35]
Input [13]: [ss_item_sk#1, ss_customer_sk#2, ss_cdemo_sk#3, ss_hdemo_sk#4, ss_addr_sk#5, ss_store_sk#6, ss_promo_sk#7, ss_wholesale_cost#9, ss_list_price#10, ss_coupon_amt#11, ss_sold_date_sk#12, d_date_sk#34, d_year#35]

(36) CometScan [native_iceberg_compat] parquet spark_catalog.default.store
Output [3]: [s_store_sk#36, s_store_name#37, s_zip#38]
Batched: true
Location [not included in comparison]/{warehouse_dir}/store]
PushedFilters: [IsNotNull(s_store_sk), IsNotNull(s_store_name)]
ReadSchema: struct<s_store_sk:int,s_store_name:string,s_zip:string>

(37) CometFilter
Input [3]: [s_store_sk#36, s_store_name#37, s_zip#38]
Condition : ((isnotnull(s_store_sk#36) AND isnotnull(s_store_name#37)) AND isnotnull(static_invoke(CharVarcharCodegenUtils.readSidePadding(s_zip#38, 10))))

(38) CometProject
Input [3]: [s_store_sk#36, s_store_name#37, s_zip#38]
Arguments: [s_store_sk#36, s_store_name#37, s_zip#39], [s_store_sk#36, s_store_name#37, static_invoke(CharVarcharCodegenUtils.readSidePadding(s_zip#38, 10)) AS s_zip#39]

(39) CometColumnarToRow [codegen id : 4]
Input [3]: [s_store_sk#36, s_store_name#37, s_zip#39]

(40) BroadcastExchange
Input [3]: [s_store_sk#36, s_store_name#37, s_zip#39]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, true] as bigint)),false), [plan_id=5]

(41) BroadcastHashJoin [codegen id : 18]
Left keys [1]: [ss_store_sk#6]
Right keys [1]: [s_store_sk#36]
Join type: Inner
Join condition: None

(42) Project [codegen id : 18]
Output [12]: [ss_item_sk#1, ss_customer_sk#2, ss_cdemo_sk#3, ss_hdemo_sk#4, ss_addr_sk#5, ss_promo_sk#7, ss_wholesale_cost#9, ss_list_price#10, ss_coupon_amt#11, d_year#35, s_store_name#37, s_zip#39]
Input [14]: [ss_item_sk#1, ss_customer_sk#2, ss_cdemo_sk#3, ss_hdemo_sk#4, ss_addr_sk#5, ss_store_sk#6, ss_promo_sk#7, ss_wholesale_cost#9, ss_list_price#10, ss_coupon_amt#11, d_year#35, s_store_sk#36, s_store_name#37, s_zip#39]

(43) CometScan [native_iceberg_compat] parquet spark_catalog.default.customer
Output [6]: [c_customer_sk#40, c_current_cdemo_sk#41, c_current_hdemo_sk#42, c_current_addr_sk#43, c_first_shipto_date_sk#44, c_first_sales_date_sk#45]
Batched: true
Location [not included in comparison]/{warehouse_dir}/customer]
PushedFilters: [IsNotNull(c_customer_sk), IsNotNull(c_first_sales_date_sk), IsNotNull(c_first_shipto_date_sk), IsNotNull(c_current_cdemo_sk), IsNotNull(c_current_hdemo_sk), IsNotNull(c_current_addr_sk)]
ReadSchema: struct<c_customer_sk:int,c_current_cdemo_sk:int,c_current_hdemo_sk:int,c_current_addr_sk:int,c_first_shipto_date_sk:int,c_first_sales_date_sk:int>

(44) CometFilter
Input [6]: [c_customer_sk#40, c_current_cdemo_sk#41, c_current_hdemo_sk#42, c_current_addr_sk#43, c_first_shipto_date_sk#44, c_first_sales_date_sk#45]
Condition : (((((isnotnull(c_customer_sk#40) AND isnotnull(c_first_sales_date_sk#45)) AND isnotnull(c_first_shipto_date_sk#44)) AND isnotnull(c_current_cdemo_sk#41)) AND isnotnull(c_current_hdemo_sk#42)) AND isnotnull(c_current_addr_sk#43))

(45) CometColumnarToRow [codegen id : 5]
Input [6]: [c_customer_sk#40, c_current_cdemo_sk#41, c_current_hdemo_sk#42, c_current_addr_sk#43, c_first_shipto_date_sk#44, c_first_sales_date_sk#45]

(46) BroadcastExchange
Input [6]: [c_customer_sk#40, c_current_cdemo_sk#41, c_current_hdemo_sk#42, c_current_addr_sk#43, c_first_shipto_date_sk#44, c_first_sales_date_sk#45]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, false] as bigint)),false), [plan_id=6]

(47) BroadcastHashJoin [codegen id : 18]
Left keys [1]: [ss_customer_sk#2]
Right keys [1]: [c_customer_sk#40]
Join type: Inner
Join condition: None

(48) Project [codegen id : 18]
Output [16]: [ss_item_sk#1, ss_cdemo_sk#3, ss_hdemo_sk#4, ss_addr_sk#5, ss_promo_sk#7, ss_wholesale_cost#9, ss_list_price#10, ss_coupon_amt#11, d_year#35, s_store_name#37, s_zip#39, c_current_cdemo_sk#41, c_current_hdemo_sk#42, c_current_addr_sk#43, c_first_shipto_date_sk#44, c_first_sales_date_sk#45]
Input [18]: [ss_item_sk#1, ss_customer_sk#2, ss_cdemo_sk#3, ss_hdemo_sk#4, ss_addr_sk#5, ss_promo_sk#7, ss_wholesale_cost#9, ss_list_price#10, ss_coupon_amt#11, d_year#35, s_store_name#37, s_zip#39, c_customer_sk#40, c_current_cdemo_sk#41, c_current_hdemo_sk#42, c_current_addr_sk#43, c_first_shipto_date_sk#44, c_first_sales_date_sk#45]

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

(50) CometFilter
Input [2]: [d_date_sk#46, d_year#47]
Condition : isnotnull(d_date_sk#46)

(51) CometColumnarToRow [codegen id : 6]
Input [2]: [d_date_sk#46, d_year#47]

(52) BroadcastExchange
Input [2]: [d_date_sk#46, d_year#47]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, false] as bigint)),false), [plan_id=7]

(53) BroadcastHashJoin [codegen id : 18]
Left keys [1]: [c_first_sales_date_sk#45]
Right keys [1]: [d_date_sk#46]
Join type: Inner
Join condition: None

(54) Project [codegen id : 18]
Output [16]: [ss_item_sk#1, ss_cdemo_sk#3, ss_hdemo_sk#4, ss_addr_sk#5, ss_promo_sk#7, ss_wholesale_cost#9, ss_list_price#10, ss_coupon_amt#11, d_year#35, s_store_name#37, s_zip#39, c_current_cdemo_sk#41, c_current_hdemo_sk#42, c_current_addr_sk#43, c_first_shipto_date_sk#44, d_year#47]
Input [18]: [ss_item_sk#1, ss_cdemo_sk#3, ss_hdemo_sk#4, ss_addr_sk#5, ss_promo_sk#7, ss_wholesale_cost#9, ss_list_price#10, ss_coupon_amt#11, d_year#35, s_store_name#37, s_zip#39, c_current_cdemo_sk#41, c_current_hdemo_sk#42, c_current_addr_sk#43, c_first_shipto_date_sk#44, c_first_sales_date_sk#45, d_date_sk#46, d_year#47]

(55) ReusedExchange [Reuses operator id: 52]
Output [2]: [d_date_sk#48, d_year#49]

(56) BroadcastHashJoin [codegen id : 18]
Left keys [1]: [c_first_shipto_date_sk#44]
Right keys [1]: [d_date_sk#48]
Join type: Inner
Join condition: None

(57) Project [codegen id : 18]
Output [16]: [ss_item_sk#1, ss_cdemo_sk#3, ss_hdemo_sk#4, ss_addr_sk#5, ss_promo_sk#7, ss_wholesale_cost#9, ss_list_price#10, ss_coupon_amt#11, d_year#35, s_store_name#37, s_zip#39, c_current_cdemo_sk#41, c_current_hdemo_sk#42, c_current_addr_sk#43, d_year#47, d_year#49]
Input [18]: [ss_item_sk#1, ss_cdemo_sk#3, ss_hdemo_sk#4, ss_addr_sk#5, ss_promo_sk#7, ss_wholesale_cost#9, ss_list_price#10, ss_coupon_amt#11, d_year#35, s_store_name#37, s_zip#39, c_current_cdemo_sk#41, c_current_hdemo_sk#42, c_current_addr_sk#43, c_first_shipto_date_sk#44, d_year#47, d_date_sk#48, d_year#49]

(58) CometScan [native_iceberg_compat] parquet spark_catalog.default.customer_demographics
Output [2]: [cd_demo_sk#50, cd_marital_status#51]
Batched: true
Location [not included in comparison]/{warehouse_dir}/customer_demographics]
PushedFilters: [IsNotNull(cd_demo_sk)]
ReadSchema: struct<cd_demo_sk:int,cd_marital_status:string>

(59) CometFilter
Input [2]: [cd_demo_sk#50, cd_marital_status#51]
Condition : (isnotnull(cd_demo_sk#50) AND isnotnull(static_invoke(CharVarcharCodegenUtils.readSidePadding(cd_marital_status#51, 1))))

(60) CometProject
Input [2]: [cd_demo_sk#50, cd_marital_status#51]
Arguments: [cd_demo_sk#50, cd_marital_status#52], [cd_demo_sk#50, static_invoke(CharVarcharCodegenUtils.readSidePadding(cd_marital_status#51, 1)) AS cd_marital_status#52]

(61) CometColumnarToRow [codegen id : 8]
Input [2]: [cd_demo_sk#50, cd_marital_status#52]

(62) BroadcastExchange
Input [2]: [cd_demo_sk#50, cd_marital_status#52]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, true] as bigint)),false), [plan_id=8]

(63) BroadcastHashJoin [codegen id : 18]
Left keys [1]: [ss_cdemo_sk#3]
Right keys [1]: [cd_demo_sk#50]
Join type: Inner
Join condition: None

(64) Project [codegen id : 18]
Output [16]: [ss_item_sk#1, ss_hdemo_sk#4, ss_addr_sk#5, ss_promo_sk#7, ss_wholesale_cost#9, ss_list_price#10, ss_coupon_amt#11, d_year#35, s_store_name#37, s_zip#39, c_current_cdemo_sk#41, c_current_hdemo_sk#42, c_current_addr_sk#43, d_year#47, d_year#49, cd_marital_status#52]
Input [18]: [ss_item_sk#1, ss_cdemo_sk#3, ss_hdemo_sk#4, ss_addr_sk#5, ss_promo_sk#7, ss_wholesale_cost#9, ss_list_price#10, ss_coupon_amt#11, d_year#35, s_store_name#37, s_zip#39, c_current_cdemo_sk#41, c_current_hdemo_sk#42, c_current_addr_sk#43, d_year#47, d_year#49, cd_demo_sk#50, cd_marital_status#52]

(65) ReusedExchange [Reuses operator id: 62]
Output [2]: [cd_demo_sk#53, cd_marital_status#54]

(66) BroadcastHashJoin [codegen id : 18]
Left keys [1]: [c_current_cdemo_sk#41]
Right keys [1]: [cd_demo_sk#53]
Join type: Inner
Join condition: NOT (cd_marital_status#52 = cd_marital_status#54)

(67) Project [codegen id : 18]
Output [14]: [ss_item_sk#1, ss_hdemo_sk#4, ss_addr_sk#5, ss_promo_sk#7, ss_wholesale_cost#9, ss_list_price#10, ss_coupon_amt#11, d_year#35, s_store_name#37, s_zip#39, c_current_hdemo_sk#42, c_current_addr_sk#43, d_year#47, d_year#49]
Input [18]: [ss_item_sk#1, ss_hdemo_sk#4, ss_addr_sk#5, ss_promo_sk#7, ss_wholesale_cost#9, ss_list_price#10, ss_coupon_amt#11, d_year#35, s_store_name#37, s_zip#39, c_current_cdemo_sk#41, c_current_hdemo_sk#42, c_current_addr_sk#43, d_year#47, d_year#49, cd_marital_status#52, cd_demo_sk#53, cd_marital_status#54]

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

(69) CometFilter
Input [1]: [p_promo_sk#55]
Condition : isnotnull(p_promo_sk#55)

(70) CometColumnarToRow [codegen id : 10]
Input [1]: [p_promo_sk#55]

(71) BroadcastExchange
Input [1]: [p_promo_sk#55]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, false] as bigint)),false), [plan_id=9]

(72) BroadcastHashJoin [codegen id : 18]
Left keys [1]: [ss_promo_sk#7]
Right keys [1]: [p_promo_sk#55]
Join type: Inner
Join condition: None

(73) Project [codegen id : 18]
Output [13]: [ss_item_sk#1, ss_hdemo_sk#4, ss_addr_sk#5, ss_wholesale_cost#9, ss_list_price#10, ss_coupon_amt#11, d_year#35, s_store_name#37, s_zip#39, c_current_hdemo_sk#42, c_current_addr_sk#43, d_year#47, d_year#49]
Input [15]: [ss_item_sk#1, ss_hdemo_sk#4, ss_addr_sk#5, ss_promo_sk#7, ss_wholesale_cost#9, ss_list_price#10, ss_coupon_amt#11, d_year#35, s_store_name#37, s_zip#39, c_current_hdemo_sk#42, c_current_addr_sk#43, d_year#47, d_year#49, p_promo_sk#55]

(74) CometScan [native_iceberg_compat] parquet spark_catalog.default.household_demographics
Output [2]: [hd_demo_sk#56, hd_income_band_sk#57]
Batched: true
Location [not included in comparison]/{warehouse_dir}/household_demographics]
PushedFilters: [IsNotNull(hd_demo_sk), IsNotNull(hd_income_band_sk)]
ReadSchema: struct<hd_demo_sk:int,hd_income_band_sk:int>

(75) CometFilter
Input [2]: [hd_demo_sk#56, hd_income_band_sk#57]
Condition : (isnotnull(hd_demo_sk#56) AND isnotnull(hd_income_band_sk#57))

(76) CometColumnarToRow [codegen id : 11]
Input [2]: [hd_demo_sk#56, hd_income_band_sk#57]

(77) BroadcastExchange
Input [2]: [hd_demo_sk#56, hd_income_band_sk#57]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, false] as bigint)),false), [plan_id=10]

(78) BroadcastHashJoin [codegen id : 18]
Left keys [1]: [ss_hdemo_sk#4]
Right keys [1]: [hd_demo_sk#56]
Join type: Inner
Join condition: None

(79) Project [codegen id : 18]
Output [13]: [ss_item_sk#1, ss_addr_sk#5, ss_wholesale_cost#9, ss_list_price#10, ss_coupon_amt#11, d_year#35, s_store_name#37, s_zip#39, c_current_hdemo_sk#42, c_current_addr_sk#43, d_year#47, d_year#49, hd_income_band_sk#57]
Input [15]: [ss_item_sk#1, ss_hdemo_sk#4, ss_addr_sk#5, ss_wholesale_cost#9, ss_list_price#10, ss_coupon_amt#11, d_year#35, s_store_name#37, s_zip#39, c_current_hdemo_sk#42, c_current_addr_sk#43, d_year#47, d_year#49, hd_demo_sk#56, hd_income_band_sk#57]

(80) ReusedExchange [Reuses operator id: 77]
Output [2]: [hd_demo_sk#58, hd_income_band_sk#59]

(81) BroadcastHashJoin [codegen id : 18]
Left keys [1]: [c_current_hdemo_sk#42]
Right keys [1]: [hd_demo_sk#58]
Join type: Inner
Join condition: None

(82) Project [codegen id : 18]
Output [13]: [ss_item_sk#1, ss_addr_sk#5, ss_wholesale_cost#9, ss_list_price#10, ss_coupon_amt#11, d_year#35, s_store_name#37, s_zip#39, c_current_addr_sk#43, d_year#47, d_year#49, hd_income_band_sk#57, hd_income_band_sk#59]
Input [15]: [ss_item_sk#1, ss_addr_sk#5, ss_wholesale_cost#9, ss_list_price#10, ss_coupon_amt#11, d_year#35, s_store_name#37, s_zip#39, c_current_hdemo_sk#42, c_current_addr_sk#43, d_year#47, d_year#49, hd_income_band_sk#57, hd_demo_sk#58, hd_income_band_sk#59]

(83) CometScan [native_iceberg_compat] parquet spark_catalog.default.customer_address
Output [5]: [ca_address_sk#60, ca_street_number#61, ca_street_name#62, ca_city#63, ca_zip#64]
Batched: true
Location [not included in comparison]/{warehouse_dir}/customer_address]
PushedFilters: [IsNotNull(ca_address_sk)]
ReadSchema: struct<ca_address_sk:int,ca_street_number:string,ca_street_name:string,ca_city:string,ca_zip:string>

(84) CometFilter
Input [5]: [ca_address_sk#60, ca_street_number#61, ca_street_name#62, ca_city#63, ca_zip#64]
Condition : isnotnull(ca_address_sk#60)

(85) CometProject
Input [5]: [ca_address_sk#60, ca_street_number#61, ca_street_name#62, ca_city#63, ca_zip#64]
Arguments: [ca_address_sk#60, ca_street_number#65, ca_street_name#62, ca_city#63, ca_zip#66], [ca_address_sk#60, static_invoke(CharVarcharCodegenUtils.readSidePadding(ca_street_number#61, 10)) AS ca_street_number#65, ca_street_name#62, ca_city#63, static_invoke(CharVarcharCodegenUtils.readSidePadding(ca_zip#64, 10)) AS ca_zip#66]

(86) CometColumnarToRow [codegen id : 13]
Input [5]: [ca_address_sk#60, ca_street_number#65, ca_street_name#62, ca_city#63, ca_zip#66]

(87) BroadcastExchange
Input [5]: [ca_address_sk#60, ca_street_number#65, ca_street_name#62, ca_city#63, ca_zip#66]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, true] as bigint)),false), [plan_id=11]

(88) BroadcastHashJoin [codegen id : 18]
Left keys [1]: [ss_addr_sk#5]
Right keys [1]: [ca_address_sk#60]
Join type: Inner
Join condition: None

(89) Project [codegen id : 18]
Output [16]: [ss_item_sk#1, ss_wholesale_cost#9, ss_list_price#10, ss_coupon_amt#11, d_year#35, s_store_name#37, s_zip#39, c_current_addr_sk#43, d_year#47, d_year#49, hd_income_band_sk#57, hd_income_band_sk#59, ca_street_number#65, ca_street_name#62, ca_city#63, ca_zip#66]
Input [18]: [ss_item_sk#1, ss_addr_sk#5, ss_wholesale_cost#9, ss_list_price#10, ss_coupon_amt#11, d_year#35, s_store_name#37, s_zip#39, c_current_addr_sk#43, d_year#47, d_year#49, hd_income_band_sk#57, hd_income_band_sk#59, ca_address_sk#60, ca_street_number#65, ca_street_name#62, ca_city#63, ca_zip#66]

(90) ReusedExchange [Reuses operator id: 87]
Output [5]: [ca_address_sk#67, ca_street_number#68, ca_street_name#69, ca_city#70, ca_zip#71]

(91) BroadcastHashJoin [codegen id : 18]
Left keys [1]: [c_current_addr_sk#43]
Right keys [1]: [ca_address_sk#67]
Join type: Inner
Join condition: None

(92) Project [codegen id : 18]
Output [19]: [ss_item_sk#1, ss_wholesale_cost#9, ss_list_price#10, ss_coupon_amt#11, d_year#35, s_store_name#37, s_zip#39, d_year#47, d_year#49, hd_income_band_sk#57, hd_income_band_sk#59, ca_street_number#65, ca_street_name#62, ca_city#63, ca_zip#66, ca_street_number#68, ca_street_name#69, ca_city#70, ca_zip#71]
Input [21]: [ss_item_sk#1, ss_wholesale_cost#9, ss_list_price#10, ss_coupon_amt#11, d_year#35, s_store_name#37, s_zip#39, c_current_addr_sk#43, d_year#47, d_year#49, hd_income_band_sk#57, hd_income_band_sk#59, ca_street_number#65, ca_street_name#62, ca_city#63, ca_zip#66, ca_address_sk#67, ca_street_number#68, ca_street_name#69, ca_city#70, ca_zip#71]

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

(94) CometFilter
Input [1]: [ib_income_band_sk#72]
Condition : isnotnull(ib_income_band_sk#72)

(95) CometColumnarToRow [codegen id : 15]
Input [1]: [ib_income_band_sk#72]

(96) BroadcastExchange
Input [1]: [ib_income_band_sk#72]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, false] as bigint)),false), [plan_id=12]

(97) BroadcastHashJoin [codegen id : 18]
Left keys [1]: [hd_income_band_sk#57]
Right keys [1]: [ib_income_band_sk#72]
Join type: Inner
Join condition: None

(98) Project [codegen id : 18]
Output [18]: [ss_item_sk#1, ss_wholesale_cost#9, ss_list_price#10, ss_coupon_amt#11, d_year#35, s_store_name#37, s_zip#39, d_year#47, d_year#49, hd_income_band_sk#59, ca_street_number#65, ca_street_name#62, ca_city#63, ca_zip#66, ca_street_number#68, ca_street_name#69, ca_city#70, ca_zip#71]
Input [20]: [ss_item_sk#1, ss_wholesale_cost#9, ss_list_price#10, ss_coupon_amt#11, d_year#35, s_store_name#37, s_zip#39, d_year#47, d_year#49, hd_income_band_sk#57, hd_income_band_sk#59, ca_street_number#65, ca_street_name#62, ca_city#63, ca_zip#66, ca_street_number#68, ca_street_name#69, ca_city#70, ca_zip#71, ib_income_band_sk#72]

(99) ReusedExchange [Reuses operator id: 96]
Output [1]: [ib_income_band_sk#73]

(100) BroadcastHashJoin [codegen id : 18]
Left keys [1]: [hd_income_band_sk#59]
Right keys [1]: [ib_income_band_sk#73]
Join type: Inner
Join condition: None

(101) Project [codegen id : 18]
Output [17]: [ss_item_sk#1, ss_wholesale_cost#9, ss_list_price#10, ss_coupon_amt#11, d_year#35, s_store_name#37, s_zip#39, d_year#47, d_year#49, ca_street_number#65, ca_street_name#62, ca_city#63, ca_zip#66, ca_street_number#68, ca_street_name#69, ca_city#70, ca_zip#71]
Input [19]: [ss_item_sk#1, ss_wholesale_cost#9, ss_list_price#10, ss_coupon_amt#11, d_year#35, s_store_name#37, s_zip#39, d_year#47, d_year#49, hd_income_band_sk#59, ca_street_number#65, ca_street_name#62, ca_city#63, ca_zip#66, ca_street_number#68, ca_street_name#69, ca_city#70, ca_zip#71, ib_income_band_sk#73]

(102) CometScan [native_iceberg_compat] parquet spark_catalog.default.item
Output [4]: [i_item_sk#74, i_current_price#75, i_color#76, i_product_name#77]
Batched: true
Location [not included in comparison]/{warehouse_dir}/item]
PushedFilters: [IsNotNull(i_current_price), GreaterThanOrEqual(i_current_price,64.00), LessThanOrEqual(i_current_price,74.00), GreaterThanOrEqual(i_current_price,65.00), LessThanOrEqual(i_current_price,79.00), IsNotNull(i_item_sk)]
ReadSchema: struct<i_item_sk:int,i_current_price:decimal(7,2),i_color:string,i_product_name:string>

(103) CometFilter
Input [4]: [i_item_sk#74, i_current_price#75, i_color#76, i_product_name#77]
Condition : ((((((isnotnull(i_current_price#75) AND static_invoke(CharVarcharCodegenUtils.readSidePadding(i_color#76, 20)) IN (purple              ,burlywood           ,indian              ,spring              ,floral              ,medium              )) AND (i_current_price#75 >= 64.00)) AND (i_current_price#75 <= 74.00)) AND (i_current_price#75 >= 65.00)) AND (i_current_price#75 <= 79.00)) AND isnotnull(i_item_sk#74))

(104) CometProject
Input [4]: [i_item_sk#74, i_current_price#75, i_color#76, i_product_name#77]
Arguments: [i_item_sk#74, i_product_name#78], [i_item_sk#74, static_invoke(CharVarcharCodegenUtils.readSidePadding(i_product_name#77, 50)) AS i_product_name#78]

(105) CometColumnarToRow [codegen id : 17]
Input [2]: [i_item_sk#74, i_product_name#78]

(106) BroadcastExchange
Input [2]: [i_item_sk#74, i_product_name#78]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, true] as bigint)),false), [plan_id=13]

(107) BroadcastHashJoin [codegen id : 18]
Left keys [1]: [ss_item_sk#1]
Right keys [1]: [i_item_sk#74]
Join type: Inner
Join condition: None

(108) Project [codegen id : 18]
Output [18]: [ss_wholesale_cost#9, ss_list_price#10, ss_coupon_amt#11, d_year#35, d_year#47, d_year#49, s_store_name#37, s_zip#39, ca_street_number#65, ca_street_name#62, ca_city#63, ca_zip#66, ca_street_number#68, ca_street_name#69, ca_city#70, ca_zip#71, i_item_sk#74, i_product_name#78]
Input [19]: [ss_item_sk#1, ss_wholesale_cost#9, ss_list_price#10, ss_coupon_amt#11, d_year#35, s_store_name#37, s_zip#39, d_year#47, d_year#49, ca_street_number#65, ca_street_name#62, ca_city#63, ca_zip#66, ca_street_number#68, ca_street_name#69, ca_city#70, ca_zip#71, i_item_sk#74, i_product_name#78]

(109) HashAggregate [codegen id : 18]
Input [18]: [ss_wholesale_cost#9, ss_list_price#10, ss_coupon_amt#11, d_year#35, d_year#47, d_year#49, s_store_name#37, s_zip#39, ca_street_number#65, ca_street_name#62, ca_city#63, ca_zip#66, ca_street_number#68, ca_street_name#69, ca_city#70, ca_zip#71, i_item_sk#74, i_product_name#78]
Keys [15]: [i_product_name#78, i_item_sk#74, s_store_name#37, s_zip#39, ca_street_number#65, ca_street_name#62, ca_city#63, ca_zip#66, ca_street_number#68, ca_street_name#69, ca_city#70, ca_zip#71, d_year#35, d_year#47, d_year#49]
Functions [4]: [partial_count(1), partial_sum(UnscaledValue(ss_wholesale_cost#9)), partial_sum(UnscaledValue(ss_list_price#10)), partial_sum(UnscaledValue(ss_coupon_amt#11))]
Aggregate Attributes [4]: [count#79, sum#80, sum#81, sum#82]
Results [19]: [i_product_name#78, i_item_sk#74, s_store_name#37, s_zip#39, ca_street_number#65, ca_street_name#62, ca_city#63, ca_zip#66, ca_street_number#68, ca_street_name#69, ca_city#70, ca_zip#71, d_year#35, d_year#47, d_year#49, count#83, sum#84, sum#85, sum#86]

(110) HashAggregate [codegen id : 18]
Input [19]: [i_product_name#78, i_item_sk#74, s_store_name#37, s_zip#39, ca_street_number#65, ca_street_name#62, ca_city#63, ca_zip#66, ca_street_number#68, ca_street_name#69, ca_city#70, ca_zip#71, d_year#35, d_year#47, d_year#49, count#83, sum#84, sum#85, sum#86]
Keys [15]: [i_product_name#78, i_item_sk#74, s_store_name#37, s_zip#39, ca_street_number#65, ca_street_name#62, ca_city#63, ca_zip#66, ca_street_number#68, ca_street_name#69, ca_city#70, ca_zip#71, d_year#35, d_year#47, d_year#49]
Functions [4]: [count(1), sum(UnscaledValue(ss_wholesale_cost#9)), sum(UnscaledValue(ss_list_price#10)), sum(UnscaledValue(ss_coupon_amt#11))]
Aggregate Attributes [4]: [count(1)#87, sum(UnscaledValue(ss_wholesale_cost#9))#88, sum(UnscaledValue(ss_list_price#10))#89, sum(UnscaledValue(ss_coupon_amt#11))#90]
Results [17]: [i_product_name#78 AS product_name#91, i_item_sk#74 AS item_sk#92, s_store_name#37 AS store_name#93, s_zip#39 AS store_zip#94, ca_street_number#65 AS b_street_number#95, ca_street_name#62 AS b_streen_name#96, ca_city#63 AS b_city#97, ca_zip#66 AS b_zip#98, ca_street_number#68 AS c_street_number#99, ca_street_name#69 AS c_street_name#100, ca_city#70 AS c_city#101, ca_zip#71 AS c_zip#102, d_year#35 AS syear#103, count(1)#87 AS cnt#104, MakeDecimal(sum(UnscaledValue(ss_wholesale_cost#9))#88,17,2) AS s1#105, MakeDecimal(sum(UnscaledValue(ss_list_price#10))#89,17,2) AS s2#106, MakeDecimal(sum(UnscaledValue(ss_coupon_amt#11))#90,17,2) AS s3#107]

(111) CometColumnarExchange
Input [17]: [product_name#91, item_sk#92, store_name#93, store_zip#94, b_street_number#95, b_streen_name#96, b_city#97, b_zip#98, c_street_number#99, c_street_name#100, c_city#101, c_zip#102, syear#103, cnt#104, s1#105, s2#106, s3#107]
Arguments: hashpartitioning(item_sk#92, store_name#93, store_zip#94, 5), ENSURE_REQUIREMENTS, CometColumnarShuffle, [plan_id=14]

(112) CometSort
Input [17]: [product_name#91, item_sk#92, store_name#93, store_zip#94, b_street_number#95, b_streen_name#96, b_city#97, b_zip#98, c_street_number#99, c_street_name#100, c_city#101, c_zip#102, syear#103, cnt#104, s1#105, s2#106, s3#107]
Arguments: [product_name#91, item_sk#92, store_name#93, store_zip#94, b_street_number#95, b_streen_name#96, b_city#97, b_zip#98, c_street_number#99, c_street_name#100, c_city#101, c_zip#102, syear#103, cnt#104, s1#105, s2#106, s3#107], [item_sk#92 ASC NULLS FIRST, store_name#93 ASC NULLS FIRST, store_zip#94 ASC NULLS FIRST]

(113) CometScan [native_iceberg_compat] parquet spark_catalog.default.store_sales
Output [12]: [ss_item_sk#108, ss_customer_sk#109, ss_cdemo_sk#110, ss_hdemo_sk#111, ss_addr_sk#112, ss_store_sk#113, ss_promo_sk#114, ss_ticket_number#115, ss_wholesale_cost#116, ss_list_price#117, ss_coupon_amt#118, ss_sold_date_sk#119]
Batched: true
Location: InMemoryFileIndex []
PartitionFilters: [isnotnull(ss_sold_date_sk#119), dynamicpruningexpression(ss_sold_date_sk#119 IN dynamicpruning#120)]
PushedFilters: [IsNotNull(ss_item_sk), IsNotNull(ss_ticket_number), IsNotNull(ss_store_sk), IsNotNull(ss_customer_sk), IsNotNull(ss_cdemo_sk), IsNotNull(ss_promo_sk), IsNotNull(ss_hdemo_sk), IsNotNull(ss_addr_sk)]
ReadSchema: struct<ss_item_sk:int,ss_customer_sk:int,ss_cdemo_sk:int,ss_hdemo_sk:int,ss_addr_sk:int,ss_store_sk:int,ss_promo_sk:int,ss_ticket_number:int,ss_wholesale_cost:decimal(7,2),ss_list_price:decimal(7,2),ss_coupon_amt:decimal(7,2)>

(114) CometFilter
Input [12]: [ss_item_sk#108, ss_customer_sk#109, ss_cdemo_sk#110, ss_hdemo_sk#111, ss_addr_sk#112, ss_store_sk#113, ss_promo_sk#114, ss_ticket_number#115, ss_wholesale_cost#116, ss_list_price#117, ss_coupon_amt#118, ss_sold_date_sk#119]
Condition : (((((((isnotnull(ss_item_sk#108) AND isnotnull(ss_ticket_number#115)) AND isnotnull(ss_store_sk#113)) AND isnotnull(ss_customer_sk#109)) AND isnotnull(ss_cdemo_sk#110)) AND isnotnull(ss_promo_sk#114)) AND isnotnull(ss_hdemo_sk#111)) AND isnotnull(ss_addr_sk#112))

(115) CometBroadcastExchange
Input [12]: [ss_item_sk#108, ss_customer_sk#109, ss_cdemo_sk#110, ss_hdemo_sk#111, ss_addr_sk#112, ss_store_sk#113, ss_promo_sk#114, ss_ticket_number#115, ss_wholesale_cost#116, ss_list_price#117, ss_coupon_amt#118, ss_sold_date_sk#119]
Arguments: [ss_item_sk#108, ss_customer_sk#109, ss_cdemo_sk#110, ss_hdemo_sk#111, ss_addr_sk#112, ss_store_sk#113, ss_promo_sk#114, ss_ticket_number#115, ss_wholesale_cost#116, ss_list_price#117, ss_coupon_amt#118, ss_sold_date_sk#119]

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

(117) CometFilter
Input [3]: [sr_item_sk#121, sr_ticket_number#122, sr_returned_date_sk#123]
Condition : (isnotnull(sr_item_sk#121) AND isnotnull(sr_ticket_number#122))

(118) CometProject
Input [3]: [sr_item_sk#121, sr_ticket_number#122, sr_returned_date_sk#123]
Arguments: [sr_item_sk#121, sr_ticket_number#122], [sr_item_sk#121, sr_ticket_number#122]

(119) CometBroadcastHashJoin
Left output [12]: [ss_item_sk#108, ss_customer_sk#109, ss_cdemo_sk#110, ss_hdemo_sk#111, ss_addr_sk#112, ss_store_sk#113, ss_promo_sk#114, ss_ticket_number#115, ss_wholesale_cost#116, ss_list_price#117, ss_coupon_amt#118, ss_sold_date_sk#119]
Right output [2]: [sr_item_sk#121, sr_ticket_number#122]
Arguments: [ss_item_sk#108, ss_ticket_number#115], [sr_item_sk#121, sr_ticket_number#122], Inner, BuildLeft

(120) CometProject
Input [14]: [ss_item_sk#108, ss_customer_sk#109, ss_cdemo_sk#110, ss_hdemo_sk#111, ss_addr_sk#112, ss_store_sk#113, ss_promo_sk#114, ss_ticket_number#115, ss_wholesale_cost#116, ss_list_price#117, ss_coupon_amt#118, ss_sold_date_sk#119, sr_item_sk#121, sr_ticket_number#122]
Arguments: [ss_item_sk#108, ss_customer_sk#109, ss_cdemo_sk#110, ss_hdemo_sk#111, ss_addr_sk#112, ss_store_sk#113, ss_promo_sk#114, ss_wholesale_cost#116, ss_list_price#117, ss_coupon_amt#118, ss_sold_date_sk#119], [ss_item_sk#108, ss_customer_sk#109, ss_cdemo_sk#110, ss_hdemo_sk#111, ss_addr_sk#112, ss_store_sk#113, ss_promo_sk#114, ss_wholesale_cost#116, ss_list_price#117, ss_coupon_amt#118, ss_sold_date_sk#119]

(121) CometExchange
Input [11]: [ss_item_sk#108, ss_customer_sk#109, ss_cdemo_sk#110, ss_hdemo_sk#111, ss_addr_sk#112, ss_store_sk#113, ss_promo_sk#114, ss_wholesale_cost#116, ss_list_price#117, ss_coupon_amt#118, ss_sold_date_sk#119]
Arguments: hashpartitioning(ss_item_sk#108, 5), ENSURE_REQUIREMENTS, CometNativeShuffle, [plan_id=15]

(122) CometSort
Input [11]: [ss_item_sk#108, ss_customer_sk#109, ss_cdemo_sk#110, ss_hdemo_sk#111, ss_addr_sk#112, ss_store_sk#113, ss_promo_sk#114, ss_wholesale_cost#116, ss_list_price#117, ss_coupon_amt#118, ss_sold_date_sk#119]
Arguments: [ss_item_sk#108, ss_customer_sk#109, ss_cdemo_sk#110, ss_hdemo_sk#111, ss_addr_sk#112, ss_store_sk#113, ss_promo_sk#114, ss_wholesale_cost#116, ss_list_price#117, ss_coupon_amt#118, ss_sold_date_sk#119], [ss_item_sk#108 ASC NULLS FIRST]

(123) CometColumnarToRow [codegen id : 19]
Input [11]: [ss_item_sk#108, ss_customer_sk#109, ss_cdemo_sk#110, ss_hdemo_sk#111, ss_addr_sk#112, ss_store_sk#113, ss_promo_sk#114, ss_wholesale_cost#116, ss_list_price#117, ss_coupon_amt#118, ss_sold_date_sk#119]

(124) ReusedExchange [Reuses operator id: 25]
Output [4]: [cs_item_sk#124, sum#125, sum#126, isEmpty#127]

(125) CometColumnarToRow [codegen id : 20]
Input [4]: [cs_item_sk#124, sum#125, sum#126, isEmpty#127]

(126) HashAggregate [codegen id : 20]
Input [4]: [cs_item_sk#124, sum#125, sum#126, isEmpty#127]
Keys [1]: [cs_item_sk#124]
Functions [2]: [sum(UnscaledValue(cs_ext_list_price#128)), sum(((cr_refunded_cash#129 + cr_reversed_charge#130) + cr_store_credit#131))]
Aggregate Attributes [2]: [sum(UnscaledValue(cs_ext_list_price#128))#30, sum(((cr_refunded_cash#129 + cr_reversed_charge#130) + cr_store_credit#131))#31]
Results [3]: [cs_item_sk#124, MakeDecimal(sum(UnscaledValue(cs_ext_list_price#128))#30,17,2) AS sale#132, sum(((cr_refunded_cash#129 + cr_reversed_charge#130) + cr_store_credit#131))#31 AS refund#133]

(127) Filter [codegen id : 20]
Input [3]: [cs_item_sk#124, sale#132, refund#133]
Condition : ((isnotnull(sale#132) AND isnotnull(refund#133)) AND (cast(sale#132 as decimal(21,2)) > (2 * refund#133)))

(128) Project [codegen id : 20]
Output [1]: [cs_item_sk#124]
Input [3]: [cs_item_sk#124, sale#132, refund#133]

(129) Sort [codegen id : 20]
Input [1]: [cs_item_sk#124]
Arguments: [cs_item_sk#124 ASC NULLS FIRST], false, 0

(130) SortMergeJoin [codegen id : 36]
Left keys [1]: [ss_item_sk#108]
Right keys [1]: [cs_item_sk#124]
Join type: Inner
Join condition: None

(131) Project [codegen id : 36]
Output [11]: [ss_item_sk#108, ss_customer_sk#109, ss_cdemo_sk#110, ss_hdemo_sk#111, ss_addr_sk#112, ss_store_sk#113, ss_promo_sk#114, ss_wholesale_cost#116, ss_list_price#117, ss_coupon_amt#118, ss_sold_date_sk#119]
Input [12]: [ss_item_sk#108, ss_customer_sk#109, ss_cdemo_sk#110, ss_hdemo_sk#111, ss_addr_sk#112, ss_store_sk#113, ss_promo_sk#114, ss_wholesale_cost#116, ss_list_price#117, ss_coupon_amt#118, ss_sold_date_sk#119, cs_item_sk#124]

(132) ReusedExchange [Reuses operator id: 193]
Output [2]: [d_date_sk#134, d_year#135]

(133) BroadcastHashJoin [codegen id : 36]
Left keys [1]: [ss_sold_date_sk#119]
Right keys [1]: [d_date_sk#134]
Join type: Inner
Join condition: None

(134) Project [codegen id : 36]
Output [11]: [ss_item_sk#108, ss_customer_sk#109, ss_cdemo_sk#110, ss_hdemo_sk#111, ss_addr_sk#112, ss_store_sk#113, ss_promo_sk#114, ss_wholesale_cost#116, ss_list_price#117, ss_coupon_amt#118, d_year#135]
Input [13]: [ss_item_sk#108, ss_customer_sk#109, ss_cdemo_sk#110, ss_hdemo_sk#111, ss_addr_sk#112, ss_store_sk#113, ss_promo_sk#114, ss_wholesale_cost#116, ss_list_price#117, ss_coupon_amt#118, ss_sold_date_sk#119, d_date_sk#134, d_year#135]

(135) ReusedExchange [Reuses operator id: 40]
Output [3]: [s_store_sk#136, s_store_name#137, s_zip#138]

(136) BroadcastHashJoin [codegen id : 36]
Left keys [1]: [ss_store_sk#113]
Right keys [1]: [s_store_sk#136]
Join type: Inner
Join condition: None

(137) Project [codegen id : 36]
Output [12]: [ss_item_sk#108, ss_customer_sk#109, ss_cdemo_sk#110, ss_hdemo_sk#111, ss_addr_sk#112, ss_promo_sk#114, ss_wholesale_cost#116, ss_list_price#117, ss_coupon_amt#118, d_year#135, s_store_name#137, s_zip#138]
Input [14]: [ss_item_sk#108, ss_customer_sk#109, ss_cdemo_sk#110, ss_hdemo_sk#111, ss_addr_sk#112, ss_store_sk#113, ss_promo_sk#114, ss_wholesale_cost#116, ss_list_price#117, ss_coupon_amt#118, d_year#135, s_store_sk#136, s_store_name#137, s_zip#138]

(138) ReusedExchange [Reuses operator id: 46]
Output [6]: [c_customer_sk#139, c_current_cdemo_sk#140, c_current_hdemo_sk#141, c_current_addr_sk#142, c_first_shipto_date_sk#143, c_first_sales_date_sk#144]

(139) BroadcastHashJoin [codegen id : 36]
Left keys [1]: [ss_customer_sk#109]
Right keys [1]: [c_customer_sk#139]
Join type: Inner
Join condition: None

(140) Project [codegen id : 36]
Output [16]: [ss_item_sk#108, ss_cdemo_sk#110, ss_hdemo_sk#111, ss_addr_sk#112, ss_promo_sk#114, ss_wholesale_cost#116, ss_list_price#117, ss_coupon_amt#118, d_year#135, s_store_name#137, s_zip#138, c_current_cdemo_sk#140, c_current_hdemo_sk#141, c_current_addr_sk#142, c_first_shipto_date_sk#143, c_first_sales_date_sk#144]
Input [18]: [ss_item_sk#108, ss_customer_sk#109, ss_cdemo_sk#110, ss_hdemo_sk#111, ss_addr_sk#112, ss_promo_sk#114, ss_wholesale_cost#116, ss_list_price#117, ss_coupon_amt#118, d_year#135, s_store_name#137, s_zip#138, c_customer_sk#139, c_current_cdemo_sk#140, c_current_hdemo_sk#141, c_current_addr_sk#142, c_first_shipto_date_sk#143, c_first_sales_date_sk#144]

(141) ReusedExchange [Reuses operator id: 52]
Output [2]: [d_date_sk#145, d_year#146]

(142) BroadcastHashJoin [codegen id : 36]
Left keys [1]: [c_first_sales_date_sk#144]
Right keys [1]: [d_date_sk#145]
Join type: Inner
Join condition: None

(143) Project [codegen id : 36]
Output [16]: [ss_item_sk#108, ss_cdemo_sk#110, ss_hdemo_sk#111, ss_addr_sk#112, ss_promo_sk#114, ss_wholesale_cost#116, ss_list_price#117, ss_coupon_amt#118, d_year#135, s_store_name#137, s_zip#138, c_current_cdemo_sk#140, c_current_hdemo_sk#141, c_current_addr_sk#142, c_first_shipto_date_sk#143, d_year#146]
Input [18]: [ss_item_sk#108, ss_cdemo_sk#110, ss_hdemo_sk#111, ss_addr_sk#112, ss_promo_sk#114, ss_wholesale_cost#116, ss_list_price#117, ss_coupon_amt#118, d_year#135, s_store_name#137, s_zip#138, c_current_cdemo_sk#140, c_current_hdemo_sk#141, c_current_addr_sk#142, c_first_shipto_date_sk#143, c_first_sales_date_sk#144, d_date_sk#145, d_year#146]

(144) ReusedExchange [Reuses operator id: 52]
Output [2]: [d_date_sk#147, d_year#148]

(145) BroadcastHashJoin [codegen id : 36]
Left keys [1]: [c_first_shipto_date_sk#143]
Right keys [1]: [d_date_sk#147]
Join type: Inner
Join condition: None

(146) Project [codegen id : 36]
Output [16]: [ss_item_sk#108, ss_cdemo_sk#110, ss_hdemo_sk#111, ss_addr_sk#112, ss_promo_sk#114, ss_wholesale_cost#116, ss_list_price#117, ss_coupon_amt#118, d_year#135, s_store_name#137, s_zip#138, c_current_cdemo_sk#140, c_current_hdemo_sk#141, c_current_addr_sk#142, d_year#146, d_year#148]
Input [18]: [ss_item_sk#108, ss_cdemo_sk#110, ss_hdemo_sk#111, ss_addr_sk#112, ss_promo_sk#114, ss_wholesale_cost#116, ss_list_price#117, ss_coupon_amt#118, d_year#135, s_store_name#137, s_zip#138, c_current_cdemo_sk#140, c_current_hdemo_sk#141, c_current_addr_sk#142, c_first_shipto_date_sk#143, d_year#146, d_date_sk#147, d_year#148]

(147) ReusedExchange [Reuses operator id: 62]
Output [2]: [cd_demo_sk#149, cd_marital_status#150]

(148) BroadcastHashJoin [codegen id : 36]
Left keys [1]: [ss_cdemo_sk#110]
Right keys [1]: [cd_demo_sk#149]
Join type: Inner
Join condition: None

(149) Project [codegen id : 36]
Output [16]: [ss_item_sk#108, ss_hdemo_sk#111, ss_addr_sk#112, ss_promo_sk#114, ss_wholesale_cost#116, ss_list_price#117, ss_coupon_amt#118, d_year#135, s_store_name#137, s_zip#138, c_current_cdemo_sk#140, c_current_hdemo_sk#141, c_current_addr_sk#142, d_year#146, d_year#148, cd_marital_status#150]
Input [18]: [ss_item_sk#108, ss_cdemo_sk#110, ss_hdemo_sk#111, ss_addr_sk#112, ss_promo_sk#114, ss_wholesale_cost#116, ss_list_price#117, ss_coupon_amt#118, d_year#135, s_store_name#137, s_zip#138, c_current_cdemo_sk#140, c_current_hdemo_sk#141, c_current_addr_sk#142, d_year#146, d_year#148, cd_demo_sk#149, cd_marital_status#150]

(150) ReusedExchange [Reuses operator id: 62]
Output [2]: [cd_demo_sk#151, cd_marital_status#152]

(151) BroadcastHashJoin [codegen id : 36]
Left keys [1]: [c_current_cdemo_sk#140]
Right keys [1]: [cd_demo_sk#151]
Join type: Inner
Join condition: NOT (cd_marital_status#150 = cd_marital_status#152)

(152) Project [codegen id : 36]
Output [14]: [ss_item_sk#108, ss_hdemo_sk#111, ss_addr_sk#112, ss_promo_sk#114, ss_wholesale_cost#116, ss_list_price#117, ss_coupon_amt#118, d_year#135, s_store_name#137, s_zip#138, c_current_hdemo_sk#141, c_current_addr_sk#142, d_year#146, d_year#148]
Input [18]: [ss_item_sk#108, ss_hdemo_sk#111, ss_addr_sk#112, ss_promo_sk#114, ss_wholesale_cost#116, ss_list_price#117, ss_coupon_amt#118, d_year#135, s_store_name#137, s_zip#138, c_current_cdemo_sk#140, c_current_hdemo_sk#141, c_current_addr_sk#142, d_year#146, d_year#148, cd_marital_status#150, cd_demo_sk#151, cd_marital_status#152]

(153) ReusedExchange [Reuses operator id: 71]
Output [1]: [p_promo_sk#153]

(154) BroadcastHashJoin [codegen id : 36]
Left keys [1]: [ss_promo_sk#114]
Right keys [1]: [p_promo_sk#153]
Join type: Inner
Join condition: None

(155) Project [codegen id : 36]
Output [13]: [ss_item_sk#108, ss_hdemo_sk#111, ss_addr_sk#112, ss_wholesale_cost#116, ss_list_price#117, ss_coupon_amt#118, d_year#135, s_store_name#137, s_zip#138, c_current_hdemo_sk#141, c_current_addr_sk#142, d_year#146, d_year#148]
Input [15]: [ss_item_sk#108, ss_hdemo_sk#111, ss_addr_sk#112, ss_promo_sk#114, ss_wholesale_cost#116, ss_list_price#117, ss_coupon_amt#118, d_year#135, s_store_name#137, s_zip#138, c_current_hdemo_sk#141, c_current_addr_sk#142, d_year#146, d_year#148, p_promo_sk#153]

(156) ReusedExchange [Reuses operator id: 77]
Output [2]: [hd_demo_sk#154, hd_income_band_sk#155]

(157) BroadcastHashJoin [codegen id : 36]
Left keys [1]: [ss_hdemo_sk#111]
Right keys [1]: [hd_demo_sk#154]
Join type: Inner
Join condition: None

(158) Project [codegen id : 36]
Output [13]: [ss_item_sk#108, ss_addr_sk#112, ss_wholesale_cost#116, ss_list_price#117, ss_coupon_amt#118, d_year#135, s_store_name#137, s_zip#138, c_current_hdemo_sk#141, c_current_addr_sk#142, d_year#146, d_year#148, hd_income_band_sk#155]
Input [15]: [ss_item_sk#108, ss_hdemo_sk#111, ss_addr_sk#112, ss_wholesale_cost#116, ss_list_price#117, ss_coupon_amt#118, d_year#135, s_store_name#137, s_zip#138, c_current_hdemo_sk#141, c_current_addr_sk#142, d_year#146, d_year#148, hd_demo_sk#154, hd_income_band_sk#155]

(159) ReusedExchange [Reuses operator id: 77]
Output [2]: [hd_demo_sk#156, hd_income_band_sk#157]

(160) BroadcastHashJoin [codegen id : 36]
Left keys [1]: [c_current_hdemo_sk#141]
Right keys [1]: [hd_demo_sk#156]
Join type: Inner
Join condition: None

(161) Project [codegen id : 36]
Output [13]: [ss_item_sk#108, ss_addr_sk#112, ss_wholesale_cost#116, ss_list_price#117, ss_coupon_amt#118, d_year#135, s_store_name#137, s_zip#138, c_current_addr_sk#142, d_year#146, d_year#148, hd_income_band_sk#155, hd_income_band_sk#157]
Input [15]: [ss_item_sk#108, ss_addr_sk#112, ss_wholesale_cost#116, ss_list_price#117, ss_coupon_amt#118, d_year#135, s_store_name#137, s_zip#138, c_current_hdemo_sk#141, c_current_addr_sk#142, d_year#146, d_year#148, hd_income_band_sk#155, hd_demo_sk#156, hd_income_band_sk#157]

(162) ReusedExchange [Reuses operator id: 87]
Output [5]: [ca_address_sk#158, ca_street_number#159, ca_street_name#160, ca_city#161, ca_zip#162]

(163) BroadcastHashJoin [codegen id : 36]
Left keys [1]: [ss_addr_sk#112]
Right keys [1]: [ca_address_sk#158]
Join type: Inner
Join condition: None

(164) Project [codegen id : 36]
Output [16]: [ss_item_sk#108, ss_wholesale_cost#116, ss_list_price#117, ss_coupon_amt#118, d_year#135, s_store_name#137, s_zip#138, c_current_addr_sk#142, d_year#146, d_year#148, hd_income_band_sk#155, hd_income_band_sk#157, ca_street_number#159, ca_street_name#160, ca_city#161, ca_zip#162]
Input [18]: [ss_item_sk#108, ss_addr_sk#112, ss_wholesale_cost#116, ss_list_price#117, ss_coupon_amt#118, d_year#135, s_store_name#137, s_zip#138, c_current_addr_sk#142, d_year#146, d_year#148, hd_income_band_sk#155, hd_income_band_sk#157, ca_address_sk#158, ca_street_number#159, ca_street_name#160, ca_city#161, ca_zip#162]

(165) ReusedExchange [Reuses operator id: 87]
Output [5]: [ca_address_sk#163, ca_street_number#164, ca_street_name#165, ca_city#166, ca_zip#167]

(166) BroadcastHashJoin [codegen id : 36]
Left keys [1]: [c_current_addr_sk#142]
Right keys [1]: [ca_address_sk#163]
Join type: Inner
Join condition: None

(167) Project [codegen id : 36]
Output [19]: [ss_item_sk#108, ss_wholesale_cost#116, ss_list_price#117, ss_coupon_amt#118, d_year#135, s_store_name#137, s_zip#138, d_year#146, d_year#148, hd_income_band_sk#155, hd_income_band_sk#157, ca_street_number#159, ca_street_name#160, ca_city#161, ca_zip#162, ca_street_number#164, ca_street_name#165, ca_city#166, ca_zip#167]
Input [21]: [ss_item_sk#108, ss_wholesale_cost#116, ss_list_price#117, ss_coupon_amt#118, d_year#135, s_store_name#137, s_zip#138, c_current_addr_sk#142, d_year#146, d_year#148, hd_income_band_sk#155, hd_income_band_sk#157, ca_street_number#159, ca_street_name#160, ca_city#161, ca_zip#162, ca_address_sk#163, ca_street_number#164, ca_street_name#165, ca_city#166, ca_zip#167]

(168) ReusedExchange [Reuses operator id: 96]
Output [1]: [ib_income_band_sk#168]

(169) BroadcastHashJoin [codegen id : 36]
Left keys [1]: [hd_income_band_sk#155]
Right keys [1]: [ib_income_band_sk#168]
Join type: Inner
Join condition: None

(170) Project [codegen id : 36]
Output [18]: [ss_item_sk#108, ss_wholesale_cost#116, ss_list_price#117, ss_coupon_amt#118, d_year#135, s_store_name#137, s_zip#138, d_year#146, d_year#148, hd_income_band_sk#157, ca_street_number#159, ca_street_name#160, ca_city#161, ca_zip#162, ca_street_number#164, ca_street_name#165, ca_city#166, ca_zip#167]
Input [20]: [ss_item_sk#108, ss_wholesale_cost#116, ss_list_price#117, ss_coupon_amt#118, d_year#135, s_store_name#137, s_zip#138, d_year#146, d_year#148, hd_income_band_sk#155, hd_income_band_sk#157, ca_street_number#159, ca_street_name#160, ca_city#161, ca_zip#162, ca_street_number#164, ca_street_name#165, ca_city#166, ca_zip#167, ib_income_band_sk#168]

(171) ReusedExchange [Reuses operator id: 96]
Output [1]: [ib_income_band_sk#169]

(172) BroadcastHashJoin [codegen id : 36]
Left keys [1]: [hd_income_band_sk#157]
Right keys [1]: [ib_income_band_sk#169]
Join type: Inner
Join condition: None

(173) Project [codegen id : 36]
Output [17]: [ss_item_sk#108, ss_wholesale_cost#116, ss_list_price#117, ss_coupon_amt#118, d_year#135, s_store_name#137, s_zip#138, d_year#146, d_year#148, ca_street_number#159, ca_street_name#160, ca_city#161, ca_zip#162, ca_street_number#164, ca_street_name#165, ca_city#166, ca_zip#167]
Input [19]: [ss_item_sk#108, ss_wholesale_cost#116, ss_list_price#117, ss_coupon_amt#118, d_year#135, s_store_name#137, s_zip#138, d_year#146, d_year#148, hd_income_band_sk#157, ca_street_number#159, ca_street_name#160, ca_city#161, ca_zip#162, ca_street_number#164, ca_street_name#165, ca_city#166, ca_zip#167, ib_income_band_sk#169]

(174) ReusedExchange [Reuses operator id: 106]
Output [2]: [i_item_sk#170, i_product_name#171]

(175) BroadcastHashJoin [codegen id : 36]
Left keys [1]: [ss_item_sk#108]
Right keys [1]: [i_item_sk#170]
Join type: Inner
Join condition: None

(176) Project [codegen id : 36]
Output [18]: [ss_wholesale_cost#116, ss_list_price#117, ss_coupon_amt#118, d_year#135, d_year#146, d_year#148, s_store_name#137, s_zip#138, ca_street_number#159, ca_street_name#160, ca_city#161, ca_zip#162, ca_street_number#164, ca_street_name#165, ca_city#166, ca_zip#167, i_item_sk#170, i_product_name#171]
Input [19]: [ss_item_sk#108, ss_wholesale_cost#116, ss_list_price#117, ss_coupon_amt#118, d_year#135, s_store_name#137, s_zip#138, d_year#146, d_year#148, ca_street_number#159, ca_street_name#160, ca_city#161, ca_zip#162, ca_street_number#164, ca_street_name#165, ca_city#166, ca_zip#167, i_item_sk#170, i_product_name#171]

(177) HashAggregate [codegen id : 36]
Input [18]: [ss_wholesale_cost#116, ss_list_price#117, ss_coupon_amt#118, d_year#135, d_year#146, d_year#148, s_store_name#137, s_zip#138, ca_street_number#159, ca_street_name#160, ca_city#161, ca_zip#162, ca_street_number#164, ca_street_name#165, ca_city#166, ca_zip#167, i_item_sk#170, i_product_name#171]
Keys [15]: [i_product_name#171, i_item_sk#170, s_store_name#137, s_zip#138, ca_street_number#159, ca_street_name#160, ca_city#161, ca_zip#162, ca_street_number#164, ca_street_name#165, ca_city#166, ca_zip#167, d_year#135, d_year#146, d_year#148]
Functions [4]: [partial_count(1), partial_sum(UnscaledValue(ss_wholesale_cost#116)), partial_sum(UnscaledValue(ss_list_price#117)), partial_sum(UnscaledValue(ss_coupon_amt#118))]
Aggregate Attributes [4]: [count#79, sum#172, sum#173, sum#174]
Results [19]: [i_product_name#171, i_item_sk#170, s_store_name#137, s_zip#138, ca_street_number#159, ca_street_name#160, ca_city#161, ca_zip#162, ca_street_number#164, ca_street_name#165, ca_city#166, ca_zip#167, d_year#135, d_year#146, d_year#148, count#83, sum#175, sum#176, sum#177]

(178) HashAggregate [codegen id : 36]
Input [19]: [i_product_name#171, i_item_sk#170, s_store_name#137, s_zip#138, ca_street_number#159, ca_street_name#160, ca_city#161, ca_zip#162, ca_street_number#164, ca_street_name#165, ca_city#166, ca_zip#167, d_year#135, d_year#146, d_year#148, count#83, sum#175, sum#176, sum#177]
Keys [15]: [i_product_name#171, i_item_sk#170, s_store_name#137, s_zip#138, ca_street_number#159, ca_street_name#160, ca_city#161, ca_zip#162, ca_street_number#164, ca_street_name#165, ca_city#166, ca_zip#167, d_year#135, d_year#146, d_year#148]
Functions [4]: [count(1), sum(UnscaledValue(ss_wholesale_cost#116)), sum(UnscaledValue(ss_list_price#117)), sum(UnscaledValue(ss_coupon_amt#118))]
Aggregate Attributes [4]: [count(1)#87, sum(UnscaledValue(ss_wholesale_cost#116))#88, sum(UnscaledValue(ss_list_price#117))#89, sum(UnscaledValue(ss_coupon_amt#118))#90]
Results [8]: [i_item_sk#170 AS item_sk#178, s_store_name#137 AS store_name#179, s_zip#138 AS store_zip#180, d_year#135 AS syear#181, count(1)#87 AS cnt#182, MakeDecimal(sum(UnscaledValue(ss_wholesale_cost#116))#88,17,2) AS s1#183, MakeDecimal(sum(UnscaledValue(ss_list_price#117))#89,17,2) AS s2#184, MakeDecimal(sum(UnscaledValue(ss_coupon_amt#118))#90,17,2) AS s3#185]

(179) CometColumnarExchange
Input [8]: [item_sk#178, store_name#179, store_zip#180, syear#181, cnt#182, s1#183, s2#184, s3#185]
Arguments: hashpartitioning(item_sk#178, store_name#179, store_zip#180, 5), ENSURE_REQUIREMENTS, CometColumnarShuffle, [plan_id=16]

(180) CometSort
Input [8]: [item_sk#178, store_name#179, store_zip#180, syear#181, cnt#182, s1#183, s2#184, s3#185]
Arguments: [item_sk#178, store_name#179, store_zip#180, syear#181, cnt#182, s1#183, s2#184, s3#185], [item_sk#178 ASC NULLS FIRST, store_name#179 ASC NULLS FIRST, store_zip#180 ASC NULLS FIRST]

(181) CometSortMergeJoin
Left output [17]: [product_name#91, item_sk#92, store_name#93, store_zip#94, b_street_number#95, b_streen_name#96, b_city#97, b_zip#98, c_street_number#99, c_street_name#100, c_city#101, c_zip#102, syear#103, cnt#104, s1#105, s2#106, s3#107]
Right output [8]: [item_sk#178, store_name#179, store_zip#180, syear#181, cnt#182, s1#183, s2#184, s3#185]
Arguments: [item_sk#92, store_name#93, store_zip#94], [item_sk#178, store_name#179, store_zip#180], Inner, (cnt#182 <= cnt#104)

(182) CometProject
Input [25]: [product_name#91, item_sk#92, store_name#93, store_zip#94, b_street_number#95, b_streen_name#96, b_city#97, b_zip#98, c_street_number#99, c_street_name#100, c_city#101, c_zip#102, syear#103, cnt#104, s1#105, s2#106, s3#107, item_sk#178, store_name#179, store_zip#180, syear#181, cnt#182, s1#183, s2#184, s3#185]
Arguments: [product_name#91, store_name#93, store_zip#94, b_street_number#95, b_streen_name#96, b_city#97, b_zip#98, c_street_number#99, c_street_name#100, c_city#101, c_zip#102, syear#103, cnt#104, s1#105, s2#106, s3#107, s1#183, s2#184, s3#185, syear#181, cnt#182], [product_name#91, store_name#93, store_zip#94, b_street_number#95, b_streen_name#96, b_city#97, b_zip#98, c_street_number#99, c_street_name#100, c_city#101, c_zip#102, syear#103, cnt#104, s1#105, s2#106, s3#107, s1#183, s2#184, s3#185, syear#181, cnt#182]

(183) CometColumnarExchange
Input [21]: [product_name#91, store_name#93, store_zip#94, b_street_number#95, b_streen_name#96, b_city#97, b_zip#98, c_street_number#99, c_street_name#100, c_city#101, c_zip#102, syear#103, cnt#104, s1#105, s2#106, s3#107, s1#183, s2#184, s3#185, syear#181, cnt#182]
Arguments: rangepartitioning(product_name#91 ASC NULLS FIRST, store_name#93 ASC NULLS FIRST, cnt#182 ASC NULLS FIRST, s1#105 ASC NULLS FIRST, s1#183 ASC NULLS FIRST, 5), ENSURE_REQUIREMENTS, CometColumnarShuffle, [plan_id=17]

(184) CometSort
Input [21]: [product_name#91, store_name#93, store_zip#94, b_street_number#95, b_streen_name#96, b_city#97, b_zip#98, c_street_number#99, c_street_name#100, c_city#101, c_zip#102, syear#103, cnt#104, s1#105, s2#106, s3#107, s1#183, s2#184, s3#185, syear#181, cnt#182]
Arguments: [product_name#91, store_name#93, store_zip#94, b_street_number#95, b_streen_name#96, b_city#97, b_zip#98, c_street_number#99, c_street_name#100, c_city#101, c_zip#102, syear#103, cnt#104, s1#105, s2#106, s3#107, s1#183, s2#184, s3#185, syear#181, cnt#182], [product_name#91 ASC NULLS FIRST, store_name#93 ASC NULLS FIRST, cnt#182 ASC NULLS FIRST, s1#105 ASC NULLS FIRST, s1#183 ASC NULLS FIRST]

(185) CometColumnarToRow [codegen id : 37]
Input [21]: [product_name#91, store_name#93, store_zip#94, b_street_number#95, b_streen_name#96, b_city#97, b_zip#98, c_street_number#99, c_street_name#100, c_city#101, c_zip#102, syear#103, cnt#104, s1#105, s2#106, s3#107, s1#183, s2#184, s3#185, syear#181, cnt#182]

===== Subqueries =====

Subquery:1 Hosting operator id = 1 Hosting Expression = ss_sold_date_sk#12 IN dynamicpruning#13
BroadcastExchange (189)
+- * CometColumnarToRow (188)
   +- CometFilter (187)
      +- CometScan [native_iceberg_compat] parquet spark_catalog.default.date_dim (186)


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

(187) CometFilter
Input [2]: [d_date_sk#34, d_year#35]
Condition : ((isnotnull(d_year#35) AND (d_year#35 = 1999)) AND isnotnull(d_date_sk#34))

(188) CometColumnarToRow [codegen id : 1]
Input [2]: [d_date_sk#34, d_year#35]

(189) BroadcastExchange
Input [2]: [d_date_sk#34, d_year#35]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, false] as bigint)),false), [plan_id=18]

Subquery:2 Hosting operator id = 113 Hosting Expression = ss_sold_date_sk#119 IN dynamicpruning#120
BroadcastExchange (193)
+- * CometColumnarToRow (192)
   +- CometFilter (191)
      +- CometScan [native_iceberg_compat] parquet spark_catalog.default.date_dim (190)


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

(191) CometFilter
Input [2]: [d_date_sk#134, d_year#135]
Condition : ((isnotnull(d_year#135) AND (d_year#135 = 2000)) AND isnotnull(d_date_sk#134))

(192) CometColumnarToRow [codegen id : 1]
Input [2]: [d_date_sk#134, d_year#135]

(193) BroadcastExchange
Input [2]: [d_date_sk#134, d_year#135]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, false] as bigint)),false), [plan_id=19]


