== Physical Plan ==
* ColumnarToRow (38)
+- CometTakeOrderedAndProject (37)
   +- CometFilter (36)
      +- CometHashAggregate (35)
         +- CometExchange (34)
            +- CometHashAggregate (33)
               +- CometProject (32)
                  +- CometBroadcastHashJoin (31)
                     :- CometProject (18)
                     :  +- CometBroadcastHashJoin (17)
                     :     :- CometProject (12)
                     :     :  +- CometBroadcastHashJoin (11)
                     :     :     :- CometProject (7)
                     :     :     :  +- CometBroadcastHashJoin (6)
                     :     :     :     :- CometFilter (2)
                     :     :     :     :  +- CometScan parquet spark_catalog.default.customer_address (1)
                     :     :     :     +- CometBroadcastExchange (5)
                     :     :     :        +- CometFilter (4)
                     :     :     :           +- CometScan parquet spark_catalog.default.customer (3)
                     :     :     +- CometBroadcastExchange (10)
                     :     :        +- CometFilter (9)
                     :     :           +- CometScan parquet spark_catalog.default.store_sales (8)
                     :     +- CometBroadcastExchange (16)
                     :        +- CometProject (15)
                     :           +- CometFilter (14)
                     :              +- CometScan parquet spark_catalog.default.date_dim (13)
                     +- CometBroadcastExchange (30)
                        +- CometProject (29)
                           +- CometBroadcastHashJoin (28)
                              :- CometFilter (20)
                              :  +- CometScan parquet spark_catalog.default.item (19)
                              +- CometBroadcastExchange (27)
                                 +- CometFilter (26)
                                    +- CometHashAggregate (25)
                                       +- CometExchange (24)
                                          +- CometHashAggregate (23)
                                             +- CometFilter (22)
                                                +- CometScan parquet spark_catalog.default.item (21)


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

(2) CometFilter
Input [2]: [ca_address_sk#1, ca_state#2]
Condition : isnotnull(ca_address_sk#1)

(3) CometScan parquet spark_catalog.default.customer
Output [2]: [c_customer_sk#3, c_current_addr_sk#4]
Batched: true
Location [not included in comparison]/{warehouse_dir}/customer]
PushedFilters: [IsNotNull(c_current_addr_sk), IsNotNull(c_customer_sk)]
ReadSchema: struct<c_customer_sk:int,c_current_addr_sk:int>

(4) CometFilter
Input [2]: [c_customer_sk#3, c_current_addr_sk#4]
Condition : (isnotnull(c_current_addr_sk#4) AND isnotnull(c_customer_sk#3))

(5) CometBroadcastExchange
Input [2]: [c_customer_sk#3, c_current_addr_sk#4]
Arguments: [c_customer_sk#3, c_current_addr_sk#4]

(6) CometBroadcastHashJoin
Left output [2]: [ca_address_sk#1, ca_state#2]
Right output [2]: [c_customer_sk#3, c_current_addr_sk#4]
Arguments: [ca_address_sk#1], [c_current_addr_sk#4], Inner, BuildRight

(7) CometProject
Input [4]: [ca_address_sk#1, ca_state#2, c_customer_sk#3, c_current_addr_sk#4]
Arguments: [ca_state#2, c_customer_sk#3], [ca_state#2, c_customer_sk#3]

(8) CometScan parquet spark_catalog.default.store_sales
Output [3]: [ss_item_sk#5, ss_customer_sk#6, ss_sold_date_sk#7]
Batched: true
Location: InMemoryFileIndex []
PartitionFilters: [isnotnull(ss_sold_date_sk#7)]
PushedFilters: [IsNotNull(ss_customer_sk), IsNotNull(ss_item_sk)]
ReadSchema: struct<ss_item_sk:int,ss_customer_sk:int>

(9) CometFilter
Input [3]: [ss_item_sk#5, ss_customer_sk#6, ss_sold_date_sk#7]
Condition : (isnotnull(ss_customer_sk#6) AND isnotnull(ss_item_sk#5))

(10) CometBroadcastExchange
Input [3]: [ss_item_sk#5, ss_customer_sk#6, ss_sold_date_sk#7]
Arguments: [ss_item_sk#5, ss_customer_sk#6, ss_sold_date_sk#7]

(11) CometBroadcastHashJoin
Left output [2]: [ca_state#2, c_customer_sk#3]
Right output [3]: [ss_item_sk#5, ss_customer_sk#6, ss_sold_date_sk#7]
Arguments: [c_customer_sk#3], [ss_customer_sk#6], Inner, BuildRight

(12) CometProject
Input [5]: [ca_state#2, c_customer_sk#3, ss_item_sk#5, ss_customer_sk#6, ss_sold_date_sk#7]
Arguments: [ca_state#2, ss_item_sk#5, ss_sold_date_sk#7], [ca_state#2, ss_item_sk#5, ss_sold_date_sk#7]

(13) CometScan parquet spark_catalog.default.date_dim
Output [2]: [d_date_sk#8, d_month_seq#9]
Batched: true
Location [not included in comparison]/{warehouse_dir}/date_dim]
PushedFilters: [IsNotNull(d_month_seq), IsNotNull(d_date_sk)]
ReadSchema: struct<d_date_sk:int,d_month_seq:int>

(14) CometFilter
Input [2]: [d_date_sk#8, d_month_seq#9]
Condition : ((isnotnull(d_month_seq#9) AND (d_month_seq#9 = Subquery scalar-subquery#10, [id=#11])) AND isnotnull(d_date_sk#8))

(15) CometProject
Input [2]: [d_date_sk#8, d_month_seq#9]
Arguments: [d_date_sk#8], [d_date_sk#8]

(16) CometBroadcastExchange
Input [1]: [d_date_sk#8]
Arguments: [d_date_sk#8]

(17) CometBroadcastHashJoin
Left output [3]: [ca_state#2, ss_item_sk#5, ss_sold_date_sk#7]
Right output [1]: [d_date_sk#8]
Arguments: [ss_sold_date_sk#7], [d_date_sk#8], Inner, BuildRight

(18) CometProject
Input [4]: [ca_state#2, ss_item_sk#5, ss_sold_date_sk#7, d_date_sk#8]
Arguments: [ca_state#2, ss_item_sk#5], [ca_state#2, ss_item_sk#5]

(19) CometScan parquet spark_catalog.default.item
Output [3]: [i_item_sk#12, i_current_price#13, i_category#14]
Batched: true
Location [not included in comparison]/{warehouse_dir}/item]
PushedFilters: [IsNotNull(i_current_price), IsNotNull(i_category), IsNotNull(i_item_sk)]
ReadSchema: struct<i_item_sk:int,i_current_price:decimal(7,2),i_category:string>

(20) CometFilter
Input [3]: [i_item_sk#12, i_current_price#13, i_category#14]
Condition : ((isnotnull(i_current_price#13) AND isnotnull(i_category#14)) AND isnotnull(i_item_sk#12))

(21) CometScan parquet spark_catalog.default.item
Output [2]: [i_current_price#15, i_category#16]
Batched: true
Location [not included in comparison]/{warehouse_dir}/item]
PushedFilters: [IsNotNull(i_category)]
ReadSchema: struct<i_current_price:decimal(7,2),i_category:string>

(22) CometFilter
Input [2]: [i_current_price#15, i_category#16]
Condition : isnotnull(i_category#16)

(23) CometHashAggregate
Input [2]: [i_current_price#15, i_category#16]
Keys [1]: [i_category#16]
Functions [1]: [partial_avg(UnscaledValue(i_current_price#15))]

(24) CometExchange
Input [3]: [i_category#16, sum#17, count#18]
Arguments: hashpartitioning(i_category#16, 5), ENSURE_REQUIREMENTS, CometNativeShuffle, [plan_id=1]

(25) CometHashAggregate
Input [3]: [i_category#16, sum#17, count#18]
Keys [1]: [i_category#16]
Functions [1]: [avg(UnscaledValue(i_current_price#15))]

(26) CometFilter
Input [2]: [avg(i_current_price)#19, i_category#16]
Condition : isnotnull(avg(i_current_price)#19)

(27) CometBroadcastExchange
Input [2]: [avg(i_current_price)#19, i_category#16]
Arguments: [avg(i_current_price)#19, i_category#16]

(28) CometBroadcastHashJoin
Left output [3]: [i_item_sk#12, i_current_price#13, i_category#14]
Right output [2]: [avg(i_current_price)#19, i_category#16]
Arguments: [i_category#14], [i_category#16], Inner, (cast(i_current_price#13 as decimal(14,7)) > (1.2 * avg(i_current_price)#19)), BuildRight

(29) CometProject
Input [5]: [i_item_sk#12, i_current_price#13, i_category#14, avg(i_current_price)#19, i_category#16]
Arguments: [i_item_sk#12], [i_item_sk#12]

(30) CometBroadcastExchange
Input [1]: [i_item_sk#12]
Arguments: [i_item_sk#12]

(31) CometBroadcastHashJoin
Left output [2]: [ca_state#2, ss_item_sk#5]
Right output [1]: [i_item_sk#12]
Arguments: [ss_item_sk#5], [i_item_sk#12], Inner, BuildRight

(32) CometProject
Input [3]: [ca_state#2, ss_item_sk#5, i_item_sk#12]
Arguments: [ca_state#2], [ca_state#2]

(33) CometHashAggregate
Input [1]: [ca_state#2]
Keys [1]: [ca_state#2]
Functions [1]: [partial_count(1)]

(34) CometExchange
Input [2]: [ca_state#2, count#20]
Arguments: hashpartitioning(ca_state#2, 5), ENSURE_REQUIREMENTS, CometNativeShuffle, [plan_id=2]

(35) CometHashAggregate
Input [2]: [ca_state#2, count#20]
Keys [1]: [ca_state#2]
Functions [1]: [count(1)]

(36) CometFilter
Input [2]: [state#21, cnt#22]
Condition : (cnt#22 >= 10)

(37) CometTakeOrderedAndProject
Input [2]: [state#21, cnt#22]
Arguments: TakeOrderedAndProject(limit=100, orderBy=[cnt#22 ASC NULLS FIRST], output=[state#21,cnt#22]), [state#21, cnt#22], 100, [cnt#22 ASC NULLS FIRST], [state#21, cnt#22]

(38) ColumnarToRow [codegen id : 1]
Input [2]: [state#21, cnt#22]

===== Subqueries =====

Subquery:1 Hosting operator id = 14 Hosting Expression = Subquery scalar-subquery#10, [id=#11]
* ColumnarToRow (45)
+- CometHashAggregate (44)
   +- CometExchange (43)
      +- CometHashAggregate (42)
         +- CometProject (41)
            +- CometFilter (40)
               +- CometScan parquet spark_catalog.default.date_dim (39)


(39) CometScan parquet spark_catalog.default.date_dim
Output [3]: [d_month_seq#23, d_year#24, d_moy#25]
Batched: true
Location [not included in comparison]/{warehouse_dir}/date_dim]
PushedFilters: [IsNotNull(d_year), IsNotNull(d_moy), EqualTo(d_year,2000), EqualTo(d_moy,1)]
ReadSchema: struct<d_month_seq:int,d_year:int,d_moy:int>

(40) CometFilter
Input [3]: [d_month_seq#23, d_year#24, d_moy#25]
Condition : (((isnotnull(d_year#24) AND isnotnull(d_moy#25)) AND (d_year#24 = 2000)) AND (d_moy#25 = 1))

(41) CometProject
Input [3]: [d_month_seq#23, d_year#24, d_moy#25]
Arguments: [d_month_seq#23], [d_month_seq#23]

(42) CometHashAggregate
Input [1]: [d_month_seq#23]
Keys [1]: [d_month_seq#23]
Functions: []

(43) CometExchange
Input [1]: [d_month_seq#23]
Arguments: hashpartitioning(d_month_seq#23, 5), ENSURE_REQUIREMENTS, CometNativeShuffle, [plan_id=3]

(44) CometHashAggregate
Input [1]: [d_month_seq#23]
Keys [1]: [d_month_seq#23]
Functions: []

(45) ColumnarToRow [codegen id : 1]
Input [1]: [d_month_seq#23]


