== Physical Plan ==
VeloxColumnarToRow (119)
+- TakeOrderedAndProjectExecTransformer (118)
   +- ^ ProjectExecTransformer (116)
      +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (115)
         :- ^ ProjectExecTransformer (86)
         :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (85)
         :     :- ^ ProjectExecTransformer (55)
         :     :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (54)
         :     :     :- ^ FilterExecTransformer (25)
         :     :     :  +- ^ ProjectExecTransformer (24)
         :     :     :     +- ^ RegularHashAggregateExecTransformer (23)
         :     :     :        +- ^ InputIteratorTransformer (22)
         :     :     :           +- ColumnarExchange (20)
         :     :     :              +- VeloxResizeBatches (19)
         :     :     :                 +- ^ ProjectExecTransformer (17)
         :     :     :                    +- ^ FlushableHashAggregateExecTransformer (16)
         :     :     :                       +- ^ ProjectExecTransformer (15)
         :     :     :                          +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (14)
         :     :     :                             :- ^ ProjectExecTransformer (10)
         :     :     :                             :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (9)
         :     :     :                             :     :- ^ FilterExecTransformer (2)
         :     :     :                             :     :  +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.customer (1)
         :     :     :                             :     +- ^ InputIteratorTransformer (8)
         :     :     :                             :        +- ColumnarBroadcastExchange (6)
         :     :     :                             :           +- ^ FilterExecTransformer (4)
         :     :     :                             :              +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.store_sales (3)
         :     :     :                             +- ^ InputIteratorTransformer (13)
         :     :     :                                +- ReusedExchange (11)
         :     :     +- ^ InputIteratorTransformer (53)
         :     :        +- ColumnarBroadcastExchange (51)
         :     :           +- ^ ProjectExecTransformer (49)
         :     :              +- ^ RegularHashAggregateExecTransformer (48)
         :     :                 +- ^ InputIteratorTransformer (47)
         :     :                    +- ColumnarExchange (45)
         :     :                       +- VeloxResizeBatches (44)
         :     :                          +- ^ ProjectExecTransformer (42)
         :     :                             +- ^ FlushableHashAggregateExecTransformer (41)
         :     :                                +- ^ ProjectExecTransformer (40)
         :     :                                   +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (39)
         :     :                                      :- ^ ProjectExecTransformer (35)
         :     :                                      :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (34)
         :     :                                      :     :- ^ FilterExecTransformer (27)
         :     :                                      :     :  +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.customer (26)
         :     :                                      :     +- ^ InputIteratorTransformer (33)
         :     :                                      :        +- ColumnarBroadcastExchange (31)
         :     :                                      :           +- ^ FilterExecTransformer (29)
         :     :                                      :              +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.store_sales (28)
         :     :                                      +- ^ InputIteratorTransformer (38)
         :     :                                         +- ReusedExchange (36)
         :     +- ^ InputIteratorTransformer (84)
         :        +- ColumnarBroadcastExchange (82)
         :           +- ^ FilterExecTransformer (80)
         :              +- ^ ProjectExecTransformer (79)
         :                 +- ^ RegularHashAggregateExecTransformer (78)
         :                    +- ^ InputIteratorTransformer (77)
         :                       +- ColumnarExchange (75)
         :                          +- VeloxResizeBatches (74)
         :                             +- ^ ProjectExecTransformer (72)
         :                                +- ^ FlushableHashAggregateExecTransformer (71)
         :                                   +- ^ ProjectExecTransformer (70)
         :                                      +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (69)
         :                                         :- ^ ProjectExecTransformer (65)
         :                                         :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (64)
         :                                         :     :- ^ FilterExecTransformer (57)
         :                                         :     :  +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.customer (56)
         :                                         :     +- ^ InputIteratorTransformer (63)
         :                                         :        +- ColumnarBroadcastExchange (61)
         :                                         :           +- ^ FilterExecTransformer (59)
         :                                         :              +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.web_sales (58)
         :                                         +- ^ InputIteratorTransformer (68)
         :                                            +- ReusedExchange (66)
         +- ^ InputIteratorTransformer (114)
            +- ColumnarBroadcastExchange (112)
               +- ^ ProjectExecTransformer (110)
                  +- ^ RegularHashAggregateExecTransformer (109)
                     +- ^ InputIteratorTransformer (108)
                        +- ColumnarExchange (106)
                           +- VeloxResizeBatches (105)
                              +- ^ ProjectExecTransformer (103)
                                 +- ^ FlushableHashAggregateExecTransformer (102)
                                    +- ^ ProjectExecTransformer (101)
                                       +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (100)
                                          :- ^ ProjectExecTransformer (96)
                                          :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (95)
                                          :     :- ^ FilterExecTransformer (88)
                                          :     :  +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.customer (87)
                                          :     +- ^ InputIteratorTransformer (94)
                                          :        +- ColumnarBroadcastExchange (92)
                                          :           +- ^ FilterExecTransformer (90)
                                          :              +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.web_sales (89)
                                          +- ^ InputIteratorTransformer (99)
                                             +- ReusedExchange (97)


(1) FileSourceScanExecTransformer parquet spark_catalog.default.customer
Output [8]: [c_customer_sk#1, c_customer_id#2, c_first_name#3, c_last_name#4, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8]
Batched: true
Location: InMemoryFileIndex [{warehouse_dir}/customer]
PushedFilters: [IsNotNull(c_customer_sk), IsNotNull(c_customer_id)]
ReadSchema: struct<c_customer_sk:int,c_customer_id:string,c_first_name:string,c_last_name:string,c_preferred_cust_flag:string,c_birth_country:string,c_login:string,c_email_address:string>

(2) FilterExecTransformer
Input [8]: [c_customer_sk#1, c_customer_id#2, c_first_name#3, c_last_name#4, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8]
Arguments: (isnotnull(c_customer_sk#1) AND isnotnull(c_customer_id#2))

(3) FileSourceScanExecTransformer parquet spark_catalog.default.store_sales
Output [4]: [ss_customer_sk#9, ss_ext_discount_amt#10, ss_ext_list_price#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_customer_sk)]
ReadSchema: struct<ss_customer_sk:int,ss_ext_discount_amt:decimal(7,2),ss_ext_list_price:decimal(7,2)>

(4) FilterExecTransformer
Input [4]: [ss_customer_sk#9, ss_ext_discount_amt#10, ss_ext_list_price#11, ss_sold_date_sk#12]
Arguments: isnotnull(ss_customer_sk#9)

(5) WholeStageCodegenTransformer (2)
Input [4]: [ss_customer_sk#9, ss_ext_discount_amt#10, ss_ext_list_price#11, ss_sold_date_sk#12]
Arguments: false

(6) ColumnarBroadcastExchange
Input [4]: [ss_customer_sk#9, ss_ext_discount_amt#10, ss_ext_list_price#11, ss_sold_date_sk#12]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, false] as bigint)),false), [plan_id=1]

(7) InputAdapter
Input [4]: [ss_customer_sk#9, ss_ext_discount_amt#10, ss_ext_list_price#11, ss_sold_date_sk#12]

(8) InputIteratorTransformer
Input [4]: [ss_customer_sk#9, ss_ext_discount_amt#10, ss_ext_list_price#11, ss_sold_date_sk#12]

(9) BroadcastHashJoinExecTransformer
Left keys [1]: [c_customer_sk#1]
Right keys [1]: [ss_customer_sk#9]
Join type: Inner
Join condition: None

(10) ProjectExecTransformer
Output [10]: [c_customer_id#2, c_first_name#3, c_last_name#4, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8, ss_ext_discount_amt#10, ss_ext_list_price#11, ss_sold_date_sk#12]
Input [12]: [c_customer_sk#1, c_customer_id#2, c_first_name#3, c_last_name#4, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8, ss_customer_sk#9, ss_ext_discount_amt#10, ss_ext_list_price#11, ss_sold_date_sk#12]

(11) ReusedExchange [Reuses operator id: 123]
Output [2]: [d_date_sk#14, d_year#15]

(12) InputAdapter
Input [2]: [d_date_sk#14, d_year#15]

(13) InputIteratorTransformer
Input [2]: [d_date_sk#14, d_year#15]

(14) BroadcastHashJoinExecTransformer
Left keys [1]: [ss_sold_date_sk#12]
Right keys [1]: [d_date_sk#14]
Join type: Inner
Join condition: None

(15) ProjectExecTransformer
Output [9]: [c_customer_id#2, c_first_name#3, c_last_name#4, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8, d_year#15, UnscaledValue((ss_ext_list_price#11 - ss_ext_discount_amt#10)) AS _pre_1#16]
Input [12]: [c_customer_id#2, c_first_name#3, c_last_name#4, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8, ss_ext_discount_amt#10, ss_ext_list_price#11, ss_sold_date_sk#12, d_date_sk#14, d_year#15]

(16) FlushableHashAggregateExecTransformer
Input [9]: [c_customer_id#2, c_first_name#3, c_last_name#4, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8, d_year#15, _pre_1#16]
Keys [8]: [c_customer_id#2, c_first_name#3, c_last_name#4, d_year#15, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8]
Functions [1]: [partial_sum(_pre_1#16)]
Aggregate Attributes [1]: [sum#17]
Results [9]: [c_customer_id#2, c_first_name#3, c_last_name#4, d_year#15, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8, sum#18]

(17) ProjectExecTransformer
Output [10]: [hash(c_customer_id#2, c_first_name#3, c_last_name#4, d_year#15, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8, 42) AS hash_partition_key#19, c_customer_id#2, c_first_name#3, c_last_name#4, d_year#15, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8, sum#18]
Input [9]: [c_customer_id#2, c_first_name#3, c_last_name#4, d_year#15, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8, sum#18]

(18) WholeStageCodegenTransformer (4)
Input [10]: [hash_partition_key#19, c_customer_id#2, c_first_name#3, c_last_name#4, d_year#15, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8, sum#18]
Arguments: false

(19) VeloxResizeBatches
Input [10]: [hash_partition_key#19, c_customer_id#2, c_first_name#3, c_last_name#4, d_year#15, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8, sum#18]
Arguments: 1024, 2147483647, 10485760

(20) ColumnarExchange
Input [10]: [hash_partition_key#19, c_customer_id#2, c_first_name#3, c_last_name#4, d_year#15, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8, sum#18]
Arguments: hashpartitioning(c_customer_id#2, c_first_name#3, c_last_name#4, d_year#15, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8, 1), ENSURE_REQUIREMENTS, [c_customer_id#2, c_first_name#3, c_last_name#4, d_year#15, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8, sum#18], [plan_id=2], [shuffle_writer_type=hash]

(21) InputAdapter
Input [9]: [c_customer_id#2, c_first_name#3, c_last_name#4, d_year#15, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8, sum#18]

(22) InputIteratorTransformer
Input [9]: [c_customer_id#2, c_first_name#3, c_last_name#4, d_year#15, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8, sum#18]

(23) RegularHashAggregateExecTransformer
Input [9]: [c_customer_id#2, c_first_name#3, c_last_name#4, d_year#15, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8, sum#18]
Keys [8]: [c_customer_id#2, c_first_name#3, c_last_name#4, d_year#15, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8]
Functions [1]: [sum(UnscaledValue((ss_ext_list_price#11 - ss_ext_discount_amt#10)))]
Aggregate Attributes [1]: [sum(UnscaledValue((ss_ext_list_price#11 - ss_ext_discount_amt#10)))#20]
Results [9]: [c_customer_id#2, c_first_name#3, c_last_name#4, d_year#15, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8, sum(UnscaledValue((ss_ext_list_price#11 - ss_ext_discount_amt#10)))#20]

(24) ProjectExecTransformer
Output [2]: [c_customer_id#2 AS customer_id#21, MakeDecimal(sum(UnscaledValue((ss_ext_list_price#11 - ss_ext_discount_amt#10)))#20,18,2) AS year_total#22]
Input [9]: [c_customer_id#2, c_first_name#3, c_last_name#4, d_year#15, c_preferred_cust_flag#5, c_birth_country#6, c_login#7, c_email_address#8, sum(UnscaledValue((ss_ext_list_price#11 - ss_ext_discount_amt#10)))#20]

(25) FilterExecTransformer
Input [2]: [customer_id#21, year_total#22]
Arguments: (isnotnull(year_total#22) AND (year_total#22 > 0.00))

(26) FileSourceScanExecTransformer parquet spark_catalog.default.customer
Output [8]: [c_customer_sk#23, c_customer_id#24, c_first_name#25, c_last_name#26, c_preferred_cust_flag#27, c_birth_country#28, c_login#29, c_email_address#30]
Batched: true
Location: InMemoryFileIndex [{warehouse_dir}/customer]
PushedFilters: [IsNotNull(c_customer_sk), IsNotNull(c_customer_id)]
ReadSchema: struct<c_customer_sk:int,c_customer_id:string,c_first_name:string,c_last_name:string,c_preferred_cust_flag:string,c_birth_country:string,c_login:string,c_email_address:string>

(27) FilterExecTransformer
Input [8]: [c_customer_sk#23, c_customer_id#24, c_first_name#25, c_last_name#26, c_preferred_cust_flag#27, c_birth_country#28, c_login#29, c_email_address#30]
Arguments: (isnotnull(c_customer_sk#23) AND isnotnull(c_customer_id#24))

(28) FileSourceScanExecTransformer parquet spark_catalog.default.store_sales
Output [4]: [ss_customer_sk#31, ss_ext_discount_amt#32, ss_ext_list_price#33, ss_sold_date_sk#34]
Batched: true
Location: InMemoryFileIndex []
PartitionFilters: [isnotnull(ss_sold_date_sk#34), dynamicpruningexpression(ss_sold_date_sk#34 IN dynamicpruning#35)]
PushedFilters: [IsNotNull(ss_customer_sk)]
ReadSchema: struct<ss_customer_sk:int,ss_ext_discount_amt:decimal(7,2),ss_ext_list_price:decimal(7,2)>

(29) FilterExecTransformer
Input [4]: [ss_customer_sk#31, ss_ext_discount_amt#32, ss_ext_list_price#33, ss_sold_date_sk#34]
Arguments: isnotnull(ss_customer_sk#31)

(30) WholeStageCodegenTransformer (6)
Input [4]: [ss_customer_sk#31, ss_ext_discount_amt#32, ss_ext_list_price#33, ss_sold_date_sk#34]
Arguments: false

(31) ColumnarBroadcastExchange
Input [4]: [ss_customer_sk#31, ss_ext_discount_amt#32, ss_ext_list_price#33, ss_sold_date_sk#34]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, false] as bigint)),false), [plan_id=3]

(32) InputAdapter
Input [4]: [ss_customer_sk#31, ss_ext_discount_amt#32, ss_ext_list_price#33, ss_sold_date_sk#34]

(33) InputIteratorTransformer
Input [4]: [ss_customer_sk#31, ss_ext_discount_amt#32, ss_ext_list_price#33, ss_sold_date_sk#34]

(34) BroadcastHashJoinExecTransformer
Left keys [1]: [c_customer_sk#23]
Right keys [1]: [ss_customer_sk#31]
Join type: Inner
Join condition: None

(35) ProjectExecTransformer
Output [10]: [c_customer_id#24, c_first_name#25, c_last_name#26, c_preferred_cust_flag#27, c_birth_country#28, c_login#29, c_email_address#30, ss_ext_discount_amt#32, ss_ext_list_price#33, ss_sold_date_sk#34]
Input [12]: [c_customer_sk#23, c_customer_id#24, c_first_name#25, c_last_name#26, c_preferred_cust_flag#27, c_birth_country#28, c_login#29, c_email_address#30, ss_customer_sk#31, ss_ext_discount_amt#32, ss_ext_list_price#33, ss_sold_date_sk#34]

(36) ReusedExchange [Reuses operator id: 127]
Output [2]: [d_date_sk#36, d_year#37]

(37) InputAdapter
Input [2]: [d_date_sk#36, d_year#37]

(38) InputIteratorTransformer
Input [2]: [d_date_sk#36, d_year#37]

(39) BroadcastHashJoinExecTransformer
Left keys [1]: [ss_sold_date_sk#34]
Right keys [1]: [d_date_sk#36]
Join type: Inner
Join condition: None

(40) ProjectExecTransformer
Output [9]: [c_customer_id#24, c_first_name#25, c_last_name#26, c_preferred_cust_flag#27, c_birth_country#28, c_login#29, c_email_address#30, d_year#37, UnscaledValue((ss_ext_list_price#33 - ss_ext_discount_amt#32)) AS _pre_2#38]
Input [12]: [c_customer_id#24, c_first_name#25, c_last_name#26, c_preferred_cust_flag#27, c_birth_country#28, c_login#29, c_email_address#30, ss_ext_discount_amt#32, ss_ext_list_price#33, ss_sold_date_sk#34, d_date_sk#36, d_year#37]

(41) FlushableHashAggregateExecTransformer
Input [9]: [c_customer_id#24, c_first_name#25, c_last_name#26, c_preferred_cust_flag#27, c_birth_country#28, c_login#29, c_email_address#30, d_year#37, _pre_2#38]
Keys [8]: [c_customer_id#24, c_first_name#25, c_last_name#26, d_year#37, c_preferred_cust_flag#27, c_birth_country#28, c_login#29, c_email_address#30]
Functions [1]: [partial_sum(_pre_2#38)]
Aggregate Attributes [1]: [sum#39]
Results [9]: [c_customer_id#24, c_first_name#25, c_last_name#26, d_year#37, c_preferred_cust_flag#27, c_birth_country#28, c_login#29, c_email_address#30, sum#40]

(42) ProjectExecTransformer
Output [10]: [hash(c_customer_id#24, c_first_name#25, c_last_name#26, d_year#37, c_preferred_cust_flag#27, c_birth_country#28, c_login#29, c_email_address#30, 42) AS hash_partition_key#41, c_customer_id#24, c_first_name#25, c_last_name#26, d_year#37, c_preferred_cust_flag#27, c_birth_country#28, c_login#29, c_email_address#30, sum#40]
Input [9]: [c_customer_id#24, c_first_name#25, c_last_name#26, d_year#37, c_preferred_cust_flag#27, c_birth_country#28, c_login#29, c_email_address#30, sum#40]

(43) WholeStageCodegenTransformer (8)
Input [10]: [hash_partition_key#41, c_customer_id#24, c_first_name#25, c_last_name#26, d_year#37, c_preferred_cust_flag#27, c_birth_country#28, c_login#29, c_email_address#30, sum#40]
Arguments: false

(44) VeloxResizeBatches
Input [10]: [hash_partition_key#41, c_customer_id#24, c_first_name#25, c_last_name#26, d_year#37, c_preferred_cust_flag#27, c_birth_country#28, c_login#29, c_email_address#30, sum#40]
Arguments: 1024, 2147483647, 10485760

(45) ColumnarExchange
Input [10]: [hash_partition_key#41, c_customer_id#24, c_first_name#25, c_last_name#26, d_year#37, c_preferred_cust_flag#27, c_birth_country#28, c_login#29, c_email_address#30, sum#40]
Arguments: hashpartitioning(c_customer_id#24, c_first_name#25, c_last_name#26, d_year#37, c_preferred_cust_flag#27, c_birth_country#28, c_login#29, c_email_address#30, 1), ENSURE_REQUIREMENTS, [c_customer_id#24, c_first_name#25, c_last_name#26, d_year#37, c_preferred_cust_flag#27, c_birth_country#28, c_login#29, c_email_address#30, sum#40], [plan_id=4], [shuffle_writer_type=hash]

(46) InputAdapter
Input [9]: [c_customer_id#24, c_first_name#25, c_last_name#26, d_year#37, c_preferred_cust_flag#27, c_birth_country#28, c_login#29, c_email_address#30, sum#40]

(47) InputIteratorTransformer
Input [9]: [c_customer_id#24, c_first_name#25, c_last_name#26, d_year#37, c_preferred_cust_flag#27, c_birth_country#28, c_login#29, c_email_address#30, sum#40]

(48) RegularHashAggregateExecTransformer
Input [9]: [c_customer_id#24, c_first_name#25, c_last_name#26, d_year#37, c_preferred_cust_flag#27, c_birth_country#28, c_login#29, c_email_address#30, sum#40]
Keys [8]: [c_customer_id#24, c_first_name#25, c_last_name#26, d_year#37, c_preferred_cust_flag#27, c_birth_country#28, c_login#29, c_email_address#30]
Functions [1]: [sum(UnscaledValue((ss_ext_list_price#33 - ss_ext_discount_amt#32)))]
Aggregate Attributes [1]: [sum(UnscaledValue((ss_ext_list_price#33 - ss_ext_discount_amt#32)))#20]
Results [9]: [c_customer_id#24, c_first_name#25, c_last_name#26, d_year#37, c_preferred_cust_flag#27, c_birth_country#28, c_login#29, c_email_address#30, sum(UnscaledValue((ss_ext_list_price#33 - ss_ext_discount_amt#32)))#20]

(49) ProjectExecTransformer
Output [3]: [c_customer_id#24 AS customer_id#42, c_preferred_cust_flag#27 AS customer_preferred_cust_flag#43, MakeDecimal(sum(UnscaledValue((ss_ext_list_price#33 - ss_ext_discount_amt#32)))#20,18,2) AS year_total#44]
Input [9]: [c_customer_id#24, c_first_name#25, c_last_name#26, d_year#37, c_preferred_cust_flag#27, c_birth_country#28, c_login#29, c_email_address#30, sum(UnscaledValue((ss_ext_list_price#33 - ss_ext_discount_amt#32)))#20]

(50) WholeStageCodegenTransformer (9)
Input [3]: [customer_id#42, customer_preferred_cust_flag#43, year_total#44]
Arguments: false

(51) ColumnarBroadcastExchange
Input [3]: [customer_id#42, customer_preferred_cust_flag#43, year_total#44]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=5]

(52) InputAdapter
Input [3]: [customer_id#42, customer_preferred_cust_flag#43, year_total#44]

(53) InputIteratorTransformer
Input [3]: [customer_id#42, customer_preferred_cust_flag#43, year_total#44]

(54) BroadcastHashJoinExecTransformer
Left keys [1]: [customer_id#21]
Right keys [1]: [customer_id#42]
Join type: Inner
Join condition: None

(55) ProjectExecTransformer
Output [4]: [customer_id#21, year_total#22, customer_preferred_cust_flag#43, year_total#44]
Input [5]: [customer_id#21, year_total#22, customer_id#42, customer_preferred_cust_flag#43, year_total#44]

(56) FileSourceScanExecTransformer parquet spark_catalog.default.customer
Output [8]: [c_customer_sk#45, c_customer_id#46, c_first_name#47, c_last_name#48, c_preferred_cust_flag#49, c_birth_country#50, c_login#51, c_email_address#52]
Batched: true
Location: InMemoryFileIndex [{warehouse_dir}/customer]
PushedFilters: [IsNotNull(c_customer_sk), IsNotNull(c_customer_id)]
ReadSchema: struct<c_customer_sk:int,c_customer_id:string,c_first_name:string,c_last_name:string,c_preferred_cust_flag:string,c_birth_country:string,c_login:string,c_email_address:string>

(57) FilterExecTransformer
Input [8]: [c_customer_sk#45, c_customer_id#46, c_first_name#47, c_last_name#48, c_preferred_cust_flag#49, c_birth_country#50, c_login#51, c_email_address#52]
Arguments: (isnotnull(c_customer_sk#45) AND isnotnull(c_customer_id#46))

(58) FileSourceScanExecTransformer parquet spark_catalog.default.web_sales
Output [4]: [ws_bill_customer_sk#53, ws_ext_discount_amt#54, ws_ext_list_price#55, ws_sold_date_sk#56]
Batched: true
Location: InMemoryFileIndex []
PartitionFilters: [isnotnull(ws_sold_date_sk#56), dynamicpruningexpression(ws_sold_date_sk#56 IN dynamicpruning#13)]
PushedFilters: [IsNotNull(ws_bill_customer_sk)]
ReadSchema: struct<ws_bill_customer_sk:int,ws_ext_discount_amt:decimal(7,2),ws_ext_list_price:decimal(7,2)>

(59) FilterExecTransformer
Input [4]: [ws_bill_customer_sk#53, ws_ext_discount_amt#54, ws_ext_list_price#55, ws_sold_date_sk#56]
Arguments: isnotnull(ws_bill_customer_sk#53)

(60) WholeStageCodegenTransformer (11)
Input [4]: [ws_bill_customer_sk#53, ws_ext_discount_amt#54, ws_ext_list_price#55, ws_sold_date_sk#56]
Arguments: false

(61) ColumnarBroadcastExchange
Input [4]: [ws_bill_customer_sk#53, ws_ext_discount_amt#54, ws_ext_list_price#55, ws_sold_date_sk#56]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, false] as bigint)),false), [plan_id=6]

(62) InputAdapter
Input [4]: [ws_bill_customer_sk#53, ws_ext_discount_amt#54, ws_ext_list_price#55, ws_sold_date_sk#56]

(63) InputIteratorTransformer
Input [4]: [ws_bill_customer_sk#53, ws_ext_discount_amt#54, ws_ext_list_price#55, ws_sold_date_sk#56]

(64) BroadcastHashJoinExecTransformer
Left keys [1]: [c_customer_sk#45]
Right keys [1]: [ws_bill_customer_sk#53]
Join type: Inner
Join condition: None

(65) ProjectExecTransformer
Output [10]: [c_customer_id#46, c_first_name#47, c_last_name#48, c_preferred_cust_flag#49, c_birth_country#50, c_login#51, c_email_address#52, ws_ext_discount_amt#54, ws_ext_list_price#55, ws_sold_date_sk#56]
Input [12]: [c_customer_sk#45, c_customer_id#46, c_first_name#47, c_last_name#48, c_preferred_cust_flag#49, c_birth_country#50, c_login#51, c_email_address#52, ws_bill_customer_sk#53, ws_ext_discount_amt#54, ws_ext_list_price#55, ws_sold_date_sk#56]

(66) ReusedExchange [Reuses operator id: 123]
Output [2]: [d_date_sk#57, d_year#58]

(67) InputAdapter
Input [2]: [d_date_sk#57, d_year#58]

(68) InputIteratorTransformer
Input [2]: [d_date_sk#57, d_year#58]

(69) BroadcastHashJoinExecTransformer
Left keys [1]: [ws_sold_date_sk#56]
Right keys [1]: [d_date_sk#57]
Join type: Inner
Join condition: None

(70) ProjectExecTransformer
Output [9]: [c_customer_id#46, c_first_name#47, c_last_name#48, c_preferred_cust_flag#49, c_birth_country#50, c_login#51, c_email_address#52, d_year#58, UnscaledValue((ws_ext_list_price#55 - ws_ext_discount_amt#54)) AS _pre_3#59]
Input [12]: [c_customer_id#46, c_first_name#47, c_last_name#48, c_preferred_cust_flag#49, c_birth_country#50, c_login#51, c_email_address#52, ws_ext_discount_amt#54, ws_ext_list_price#55, ws_sold_date_sk#56, d_date_sk#57, d_year#58]

(71) FlushableHashAggregateExecTransformer
Input [9]: [c_customer_id#46, c_first_name#47, c_last_name#48, c_preferred_cust_flag#49, c_birth_country#50, c_login#51, c_email_address#52, d_year#58, _pre_3#59]
Keys [8]: [c_customer_id#46, c_first_name#47, c_last_name#48, c_preferred_cust_flag#49, c_birth_country#50, c_login#51, c_email_address#52, d_year#58]
Functions [1]: [partial_sum(_pre_3#59)]
Aggregate Attributes [1]: [sum#60]
Results [9]: [c_customer_id#46, c_first_name#47, c_last_name#48, c_preferred_cust_flag#49, c_birth_country#50, c_login#51, c_email_address#52, d_year#58, sum#61]

(72) ProjectExecTransformer
Output [10]: [hash(c_customer_id#46, c_first_name#47, c_last_name#48, c_preferred_cust_flag#49, c_birth_country#50, c_login#51, c_email_address#52, d_year#58, 42) AS hash_partition_key#62, c_customer_id#46, c_first_name#47, c_last_name#48, c_preferred_cust_flag#49, c_birth_country#50, c_login#51, c_email_address#52, d_year#58, sum#61]
Input [9]: [c_customer_id#46, c_first_name#47, c_last_name#48, c_preferred_cust_flag#49, c_birth_country#50, c_login#51, c_email_address#52, d_year#58, sum#61]

(73) WholeStageCodegenTransformer (13)
Input [10]: [hash_partition_key#62, c_customer_id#46, c_first_name#47, c_last_name#48, c_preferred_cust_flag#49, c_birth_country#50, c_login#51, c_email_address#52, d_year#58, sum#61]
Arguments: false

(74) VeloxResizeBatches
Input [10]: [hash_partition_key#62, c_customer_id#46, c_first_name#47, c_last_name#48, c_preferred_cust_flag#49, c_birth_country#50, c_login#51, c_email_address#52, d_year#58, sum#61]
Arguments: 1024, 2147483647, 10485760

(75) ColumnarExchange
Input [10]: [hash_partition_key#62, c_customer_id#46, c_first_name#47, c_last_name#48, c_preferred_cust_flag#49, c_birth_country#50, c_login#51, c_email_address#52, d_year#58, sum#61]
Arguments: hashpartitioning(c_customer_id#46, c_first_name#47, c_last_name#48, c_preferred_cust_flag#49, c_birth_country#50, c_login#51, c_email_address#52, d_year#58, 1), ENSURE_REQUIREMENTS, [c_customer_id#46, c_first_name#47, c_last_name#48, c_preferred_cust_flag#49, c_birth_country#50, c_login#51, c_email_address#52, d_year#58, sum#61], [plan_id=7], [shuffle_writer_type=hash]

(76) InputAdapter
Input [9]: [c_customer_id#46, c_first_name#47, c_last_name#48, c_preferred_cust_flag#49, c_birth_country#50, c_login#51, c_email_address#52, d_year#58, sum#61]

(77) InputIteratorTransformer
Input [9]: [c_customer_id#46, c_first_name#47, c_last_name#48, c_preferred_cust_flag#49, c_birth_country#50, c_login#51, c_email_address#52, d_year#58, sum#61]

(78) RegularHashAggregateExecTransformer
Input [9]: [c_customer_id#46, c_first_name#47, c_last_name#48, c_preferred_cust_flag#49, c_birth_country#50, c_login#51, c_email_address#52, d_year#58, sum#61]
Keys [8]: [c_customer_id#46, c_first_name#47, c_last_name#48, c_preferred_cust_flag#49, c_birth_country#50, c_login#51, c_email_address#52, d_year#58]
Functions [1]: [sum(UnscaledValue((ws_ext_list_price#55 - ws_ext_discount_amt#54)))]
Aggregate Attributes [1]: [sum(UnscaledValue((ws_ext_list_price#55 - ws_ext_discount_amt#54)))#63]
Results [9]: [c_customer_id#46, c_first_name#47, c_last_name#48, c_preferred_cust_flag#49, c_birth_country#50, c_login#51, c_email_address#52, d_year#58, sum(UnscaledValue((ws_ext_list_price#55 - ws_ext_discount_amt#54)))#63]

(79) ProjectExecTransformer
Output [2]: [c_customer_id#46 AS customer_id#64, MakeDecimal(sum(UnscaledValue((ws_ext_list_price#55 - ws_ext_discount_amt#54)))#63,18,2) AS year_total#65]
Input [9]: [c_customer_id#46, c_first_name#47, c_last_name#48, c_preferred_cust_flag#49, c_birth_country#50, c_login#51, c_email_address#52, d_year#58, sum(UnscaledValue((ws_ext_list_price#55 - ws_ext_discount_amt#54)))#63]

(80) FilterExecTransformer
Input [2]: [customer_id#64, year_total#65]
Arguments: (isnotnull(year_total#65) AND (year_total#65 > 0.00))

(81) WholeStageCodegenTransformer (14)
Input [2]: [customer_id#64, year_total#65]
Arguments: false

(82) ColumnarBroadcastExchange
Input [2]: [customer_id#64, year_total#65]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=8]

(83) InputAdapter
Input [2]: [customer_id#64, year_total#65]

(84) InputIteratorTransformer
Input [2]: [customer_id#64, year_total#65]

(85) BroadcastHashJoinExecTransformer
Left keys [1]: [customer_id#21]
Right keys [1]: [customer_id#64]
Join type: Inner
Join condition: None

(86) ProjectExecTransformer
Output [5]: [customer_id#21, year_total#22, customer_preferred_cust_flag#43, year_total#44, year_total#65]
Input [6]: [customer_id#21, year_total#22, customer_preferred_cust_flag#43, year_total#44, customer_id#64, year_total#65]

(87) FileSourceScanExecTransformer parquet spark_catalog.default.customer
Output [8]: [c_customer_sk#66, c_customer_id#67, c_first_name#68, c_last_name#69, c_preferred_cust_flag#70, c_birth_country#71, c_login#72, c_email_address#73]
Batched: true
Location: InMemoryFileIndex [{warehouse_dir}/customer]
PushedFilters: [IsNotNull(c_customer_sk), IsNotNull(c_customer_id)]
ReadSchema: struct<c_customer_sk:int,c_customer_id:string,c_first_name:string,c_last_name:string,c_preferred_cust_flag:string,c_birth_country:string,c_login:string,c_email_address:string>

(88) FilterExecTransformer
Input [8]: [c_customer_sk#66, c_customer_id#67, c_first_name#68, c_last_name#69, c_preferred_cust_flag#70, c_birth_country#71, c_login#72, c_email_address#73]
Arguments: (isnotnull(c_customer_sk#66) AND isnotnull(c_customer_id#67))

(89) FileSourceScanExecTransformer parquet spark_catalog.default.web_sales
Output [4]: [ws_bill_customer_sk#74, ws_ext_discount_amt#75, ws_ext_list_price#76, ws_sold_date_sk#77]
Batched: true
Location: InMemoryFileIndex []
PartitionFilters: [isnotnull(ws_sold_date_sk#77), dynamicpruningexpression(ws_sold_date_sk#77 IN dynamicpruning#35)]
PushedFilters: [IsNotNull(ws_bill_customer_sk)]
ReadSchema: struct<ws_bill_customer_sk:int,ws_ext_discount_amt:decimal(7,2),ws_ext_list_price:decimal(7,2)>

(90) FilterExecTransformer
Input [4]: [ws_bill_customer_sk#74, ws_ext_discount_amt#75, ws_ext_list_price#76, ws_sold_date_sk#77]
Arguments: isnotnull(ws_bill_customer_sk#74)

(91) WholeStageCodegenTransformer (16)
Input [4]: [ws_bill_customer_sk#74, ws_ext_discount_amt#75, ws_ext_list_price#76, ws_sold_date_sk#77]
Arguments: false

(92) ColumnarBroadcastExchange
Input [4]: [ws_bill_customer_sk#74, ws_ext_discount_amt#75, ws_ext_list_price#76, ws_sold_date_sk#77]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, false] as bigint)),false), [plan_id=9]

(93) InputAdapter
Input [4]: [ws_bill_customer_sk#74, ws_ext_discount_amt#75, ws_ext_list_price#76, ws_sold_date_sk#77]

(94) InputIteratorTransformer
Input [4]: [ws_bill_customer_sk#74, ws_ext_discount_amt#75, ws_ext_list_price#76, ws_sold_date_sk#77]

(95) BroadcastHashJoinExecTransformer
Left keys [1]: [c_customer_sk#66]
Right keys [1]: [ws_bill_customer_sk#74]
Join type: Inner
Join condition: None

(96) ProjectExecTransformer
Output [10]: [c_customer_id#67, c_first_name#68, c_last_name#69, c_preferred_cust_flag#70, c_birth_country#71, c_login#72, c_email_address#73, ws_ext_discount_amt#75, ws_ext_list_price#76, ws_sold_date_sk#77]
Input [12]: [c_customer_sk#66, c_customer_id#67, c_first_name#68, c_last_name#69, c_preferred_cust_flag#70, c_birth_country#71, c_login#72, c_email_address#73, ws_bill_customer_sk#74, ws_ext_discount_amt#75, ws_ext_list_price#76, ws_sold_date_sk#77]

(97) ReusedExchange [Reuses operator id: 127]
Output [2]: [d_date_sk#78, d_year#79]

(98) InputAdapter
Input [2]: [d_date_sk#78, d_year#79]

(99) InputIteratorTransformer
Input [2]: [d_date_sk#78, d_year#79]

(100) BroadcastHashJoinExecTransformer
Left keys [1]: [ws_sold_date_sk#77]
Right keys [1]: [d_date_sk#78]
Join type: Inner
Join condition: None

(101) ProjectExecTransformer
Output [9]: [c_customer_id#67, c_first_name#68, c_last_name#69, c_preferred_cust_flag#70, c_birth_country#71, c_login#72, c_email_address#73, d_year#79, UnscaledValue((ws_ext_list_price#76 - ws_ext_discount_amt#75)) AS _pre_4#80]
Input [12]: [c_customer_id#67, c_first_name#68, c_last_name#69, c_preferred_cust_flag#70, c_birth_country#71, c_login#72, c_email_address#73, ws_ext_discount_amt#75, ws_ext_list_price#76, ws_sold_date_sk#77, d_date_sk#78, d_year#79]

(102) FlushableHashAggregateExecTransformer
Input [9]: [c_customer_id#67, c_first_name#68, c_last_name#69, c_preferred_cust_flag#70, c_birth_country#71, c_login#72, c_email_address#73, d_year#79, _pre_4#80]
Keys [8]: [c_customer_id#67, c_first_name#68, c_last_name#69, c_preferred_cust_flag#70, c_birth_country#71, c_login#72, c_email_address#73, d_year#79]
Functions [1]: [partial_sum(_pre_4#80)]
Aggregate Attributes [1]: [sum#81]
Results [9]: [c_customer_id#67, c_first_name#68, c_last_name#69, c_preferred_cust_flag#70, c_birth_country#71, c_login#72, c_email_address#73, d_year#79, sum#82]

(103) ProjectExecTransformer
Output [10]: [hash(c_customer_id#67, c_first_name#68, c_last_name#69, c_preferred_cust_flag#70, c_birth_country#71, c_login#72, c_email_address#73, d_year#79, 42) AS hash_partition_key#83, c_customer_id#67, c_first_name#68, c_last_name#69, c_preferred_cust_flag#70, c_birth_country#71, c_login#72, c_email_address#73, d_year#79, sum#82]
Input [9]: [c_customer_id#67, c_first_name#68, c_last_name#69, c_preferred_cust_flag#70, c_birth_country#71, c_login#72, c_email_address#73, d_year#79, sum#82]

(104) WholeStageCodegenTransformer (18)
Input [10]: [hash_partition_key#83, c_customer_id#67, c_first_name#68, c_last_name#69, c_preferred_cust_flag#70, c_birth_country#71, c_login#72, c_email_address#73, d_year#79, sum#82]
Arguments: false

(105) VeloxResizeBatches
Input [10]: [hash_partition_key#83, c_customer_id#67, c_first_name#68, c_last_name#69, c_preferred_cust_flag#70, c_birth_country#71, c_login#72, c_email_address#73, d_year#79, sum#82]
Arguments: 1024, 2147483647, 10485760

(106) ColumnarExchange
Input [10]: [hash_partition_key#83, c_customer_id#67, c_first_name#68, c_last_name#69, c_preferred_cust_flag#70, c_birth_country#71, c_login#72, c_email_address#73, d_year#79, sum#82]
Arguments: hashpartitioning(c_customer_id#67, c_first_name#68, c_last_name#69, c_preferred_cust_flag#70, c_birth_country#71, c_login#72, c_email_address#73, d_year#79, 1), ENSURE_REQUIREMENTS, [c_customer_id#67, c_first_name#68, c_last_name#69, c_preferred_cust_flag#70, c_birth_country#71, c_login#72, c_email_address#73, d_year#79, sum#82], [plan_id=10], [shuffle_writer_type=hash]

(107) InputAdapter
Input [9]: [c_customer_id#67, c_first_name#68, c_last_name#69, c_preferred_cust_flag#70, c_birth_country#71, c_login#72, c_email_address#73, d_year#79, sum#82]

(108) InputIteratorTransformer
Input [9]: [c_customer_id#67, c_first_name#68, c_last_name#69, c_preferred_cust_flag#70, c_birth_country#71, c_login#72, c_email_address#73, d_year#79, sum#82]

(109) RegularHashAggregateExecTransformer
Input [9]: [c_customer_id#67, c_first_name#68, c_last_name#69, c_preferred_cust_flag#70, c_birth_country#71, c_login#72, c_email_address#73, d_year#79, sum#82]
Keys [8]: [c_customer_id#67, c_first_name#68, c_last_name#69, c_preferred_cust_flag#70, c_birth_country#71, c_login#72, c_email_address#73, d_year#79]
Functions [1]: [sum(UnscaledValue((ws_ext_list_price#76 - ws_ext_discount_amt#75)))]
Aggregate Attributes [1]: [sum(UnscaledValue((ws_ext_list_price#76 - ws_ext_discount_amt#75)))#63]
Results [9]: [c_customer_id#67, c_first_name#68, c_last_name#69, c_preferred_cust_flag#70, c_birth_country#71, c_login#72, c_email_address#73, d_year#79, sum(UnscaledValue((ws_ext_list_price#76 - ws_ext_discount_amt#75)))#63]

(110) ProjectExecTransformer
Output [2]: [c_customer_id#67 AS customer_id#84, MakeDecimal(sum(UnscaledValue((ws_ext_list_price#76 - ws_ext_discount_amt#75)))#63,18,2) AS year_total#85]
Input [9]: [c_customer_id#67, c_first_name#68, c_last_name#69, c_preferred_cust_flag#70, c_birth_country#71, c_login#72, c_email_address#73, d_year#79, sum(UnscaledValue((ws_ext_list_price#76 - ws_ext_discount_amt#75)))#63]

(111) WholeStageCodegenTransformer (19)
Input [2]: [customer_id#84, year_total#85]
Arguments: false

(112) ColumnarBroadcastExchange
Input [2]: [customer_id#84, year_total#85]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=11]

(113) InputAdapter
Input [2]: [customer_id#84, year_total#85]

(114) InputIteratorTransformer
Input [2]: [customer_id#84, year_total#85]

(115) BroadcastHashJoinExecTransformer
Left keys [1]: [customer_id#21]
Right keys [1]: [customer_id#84]
Join type: Inner
Join condition: (CASE WHEN (year_total#65 > 0.00) THEN (year_total#85 / year_total#65) END > CASE WHEN (year_total#22 > 0.00) THEN (year_total#44 / year_total#22) END)

(116) ProjectExecTransformer
Output [1]: [customer_preferred_cust_flag#43]
Input [7]: [customer_id#21, year_total#22, customer_preferred_cust_flag#43, year_total#44, year_total#65, customer_id#84, year_total#85]

(117) WholeStageCodegenTransformer (20)
Input [1]: [customer_preferred_cust_flag#43]
Arguments: false

(118) TakeOrderedAndProjectExecTransformer
Input [1]: [customer_preferred_cust_flag#43]
Arguments: 100, [customer_preferred_cust_flag#43 ASC NULLS FIRST], [customer_preferred_cust_flag#43], 0

(119) VeloxColumnarToRow
Input [1]: [customer_preferred_cust_flag#43]

===== Subqueries =====

Subquery:1 Hosting operator id = 3 Hosting Expression = ss_sold_date_sk#12 IN dynamicpruning#13
ColumnarBroadcastExchange (123)
+- ^ FilterExecTransformer (121)
   +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.date_dim (120)


(120) FileSourceScanExecTransformer parquet spark_catalog.default.date_dim
Output [2]: [d_date_sk#14, d_year#15]
Batched: true
Location: InMemoryFileIndex [{warehouse_dir}/date_dim]
PushedFilters: [IsNotNull(d_year), EqualTo(d_year,2001), IsNotNull(d_date_sk)]
ReadSchema: struct<d_date_sk:int,d_year:int>

(121) FilterExecTransformer
Input [2]: [d_date_sk#14, d_year#15]
Arguments: ((isnotnull(d_year#15) AND (d_year#15 = 2001)) AND isnotnull(d_date_sk#14))

(122) WholeStageCodegenTransformer (1)
Input [2]: [d_date_sk#14, d_year#15]
Arguments: false

(123) ColumnarBroadcastExchange
Input [2]: [d_date_sk#14, d_year#15]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, false] as bigint)),false), [plan_id=12]

Subquery:2 Hosting operator id = 28 Hosting Expression = ss_sold_date_sk#34 IN dynamicpruning#35
ColumnarBroadcastExchange (127)
+- ^ FilterExecTransformer (125)
   +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.date_dim (124)


(124) FileSourceScanExecTransformer parquet spark_catalog.default.date_dim
Output [2]: [d_date_sk#36, d_year#37]
Batched: true
Location: InMemoryFileIndex [{warehouse_dir}/date_dim]
PushedFilters: [IsNotNull(d_year), EqualTo(d_year,2002), IsNotNull(d_date_sk)]
ReadSchema: struct<d_date_sk:int,d_year:int>

(125) FilterExecTransformer
Input [2]: [d_date_sk#36, d_year#37]
Arguments: ((isnotnull(d_year#37) AND (d_year#37 = 2002)) AND isnotnull(d_date_sk#36))

(126) WholeStageCodegenTransformer (5)
Input [2]: [d_date_sk#36, d_year#37]
Arguments: false

(127) ColumnarBroadcastExchange
Input [2]: [d_date_sk#36, d_year#37]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, false] as bigint)),false), [plan_id=13]

Subquery:3 Hosting operator id = 58 Hosting Expression = ws_sold_date_sk#56 IN dynamicpruning#13

Subquery:4 Hosting operator id = 89 Hosting Expression = ws_sold_date_sk#77 IN dynamicpruning#35


