== Physical Plan ==
AdaptiveSparkPlan (93)
+- == Final Plan ==
   NativeTakeOrdered (59)
   +- NativeProject (58)
      +- NativeHashAggregate (57)
         +- InputAdapter (56)
            +- AQEShuffleRead (55)
               +- ShuffleQueryStage (54), Statistics(X)
                  +- NativeShuffleExchange (53)
                     +- NativeHashAggregate (52)
                        +- NativeProject (51)
                           +- NativeSortMergeJoin Inner (50)
                              :- NativeSort (41)
                              :  +- InputAdapter (40)
                              :     +- AQEShuffleRead (39)
                              :        +- ShuffleQueryStage (38), Statistics(X)
                              :           +- NativeShuffleExchange (37)
                              :              +- NativeProject (36)
                              :                 +- NativeSortMergeJoin Inner (35)
                              :                    :- NativeSort (25)
                              :                    :  +- InputAdapter (24)
                              :                    :     +- AQEShuffleRead (23)
                              :                    :        +- ShuffleQueryStage (22), Statistics(X)
                              :                    :           +- NativeShuffleExchange (21)
                              :                    :              +- NativeProject (20)
                              :                    :                 +- NativeSortMergeJoin Inner (19)
                              :                    :                    :- NativeSort (9)
                              :                    :                    :  +- InputAdapter (8)
                              :                    :                    :     +- AQEShuffleRead (7)
                              :                    :                    :        +- ShuffleQueryStage (6), Statistics(X)
                              :                    :                    :           +- NativeShuffleExchange (5)
                              :                    :                    :              +- NativeProject (4)
                              :                    :                    :                 +- NativeFilter (3)
                              :                    :                    :                    +- InputAdapter (2)
                              :                    :                    :                       +- NativeParquetScan  (1)
                              :                    :                    +- NativeSort (18)
                              :                    :                       +- InputAdapter (17)
                              :                    :                          +- AQEShuffleRead (16)
                              :                    :                             +- ShuffleQueryStage (15), Statistics(X)
                              :                    :                                +- NativeShuffleExchange (14)
                              :                    :                                   +- NativeProject (13)
                              :                    :                                      +- NativeFilter (12)
                              :                    :                                         +- InputAdapter (11)
                              :                    :                                            +- NativeParquetScan  (10)
                              :                    +- NativeSort (34)
                              :                       +- InputAdapter (33)
                              :                          +- AQEShuffleRead (32)
                              :                             +- ShuffleQueryStage (31), Statistics(X)
                              :                                +- NativeShuffleExchange (30)
                              :                                   +- NativeProject (29)
                              :                                      +- NativeFilter (28)
                              :                                         +- InputAdapter (27)
                              :                                            +- NativeParquetScan  (26)
                              +- NativeSort (49)
                                 +- InputAdapter (48)
                                    +- AQEShuffleRead (47)
                                       +- ShuffleQueryStage (46), Statistics(X)
                                          +- NativeShuffleExchange (45)
                                             +- NativeFilter (44)
                                                +- InputAdapter (43)
                                                   +- NativeParquetScan  (42)
+- == Initial Plan ==
   TakeOrderedAndProject (92)
   +- HashAggregate (91)
      +- Exchange (90)
         +- HashAggregate (89)
            +- Project (88)
               +- SortMergeJoin Inner (87)
                  :- Sort (82)
                  :  +- Exchange (81)
                  :     +- Project (80)
                  :        +- SortMergeJoin Inner (79)
                  :           :- Sort (73)
                  :           :  +- Exchange (72)
                  :           :     +- Project (71)
                  :           :        +- SortMergeJoin Inner (70)
                  :           :           :- Sort (64)
                  :           :           :  +- Exchange (63)
                  :           :           :     +- Project (62)
                  :           :           :        +- Filter (61)
                  :           :           :           +- Scan parquet (60)
                  :           :           +- Sort (69)
                  :           :              +- Exchange (68)
                  :           :                 +- Project (67)
                  :           :                    +- Filter (66)
                  :           :                       +- Scan parquet (65)
                  :           +- Sort (78)
                  :              +- Exchange (77)
                  :                 +- Project (76)
                  :                    +- Filter (75)
                  :                       +- Scan parquet (74)
                  +- Sort (86)
                     +- Exchange (85)
                        +- Filter (84)
                           +- Scan parquet (83)


(60) Scan parquet
Output [5]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4, i_manufact_id#5]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(i_current_price), GreaterThanOrEqual(i_current_price,62.00), LessThanOrEqual(i_current_price,92.00), In(i_manufact_id, [129,270,423,821]), IsNotNull(i_item_sk)]
ReadSchema: struct<i_item_sk:int,i_item_id:string,i_item_desc:string,i_current_price:decimal(7,2),i_manufact_id:int>

(2) InputAdapter
Input [5]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4, i_manufact_id#5]
Arguments: [#1, #2, #3, #4, #5]

(3) NativeFilter
Input [5]: [#1#1, #2#2, #3#3, #4#4, #5#5]
Condition : ((((isnotnull(i_current_price#4) AND (i_current_price#4 >= 62.00)) AND (i_current_price#4 <= 92.00)) AND i_manufact_id#5 IN (129,270,821,423)) AND isnotnull(i_item_sk#1))

(4) NativeProject
Output [4]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4]
Input [5]: [#1#1, #2#2, #3#3, #4#4, #5#5]

(5) NativeShuffleExchange
Input [4]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4]
Arguments: hashpartitioning(i_item_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=1]

(6) ShuffleQueryStage
Output [4]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4]
Arguments: X

(7) AQEShuffleRead
Input [4]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4]
Arguments: coalesced

(8) InputAdapter
Input [4]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4]

(9) NativeSort
Input [4]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4]
Arguments: [i_item_sk#1 ASC NULLS FIRST], false

(65) Scan parquet
Output [3]: [inv_date_sk#6, inv_item_sk#7, inv_quantity_on_hand#8]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(inv_quantity_on_hand), GreaterThanOrEqual(inv_quantity_on_hand,100), LessThanOrEqual(inv_quantity_on_hand,500), IsNotNull(inv_item_sk), IsNotNull(inv_date_sk)]
ReadSchema: struct<inv_date_sk:int,inv_item_sk:int,inv_quantity_on_hand:int>

(11) InputAdapter
Input [3]: [inv_date_sk#6, inv_item_sk#7, inv_quantity_on_hand#8]
Arguments: [#6, #7, #8]

(12) NativeFilter
Input [3]: [#6#6, #7#7, #8#8]
Condition : ((((isnotnull(inv_quantity_on_hand#8) AND (inv_quantity_on_hand#8 >= 100)) AND (inv_quantity_on_hand#8 <= 500)) AND isnotnull(inv_item_sk#7)) AND isnotnull(inv_date_sk#6))

(13) NativeProject
Output [2]: [inv_date_sk#6, inv_item_sk#7]
Input [3]: [#6#6, #7#7, #8#8]

(14) NativeShuffleExchange
Input [2]: [inv_date_sk#6, inv_item_sk#7]
Arguments: hashpartitioning(inv_item_sk#7, 100), ENSURE_REQUIREMENTS, [plan_id=2]

(15) ShuffleQueryStage
Output [2]: [inv_date_sk#6, inv_item_sk#7]
Arguments: X

(16) AQEShuffleRead
Input [2]: [inv_date_sk#6, inv_item_sk#7]
Arguments: coalesced

(17) InputAdapter
Input [2]: [inv_date_sk#6, inv_item_sk#7]

(18) NativeSort
Input [2]: [inv_date_sk#6, inv_item_sk#7]
Arguments: [inv_item_sk#7 ASC NULLS FIRST], false

(19) NativeSortMergeJoin
Left keys [1]: [i_item_sk#1]
Right keys [1]: [inv_item_sk#7]
Join type: Inner
Join condition: None

(20) NativeProject
Output [5]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4, inv_date_sk#6]
Input [6]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4, inv_date_sk#6, inv_item_sk#7]

(21) NativeShuffleExchange
Input [5]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4, inv_date_sk#6]
Arguments: hashpartitioning(inv_date_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=3]

(22) ShuffleQueryStage
Output [5]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4, inv_date_sk#6]
Arguments: X

(23) AQEShuffleRead
Input [5]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4, inv_date_sk#6]
Arguments: coalesced

(24) InputAdapter
Input [5]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4, inv_date_sk#6]

(25) NativeSort
Input [5]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4, inv_date_sk#6]
Arguments: [inv_date_sk#6 ASC NULLS FIRST], false

(74) Scan parquet
Output [2]: [d_date_sk#9, d_date#10]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(d_date), GreaterThanOrEqual(d_date,2000-05-25), LessThanOrEqual(d_date,2000-07-24), IsNotNull(d_date_sk)]
ReadSchema: struct<d_date_sk:int,d_date:date>

(27) InputAdapter
Input [2]: [d_date_sk#9, d_date#10]
Arguments: [#9, #10]

(28) NativeFilter
Input [2]: [#9#9, #10#10]
Condition : (((isnotnull(d_date#10) AND (d_date#10 >= 2000-05-25)) AND (d_date#10 <= 2000-07-24)) AND isnotnull(d_date_sk#9))

(29) NativeProject
Output [1]: [d_date_sk#9]
Input [2]: [#9#9, #10#10]

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

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

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

(33) InputAdapter
Input [1]: [d_date_sk#9]

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

(35) NativeSortMergeJoin
Left keys [1]: [inv_date_sk#6]
Right keys [1]: [d_date_sk#9]
Join type: Inner
Join condition: None

(36) NativeProject
Output [4]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4]
Input [6]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4, inv_date_sk#6, d_date_sk#9]

(37) NativeShuffleExchange
Input [4]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4]
Arguments: hashpartitioning(i_item_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=5]

(38) ShuffleQueryStage
Output [4]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4]
Arguments: X

(39) AQEShuffleRead
Input [4]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4]
Arguments: coalesced

(40) InputAdapter
Input [4]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4]

(41) NativeSort
Input [4]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4]
Arguments: [i_item_sk#1 ASC NULLS FIRST], false

(83) Scan parquet
Output [1]: [ss_item_sk#11]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(ss_item_sk)]
ReadSchema: struct<ss_item_sk:int>

(43) InputAdapter
Input [1]: [ss_item_sk#11]
Arguments: [#11]

(44) NativeFilter
Input [1]: [#11#11]
Condition : isnotnull(ss_item_sk#11)

(45) NativeShuffleExchange
Input [1]: [#11#11]
Arguments: hashpartitioning(ss_item_sk#11, 100), ENSURE_REQUIREMENTS, [plan_id=6]

(46) ShuffleQueryStage
Output [1]: [#11#11]
Arguments: X

(47) AQEShuffleRead
Input [1]: [#11#11]
Arguments: coalesced

(48) InputAdapter
Input [1]: [#11#11]

(49) NativeSort
Input [1]: [#11#11]
Arguments: [ss_item_sk#11 ASC NULLS FIRST], false

(50) NativeSortMergeJoin
Left keys [1]: [i_item_sk#1]
Right keys [1]: [ss_item_sk#11]
Join type: Inner
Join condition: None

(51) NativeProject
Output [3]: [i_item_id#2, i_item_desc#3, i_current_price#4]
Input [5]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4, #11#11]

(52) NativeHashAggregate
Input [3]: [i_item_id#2, i_item_desc#3, i_current_price#4]
Keys [3]: [i_item_id#2, i_item_desc#3, i_current_price#4]
Functions: []
Aggregate Attributes: []
Results [3]: [i_item_id#2, i_item_desc#3, i_current_price#4]

(53) NativeShuffleExchange
Input [3]: [i_item_id#2, i_item_desc#3, i_current_price#4]
Arguments: hashpartitioning(i_item_id#2, i_item_desc#3, i_current_price#4, 100), ENSURE_REQUIREMENTS, [plan_id=7]

(54) ShuffleQueryStage
Output [3]: [i_item_id#2, i_item_desc#3, i_current_price#4]
Arguments: X

(55) AQEShuffleRead
Input [3]: [i_item_id#2, i_item_desc#3, i_current_price#4]
Arguments: coalesced

(56) InputAdapter
Input [3]: [i_item_id#2, i_item_desc#3, i_current_price#4]

(57) NativeHashAggregate
Input [3]: [i_item_id#2, i_item_desc#3, i_current_price#4]
Keys [3]: [i_item_id#2, i_item_desc#3, i_current_price#4]
Functions: []
Aggregate Attributes: []
Results [3]: [i_item_id#2, i_item_desc#3, i_current_price#4]

(58) NativeProject
Output [3]: [i_item_id#2, i_item_desc#3, i_current_price#4]
Input [3]: [i_item_id#2, i_item_desc#3, i_current_price#4]

(59) NativeTakeOrdered
Input [3]: [i_item_id#2, i_item_desc#3, i_current_price#4]
Arguments: X, X, [i_item_id#2 ASC NULLS FIRST]

(60) Scan parquet
Output [5]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4, i_manufact_id#5]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(i_current_price), GreaterThanOrEqual(i_current_price,62.00), LessThanOrEqual(i_current_price,92.00), In(i_manufact_id, [129,270,423,821]), IsNotNull(i_item_sk)]
ReadSchema: struct<i_item_sk:int,i_item_id:string,i_item_desc:string,i_current_price:decimal(7,2),i_manufact_id:int>

(61) Filter
Input [5]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4, i_manufact_id#5]
Condition : ((((isnotnull(i_current_price#4) AND (i_current_price#4 >= 62.00)) AND (i_current_price#4 <= 92.00)) AND i_manufact_id#5 IN (129,270,821,423)) AND isnotnull(i_item_sk#1))

(62) Project
Output [4]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4]
Input [5]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4, i_manufact_id#5]

(63) Exchange
Input [4]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4]
Arguments: hashpartitioning(i_item_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=8]

(64) Sort
Input [4]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4]
Arguments: [i_item_sk#1 ASC NULLS FIRST], false, 0

(65) Scan parquet
Output [3]: [inv_date_sk#6, inv_item_sk#7, inv_quantity_on_hand#8]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(inv_quantity_on_hand), GreaterThanOrEqual(inv_quantity_on_hand,100), LessThanOrEqual(inv_quantity_on_hand,500), IsNotNull(inv_item_sk), IsNotNull(inv_date_sk)]
ReadSchema: struct<inv_date_sk:int,inv_item_sk:int,inv_quantity_on_hand:int>

(66) Filter
Input [3]: [inv_date_sk#6, inv_item_sk#7, inv_quantity_on_hand#8]
Condition : ((((isnotnull(inv_quantity_on_hand#8) AND (inv_quantity_on_hand#8 >= 100)) AND (inv_quantity_on_hand#8 <= 500)) AND isnotnull(inv_item_sk#7)) AND isnotnull(inv_date_sk#6))

(67) Project
Output [2]: [inv_date_sk#6, inv_item_sk#7]
Input [3]: [inv_date_sk#6, inv_item_sk#7, inv_quantity_on_hand#8]

(68) Exchange
Input [2]: [inv_date_sk#6, inv_item_sk#7]
Arguments: hashpartitioning(inv_item_sk#7, 100), ENSURE_REQUIREMENTS, [plan_id=9]

(69) Sort
Input [2]: [inv_date_sk#6, inv_item_sk#7]
Arguments: [inv_item_sk#7 ASC NULLS FIRST], false, 0

(70) SortMergeJoin
Left keys [1]: [i_item_sk#1]
Right keys [1]: [inv_item_sk#7]
Join type: Inner
Join condition: None

(71) Project
Output [5]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4, inv_date_sk#6]
Input [6]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4, inv_date_sk#6, inv_item_sk#7]

(72) Exchange
Input [5]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4, inv_date_sk#6]
Arguments: hashpartitioning(inv_date_sk#6, 100), ENSURE_REQUIREMENTS, [plan_id=10]

(73) Sort
Input [5]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4, inv_date_sk#6]
Arguments: [inv_date_sk#6 ASC NULLS FIRST], false, 0

(74) Scan parquet
Output [2]: [d_date_sk#9, d_date#10]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(d_date), GreaterThanOrEqual(d_date,2000-05-25), LessThanOrEqual(d_date,2000-07-24), IsNotNull(d_date_sk)]
ReadSchema: struct<d_date_sk:int,d_date:date>

(75) Filter
Input [2]: [d_date_sk#9, d_date#10]
Condition : (((isnotnull(d_date#10) AND (d_date#10 >= 2000-05-25)) AND (d_date#10 <= 2000-07-24)) AND isnotnull(d_date_sk#9))

(76) Project
Output [1]: [d_date_sk#9]
Input [2]: [d_date_sk#9, d_date#10]

(77) Exchange
Input [1]: [d_date_sk#9]
Arguments: hashpartitioning(d_date_sk#9, 100), ENSURE_REQUIREMENTS, [plan_id=11]

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

(79) SortMergeJoin
Left keys [1]: [inv_date_sk#6]
Right keys [1]: [d_date_sk#9]
Join type: Inner
Join condition: None

(80) Project
Output [4]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4]
Input [6]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4, inv_date_sk#6, d_date_sk#9]

(81) Exchange
Input [4]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4]
Arguments: hashpartitioning(i_item_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=12]

(82) Sort
Input [4]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4]
Arguments: [i_item_sk#1 ASC NULLS FIRST], false, 0

(83) Scan parquet
Output [1]: [ss_item_sk#11]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(ss_item_sk)]
ReadSchema: struct<ss_item_sk:int>

(84) Filter
Input [1]: [ss_item_sk#11]
Condition : isnotnull(ss_item_sk#11)

(85) Exchange
Input [1]: [ss_item_sk#11]
Arguments: hashpartitioning(ss_item_sk#11, 100), ENSURE_REQUIREMENTS, [plan_id=13]

(86) Sort
Input [1]: [ss_item_sk#11]
Arguments: [ss_item_sk#11 ASC NULLS FIRST], false, 0

(87) SortMergeJoin
Left keys [1]: [i_item_sk#1]
Right keys [1]: [ss_item_sk#11]
Join type: Inner
Join condition: None

(88) Project
Output [3]: [i_item_id#2, i_item_desc#3, i_current_price#4]
Input [5]: [i_item_sk#1, i_item_id#2, i_item_desc#3, i_current_price#4, ss_item_sk#11]

(89) HashAggregate
Input [3]: [i_item_id#2, i_item_desc#3, i_current_price#4]
Keys [3]: [i_item_id#2, i_item_desc#3, i_current_price#4]
Functions: []
Aggregate Attributes: []
Results [3]: [i_item_id#2, i_item_desc#3, i_current_price#4]

(90) Exchange
Input [3]: [i_item_id#2, i_item_desc#3, i_current_price#4]
Arguments: hashpartitioning(i_item_id#2, i_item_desc#3, i_current_price#4, 100), ENSURE_REQUIREMENTS, [plan_id=14]

(91) HashAggregate
Input [3]: [i_item_id#2, i_item_desc#3, i_current_price#4]
Keys [3]: [i_item_id#2, i_item_desc#3, i_current_price#4]
Functions: []
Aggregate Attributes: []
Results [3]: [i_item_id#2, i_item_desc#3, i_current_price#4]

(92) TakeOrderedAndProject
Input [3]: [i_item_id#2, i_item_desc#3, i_current_price#4]
Arguments: X, [i_item_id#2 ASC NULLS FIRST], [i_item_id#2, i_item_desc#3, i_current_price#4]

(93) AdaptiveSparkPlan
Output [3]: [i_item_id#2, i_item_desc#3, i_current_price#4]
Arguments: isFinalPlan=true

