== Physical Plan ==
* CometColumnarToRow (64)
+- CometTakeOrderedAndProject (63)
   +- CometHashAggregate (62)
      +- CometExchange (61)
         +- CometHashAggregate (60)
            +- CometProject (59)
               +- CometSortMergeJoin (58)
                  :- CometSort (52)
                  :  +- CometExchange (51)
                  :     +- CometProject (50)
                  :        +- CometBroadcastHashJoin (49)
                  :           :- CometProject (45)
                  :           :  +- CometBroadcastHashJoin (44)
                  :           :     :- CometProject (40)
                  :           :     :  +- CometBroadcastHashJoin (39)
                  :           :     :     :- CometProject (35)
                  :           :     :     :  +- CometBroadcastHashJoin (34)
                  :           :     :     :     :- CometProject (29)
                  :           :     :     :     :  +- CometBroadcastHashJoin (28)
                  :           :     :     :     :     :- CometProject (23)
                  :           :     :     :     :     :  +- CometBroadcastHashJoin (22)
                  :           :     :     :     :     :     :- CometProject (17)
                  :           :     :     :     :     :     :  +- CometBroadcastHashJoin (16)
                  :           :     :     :     :     :     :     :- CometProject (12)
                  :           :     :     :     :     :     :     :  +- CometBroadcastHashJoin (11)
                  :           :     :     :     :     :     :     :     :- CometProject (7)
                  :           :     :     :     :     :     :     :     :  +- CometBroadcastHashJoin (6)
                  :           :     :     :     :     :     :     :     :     :- CometFilter (2)
                  :           :     :     :     :     :     :     :     :     :  +- CometScan [native_iceberg_compat] parquet spark_catalog.default.catalog_sales (1)
                  :           :     :     :     :     :     :     :     :     +- CometBroadcastExchange (5)
                  :           :     :     :     :     :     :     :     :        +- CometFilter (4)
                  :           :     :     :     :     :     :     :     :           +- CometScan [native_iceberg_compat] parquet spark_catalog.default.inventory (3)
                  :           :     :     :     :     :     :     :     +- CometBroadcastExchange (10)
                  :           :     :     :     :     :     :     :        +- CometFilter (9)
                  :           :     :     :     :     :     :     :           +- CometScan [native_iceberg_compat] parquet spark_catalog.default.warehouse (8)
                  :           :     :     :     :     :     :     +- CometBroadcastExchange (15)
                  :           :     :     :     :     :     :        +- CometFilter (14)
                  :           :     :     :     :     :     :           +- CometScan [native_iceberg_compat] parquet spark_catalog.default.item (13)
                  :           :     :     :     :     :     +- CometBroadcastExchange (21)
                  :           :     :     :     :     :        +- CometProject (20)
                  :           :     :     :     :     :           +- CometFilter (19)
                  :           :     :     :     :     :              +- CometScan [native_iceberg_compat] parquet spark_catalog.default.customer_demographics (18)
                  :           :     :     :     :     +- CometBroadcastExchange (27)
                  :           :     :     :     :        +- CometProject (26)
                  :           :     :     :     :           +- CometFilter (25)
                  :           :     :     :     :              +- CometScan [native_iceberg_compat] parquet spark_catalog.default.household_demographics (24)
                  :           :     :     :     +- CometBroadcastExchange (33)
                  :           :     :     :        +- CometProject (32)
                  :           :     :     :           +- CometFilter (31)
                  :           :     :     :              +- CometScan [native_iceberg_compat] parquet spark_catalog.default.date_dim (30)
                  :           :     :     +- CometBroadcastExchange (38)
                  :           :     :        +- CometFilter (37)
                  :           :     :           +- CometScan [native_iceberg_compat] parquet spark_catalog.default.date_dim (36)
                  :           :     +- CometBroadcastExchange (43)
                  :           :        +- CometFilter (42)
                  :           :           +- CometScan [native_iceberg_compat] parquet spark_catalog.default.date_dim (41)
                  :           +- CometBroadcastExchange (48)
                  :              +- CometFilter (47)
                  :                 +- CometScan [native_iceberg_compat] parquet spark_catalog.default.promotion (46)
                  +- CometSort (57)
                     +- CometExchange (56)
                        +- CometProject (55)
                           +- CometFilter (54)
                              +- CometScan [native_iceberg_compat] parquet spark_catalog.default.catalog_returns (53)


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

(2) CometFilter
Input [8]: [cs_ship_date_sk#1, cs_bill_cdemo_sk#2, cs_bill_hdemo_sk#3, cs_item_sk#4, cs_promo_sk#5, cs_order_number#6, cs_quantity#7, cs_sold_date_sk#8]
Condition : ((((isnotnull(cs_quantity#7) AND isnotnull(cs_item_sk#4)) AND isnotnull(cs_bill_cdemo_sk#2)) AND isnotnull(cs_bill_hdemo_sk#3)) AND isnotnull(cs_ship_date_sk#1))

(3) CometScan [native_iceberg_compat] parquet spark_catalog.default.inventory
Output [4]: [inv_item_sk#10, inv_warehouse_sk#11, inv_quantity_on_hand#12, inv_date_sk#13]
Batched: true
Location: InMemoryFileIndex []
PartitionFilters: [isnotnull(inv_date_sk#13)]
PushedFilters: [IsNotNull(inv_quantity_on_hand), IsNotNull(inv_item_sk), IsNotNull(inv_warehouse_sk)]
ReadSchema: struct<inv_item_sk:int,inv_warehouse_sk:int,inv_quantity_on_hand:int>

(4) CometFilter
Input [4]: [inv_item_sk#10, inv_warehouse_sk#11, inv_quantity_on_hand#12, inv_date_sk#13]
Condition : ((isnotnull(inv_quantity_on_hand#12) AND isnotnull(inv_item_sk#10)) AND isnotnull(inv_warehouse_sk#11))

(5) CometBroadcastExchange
Input [4]: [inv_item_sk#10, inv_warehouse_sk#11, inv_quantity_on_hand#12, inv_date_sk#13]
Arguments: [inv_item_sk#10, inv_warehouse_sk#11, inv_quantity_on_hand#12, inv_date_sk#13]

(6) CometBroadcastHashJoin
Left output [8]: [cs_ship_date_sk#1, cs_bill_cdemo_sk#2, cs_bill_hdemo_sk#3, cs_item_sk#4, cs_promo_sk#5, cs_order_number#6, cs_quantity#7, cs_sold_date_sk#8]
Right output [4]: [inv_item_sk#10, inv_warehouse_sk#11, inv_quantity_on_hand#12, inv_date_sk#13]
Arguments: [cs_item_sk#4], [inv_item_sk#10], Inner, (inv_quantity_on_hand#12 < cs_quantity#7), BuildRight

(7) CometProject
Input [12]: [cs_ship_date_sk#1, cs_bill_cdemo_sk#2, cs_bill_hdemo_sk#3, cs_item_sk#4, cs_promo_sk#5, cs_order_number#6, cs_quantity#7, cs_sold_date_sk#8, inv_item_sk#10, inv_warehouse_sk#11, inv_quantity_on_hand#12, inv_date_sk#13]
Arguments: [cs_ship_date_sk#1, cs_bill_cdemo_sk#2, cs_bill_hdemo_sk#3, cs_item_sk#4, cs_promo_sk#5, cs_order_number#6, cs_sold_date_sk#8, inv_warehouse_sk#11, inv_date_sk#13], [cs_ship_date_sk#1, cs_bill_cdemo_sk#2, cs_bill_hdemo_sk#3, cs_item_sk#4, cs_promo_sk#5, cs_order_number#6, cs_sold_date_sk#8, inv_warehouse_sk#11, inv_date_sk#13]

(8) CometScan [native_iceberg_compat] parquet spark_catalog.default.warehouse
Output [2]: [w_warehouse_sk#14, w_warehouse_name#15]
Batched: true
Location [not included in comparison]/{warehouse_dir}/warehouse]
PushedFilters: [IsNotNull(w_warehouse_sk)]
ReadSchema: struct<w_warehouse_sk:int,w_warehouse_name:string>

(9) CometFilter
Input [2]: [w_warehouse_sk#14, w_warehouse_name#15]
Condition : isnotnull(w_warehouse_sk#14)

(10) CometBroadcastExchange
Input [2]: [w_warehouse_sk#14, w_warehouse_name#15]
Arguments: [w_warehouse_sk#14, w_warehouse_name#15]

(11) CometBroadcastHashJoin
Left output [9]: [cs_ship_date_sk#1, cs_bill_cdemo_sk#2, cs_bill_hdemo_sk#3, cs_item_sk#4, cs_promo_sk#5, cs_order_number#6, cs_sold_date_sk#8, inv_warehouse_sk#11, inv_date_sk#13]
Right output [2]: [w_warehouse_sk#14, w_warehouse_name#15]
Arguments: [inv_warehouse_sk#11], [w_warehouse_sk#14], Inner, BuildRight

(12) CometProject
Input [11]: [cs_ship_date_sk#1, cs_bill_cdemo_sk#2, cs_bill_hdemo_sk#3, cs_item_sk#4, cs_promo_sk#5, cs_order_number#6, cs_sold_date_sk#8, inv_warehouse_sk#11, inv_date_sk#13, w_warehouse_sk#14, w_warehouse_name#15]
Arguments: [cs_ship_date_sk#1, cs_bill_cdemo_sk#2, cs_bill_hdemo_sk#3, cs_item_sk#4, cs_promo_sk#5, cs_order_number#6, cs_sold_date_sk#8, inv_date_sk#13, w_warehouse_name#15], [cs_ship_date_sk#1, cs_bill_cdemo_sk#2, cs_bill_hdemo_sk#3, cs_item_sk#4, cs_promo_sk#5, cs_order_number#6, cs_sold_date_sk#8, inv_date_sk#13, w_warehouse_name#15]

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

(14) CometFilter
Input [2]: [i_item_sk#16, i_item_desc#17]
Condition : isnotnull(i_item_sk#16)

(15) CometBroadcastExchange
Input [2]: [i_item_sk#16, i_item_desc#17]
Arguments: [i_item_sk#16, i_item_desc#17]

(16) CometBroadcastHashJoin
Left output [9]: [cs_ship_date_sk#1, cs_bill_cdemo_sk#2, cs_bill_hdemo_sk#3, cs_item_sk#4, cs_promo_sk#5, cs_order_number#6, cs_sold_date_sk#8, inv_date_sk#13, w_warehouse_name#15]
Right output [2]: [i_item_sk#16, i_item_desc#17]
Arguments: [cs_item_sk#4], [i_item_sk#16], Inner, BuildRight

(17) CometProject
Input [11]: [cs_ship_date_sk#1, cs_bill_cdemo_sk#2, cs_bill_hdemo_sk#3, cs_item_sk#4, cs_promo_sk#5, cs_order_number#6, cs_sold_date_sk#8, inv_date_sk#13, w_warehouse_name#15, i_item_sk#16, i_item_desc#17]
Arguments: [cs_ship_date_sk#1, cs_bill_cdemo_sk#2, cs_bill_hdemo_sk#3, cs_item_sk#4, cs_promo_sk#5, cs_order_number#6, cs_sold_date_sk#8, inv_date_sk#13, w_warehouse_name#15, i_item_desc#17], [cs_ship_date_sk#1, cs_bill_cdemo_sk#2, cs_bill_hdemo_sk#3, cs_item_sk#4, cs_promo_sk#5, cs_order_number#6, cs_sold_date_sk#8, inv_date_sk#13, w_warehouse_name#15, i_item_desc#17]

(18) CometScan [native_iceberg_compat] parquet spark_catalog.default.customer_demographics
Output [2]: [cd_demo_sk#18, cd_marital_status#19]
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>

(19) CometFilter
Input [2]: [cd_demo_sk#18, cd_marital_status#19]
Condition : ((staticinvoke(class org.apache.spark.sql.catalyst.util.CharVarcharCodegenUtils, StringType, readSidePadding, cd_marital_status#19, 1, true, false, true) = M) AND isnotnull(cd_demo_sk#18))

(20) CometProject
Input [2]: [cd_demo_sk#18, cd_marital_status#19]
Arguments: [cd_demo_sk#18], [cd_demo_sk#18]

(21) CometBroadcastExchange
Input [1]: [cd_demo_sk#18]
Arguments: [cd_demo_sk#18]

(22) CometBroadcastHashJoin
Left output [10]: [cs_ship_date_sk#1, cs_bill_cdemo_sk#2, cs_bill_hdemo_sk#3, cs_item_sk#4, cs_promo_sk#5, cs_order_number#6, cs_sold_date_sk#8, inv_date_sk#13, w_warehouse_name#15, i_item_desc#17]
Right output [1]: [cd_demo_sk#18]
Arguments: [cs_bill_cdemo_sk#2], [cd_demo_sk#18], Inner, BuildRight

(23) CometProject
Input [11]: [cs_ship_date_sk#1, cs_bill_cdemo_sk#2, cs_bill_hdemo_sk#3, cs_item_sk#4, cs_promo_sk#5, cs_order_number#6, cs_sold_date_sk#8, inv_date_sk#13, w_warehouse_name#15, i_item_desc#17, cd_demo_sk#18]
Arguments: [cs_ship_date_sk#1, cs_bill_hdemo_sk#3, cs_item_sk#4, cs_promo_sk#5, cs_order_number#6, cs_sold_date_sk#8, inv_date_sk#13, w_warehouse_name#15, i_item_desc#17], [cs_ship_date_sk#1, cs_bill_hdemo_sk#3, cs_item_sk#4, cs_promo_sk#5, cs_order_number#6, cs_sold_date_sk#8, inv_date_sk#13, w_warehouse_name#15, i_item_desc#17]

(24) CometScan [native_iceberg_compat] parquet spark_catalog.default.household_demographics
Output [2]: [hd_demo_sk#20, hd_buy_potential#21]
Batched: true
Location [not included in comparison]/{warehouse_dir}/household_demographics]
PushedFilters: [IsNotNull(hd_demo_sk)]
ReadSchema: struct<hd_demo_sk:int,hd_buy_potential:string>

(25) CometFilter
Input [2]: [hd_demo_sk#20, hd_buy_potential#21]
Condition : ((staticinvoke(class org.apache.spark.sql.catalyst.util.CharVarcharCodegenUtils, StringType, readSidePadding, hd_buy_potential#21, 15, true, false, true) = 1001-5000      ) AND isnotnull(hd_demo_sk#20))

(26) CometProject
Input [2]: [hd_demo_sk#20, hd_buy_potential#21]
Arguments: [hd_demo_sk#20], [hd_demo_sk#20]

(27) CometBroadcastExchange
Input [1]: [hd_demo_sk#20]
Arguments: [hd_demo_sk#20]

(28) CometBroadcastHashJoin
Left output [9]: [cs_ship_date_sk#1, cs_bill_hdemo_sk#3, cs_item_sk#4, cs_promo_sk#5, cs_order_number#6, cs_sold_date_sk#8, inv_date_sk#13, w_warehouse_name#15, i_item_desc#17]
Right output [1]: [hd_demo_sk#20]
Arguments: [cs_bill_hdemo_sk#3], [hd_demo_sk#20], Inner, BuildRight

(29) CometProject
Input [10]: [cs_ship_date_sk#1, cs_bill_hdemo_sk#3, cs_item_sk#4, cs_promo_sk#5, cs_order_number#6, cs_sold_date_sk#8, inv_date_sk#13, w_warehouse_name#15, i_item_desc#17, hd_demo_sk#20]
Arguments: [cs_ship_date_sk#1, cs_item_sk#4, cs_promo_sk#5, cs_order_number#6, cs_sold_date_sk#8, inv_date_sk#13, w_warehouse_name#15, i_item_desc#17], [cs_ship_date_sk#1, cs_item_sk#4, cs_promo_sk#5, cs_order_number#6, cs_sold_date_sk#8, inv_date_sk#13, w_warehouse_name#15, i_item_desc#17]

(30) CometScan [native_iceberg_compat] parquet spark_catalog.default.date_dim
Output [4]: [d_date_sk#22, d_date#23, d_week_seq#24, d_year#25]
Batched: true
Location [not included in comparison]/{warehouse_dir}/date_dim]
PushedFilters: [IsNotNull(d_year), EqualTo(d_year,2001), IsNotNull(d_date_sk), IsNotNull(d_week_seq), IsNotNull(d_date)]
ReadSchema: struct<d_date_sk:int,d_date:date,d_week_seq:int,d_year:int>

(31) CometFilter
Input [4]: [d_date_sk#22, d_date#23, d_week_seq#24, d_year#25]
Condition : ((((isnotnull(d_year#25) AND (d_year#25 = 2001)) AND isnotnull(d_date_sk#22)) AND isnotnull(d_week_seq#24)) AND isnotnull(d_date#23))

(32) CometProject
Input [4]: [d_date_sk#22, d_date#23, d_week_seq#24, d_year#25]
Arguments: [d_date_sk#22, d_date#23, d_week_seq#24], [d_date_sk#22, d_date#23, d_week_seq#24]

(33) CometBroadcastExchange
Input [3]: [d_date_sk#22, d_date#23, d_week_seq#24]
Arguments: [d_date_sk#22, d_date#23, d_week_seq#24]

(34) CometBroadcastHashJoin
Left output [8]: [cs_ship_date_sk#1, cs_item_sk#4, cs_promo_sk#5, cs_order_number#6, cs_sold_date_sk#8, inv_date_sk#13, w_warehouse_name#15, i_item_desc#17]
Right output [3]: [d_date_sk#22, d_date#23, d_week_seq#24]
Arguments: [cs_sold_date_sk#8], [d_date_sk#22], Inner, BuildRight

(35) CometProject
Input [11]: [cs_ship_date_sk#1, cs_item_sk#4, cs_promo_sk#5, cs_order_number#6, cs_sold_date_sk#8, inv_date_sk#13, w_warehouse_name#15, i_item_desc#17, d_date_sk#22, d_date#23, d_week_seq#24]
Arguments: [cs_ship_date_sk#1, cs_item_sk#4, cs_promo_sk#5, cs_order_number#6, inv_date_sk#13, w_warehouse_name#15, i_item_desc#17, d_date#23, d_week_seq#24], [cs_ship_date_sk#1, cs_item_sk#4, cs_promo_sk#5, cs_order_number#6, inv_date_sk#13, w_warehouse_name#15, i_item_desc#17, d_date#23, d_week_seq#24]

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

(37) CometFilter
Input [2]: [d_date_sk#26, d_week_seq#27]
Condition : (isnotnull(d_week_seq#27) AND isnotnull(d_date_sk#26))

(38) CometBroadcastExchange
Input [2]: [d_date_sk#26, d_week_seq#27]
Arguments: [d_date_sk#26, d_week_seq#27]

(39) CometBroadcastHashJoin
Left output [9]: [cs_ship_date_sk#1, cs_item_sk#4, cs_promo_sk#5, cs_order_number#6, inv_date_sk#13, w_warehouse_name#15, i_item_desc#17, d_date#23, d_week_seq#24]
Right output [2]: [d_date_sk#26, d_week_seq#27]
Arguments: [d_week_seq#24, inv_date_sk#13], [d_week_seq#27, d_date_sk#26], Inner, BuildRight

(40) CometProject
Input [11]: [cs_ship_date_sk#1, cs_item_sk#4, cs_promo_sk#5, cs_order_number#6, inv_date_sk#13, w_warehouse_name#15, i_item_desc#17, d_date#23, d_week_seq#24, d_date_sk#26, d_week_seq#27]
Arguments: [cs_ship_date_sk#1, cs_item_sk#4, cs_promo_sk#5, cs_order_number#6, w_warehouse_name#15, i_item_desc#17, d_date#23, d_week_seq#24], [cs_ship_date_sk#1, cs_item_sk#4, cs_promo_sk#5, cs_order_number#6, w_warehouse_name#15, i_item_desc#17, d_date#23, d_week_seq#24]

(41) CometScan [native_iceberg_compat] parquet spark_catalog.default.date_dim
Output [2]: [d_date_sk#28, d_date#29]
Batched: true
Location [not included in comparison]/{warehouse_dir}/date_dim]
PushedFilters: [IsNotNull(d_date), IsNotNull(d_date_sk)]
ReadSchema: struct<d_date_sk:int,d_date:date>

(42) CometFilter
Input [2]: [d_date_sk#28, d_date#29]
Condition : (isnotnull(d_date#29) AND isnotnull(d_date_sk#28))

(43) CometBroadcastExchange
Input [2]: [d_date_sk#28, d_date#29]
Arguments: [d_date_sk#28, d_date#29]

(44) CometBroadcastHashJoin
Left output [8]: [cs_ship_date_sk#1, cs_item_sk#4, cs_promo_sk#5, cs_order_number#6, w_warehouse_name#15, i_item_desc#17, d_date#23, d_week_seq#24]
Right output [2]: [d_date_sk#28, d_date#29]
Arguments: [cs_ship_date_sk#1], [d_date_sk#28], Inner, (d_date#29 > date_add(d_date#23, 5)), BuildRight

(45) CometProject
Input [10]: [cs_ship_date_sk#1, cs_item_sk#4, cs_promo_sk#5, cs_order_number#6, w_warehouse_name#15, i_item_desc#17, d_date#23, d_week_seq#24, d_date_sk#28, d_date#29]
Arguments: [cs_item_sk#4, cs_promo_sk#5, cs_order_number#6, w_warehouse_name#15, i_item_desc#17, d_week_seq#24], [cs_item_sk#4, cs_promo_sk#5, cs_order_number#6, w_warehouse_name#15, i_item_desc#17, d_week_seq#24]

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

(47) CometFilter
Input [1]: [p_promo_sk#30]
Condition : isnotnull(p_promo_sk#30)

(48) CometBroadcastExchange
Input [1]: [p_promo_sk#30]
Arguments: [p_promo_sk#30]

(49) CometBroadcastHashJoin
Left output [6]: [cs_item_sk#4, cs_promo_sk#5, cs_order_number#6, w_warehouse_name#15, i_item_desc#17, d_week_seq#24]
Right output [1]: [p_promo_sk#30]
Arguments: [cs_promo_sk#5], [p_promo_sk#30], LeftOuter, BuildRight

(50) CometProject
Input [7]: [cs_item_sk#4, cs_promo_sk#5, cs_order_number#6, w_warehouse_name#15, i_item_desc#17, d_week_seq#24, p_promo_sk#30]
Arguments: [cs_item_sk#4, cs_order_number#6, w_warehouse_name#15, i_item_desc#17, d_week_seq#24], [cs_item_sk#4, cs_order_number#6, w_warehouse_name#15, i_item_desc#17, d_week_seq#24]

(51) CometExchange
Input [5]: [cs_item_sk#4, cs_order_number#6, w_warehouse_name#15, i_item_desc#17, d_week_seq#24]
Arguments: hashpartitioning(cs_item_sk#4, cs_order_number#6, 5), ENSURE_REQUIREMENTS, CometNativeShuffle, [plan_id=1]

(52) CometSort
Input [5]: [cs_item_sk#4, cs_order_number#6, w_warehouse_name#15, i_item_desc#17, d_week_seq#24]
Arguments: [cs_item_sk#4, cs_order_number#6, w_warehouse_name#15, i_item_desc#17, d_week_seq#24], [cs_item_sk#4 ASC NULLS FIRST, cs_order_number#6 ASC NULLS FIRST]

(53) CometScan [native_iceberg_compat] parquet spark_catalog.default.catalog_returns
Output [3]: [cr_item_sk#31, cr_order_number#32, cr_returned_date_sk#33]
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>

(54) CometFilter
Input [3]: [cr_item_sk#31, cr_order_number#32, cr_returned_date_sk#33]
Condition : (isnotnull(cr_item_sk#31) AND isnotnull(cr_order_number#32))

(55) CometProject
Input [3]: [cr_item_sk#31, cr_order_number#32, cr_returned_date_sk#33]
Arguments: [cr_item_sk#31, cr_order_number#32], [cr_item_sk#31, cr_order_number#32]

(56) CometExchange
Input [2]: [cr_item_sk#31, cr_order_number#32]
Arguments: hashpartitioning(cr_item_sk#31, cr_order_number#32, 5), ENSURE_REQUIREMENTS, CometNativeShuffle, [plan_id=2]

(57) CometSort
Input [2]: [cr_item_sk#31, cr_order_number#32]
Arguments: [cr_item_sk#31, cr_order_number#32], [cr_item_sk#31 ASC NULLS FIRST, cr_order_number#32 ASC NULLS FIRST]

(58) CometSortMergeJoin
Left output [5]: [cs_item_sk#4, cs_order_number#6, w_warehouse_name#15, i_item_desc#17, d_week_seq#24]
Right output [2]: [cr_item_sk#31, cr_order_number#32]
Arguments: [cs_item_sk#4, cs_order_number#6], [cr_item_sk#31, cr_order_number#32], LeftOuter

(59) CometProject
Input [7]: [cs_item_sk#4, cs_order_number#6, w_warehouse_name#15, i_item_desc#17, d_week_seq#24, cr_item_sk#31, cr_order_number#32]
Arguments: [w_warehouse_name#15, i_item_desc#17, d_week_seq#24], [w_warehouse_name#15, i_item_desc#17, d_week_seq#24]

(60) CometHashAggregate
Input [3]: [w_warehouse_name#15, i_item_desc#17, d_week_seq#24]
Keys [3]: [i_item_desc#17, w_warehouse_name#15, d_week_seq#24]
Functions [1]: [partial_count(1)]

(61) CometExchange
Input [4]: [i_item_desc#17, w_warehouse_name#15, d_week_seq#24, count#34]
Arguments: hashpartitioning(i_item_desc#17, w_warehouse_name#15, d_week_seq#24, 5), ENSURE_REQUIREMENTS, CometNativeShuffle, [plan_id=3]

(62) CometHashAggregate
Input [4]: [i_item_desc#17, w_warehouse_name#15, d_week_seq#24, count#34]
Keys [3]: [i_item_desc#17, w_warehouse_name#15, d_week_seq#24]
Functions [1]: [count(1)]

(63) CometTakeOrderedAndProject
Input [6]: [i_item_desc#17, w_warehouse_name#15, d_week_seq#24, no_promo#35, promo#36, total_cnt#37]
Arguments: TakeOrderedAndProject(limit=100, orderBy=[total_cnt#37 DESC NULLS LAST,i_item_desc#17 ASC NULLS FIRST,w_warehouse_name#15 ASC NULLS FIRST,d_week_seq#24 ASC NULLS FIRST], output=[i_item_desc#17,w_warehouse_name#15,d_week_seq#24,no_promo#35,promo#36,total_cnt#37]), [i_item_desc#17, w_warehouse_name#15, d_week_seq#24, no_promo#35, promo#36, total_cnt#37], 100, 0, [total_cnt#37 DESC NULLS LAST, i_item_desc#17 ASC NULLS FIRST, w_warehouse_name#15 ASC NULLS FIRST, d_week_seq#24 ASC NULLS FIRST], [i_item_desc#17, w_warehouse_name#15, d_week_seq#24, no_promo#35, promo#36, total_cnt#37]

(64) CometColumnarToRow [codegen id : 1]
Input [6]: [i_item_desc#17, w_warehouse_name#15, d_week_seq#24, no_promo#35, promo#36, total_cnt#37]

===== Subqueries =====

Subquery:1 Hosting operator id = 1 Hosting Expression = cs_sold_date_sk#8 IN dynamicpruning#9
BroadcastExchange (69)
+- * CometColumnarToRow (68)
   +- CometProject (67)
      +- CometFilter (66)
         +- CometScan [native_iceberg_compat] parquet spark_catalog.default.date_dim (65)


(65) CometScan [native_iceberg_compat] parquet spark_catalog.default.date_dim
Output [4]: [d_date_sk#22, d_date#23, d_week_seq#24, d_year#25]
Batched: true
Location [not included in comparison]/{warehouse_dir}/date_dim]
PushedFilters: [IsNotNull(d_year), EqualTo(d_year,2001), IsNotNull(d_date_sk), IsNotNull(d_week_seq), IsNotNull(d_date)]
ReadSchema: struct<d_date_sk:int,d_date:date,d_week_seq:int,d_year:int>

(66) CometFilter
Input [4]: [d_date_sk#22, d_date#23, d_week_seq#24, d_year#25]
Condition : ((((isnotnull(d_year#25) AND (d_year#25 = 2001)) AND isnotnull(d_date_sk#22)) AND isnotnull(d_week_seq#24)) AND isnotnull(d_date#23))

(67) CometProject
Input [4]: [d_date_sk#22, d_date#23, d_week_seq#24, d_year#25]
Arguments: [d_date_sk#22, d_date#23, d_week_seq#24], [d_date_sk#22, d_date#23, d_week_seq#24]

(68) CometColumnarToRow [codegen id : 1]
Input [3]: [d_date_sk#22, d_date#23, d_week_seq#24]

(69) BroadcastExchange
Input [3]: [d_date_sk#22, d_date#23, d_week_seq#24]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, true] as bigint)),false), [plan_id=4]


