== Physical Plan ==
VeloxColumnarToRow (27)
+- ^ SortExecTransformer (25)
   +- ^ InputIteratorTransformer (24)
      +- ColumnarExchange (22)
         +- VeloxResizeBatches (21)
            +- ^ RegularHashAggregateExecTransformer (19)
               +- ^ InputIteratorTransformer (18)
                  +- ColumnarExchange (16)
                     +- VeloxResizeBatches (15)
                        +- ^ ProjectExecTransformer (13)
                           +- ^ FlushableHashAggregateExecTransformer (12)
                              +- ^ ProjectExecTransformer (11)
                                 +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (10)
                                    :- ^ FilterExecTransformer (2)
                                    :  +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.orders (1)
                                    +- ^ InputIteratorTransformer (9)
                                       +- ColumnarBroadcastExchange (7)
                                          +- ^ ProjectExecTransformer (5)
                                             +- ^ FilterExecTransformer (4)
                                                +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.lineitem (3)


(1) FileSourceScanExecTransformer parquet spark_catalog.default.orders
Output [2]: [o_orderkey#1, o_orderpriority#2]
Batched: true
Location: InMemoryFileIndex [{warehouse_dir}/orders]
PushedFilters: [IsNotNull(o_orderkey)]
ReadSchema: struct<o_orderkey:bigint,o_orderpriority:string>

(2) FilterExecTransformer
Input [2]: [o_orderkey#1, o_orderpriority#2]
Arguments: isnotnull(o_orderkey#1)

(3) FileSourceScanExecTransformer parquet spark_catalog.default.lineitem
Output [5]: [l_orderkey#3, l_shipdate#4, l_commitdate#5, l_receiptdate#6, l_shipmode#7]
Batched: true
Location: InMemoryFileIndex [{warehouse_dir}/lineitem]
PushedFilters: [IsNotNull(l_commitdate), IsNotNull(l_receiptdate), IsNotNull(l_shipdate), In(l_shipmode, [MAIL,SHIP]), GreaterThanOrEqual(l_receiptdate,1994-01-01), LessThan(l_receiptdate,1995-01-01), IsNotNull(l_orderkey)]
ReadSchema: struct<l_orderkey:bigint,l_shipdate:date,l_commitdate:date,l_receiptdate:date,l_shipmode:string>

(4) FilterExecTransformer
Input [5]: [l_orderkey#3, l_shipdate#4, l_commitdate#5, l_receiptdate#6, l_shipmode#7]
Arguments: ((((((((isnotnull(l_commitdate#5) AND isnotnull(l_receiptdate#6)) AND isnotnull(l_shipdate#4)) AND l_shipmode#7 IN (MAIL,SHIP)) AND (l_commitdate#5 < l_receiptdate#6)) AND (l_shipdate#4 < l_commitdate#5)) AND (l_receiptdate#6 >= 1994-01-01)) AND (l_receiptdate#6 < 1995-01-01)) AND isnotnull(l_orderkey#3))

(5) ProjectExecTransformer
Output [2]: [l_orderkey#3, l_shipmode#7]
Input [5]: [l_orderkey#3, l_shipdate#4, l_commitdate#5, l_receiptdate#6, l_shipmode#7]

(6) WholeStageCodegenTransformer (1)
Input [2]: [l_orderkey#3, l_shipmode#7]
Arguments: false

(7) ColumnarBroadcastExchange
Input [2]: [l_orderkey#3, l_shipmode#7]
Arguments: HashedRelationBroadcastMode(List(input[0, bigint, true]),false), [plan_id=1]

(8) InputAdapter
Input [2]: [l_orderkey#3, l_shipmode#7]

(9) InputIteratorTransformer
Input [2]: [l_orderkey#3, l_shipmode#7]

(10) BroadcastHashJoinExecTransformer
Left keys [1]: [o_orderkey#1]
Right keys [1]: [l_orderkey#3]
Join type: Inner
Join condition: None

(11) ProjectExecTransformer
Output [3]: [l_shipmode#7, CASE WHEN ((o_orderpriority#2 = 1-URGENT) OR (o_orderpriority#2 = 2-HIGH)) THEN 1 ELSE 0 END AS _pre_1#8, CASE WHEN (NOT (o_orderpriority#2 = 1-URGENT) AND NOT (o_orderpriority#2 = 2-HIGH)) THEN 1 ELSE 0 END AS _pre_2#9]
Input [4]: [o_orderkey#1, o_orderpriority#2, l_orderkey#3, l_shipmode#7]

(12) FlushableHashAggregateExecTransformer
Input [3]: [l_shipmode#7, _pre_1#8, _pre_2#9]
Keys [1]: [l_shipmode#7]
Functions [2]: [partial_sum(_pre_1#8), partial_sum(_pre_2#9)]
Aggregate Attributes [2]: [sum#10, sum#11]
Results [3]: [l_shipmode#7, sum#12, sum#13]

(13) ProjectExecTransformer
Output [4]: [hash(l_shipmode#7, 42) AS hash_partition_key#14, l_shipmode#7, sum#12, sum#13]
Input [3]: [l_shipmode#7, sum#12, sum#13]

(14) WholeStageCodegenTransformer (2)
Input [4]: [hash_partition_key#14, l_shipmode#7, sum#12, sum#13]
Arguments: false

(15) VeloxResizeBatches
Input [4]: [hash_partition_key#14, l_shipmode#7, sum#12, sum#13]
Arguments: 1024, 2147483647, 10485760

(16) ColumnarExchange
Input [4]: [hash_partition_key#14, l_shipmode#7, sum#12, sum#13]
Arguments: hashpartitioning(l_shipmode#7, 1), ENSURE_REQUIREMENTS, [l_shipmode#7, sum#12, sum#13], [plan_id=2], [shuffle_writer_type=hash]

(17) InputAdapter
Input [3]: [l_shipmode#7, sum#12, sum#13]

(18) InputIteratorTransformer
Input [3]: [l_shipmode#7, sum#12, sum#13]

(19) RegularHashAggregateExecTransformer
Input [3]: [l_shipmode#7, sum#12, sum#13]
Keys [1]: [l_shipmode#7]
Functions [2]: [sum(CASE WHEN ((o_orderpriority#2 = 1-URGENT) OR (o_orderpriority#2 = 2-HIGH)) THEN 1 ELSE 0 END), sum(CASE WHEN (NOT (o_orderpriority#2 = 1-URGENT) AND NOT (o_orderpriority#2 = 2-HIGH)) THEN 1 ELSE 0 END)]
Aggregate Attributes [2]: [sum(CASE WHEN ((o_orderpriority#2 = 1-URGENT) OR (o_orderpriority#2 = 2-HIGH)) THEN 1 ELSE 0 END)#15, sum(CASE WHEN (NOT (o_orderpriority#2 = 1-URGENT) AND NOT (o_orderpriority#2 = 2-HIGH)) THEN 1 ELSE 0 END)#16]
Results [3]: [l_shipmode#7, sum(CASE WHEN ((o_orderpriority#2 = 1-URGENT) OR (o_orderpriority#2 = 2-HIGH)) THEN 1 ELSE 0 END)#15 AS high_line_count#17, sum(CASE WHEN (NOT (o_orderpriority#2 = 1-URGENT) AND NOT (o_orderpriority#2 = 2-HIGH)) THEN 1 ELSE 0 END)#16 AS low_line_count#18]

(20) WholeStageCodegenTransformer (3)
Input [3]: [l_shipmode#7, high_line_count#17, low_line_count#18]
Arguments: false

(21) VeloxResizeBatches
Input [3]: [l_shipmode#7, high_line_count#17, low_line_count#18]
Arguments: 1024, 2147483647, 10485760

(22) ColumnarExchange
Input [3]: [l_shipmode#7, high_line_count#17, low_line_count#18]
Arguments: rangepartitioning(l_shipmode#7 ASC NULLS FIRST, 1), ENSURE_REQUIREMENTS, [plan_id=3], [shuffle_writer_type=hash]

(23) InputAdapter
Input [3]: [l_shipmode#7, high_line_count#17, low_line_count#18]

(24) InputIteratorTransformer
Input [3]: [l_shipmode#7, high_line_count#17, low_line_count#18]

(25) SortExecTransformer
Input [3]: [l_shipmode#7, high_line_count#17, low_line_count#18]
Arguments: [l_shipmode#7 ASC NULLS FIRST], true, 0

(26) WholeStageCodegenTransformer (4)
Input [3]: [l_shipmode#7, high_line_count#17, low_line_count#18]
Arguments: false

(27) VeloxColumnarToRow
Input [3]: [l_shipmode#7, high_line_count#17, low_line_count#18]

