== Physical Plan ==
VeloxColumnarToRow (103)
+- TakeOrderedAndProjectExecTransformer (102)
   +- ^ RegularHashAggregateExecTransformer (100)
      +- ^ InputIteratorTransformer (99)
         +- ColumnarUnion (97)
            :- ^ ProjectExecTransformer (41)
            :  +- ^ RegularHashAggregateExecTransformer (40)
            :     +- ^ InputIteratorTransformer (39)
            :        +- ColumnarExchange (37)
            :           +- VeloxResizeBatches (36)
            :              +- ^ ProjectExecTransformer (34)
            :                 +- ^ FlushableHashAggregateExecTransformer (33)
            :                    +- ^ ProjectExecTransformer (32)
            :                       +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (31)
            :                          :- ^ ProjectExecTransformer (23)
            :                          :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (22)
            :                          :     :- ^ ProjectExecTransformer (7)
            :                          :     :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (6)
            :                          :     :     :- ^ FilterExecTransformer (2)
            :                          :     :     :  +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.store_sales (1)
            :                          :     :     +- ^ InputIteratorTransformer (5)
            :                          :     :        +- ReusedExchange (3)
            :                          :     +- ^ InputIteratorTransformer (21)
            :                          :        +- ColumnarBroadcastExchange (19)
            :                          :           +- ^ BroadcastHashJoinExecTransformer LeftSemi BuildRight (17)
            :                          :              :- ^ FilterExecTransformer (9)
            :                          :              :  +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.item (8)
            :                          :              +- ^ InputIteratorTransformer (16)
            :                          :                 +- ColumnarBroadcastExchange (14)
            :                          :                    +- ^ ProjectExecTransformer (12)
            :                          :                       +- ^ FilterExecTransformer (11)
            :                          :                          +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.item (10)
            :                          +- ^ InputIteratorTransformer (30)
            :                             +- ColumnarBroadcastExchange (28)
            :                                +- ^ ProjectExecTransformer (26)
            :                                   +- ^ FilterExecTransformer (25)
            :                                      +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.customer_address (24)
            :- ^ ProjectExecTransformer (68)
            :  +- ^ RegularHashAggregateExecTransformer (67)
            :     +- ^ InputIteratorTransformer (66)
            :        +- ColumnarExchange (64)
            :           +- VeloxResizeBatches (63)
            :              +- ^ ProjectExecTransformer (61)
            :                 +- ^ FlushableHashAggregateExecTransformer (60)
            :                    +- ^ ProjectExecTransformer (59)
            :                       +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (58)
            :                          :- ^ ProjectExecTransformer (54)
            :                          :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (53)
            :                          :     :- ^ ProjectExecTransformer (49)
            :                          :     :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (48)
            :                          :     :     :- ^ FilterExecTransformer (44)
            :                          :     :     :  +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.catalog_sales (43)
            :                          :     :     +- ^ InputIteratorTransformer (47)
            :                          :     :        +- ReusedExchange (45)
            :                          :     +- ^ InputIteratorTransformer (52)
            :                          :        +- ReusedExchange (50)
            :                          +- ^ InputIteratorTransformer (57)
            :                             +- ReusedExchange (55)
            +- ^ ProjectExecTransformer (95)
               +- ^ RegularHashAggregateExecTransformer (94)
                  +- ^ InputIteratorTransformer (93)
                     +- ColumnarExchange (91)
                        +- VeloxResizeBatches (90)
                           +- ^ ProjectExecTransformer (88)
                              +- ^ FlushableHashAggregateExecTransformer (87)
                                 +- ^ ProjectExecTransformer (86)
                                    +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (85)
                                       :- ^ ProjectExecTransformer (81)
                                       :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (80)
                                       :     :- ^ ProjectExecTransformer (76)
                                       :     :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (75)
                                       :     :     :- ^ FilterExecTransformer (71)
                                       :     :     :  +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.web_sales (70)
                                       :     :     +- ^ InputIteratorTransformer (74)
                                       :     :        +- ReusedExchange (72)
                                       :     +- ^ InputIteratorTransformer (79)
                                       :        +- ReusedExchange (77)
                                       +- ^ InputIteratorTransformer (84)
                                          +- ReusedExchange (82)


(1) FileSourceScanExecTransformer parquet spark_catalog.default.store_sales
Output [4]: [ss_item_sk#1, ss_addr_sk#2, ss_ext_sales_price#3, ss_sold_date_sk#4]
Batched: true
Location: InMemoryFileIndex []
PartitionFilters: [isnotnull(ss_sold_date_sk#4), dynamicpruningexpression(ss_sold_date_sk#4 IN dynamicpruning#5)]
PushedFilters: [IsNotNull(ss_addr_sk), IsNotNull(ss_item_sk)]
ReadSchema: struct<ss_item_sk:int,ss_addr_sk:int,ss_ext_sales_price:decimal(7,2)>

(2) FilterExecTransformer
Input [4]: [ss_item_sk#1, ss_addr_sk#2, ss_ext_sales_price#3, ss_sold_date_sk#4]
Arguments: (isnotnull(ss_addr_sk#2) AND isnotnull(ss_item_sk#1))

(3) ReusedExchange [Reuses operator id: 108]
Output [1]: [d_date_sk#6]

(4) InputAdapter
Input [1]: [d_date_sk#6]

(5) InputIteratorTransformer
Input [1]: [d_date_sk#6]

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

(7) ProjectExecTransformer
Output [3]: [ss_item_sk#1, ss_addr_sk#2, ss_ext_sales_price#3]
Input [5]: [ss_item_sk#1, ss_addr_sk#2, ss_ext_sales_price#3, ss_sold_date_sk#4, d_date_sk#6]

(8) FileSourceScanExecTransformer parquet spark_catalog.default.item
Output [2]: [i_item_sk#7, i_manufact_id#8]
Batched: true
Location: InMemoryFileIndex [{warehouse_dir}/item]
PushedFilters: [IsNotNull(i_item_sk)]
ReadSchema: struct<i_item_sk:int,i_manufact_id:int>

(9) FilterExecTransformer
Input [2]: [i_item_sk#7, i_manufact_id#8]
Arguments: isnotnull(i_item_sk#7)

(10) FileSourceScanExecTransformer parquet spark_catalog.default.item
Output [2]: [i_category#9, i_manufact_id#10]
Batched: true
Location: InMemoryFileIndex [{warehouse_dir}/item]
PushedFilters: [IsNotNull(i_category), EqualTo(i_category,Electronics                                       )]
ReadSchema: struct<i_category:string,i_manufact_id:int>

(11) FilterExecTransformer
Input [2]: [i_category#9, i_manufact_id#10]
Arguments: (isnotnull(i_category#9) AND (i_category#9 = Electronics                                       ))

(12) ProjectExecTransformer
Output [1]: [i_manufact_id#10]
Input [2]: [i_category#9, i_manufact_id#10]

(13) WholeStageCodegenTransformer (3)
Input [1]: [i_manufact_id#10]
Arguments: false

(14) ColumnarBroadcastExchange
Input [1]: [i_manufact_id#10]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, true] as bigint)),false), [plan_id=1]

(15) InputAdapter
Input [1]: [i_manufact_id#10]

(16) InputIteratorTransformer
Input [1]: [i_manufact_id#10]

(17) BroadcastHashJoinExecTransformer
Left keys [1]: [i_manufact_id#8]
Right keys [1]: [i_manufact_id#10]
Join type: LeftSemi
Join condition: None

(18) WholeStageCodegenTransformer (4)
Input [2]: [i_item_sk#7, i_manufact_id#8]
Arguments: false

(19) ColumnarBroadcastExchange
Input [2]: [i_item_sk#7, i_manufact_id#8]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, false] as bigint)),false), [plan_id=2]

(20) InputAdapter
Input [2]: [i_item_sk#7, i_manufact_id#8]

(21) InputIteratorTransformer
Input [2]: [i_item_sk#7, i_manufact_id#8]

(22) BroadcastHashJoinExecTransformer
Left keys [1]: [ss_item_sk#1]
Right keys [1]: [i_item_sk#7]
Join type: Inner
Join condition: None

(23) ProjectExecTransformer
Output [3]: [ss_addr_sk#2, ss_ext_sales_price#3, i_manufact_id#8]
Input [5]: [ss_item_sk#1, ss_addr_sk#2, ss_ext_sales_price#3, i_item_sk#7, i_manufact_id#8]

(24) FileSourceScanExecTransformer parquet spark_catalog.default.customer_address
Output [2]: [ca_address_sk#11, ca_gmt_offset#12]
Batched: true
Location: InMemoryFileIndex [{warehouse_dir}/customer_address]
PushedFilters: [IsNotNull(ca_gmt_offset), EqualTo(ca_gmt_offset,-5.00), IsNotNull(ca_address_sk)]
ReadSchema: struct<ca_address_sk:int,ca_gmt_offset:decimal(5,2)>

(25) FilterExecTransformer
Input [2]: [ca_address_sk#11, ca_gmt_offset#12]
Arguments: ((isnotnull(ca_gmt_offset#12) AND (ca_gmt_offset#12 = -5.00)) AND isnotnull(ca_address_sk#11))

(26) ProjectExecTransformer
Output [1]: [ca_address_sk#11]
Input [2]: [ca_address_sk#11, ca_gmt_offset#12]

(27) WholeStageCodegenTransformer (5)
Input [1]: [ca_address_sk#11]
Arguments: false

(28) ColumnarBroadcastExchange
Input [1]: [ca_address_sk#11]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, true] as bigint)),false), [plan_id=3]

(29) InputAdapter
Input [1]: [ca_address_sk#11]

(30) InputIteratorTransformer
Input [1]: [ca_address_sk#11]

(31) BroadcastHashJoinExecTransformer
Left keys [1]: [ss_addr_sk#2]
Right keys [1]: [ca_address_sk#11]
Join type: Inner
Join condition: None

(32) ProjectExecTransformer
Output [2]: [i_manufact_id#8, UnscaledValue(ss_ext_sales_price#3) AS _pre_1#13]
Input [4]: [ss_addr_sk#2, ss_ext_sales_price#3, i_manufact_id#8, ca_address_sk#11]

(33) FlushableHashAggregateExecTransformer
Input [2]: [i_manufact_id#8, _pre_1#13]
Keys [1]: [i_manufact_id#8]
Functions [1]: [partial_sum(_pre_1#13)]
Aggregate Attributes [1]: [sum#14]
Results [2]: [i_manufact_id#8, sum#15]

(34) ProjectExecTransformer
Output [3]: [hash(i_manufact_id#8, 42) AS hash_partition_key#16, i_manufact_id#8, sum#15]
Input [2]: [i_manufact_id#8, sum#15]

(35) WholeStageCodegenTransformer (6)
Input [3]: [hash_partition_key#16, i_manufact_id#8, sum#15]
Arguments: false

(36) VeloxResizeBatches
Input [3]: [hash_partition_key#16, i_manufact_id#8, sum#15]
Arguments: 1024, 2147483647, 10485760

(37) ColumnarExchange
Input [3]: [hash_partition_key#16, i_manufact_id#8, sum#15]
Arguments: hashpartitioning(i_manufact_id#8, 1), ENSURE_REQUIREMENTS, [i_manufact_id#8, sum#15], [plan_id=4], [shuffle_writer_type=hash]

(38) InputAdapter
Input [2]: [i_manufact_id#8, sum#15]

(39) InputIteratorTransformer
Input [2]: [i_manufact_id#8, sum#15]

(40) RegularHashAggregateExecTransformer
Input [2]: [i_manufact_id#8, sum#15]
Keys [1]: [i_manufact_id#8]
Functions [1]: [sum(UnscaledValue(ss_ext_sales_price#3))]
Aggregate Attributes [1]: [sum(UnscaledValue(ss_ext_sales_price#3))#17]
Results [2]: [i_manufact_id#8, sum(UnscaledValue(ss_ext_sales_price#3))#17]

(41) ProjectExecTransformer
Output [2]: [i_manufact_id#8, MakeDecimal(sum(UnscaledValue(ss_ext_sales_price#3))#17,17,2) AS total_sales#18]
Input [2]: [i_manufact_id#8, sum(UnscaledValue(ss_ext_sales_price#3))#17]

(42) WholeStageCodegenTransformer (7)
Input [2]: [i_manufact_id#8, total_sales#18]
Arguments: false

(43) FileSourceScanExecTransformer parquet spark_catalog.default.catalog_sales
Output [4]: [cs_bill_addr_sk#19, cs_item_sk#20, cs_ext_sales_price#21, cs_sold_date_sk#22]
Batched: true
Location: InMemoryFileIndex []
PartitionFilters: [isnotnull(cs_sold_date_sk#22), dynamicpruningexpression(cs_sold_date_sk#22 IN dynamicpruning#5)]
PushedFilters: [IsNotNull(cs_bill_addr_sk), IsNotNull(cs_item_sk)]
ReadSchema: struct<cs_bill_addr_sk:int,cs_item_sk:int,cs_ext_sales_price:decimal(7,2)>

(44) FilterExecTransformer
Input [4]: [cs_bill_addr_sk#19, cs_item_sk#20, cs_ext_sales_price#21, cs_sold_date_sk#22]
Arguments: (isnotnull(cs_bill_addr_sk#19) AND isnotnull(cs_item_sk#20))

(45) ReusedExchange [Reuses operator id: 108]
Output [1]: [d_date_sk#23]

(46) InputAdapter
Input [1]: [d_date_sk#23]

(47) InputIteratorTransformer
Input [1]: [d_date_sk#23]

(48) BroadcastHashJoinExecTransformer
Left keys [1]: [cs_sold_date_sk#22]
Right keys [1]: [d_date_sk#23]
Join type: Inner
Join condition: None

(49) ProjectExecTransformer
Output [3]: [cs_bill_addr_sk#19, cs_item_sk#20, cs_ext_sales_price#21]
Input [5]: [cs_bill_addr_sk#19, cs_item_sk#20, cs_ext_sales_price#21, cs_sold_date_sk#22, d_date_sk#23]

(50) ReusedExchange [Reuses operator id: 19]
Output [2]: [i_item_sk#24, i_manufact_id#25]

(51) InputAdapter
Input [2]: [i_item_sk#24, i_manufact_id#25]

(52) InputIteratorTransformer
Input [2]: [i_item_sk#24, i_manufact_id#25]

(53) BroadcastHashJoinExecTransformer
Left keys [1]: [cs_item_sk#20]
Right keys [1]: [i_item_sk#24]
Join type: Inner
Join condition: None

(54) ProjectExecTransformer
Output [3]: [cs_bill_addr_sk#19, cs_ext_sales_price#21, i_manufact_id#25]
Input [5]: [cs_bill_addr_sk#19, cs_item_sk#20, cs_ext_sales_price#21, i_item_sk#24, i_manufact_id#25]

(55) ReusedExchange [Reuses operator id: 28]
Output [1]: [ca_address_sk#26]

(56) InputAdapter
Input [1]: [ca_address_sk#26]

(57) InputIteratorTransformer
Input [1]: [ca_address_sk#26]

(58) BroadcastHashJoinExecTransformer
Left keys [1]: [cs_bill_addr_sk#19]
Right keys [1]: [ca_address_sk#26]
Join type: Inner
Join condition: None

(59) ProjectExecTransformer
Output [2]: [i_manufact_id#25, UnscaledValue(cs_ext_sales_price#21) AS _pre_2#27]
Input [4]: [cs_bill_addr_sk#19, cs_ext_sales_price#21, i_manufact_id#25, ca_address_sk#26]

(60) FlushableHashAggregateExecTransformer
Input [2]: [i_manufact_id#25, _pre_2#27]
Keys [1]: [i_manufact_id#25]
Functions [1]: [partial_sum(_pre_2#27)]
Aggregate Attributes [1]: [sum#28]
Results [2]: [i_manufact_id#25, sum#29]

(61) ProjectExecTransformer
Output [3]: [hash(i_manufact_id#25, 42) AS hash_partition_key#30, i_manufact_id#25, sum#29]
Input [2]: [i_manufact_id#25, sum#29]

(62) WholeStageCodegenTransformer (13)
Input [3]: [hash_partition_key#30, i_manufact_id#25, sum#29]
Arguments: false

(63) VeloxResizeBatches
Input [3]: [hash_partition_key#30, i_manufact_id#25, sum#29]
Arguments: 1024, 2147483647, 10485760

(64) ColumnarExchange
Input [3]: [hash_partition_key#30, i_manufact_id#25, sum#29]
Arguments: hashpartitioning(i_manufact_id#25, 1), ENSURE_REQUIREMENTS, [i_manufact_id#25, sum#29], [plan_id=5], [shuffle_writer_type=hash]

(65) InputAdapter
Input [2]: [i_manufact_id#25, sum#29]

(66) InputIteratorTransformer
Input [2]: [i_manufact_id#25, sum#29]

(67) RegularHashAggregateExecTransformer
Input [2]: [i_manufact_id#25, sum#29]
Keys [1]: [i_manufact_id#25]
Functions [1]: [sum(UnscaledValue(cs_ext_sales_price#21))]
Aggregate Attributes [1]: [sum(UnscaledValue(cs_ext_sales_price#21))#31]
Results [2]: [i_manufact_id#25, sum(UnscaledValue(cs_ext_sales_price#21))#31]

(68) ProjectExecTransformer
Output [2]: [i_manufact_id#25, MakeDecimal(sum(UnscaledValue(cs_ext_sales_price#21))#31,17,2) AS total_sales#32]
Input [2]: [i_manufact_id#25, sum(UnscaledValue(cs_ext_sales_price#21))#31]

(69) WholeStageCodegenTransformer (14)
Input [2]: [i_manufact_id#25, total_sales#32]
Arguments: false

(70) FileSourceScanExecTransformer parquet spark_catalog.default.web_sales
Output [4]: [ws_item_sk#33, ws_bill_addr_sk#34, ws_ext_sales_price#35, ws_sold_date_sk#36]
Batched: true
Location: InMemoryFileIndex []
PartitionFilters: [isnotnull(ws_sold_date_sk#36), dynamicpruningexpression(ws_sold_date_sk#36 IN dynamicpruning#5)]
PushedFilters: [IsNotNull(ws_bill_addr_sk), IsNotNull(ws_item_sk)]
ReadSchema: struct<ws_item_sk:int,ws_bill_addr_sk:int,ws_ext_sales_price:decimal(7,2)>

(71) FilterExecTransformer
Input [4]: [ws_item_sk#33, ws_bill_addr_sk#34, ws_ext_sales_price#35, ws_sold_date_sk#36]
Arguments: (isnotnull(ws_bill_addr_sk#34) AND isnotnull(ws_item_sk#33))

(72) ReusedExchange [Reuses operator id: 108]
Output [1]: [d_date_sk#37]

(73) InputAdapter
Input [1]: [d_date_sk#37]

(74) InputIteratorTransformer
Input [1]: [d_date_sk#37]

(75) BroadcastHashJoinExecTransformer
Left keys [1]: [ws_sold_date_sk#36]
Right keys [1]: [d_date_sk#37]
Join type: Inner
Join condition: None

(76) ProjectExecTransformer
Output [3]: [ws_item_sk#33, ws_bill_addr_sk#34, ws_ext_sales_price#35]
Input [5]: [ws_item_sk#33, ws_bill_addr_sk#34, ws_ext_sales_price#35, ws_sold_date_sk#36, d_date_sk#37]

(77) ReusedExchange [Reuses operator id: 19]
Output [2]: [i_item_sk#38, i_manufact_id#39]

(78) InputAdapter
Input [2]: [i_item_sk#38, i_manufact_id#39]

(79) InputIteratorTransformer
Input [2]: [i_item_sk#38, i_manufact_id#39]

(80) BroadcastHashJoinExecTransformer
Left keys [1]: [ws_item_sk#33]
Right keys [1]: [i_item_sk#38]
Join type: Inner
Join condition: None

(81) ProjectExecTransformer
Output [3]: [ws_bill_addr_sk#34, ws_ext_sales_price#35, i_manufact_id#39]
Input [5]: [ws_item_sk#33, ws_bill_addr_sk#34, ws_ext_sales_price#35, i_item_sk#38, i_manufact_id#39]

(82) ReusedExchange [Reuses operator id: 28]
Output [1]: [ca_address_sk#40]

(83) InputAdapter
Input [1]: [ca_address_sk#40]

(84) InputIteratorTransformer
Input [1]: [ca_address_sk#40]

(85) BroadcastHashJoinExecTransformer
Left keys [1]: [ws_bill_addr_sk#34]
Right keys [1]: [ca_address_sk#40]
Join type: Inner
Join condition: None

(86) ProjectExecTransformer
Output [2]: [i_manufact_id#39, UnscaledValue(ws_ext_sales_price#35) AS _pre_3#41]
Input [4]: [ws_bill_addr_sk#34, ws_ext_sales_price#35, i_manufact_id#39, ca_address_sk#40]

(87) FlushableHashAggregateExecTransformer
Input [2]: [i_manufact_id#39, _pre_3#41]
Keys [1]: [i_manufact_id#39]
Functions [1]: [partial_sum(_pre_3#41)]
Aggregate Attributes [1]: [sum#42]
Results [2]: [i_manufact_id#39, sum#43]

(88) ProjectExecTransformer
Output [3]: [hash(i_manufact_id#39, 42) AS hash_partition_key#44, i_manufact_id#39, sum#43]
Input [2]: [i_manufact_id#39, sum#43]

(89) WholeStageCodegenTransformer (20)
Input [3]: [hash_partition_key#44, i_manufact_id#39, sum#43]
Arguments: false

(90) VeloxResizeBatches
Input [3]: [hash_partition_key#44, i_manufact_id#39, sum#43]
Arguments: 1024, 2147483647, 10485760

(91) ColumnarExchange
Input [3]: [hash_partition_key#44, i_manufact_id#39, sum#43]
Arguments: hashpartitioning(i_manufact_id#39, 1), ENSURE_REQUIREMENTS, [i_manufact_id#39, sum#43], [plan_id=6], [shuffle_writer_type=hash]

(92) InputAdapter
Input [2]: [i_manufact_id#39, sum#43]

(93) InputIteratorTransformer
Input [2]: [i_manufact_id#39, sum#43]

(94) RegularHashAggregateExecTransformer
Input [2]: [i_manufact_id#39, sum#43]
Keys [1]: [i_manufact_id#39]
Functions [1]: [sum(UnscaledValue(ws_ext_sales_price#35))]
Aggregate Attributes [1]: [sum(UnscaledValue(ws_ext_sales_price#35))#45]
Results [2]: [i_manufact_id#39, sum(UnscaledValue(ws_ext_sales_price#35))#45]

(95) ProjectExecTransformer
Output [2]: [i_manufact_id#39, MakeDecimal(sum(UnscaledValue(ws_ext_sales_price#35))#45,17,2) AS total_sales#46]
Input [2]: [i_manufact_id#39, sum(UnscaledValue(ws_ext_sales_price#35))#45]

(96) WholeStageCodegenTransformer (21)
Input [2]: [i_manufact_id#39, total_sales#46]
Arguments: false

(97) ColumnarUnion
Arguments: hashpartitioning(i_manufact_id#8, 1)

(98) InputAdapter
Input [2]: [i_manufact_id#8, total_sales#18]

(99) InputIteratorTransformer
Input [2]: [i_manufact_id#8, total_sales#18]

(100) RegularHashAggregateExecTransformer
Input [2]: [i_manufact_id#8, total_sales#18]
Keys [1]: [i_manufact_id#8]
Functions [1]: [sum(total_sales#18)]
Aggregate Attributes [1]: [sum(total_sales#18)#47]
Results [2]: [i_manufact_id#8, sum(total_sales#18)#47 AS total_sales#48]

(101) WholeStageCodegenTransformer (22)
Input [2]: [i_manufact_id#8, total_sales#48]
Arguments: false

(102) TakeOrderedAndProjectExecTransformer
Input [2]: [i_manufact_id#8, total_sales#48]
Arguments: 100, [total_sales#48 ASC NULLS FIRST], [i_manufact_id#8, total_sales#48], 0

(103) VeloxColumnarToRow
Input [2]: [i_manufact_id#8, total_sales#48]

===== Subqueries =====

Subquery:1 Hosting operator id = 1 Hosting Expression = ss_sold_date_sk#4 IN dynamicpruning#5
ColumnarBroadcastExchange (108)
+- ^ ProjectExecTransformer (106)
   +- ^ FilterExecTransformer (105)
      +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.date_dim (104)


(104) FileSourceScanExecTransformer parquet spark_catalog.default.date_dim
Output [3]: [d_date_sk#6, d_year#49, d_moy#50]
Batched: true
Location: InMemoryFileIndex [{warehouse_dir}/date_dim]
PushedFilters: [IsNotNull(d_year), IsNotNull(d_moy), EqualTo(d_year,1998), EqualTo(d_moy,5), IsNotNull(d_date_sk)]
ReadSchema: struct<d_date_sk:int,d_year:int,d_moy:int>

(105) FilterExecTransformer
Input [3]: [d_date_sk#6, d_year#49, d_moy#50]
Arguments: ((((isnotnull(d_year#49) AND isnotnull(d_moy#50)) AND (d_year#49 = 1998)) AND (d_moy#50 = 5)) AND isnotnull(d_date_sk#6))

(106) ProjectExecTransformer
Output [1]: [d_date_sk#6]
Input [3]: [d_date_sk#6, d_year#49, d_moy#50]

(107) WholeStageCodegenTransformer (1)
Input [1]: [d_date_sk#6]
Arguments: false

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

Subquery:2 Hosting operator id = 43 Hosting Expression = cs_sold_date_sk#22 IN dynamicpruning#5

Subquery:3 Hosting operator id = 70 Hosting Expression = ws_sold_date_sk#36 IN dynamicpruning#5


