== Physical Plan ==
AdaptiveSparkPlan (20)
+- == Final Plan ==
   VeloxColumnarToRow (13)
   +- ^ RegularHashAggregateExecTransformer (11)
      +- ^ InputIteratorTransformer (10)
         +- ShuffleQueryStage (8), Statistics(X)
            +- ColumnarExchange (7)
               +- VeloxResizeBatches (6)
                  +- ^ FlushableHashAggregateExecTransformer (4)
                     +- ^ ProjectExecTransformer (3)
                        +- ^ FilterExecTransformer (2)
                           +- ^ ScanTransformer parquet  (1)
+- == Initial Plan ==
   HashAggregate (19)
   +- Exchange (18)
      +- HashAggregate (17)
         +- Project (16)
            +- Filter (15)
               +- Scan parquet (14)


(1) ScanTransformer parquet 
Output [4]: [l_quantity#X, l_extendedprice#X, l_discount#X, l_shipdate#X]
Batched: true
Location: InMemoryFileIndex [*]
PushedFilters: [IsNotNull(l_shipdate), IsNotNull(l_discount), IsNotNull(l_quantity), GreaterThanOrEqual(l_shipdate,1994-01-01), LessThan(l_shipdate,1995-01-01), GreaterThanOrEqual(l_discount,0.05), LessThanOrEqual(l_discount,0.07), LessThan(l_quantity,24.00)]
ReadSchema: struct<l_quantity:decimal(12,2),l_extendedprice:decimal(12,2),l_discount:decimal(12,2),l_shipdate:date>

(2) FilterExecTransformer
Input [4]: [l_quantity#X, l_extendedprice#X, l_discount#X, l_shipdate#X]
Arguments: (((((((isnotnull(l_shipdate#X) AND isnotnull(l_discount#X)) AND isnotnull(l_quantity#X)) AND (l_shipdate#X >= 1994-01-01)) AND (l_shipdate#X < 1995-01-01)) AND (l_discount#X >= 0.05)) AND (l_discount#X <= 0.07)) AND (l_quantity#X < 24.00))

(3) ProjectExecTransformer
Output [1]: [(l_extendedprice#X * l_discount#X) AS _pre_X#X]
Input [4]: [l_quantity#X, l_extendedprice#X, l_discount#X, l_shipdate#X]

(4) FlushableHashAggregateExecTransformer
Input [1]: [_pre_X#X]
Keys: []
Functions [1]: [partial_sum(_pre_X#X)]
Aggregate Attributes [2]: [sum#X, isEmpty#X]
Results [2]: [sum#X, isEmpty#X]

(5) WholeStageCodegenTransformer (X)
Input [2]: [sum#X, isEmpty#X]
Arguments: false

(6) VeloxResizeBatches
Input [2]: [sum#X, isEmpty#X]
Arguments: X, X

(7) ColumnarExchange
Input [2]: [sum#X, isEmpty#X]
Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=X], [shuffle_writer_type=hash]

(8) ShuffleQueryStage
Output [2]: [sum#X, isEmpty#X]
Arguments: X

(9) InputAdapter
Input [2]: [sum#X, isEmpty#X]

(10) InputIteratorTransformer
Input [2]: [sum#X, isEmpty#X]

(11) RegularHashAggregateExecTransformer
Input [2]: [sum#X, isEmpty#X]
Keys: []
Functions [1]: [sum((l_extendedprice#X * l_discount#X))]
Aggregate Attributes [1]: [sum((l_extendedprice#X * l_discount#X))#X]
Results [1]: [sum((l_extendedprice#X * l_discount#X))#X AS revenue#X]

(12) WholeStageCodegenTransformer (X)
Input [1]: [revenue#X]
Arguments: false

(13) VeloxColumnarToRow
Input [1]: [revenue#X]

(14) Scan parquet
Output [4]: [l_quantity#X, l_extendedprice#X, l_discount#X, l_shipdate#X]
Batched: true
Location: InMemoryFileIndex [*]
PushedFilters: [IsNotNull(l_shipdate), IsNotNull(l_discount), IsNotNull(l_quantity), GreaterThanOrEqual(l_shipdate,1994-01-01), LessThan(l_shipdate,1995-01-01), GreaterThanOrEqual(l_discount,0.05), LessThanOrEqual(l_discount,0.07), LessThan(l_quantity,24.00)]
ReadSchema: struct<l_quantity:decimal(12,2),l_extendedprice:decimal(12,2),l_discount:decimal(12,2),l_shipdate:date>

(15) Filter
Input [4]: [l_quantity#X, l_extendedprice#X, l_discount#X, l_shipdate#X]
Condition : (((((((isnotnull(l_shipdate#X) AND isnotnull(l_discount#X)) AND isnotnull(l_quantity#X)) AND (l_shipdate#X >= 1994-01-01)) AND (l_shipdate#X < 1995-01-01)) AND (l_discount#X >= 0.05)) AND (l_discount#X <= 0.07)) AND (l_quantity#X < 24.00))

(16) Project
Output [2]: [l_extendedprice#X, l_discount#X]
Input [4]: [l_quantity#X, l_extendedprice#X, l_discount#X, l_shipdate#X]

(17) HashAggregate
Input [2]: [l_extendedprice#X, l_discount#X]
Keys: []
Functions [1]: [partial_sum((l_extendedprice#X * l_discount#X))]
Aggregate Attributes [2]: [sum#X, isEmpty#X]
Results [2]: [sum#X, isEmpty#X]

(18) Exchange
Input [2]: [sum#X, isEmpty#X]
Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=X]

(19) HashAggregate
Input [2]: [sum#X, isEmpty#X]
Keys: []
Functions [1]: [sum((l_extendedprice#X * l_discount#X))]
Aggregate Attributes [1]: [sum((l_extendedprice#X * l_discount#X))#X]
Results [1]: [sum((l_extendedprice#X * l_discount#X))#X AS revenue#X]

(20) AdaptiveSparkPlan
Output [1]: [revenue#X]
Arguments: isFinalPlan=true