== Physical Plan ==
AdaptiveSparkPlan (135)
+- == Final Plan ==
   TakeOrderedAndProject (86)
   +- * HashAggregate (85)
      +- AQEShuffleRead (84)
         +- ShuffleQueryStage (83), Statistics(X)
            +- Exchange (82)
               +- * HashAggregate (81)
                  +- * Project (80)
                     +- * SortMergeJoin Inner (79)
                        :- NativeSort (70)
                        :  +- InputAdapter (69)
                        :     +- AQEShuffleRead (68)
                        :        +- ShuffleQueryStage (67), Statistics(X)
                        :           +- NativeShuffleExchange (66)
                        :              +- NativeProject (65)
                        :                 +- NativeSortMergeJoin Inner (64)
                        :                    :- NativeSort (55)
                        :                    :  +- InputAdapter (54)
                        :                    :     +- AQEShuffleRead (53)
                        :                    :        +- ShuffleQueryStage (52), Statistics(X)
                        :                    :           +- NativeShuffleExchange (51)
                        :                    :              +- NativeProject (50)
                        :                    :                 +- NativeSortMergeJoin Inner (49)
                        :                    :                    :- NativeSort (40)
                        :                    :                    :  +- InputAdapter (39)
                        :                    :                    :     +- AQEShuffleRead (38)
                        :                    :                    :        +- ShuffleQueryStage (37), Statistics(X)
                        :                    :                    :           +- NativeShuffleExchange (36)
                        :                    :                    :              +- NativeProject (35)
                        :                    :                    :                 +- NativeSortMergeJoin Inner (34)
                        :                    :                    :                    :- NativeSort (24)
                        :                    :                    :                    :  +- InputAdapter (23)
                        :                    :                    :                    :     +- AQEShuffleRead (22)
                        :                    :                    :                    :        +- ShuffleQueryStage (21), Statistics(X)
                        :                    :                    :                    :           +- NativeShuffleExchange (20)
                        :                    :                    :                    :              +- NativeProject (19)
                        :                    :                    :                    :                 +- NativeSortMergeJoin Inner (18)
                        :                    :                    :                    :                    :- NativeSort (9)
                        :                    :                    :                    :                    :  +- InputAdapter (8)
                        :                    :                    :                    :                    :     +- AQEShuffleRead (7)
                        :                    :                    :                    :                    :        +- ShuffleQueryStage (6), Statistics(X)
                        :                    :                    :                    :                    :           +- NativeShuffleExchange (5)
                        :                    :                    :                    :                    :              +- NativeProject (4)
                        :                    :                    :                    :                    :                 +- NativeFilter (3)
                        :                    :                    :                    :                    :                    +- InputAdapter (2)
                        :                    :                    :                    :                    :                       +- NativeParquetScan  (1)
                        :                    :                    :                    :                    +- NativeSort (17)
                        :                    :                    :                    :                       +- InputAdapter (16)
                        :                    :                    :                    :                          +- AQEShuffleRead (15)
                        :                    :                    :                    :                             +- ShuffleQueryStage (14), Statistics(X)
                        :                    :                    :                    :                                +- NativeShuffleExchange (13)
                        :                    :                    :                    :                                   +- NativeFilter (12)
                        :                    :                    :                    :                                      +- InputAdapter (11)
                        :                    :                    :                    :                                         +- NativeParquetScan  (10)
                        :                    :                    :                    +- NativeSort (33)
                        :                    :                    :                       +- InputAdapter (32)
                        :                    :                    :                          +- AQEShuffleRead (31)
                        :                    :                    :                             +- ShuffleQueryStage (30), Statistics(X)
                        :                    :                    :                                +- NativeShuffleExchange (29)
                        :                    :                    :                                   +- NativeProject (28)
                        :                    :                    :                                      +- NativeFilter (27)
                        :                    :                    :                                         +- InputAdapter (26)
                        :                    :                    :                                            +- NativeParquetScan  (25)
                        :                    :                    +- NativeSort (48)
                        :                    :                       +- InputAdapter (47)
                        :                    :                          +- AQEShuffleRead (46)
                        :                    :                             +- ShuffleQueryStage (45), Statistics(X)
                        :                    :                                +- NativeShuffleExchange (44)
                        :                    :                                   +- NativeFilter (43)
                        :                    :                                      +- InputAdapter (42)
                        :                    :                                         +- NativeParquetScan  (41)
                        :                    +- NativeSort (63)
                        :                       +- InputAdapter (62)
                        :                          +- AQEShuffleRead (61)
                        :                             +- ShuffleQueryStage (60), Statistics(X)
                        :                                +- NativeShuffleExchange (59)
                        :                                   +- NativeFilter (58)
                        :                                      +- InputAdapter (57)
                        :                                         +- NativeParquetScan  (56)
                        +- NativeSort (78)
                           +- InputAdapter (77)
                              +- AQEShuffleRead (76)
                                 +- ShuffleQueryStage (75), Statistics(X)
                                    +- NativeShuffleExchange (74)
                                       +- NativeFilter (73)
                                          +- InputAdapter (72)
                                             +- NativeParquetScan  (71)
+- == Initial Plan ==
   TakeOrderedAndProject (134)
   +- HashAggregate (133)
      +- Exchange (132)
         +- HashAggregate (131)
            +- Project (130)
               +- SortMergeJoin Inner (129)
                  :- Sort (124)
                  :  +- Exchange (123)
                  :     +- Project (122)
                  :        +- SortMergeJoin Inner (121)
                  :           :- Sort (116)
                  :           :  +- Exchange (115)
                  :           :     +- Project (114)
                  :           :        +- SortMergeJoin Inner (113)
                  :           :           :- Sort (108)
                  :           :           :  +- Exchange (107)
                  :           :           :     +- Project (106)
                  :           :           :        +- SortMergeJoin Inner (105)
                  :           :           :           :- Sort (99)
                  :           :           :           :  +- Exchange (98)
                  :           :           :           :     +- Project (97)
                  :           :           :           :        +- SortMergeJoin Inner (96)
                  :           :           :           :           :- Sort (91)
                  :           :           :           :           :  +- Exchange (90)
                  :           :           :           :           :     +- Project (89)
                  :           :           :           :           :        +- Filter (88)
                  :           :           :           :           :           +- Scan parquet (87)
                  :           :           :           :           +- Sort (95)
                  :           :           :           :              +- Exchange (94)
                  :           :           :           :                 +- Filter (93)
                  :           :           :           :                    +- Scan parquet (92)
                  :           :           :           +- Sort (104)
                  :           :           :              +- Exchange (103)
                  :           :           :                 +- Project (102)
                  :           :           :                    +- Filter (101)
                  :           :           :                       +- Scan parquet (100)
                  :           :           +- Sort (112)
                  :           :              +- Exchange (111)
                  :           :                 +- Filter (110)
                  :           :                    +- Scan parquet (109)
                  :           +- Sort (120)
                  :              +- Exchange (119)
                  :                 +- Filter (118)
                  :                    +- Scan parquet (117)
                  +- Sort (128)
                     +- Exchange (127)
                        +- Filter (126)
                           +- Scan parquet (125)


(87) Scan parquet
Output [3]: [d_date_sk#1, d_year#2, d_moy#3]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(d_moy), IsNotNull(d_year), EqualTo(d_moy,11), EqualTo(d_year,1998), IsNotNull(d_date_sk)]
ReadSchema: struct<d_date_sk:int,d_year:int,d_moy:int>

(2) InputAdapter
Input [3]: [d_date_sk#1, d_year#2, d_moy#3]
Arguments: [#1, #2, #3]

(3) NativeFilter
Input [3]: [#1#1, #2#2, #3#3]
Condition : ((((isnotnull(d_moy#3) AND isnotnull(d_year#2)) AND (d_moy#3 = 11)) AND (d_year#2 = 1998)) AND isnotnull(d_date_sk#1))

(4) NativeProject
Output [1]: [d_date_sk#1]
Input [3]: [#1#1, #2#2, #3#3]

(5) NativeShuffleExchange
Input [1]: [d_date_sk#1]
Arguments: hashpartitioning(d_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=1]

(6) ShuffleQueryStage
Output [1]: [d_date_sk#1]
Arguments: X

(7) AQEShuffleRead
Input [1]: [d_date_sk#1]
Arguments: coalesced

(8) InputAdapter
Input [1]: [d_date_sk#1]

(9) NativeSort
Input [1]: [d_date_sk#1]
Arguments: [d_date_sk#1 ASC NULLS FIRST], false

(92) Scan parquet
Output [5]: [ss_sold_date_sk#4, ss_item_sk#5, ss_customer_sk#6, ss_store_sk#7, ss_ext_sales_price#8]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(ss_sold_date_sk), IsNotNull(ss_item_sk), IsNotNull(ss_customer_sk), IsNotNull(ss_store_sk)]
ReadSchema: struct<ss_sold_date_sk:int,ss_item_sk:int,ss_customer_sk:int,ss_store_sk:int,ss_ext_sales_price:decimal(7,2)>

(11) InputAdapter
Input [5]: [ss_sold_date_sk#4, ss_item_sk#5, ss_customer_sk#6, ss_store_sk#7, ss_ext_sales_price#8]
Arguments: [#4, #5, #6, #7, #8]

(12) NativeFilter
Input [5]: [#4#4, #5#5, #6#6, #7#7, #8#8]
Condition : (((isnotnull(ss_sold_date_sk#4) AND isnotnull(ss_item_sk#5)) AND isnotnull(ss_customer_sk#6)) AND isnotnull(ss_store_sk#7))

(13) NativeShuffleExchange
Input [5]: [#4#4, #5#5, #6#6, #7#7, #8#8]
Arguments: hashpartitioning(ss_sold_date_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=2]

(14) ShuffleQueryStage
Output [5]: [#4#4, #5#5, #6#6, #7#7, #8#8]
Arguments: X

(15) AQEShuffleRead
Input [5]: [#4#4, #5#5, #6#6, #7#7, #8#8]
Arguments: coalesced

(16) InputAdapter
Input [5]: [#4#4, #5#5, #6#6, #7#7, #8#8]

(17) NativeSort
Input [5]: [#4#4, #5#5, #6#6, #7#7, #8#8]
Arguments: [ss_sold_date_sk#4 ASC NULLS FIRST], false

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

(19) NativeProject
Output [4]: [ss_item_sk#5, ss_customer_sk#6, ss_store_sk#7, ss_ext_sales_price#8]
Input [6]: [d_date_sk#1, #4#4, #5#5, #6#6, #7#7, #8#8]

(20) NativeShuffleExchange
Input [4]: [ss_item_sk#5, ss_customer_sk#6, ss_store_sk#7, ss_ext_sales_price#8]
Arguments: hashpartitioning(ss_item_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=3]

(21) ShuffleQueryStage
Output [4]: [ss_item_sk#5, ss_customer_sk#6, ss_store_sk#7, ss_ext_sales_price#8]
Arguments: X

(22) AQEShuffleRead
Input [4]: [ss_item_sk#5, ss_customer_sk#6, ss_store_sk#7, ss_ext_sales_price#8]
Arguments: coalesced

(23) InputAdapter
Input [4]: [ss_item_sk#5, ss_customer_sk#6, ss_store_sk#7, ss_ext_sales_price#8]

(24) NativeSort
Input [4]: [ss_item_sk#5, ss_customer_sk#6, ss_store_sk#7, ss_ext_sales_price#8]
Arguments: [ss_item_sk#5 ASC NULLS FIRST], false

(100) Scan parquet
Output [6]: [i_item_sk#9, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13, i_manager_id#14]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(i_manager_id), EqualTo(i_manager_id,8), IsNotNull(i_item_sk)]
ReadSchema: struct<i_item_sk:int,i_brand_id:int,i_brand:string,i_manufact_id:int,i_manufact:string,i_manager_id:int>

(26) InputAdapter
Input [6]: [i_item_sk#9, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13, i_manager_id#14]
Arguments: [#9, #10, #11, #12, #13, #14]

(27) NativeFilter
Input [6]: [#9#9, #10#10, #11#11, #12#12, #13#13, #14#14]
Condition : ((isnotnull(i_manager_id#14) AND (i_manager_id#14 = 8)) AND isnotnull(i_item_sk#9))

(28) NativeProject
Output [5]: [i_item_sk#9, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13]
Input [6]: [#9#9, #10#10, #11#11, #12#12, #13#13, #14#14]

(29) NativeShuffleExchange
Input [5]: [i_item_sk#9, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13]
Arguments: hashpartitioning(i_item_sk#9, 100), ENSURE_REQUIREMENTS, [plan_id=4]

(30) ShuffleQueryStage
Output [5]: [i_item_sk#9, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13]
Arguments: X

(31) AQEShuffleRead
Input [5]: [i_item_sk#9, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13]
Arguments: coalesced

(32) InputAdapter
Input [5]: [i_item_sk#9, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13]

(33) NativeSort
Input [5]: [i_item_sk#9, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13]
Arguments: [i_item_sk#9 ASC NULLS FIRST], false

(34) NativeSortMergeJoin
Left keys [1]: [ss_item_sk#5]
Right keys [1]: [i_item_sk#9]
Join type: Inner
Join condition: None

(35) NativeProject
Output [7]: [ss_customer_sk#6, ss_store_sk#7, ss_ext_sales_price#8, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13]
Input [9]: [ss_item_sk#5, ss_customer_sk#6, ss_store_sk#7, ss_ext_sales_price#8, i_item_sk#9, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13]

(36) NativeShuffleExchange
Input [7]: [ss_customer_sk#6, ss_store_sk#7, ss_ext_sales_price#8, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13]
Arguments: hashpartitioning(ss_customer_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=5]

(37) ShuffleQueryStage
Output [7]: [ss_customer_sk#6, ss_store_sk#7, ss_ext_sales_price#8, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13]
Arguments: X

(38) AQEShuffleRead
Input [7]: [ss_customer_sk#6, ss_store_sk#7, ss_ext_sales_price#8, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13]
Arguments: coalesced

(39) InputAdapter
Input [7]: [ss_customer_sk#6, ss_store_sk#7, ss_ext_sales_price#8, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13]

(40) NativeSort
Input [7]: [ss_customer_sk#6, ss_store_sk#7, ss_ext_sales_price#8, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13]
Arguments: [ss_customer_sk#6 ASC NULLS FIRST], false

(109) Scan parquet
Output [2]: [c_customer_sk#15, c_current_addr_sk#16]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(c_customer_sk), IsNotNull(c_current_addr_sk)]
ReadSchema: struct<c_customer_sk:int,c_current_addr_sk:int>

(42) InputAdapter
Input [2]: [c_customer_sk#15, c_current_addr_sk#16]
Arguments: [#15, #16]

(43) NativeFilter
Input [2]: [#15#15, #16#16]
Condition : (isnotnull(c_customer_sk#15) AND isnotnull(c_current_addr_sk#16))

(44) NativeShuffleExchange
Input [2]: [#15#15, #16#16]
Arguments: hashpartitioning(c_customer_sk#15, 100), ENSURE_REQUIREMENTS, [plan_id=6]

(45) ShuffleQueryStage
Output [2]: [#15#15, #16#16]
Arguments: X

(46) AQEShuffleRead
Input [2]: [#15#15, #16#16]
Arguments: coalesced

(47) InputAdapter
Input [2]: [#15#15, #16#16]

(48) NativeSort
Input [2]: [#15#15, #16#16]
Arguments: [c_customer_sk#15 ASC NULLS FIRST], false

(49) NativeSortMergeJoin
Left keys [1]: [ss_customer_sk#6]
Right keys [1]: [c_customer_sk#15]
Join type: Inner
Join condition: None

(50) NativeProject
Output [7]: [ss_store_sk#7, ss_ext_sales_price#8, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13, c_current_addr_sk#16]
Input [9]: [ss_customer_sk#6, ss_store_sk#7, ss_ext_sales_price#8, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13, #15#15, #16#16]

(51) NativeShuffleExchange
Input [7]: [ss_store_sk#7, ss_ext_sales_price#8, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13, c_current_addr_sk#16]
Arguments: hashpartitioning(c_current_addr_sk#16, 100), ENSURE_REQUIREMENTS, [plan_id=7]

(52) ShuffleQueryStage
Output [7]: [ss_store_sk#7, ss_ext_sales_price#8, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13, c_current_addr_sk#16]
Arguments: X

(53) AQEShuffleRead
Input [7]: [ss_store_sk#7, ss_ext_sales_price#8, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13, c_current_addr_sk#16]
Arguments: coalesced

(54) InputAdapter
Input [7]: [ss_store_sk#7, ss_ext_sales_price#8, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13, c_current_addr_sk#16]

(55) NativeSort
Input [7]: [ss_store_sk#7, ss_ext_sales_price#8, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13, c_current_addr_sk#16]
Arguments: [c_current_addr_sk#16 ASC NULLS FIRST], false

(117) Scan parquet
Output [2]: [ca_address_sk#17, ca_zip#18]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(ca_address_sk), IsNotNull(ca_zip)]
ReadSchema: struct<ca_address_sk:int,ca_zip:string>

(57) InputAdapter
Input [2]: [ca_address_sk#17, ca_zip#18]
Arguments: [#17, #18]

(58) NativeFilter
Input [2]: [#17#17, #18#18]
Condition : (isnotnull(ca_address_sk#17) AND isnotnull(ca_zip#18))

(59) NativeShuffleExchange
Input [2]: [#17#17, #18#18]
Arguments: hashpartitioning(ca_address_sk#17, 100), ENSURE_REQUIREMENTS, [plan_id=8]

(60) ShuffleQueryStage
Output [2]: [#17#17, #18#18]
Arguments: X

(61) AQEShuffleRead
Input [2]: [#17#17, #18#18]
Arguments: coalesced

(62) InputAdapter
Input [2]: [#17#17, #18#18]

(63) NativeSort
Input [2]: [#17#17, #18#18]
Arguments: [ca_address_sk#17 ASC NULLS FIRST], false

(64) NativeSortMergeJoin
Left keys [1]: [c_current_addr_sk#16]
Right keys [1]: [ca_address_sk#17]
Join type: Inner
Join condition: None

(65) NativeProject
Output [7]: [ss_store_sk#7, ss_ext_sales_price#8, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13, ca_zip#18]
Input [9]: [ss_store_sk#7, ss_ext_sales_price#8, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13, c_current_addr_sk#16, #17#17, #18#18]

(66) NativeShuffleExchange
Input [7]: [ss_store_sk#7, ss_ext_sales_price#8, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13, ca_zip#18]
Arguments: hashpartitioning(ss_store_sk#7, 100), ENSURE_REQUIREMENTS, [plan_id=9]

(67) ShuffleQueryStage
Output [7]: [ss_store_sk#7, ss_ext_sales_price#8, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13, ca_zip#18]
Arguments: X

(68) AQEShuffleRead
Input [7]: [ss_store_sk#7, ss_ext_sales_price#8, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13, ca_zip#18]
Arguments: coalesced

(69) InputAdapter
Input [7]: [ss_store_sk#7, ss_ext_sales_price#8, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13, ca_zip#18]

(70) NativeSort
Input [7]: [ss_store_sk#7, ss_ext_sales_price#8, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13, ca_zip#18]
Arguments: [ss_store_sk#7 ASC NULLS FIRST], false

(125) Scan parquet
Output [2]: [s_store_sk#19, s_zip#20]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(s_zip), IsNotNull(s_store_sk)]
ReadSchema: struct<s_store_sk:int,s_zip:string>

(72) InputAdapter
Input [2]: [s_store_sk#19, s_zip#20]
Arguments: [#19, #20]

(73) NativeFilter
Input [2]: [#19#19, #20#20]
Condition : (isnotnull(s_zip#20) AND isnotnull(s_store_sk#19))

(74) NativeShuffleExchange
Input [2]: [#19#19, #20#20]
Arguments: hashpartitioning(s_store_sk#19, 100), ENSURE_REQUIREMENTS, [plan_id=10]

(75) ShuffleQueryStage
Output [2]: [#19#19, #20#20]
Arguments: X

(76) AQEShuffleRead
Input [2]: [#19#19, #20#20]
Arguments: coalesced

(77) InputAdapter
Input [2]: [#19#19, #20#20]

(78) NativeSort
Input [2]: [#19#19, #20#20]
Arguments: [s_store_sk#19 ASC NULLS FIRST], false

(79) SortMergeJoin [codegen id : X]
Left keys [1]: [ss_store_sk#7]
Right keys [1]: [s_store_sk#19]
Join type: Inner
Join condition: NOT (substr(ca_zip#18, 1, 5) = substr(s_zip#20, 1, 5))

(80) Project [codegen id : X]
Output [5]: [ss_ext_sales_price#8, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13]
Input [9]: [ss_store_sk#7, ss_ext_sales_price#8, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13, ca_zip#18, #19#19, #20#20]

(81) HashAggregate [codegen id : X]
Input [5]: [ss_ext_sales_price#8, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13]
Keys [4]: [i_brand#11, i_brand_id#10, i_manufact_id#12, i_manufact#13]
Functions [1]: [partial_sum(UnscaledValue(ss_ext_sales_price#8))]
Aggregate Attributes [1]: [sum#21]
Results [5]: [i_brand#11, i_brand_id#10, i_manufact_id#12, i_manufact#13, sum#22]

(82) Exchange
Input [5]: [i_brand#11, i_brand_id#10, i_manufact_id#12, i_manufact#13, sum#22]
Arguments: hashpartitioning(i_brand#11, i_brand_id#10, i_manufact_id#12, i_manufact#13, 100), ENSURE_REQUIREMENTS, [plan_id=11]

(83) ShuffleQueryStage
Output [5]: [i_brand#11, i_brand_id#10, i_manufact_id#12, i_manufact#13, sum#22]
Arguments: X

(84) AQEShuffleRead
Input [5]: [i_brand#11, i_brand_id#10, i_manufact_id#12, i_manufact#13, sum#22]
Arguments: coalesced

(85) HashAggregate [codegen id : X]
Input [5]: [i_brand#11, i_brand_id#10, i_manufact_id#12, i_manufact#13, sum#22]
Keys [4]: [i_brand#11, i_brand_id#10, i_manufact_id#12, i_manufact#13]
Functions [1]: [sum(UnscaledValue(ss_ext_sales_price#8))]
Aggregate Attributes [1]: [sum(UnscaledValue(ss_ext_sales_price#8))#23]
Results [5]: [i_brand_id#10 AS brand_id#24, i_brand#11 AS brand#25, i_manufact_id#12, i_manufact#13, MakeDecimal(sum(UnscaledValue(ss_ext_sales_price#8))#23,17,2) AS ext_price#26]

(86) TakeOrderedAndProject
Input [5]: [brand_id#24, brand#25, i_manufact_id#12, i_manufact#13, ext_price#26]
Arguments: X, [ext_price#26 DESC NULLS LAST, brand#25 ASC NULLS FIRST, brand_id#24 ASC NULLS FIRST, i_manufact_id#12 ASC NULLS FIRST, i_manufact#13 ASC NULLS FIRST], [brand_id#24, brand#25, i_manufact_id#12, i_manufact#13, ext_price#26]

(87) Scan parquet
Output [3]: [d_date_sk#1, d_year#2, d_moy#3]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(d_moy), IsNotNull(d_year), EqualTo(d_moy,11), EqualTo(d_year,1998), IsNotNull(d_date_sk)]
ReadSchema: struct<d_date_sk:int,d_year:int,d_moy:int>

(88) Filter
Input [3]: [d_date_sk#1, d_year#2, d_moy#3]
Condition : ((((isnotnull(d_moy#3) AND isnotnull(d_year#2)) AND (d_moy#3 = 11)) AND (d_year#2 = 1998)) AND isnotnull(d_date_sk#1))

(89) Project
Output [1]: [d_date_sk#1]
Input [3]: [d_date_sk#1, d_year#2, d_moy#3]

(90) Exchange
Input [1]: [d_date_sk#1]
Arguments: hashpartitioning(d_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=12]

(91) Sort
Input [1]: [d_date_sk#1]
Arguments: [d_date_sk#1 ASC NULLS FIRST], false, 0

(92) Scan parquet
Output [5]: [ss_sold_date_sk#4, ss_item_sk#5, ss_customer_sk#6, ss_store_sk#7, ss_ext_sales_price#8]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(ss_sold_date_sk), IsNotNull(ss_item_sk), IsNotNull(ss_customer_sk), IsNotNull(ss_store_sk)]
ReadSchema: struct<ss_sold_date_sk:int,ss_item_sk:int,ss_customer_sk:int,ss_store_sk:int,ss_ext_sales_price:decimal(7,2)>

(93) Filter
Input [5]: [ss_sold_date_sk#4, ss_item_sk#5, ss_customer_sk#6, ss_store_sk#7, ss_ext_sales_price#8]
Condition : (((isnotnull(ss_sold_date_sk#4) AND isnotnull(ss_item_sk#5)) AND isnotnull(ss_customer_sk#6)) AND isnotnull(ss_store_sk#7))

(94) Exchange
Input [5]: [ss_sold_date_sk#4, ss_item_sk#5, ss_customer_sk#6, ss_store_sk#7, ss_ext_sales_price#8]
Arguments: hashpartitioning(ss_sold_date_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=13]

(95) Sort
Input [5]: [ss_sold_date_sk#4, ss_item_sk#5, ss_customer_sk#6, ss_store_sk#7, ss_ext_sales_price#8]
Arguments: [ss_sold_date_sk#4 ASC NULLS FIRST], false, 0

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

(97) Project
Output [4]: [ss_item_sk#5, ss_customer_sk#6, ss_store_sk#7, ss_ext_sales_price#8]
Input [6]: [d_date_sk#1, ss_sold_date_sk#4, ss_item_sk#5, ss_customer_sk#6, ss_store_sk#7, ss_ext_sales_price#8]

(98) Exchange
Input [4]: [ss_item_sk#5, ss_customer_sk#6, ss_store_sk#7, ss_ext_sales_price#8]
Arguments: hashpartitioning(ss_item_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=14]

(99) Sort
Input [4]: [ss_item_sk#5, ss_customer_sk#6, ss_store_sk#7, ss_ext_sales_price#8]
Arguments: [ss_item_sk#5 ASC NULLS FIRST], false, 0

(100) Scan parquet
Output [6]: [i_item_sk#9, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13, i_manager_id#14]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(i_manager_id), EqualTo(i_manager_id,8), IsNotNull(i_item_sk)]
ReadSchema: struct<i_item_sk:int,i_brand_id:int,i_brand:string,i_manufact_id:int,i_manufact:string,i_manager_id:int>

(101) Filter
Input [6]: [i_item_sk#9, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13, i_manager_id#14]
Condition : ((isnotnull(i_manager_id#14) AND (i_manager_id#14 = 8)) AND isnotnull(i_item_sk#9))

(102) Project
Output [5]: [i_item_sk#9, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13]
Input [6]: [i_item_sk#9, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13, i_manager_id#14]

(103) Exchange
Input [5]: [i_item_sk#9, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13]
Arguments: hashpartitioning(i_item_sk#9, 100), ENSURE_REQUIREMENTS, [plan_id=15]

(104) Sort
Input [5]: [i_item_sk#9, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13]
Arguments: [i_item_sk#9 ASC NULLS FIRST], false, 0

(105) SortMergeJoin
Left keys [1]: [ss_item_sk#5]
Right keys [1]: [i_item_sk#9]
Join type: Inner
Join condition: None

(106) Project
Output [7]: [ss_customer_sk#6, ss_store_sk#7, ss_ext_sales_price#8, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13]
Input [9]: [ss_item_sk#5, ss_customer_sk#6, ss_store_sk#7, ss_ext_sales_price#8, i_item_sk#9, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13]

(107) Exchange
Input [7]: [ss_customer_sk#6, ss_store_sk#7, ss_ext_sales_price#8, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13]
Arguments: hashpartitioning(ss_customer_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=16]

(108) Sort
Input [7]: [ss_customer_sk#6, ss_store_sk#7, ss_ext_sales_price#8, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13]
Arguments: [ss_customer_sk#6 ASC NULLS FIRST], false, 0

(109) Scan parquet
Output [2]: [c_customer_sk#15, c_current_addr_sk#16]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(c_customer_sk), IsNotNull(c_current_addr_sk)]
ReadSchema: struct<c_customer_sk:int,c_current_addr_sk:int>

(110) Filter
Input [2]: [c_customer_sk#15, c_current_addr_sk#16]
Condition : (isnotnull(c_customer_sk#15) AND isnotnull(c_current_addr_sk#16))

(111) Exchange
Input [2]: [c_customer_sk#15, c_current_addr_sk#16]
Arguments: hashpartitioning(c_customer_sk#15, 100), ENSURE_REQUIREMENTS, [plan_id=17]

(112) Sort
Input [2]: [c_customer_sk#15, c_current_addr_sk#16]
Arguments: [c_customer_sk#15 ASC NULLS FIRST], false, 0

(113) SortMergeJoin
Left keys [1]: [ss_customer_sk#6]
Right keys [1]: [c_customer_sk#15]
Join type: Inner
Join condition: None

(114) Project
Output [7]: [ss_store_sk#7, ss_ext_sales_price#8, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13, c_current_addr_sk#16]
Input [9]: [ss_customer_sk#6, ss_store_sk#7, ss_ext_sales_price#8, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13, c_customer_sk#15, c_current_addr_sk#16]

(115) Exchange
Input [7]: [ss_store_sk#7, ss_ext_sales_price#8, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13, c_current_addr_sk#16]
Arguments: hashpartitioning(c_current_addr_sk#16, 100), ENSURE_REQUIREMENTS, [plan_id=18]

(116) Sort
Input [7]: [ss_store_sk#7, ss_ext_sales_price#8, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13, c_current_addr_sk#16]
Arguments: [c_current_addr_sk#16 ASC NULLS FIRST], false, 0

(117) Scan parquet
Output [2]: [ca_address_sk#17, ca_zip#18]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(ca_address_sk), IsNotNull(ca_zip)]
ReadSchema: struct<ca_address_sk:int,ca_zip:string>

(118) Filter
Input [2]: [ca_address_sk#17, ca_zip#18]
Condition : (isnotnull(ca_address_sk#17) AND isnotnull(ca_zip#18))

(119) Exchange
Input [2]: [ca_address_sk#17, ca_zip#18]
Arguments: hashpartitioning(ca_address_sk#17, 100), ENSURE_REQUIREMENTS, [plan_id=19]

(120) Sort
Input [2]: [ca_address_sk#17, ca_zip#18]
Arguments: [ca_address_sk#17 ASC NULLS FIRST], false, 0

(121) SortMergeJoin
Left keys [1]: [c_current_addr_sk#16]
Right keys [1]: [ca_address_sk#17]
Join type: Inner
Join condition: None

(122) Project
Output [7]: [ss_store_sk#7, ss_ext_sales_price#8, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13, ca_zip#18]
Input [9]: [ss_store_sk#7, ss_ext_sales_price#8, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13, c_current_addr_sk#16, ca_address_sk#17, ca_zip#18]

(123) Exchange
Input [7]: [ss_store_sk#7, ss_ext_sales_price#8, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13, ca_zip#18]
Arguments: hashpartitioning(ss_store_sk#7, 100), ENSURE_REQUIREMENTS, [plan_id=20]

(124) Sort
Input [7]: [ss_store_sk#7, ss_ext_sales_price#8, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13, ca_zip#18]
Arguments: [ss_store_sk#7 ASC NULLS FIRST], false, 0

(125) Scan parquet
Output [2]: [s_store_sk#19, s_zip#20]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(s_zip), IsNotNull(s_store_sk)]
ReadSchema: struct<s_store_sk:int,s_zip:string>

(126) Filter
Input [2]: [s_store_sk#19, s_zip#20]
Condition : (isnotnull(s_zip#20) AND isnotnull(s_store_sk#19))

(127) Exchange
Input [2]: [s_store_sk#19, s_zip#20]
Arguments: hashpartitioning(s_store_sk#19, 100), ENSURE_REQUIREMENTS, [plan_id=21]

(128) Sort
Input [2]: [s_store_sk#19, s_zip#20]
Arguments: [s_store_sk#19 ASC NULLS FIRST], false, 0

(129) SortMergeJoin
Left keys [1]: [ss_store_sk#7]
Right keys [1]: [s_store_sk#19]
Join type: Inner
Join condition: NOT (substr(ca_zip#18, 1, 5) = substr(s_zip#20, 1, 5))

(130) Project
Output [5]: [ss_ext_sales_price#8, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13]
Input [9]: [ss_store_sk#7, ss_ext_sales_price#8, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13, ca_zip#18, s_store_sk#19, s_zip#20]

(131) HashAggregate
Input [5]: [ss_ext_sales_price#8, i_brand_id#10, i_brand#11, i_manufact_id#12, i_manufact#13]
Keys [4]: [i_brand#11, i_brand_id#10, i_manufact_id#12, i_manufact#13]
Functions [1]: [partial_sum(UnscaledValue(ss_ext_sales_price#8))]
Aggregate Attributes [1]: [sum#21]
Results [5]: [i_brand#11, i_brand_id#10, i_manufact_id#12, i_manufact#13, sum#22]

(132) Exchange
Input [5]: [i_brand#11, i_brand_id#10, i_manufact_id#12, i_manufact#13, sum#22]
Arguments: hashpartitioning(i_brand#11, i_brand_id#10, i_manufact_id#12, i_manufact#13, 100), ENSURE_REQUIREMENTS, [plan_id=22]

(133) HashAggregate
Input [5]: [i_brand#11, i_brand_id#10, i_manufact_id#12, i_manufact#13, sum#22]
Keys [4]: [i_brand#11, i_brand_id#10, i_manufact_id#12, i_manufact#13]
Functions [1]: [sum(UnscaledValue(ss_ext_sales_price#8))]
Aggregate Attributes [1]: [sum(UnscaledValue(ss_ext_sales_price#8))#23]
Results [5]: [i_brand_id#10 AS brand_id#24, i_brand#11 AS brand#25, i_manufact_id#12, i_manufact#13, MakeDecimal(sum(UnscaledValue(ss_ext_sales_price#8))#23,17,2) AS ext_price#26]

(134) TakeOrderedAndProject
Input [5]: [brand_id#24, brand#25, i_manufact_id#12, i_manufact#13, ext_price#26]
Arguments: X, [ext_price#26 DESC NULLS LAST, brand#25 ASC NULLS FIRST, brand_id#24 ASC NULLS FIRST, i_manufact_id#12 ASC NULLS FIRST, i_manufact#13 ASC NULLS FIRST], [brand_id#24, brand#25, i_manufact_id#12, i_manufact#13, ext_price#26]

(135) AdaptiveSparkPlan
Output [5]: [brand_id#24, brand#25, i_manufact_id#12, i_manufact#13, ext_price#26]
Arguments: isFinalPlan=true

