== Physical Plan ==
AdaptiveSparkPlan (131)
+- == Final Plan ==
   VeloxColumnarToRow (86)
   +- ^ SortExecTransformer (84)
      +- ^ InputIteratorTransformer (83)
         +- ShuffleQueryStage (81)
            +- ColumnarExchange (80)
               +- VeloxResizeBatches (79)
                  +- ^ ProjectExecTransformer (77)
                     +- ^ RegularHashAggregateExecTransformer (76)
                        +- ^ InputIteratorTransformer (75)
                           +- ShuffleQueryStage (73)
                              +- ColumnarExchange (72)
                                 +- VeloxResizeBatches (71)
                                    +- ^ ProjectExecTransformer (69)
                                       +- ^ FlushableHashAggregateExecTransformer (68)
                                          +- ^ ProjectExecTransformer (67)
                                             +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (66)
                                                :- ^ ProjectExecTransformer (57)
                                                :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (56)
                                                :     :- ^ ProjectExecTransformer (48)
                                                :     :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (47)
                                                :     :     :- ^ ProjectExecTransformer (39)
                                                :     :     :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (38)
                                                :     :     :     :- ^ ProjectExecTransformer (30)
                                                :     :     :     :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (29)
                                                :     :     :     :     :- ^ ProjectExecTransformer (21)
                                                :     :     :     :     :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (20)
                                                :     :     :     :     :     :- ^ ProjectExecTransformer (12)
                                                :     :     :     :     :     :  +- ^ BroadcastHashJoinExecTransformer Inner BuildLeft (11)
                                                :     :     :     :     :     :     :- ^ InputIteratorTransformer (8)
                                                :     :     :     :     :     :     :  +- BroadcastQueryStage (6)
                                                :     :     :     :     :     :     :     +- ColumnarBroadcastExchange (5)
                                                :     :     :     :     :     :     :        +- ^ ProjectExecTransformer (3)
                                                :     :     :     :     :     :     :           +- ^ FilterExecTransformer (2)
                                                :     :     :     :     :     :     :              +- ^ ScanTransformer parquet  (1)
                                                :     :     :     :     :     :     +- ^ FilterExecTransformer (10)
                                                :     :     :     :     :     :        +- ^ ScanTransformer parquet  (9)
                                                :     :     :     :     :     +- ^ InputIteratorTransformer (19)
                                                :     :     :     :     :        +- BroadcastQueryStage (17)
                                                :     :     :     :     :           +- ColumnarBroadcastExchange (16)
                                                :     :     :     :     :              +- ^ FilterExecTransformer (14)
                                                :     :     :     :     :                 +- ^ ScanTransformer parquet  (13)
                                                :     :     :     :     +- ^ InputIteratorTransformer (28)
                                                :     :     :     :        +- BroadcastQueryStage (26)
                                                :     :     :     :           +- ColumnarBroadcastExchange (25)
                                                :     :     :     :              +- ^ FilterExecTransformer (23)
                                                :     :     :     :                 +- ^ ScanTransformer parquet  (22)
                                                :     :     :     +- ^ InputIteratorTransformer (37)
                                                :     :     :        +- BroadcastQueryStage (35)
                                                :     :     :           +- ColumnarBroadcastExchange (34)
                                                :     :     :              +- ^ FilterExecTransformer (32)
                                                :     :     :                 +- ^ ScanTransformer parquet  (31)
                                                :     :     +- ^ InputIteratorTransformer (46)
                                                :     :        +- BroadcastQueryStage (44)
                                                :     :           +- ColumnarBroadcastExchange (43)
                                                :     :              +- ^ FilterExecTransformer (41)
                                                :     :                 +- ^ ScanTransformer parquet  (40)
                                                :     +- ^ InputIteratorTransformer (55)
                                                :        +- BroadcastQueryStage (53)
                                                :           +- ColumnarBroadcastExchange (52)
                                                :              +- ^ FilterExecTransformer (50)
                                                :                 +- ^ ScanTransformer parquet  (49)
                                                +- ^ InputIteratorTransformer (65)
                                                   +- BroadcastQueryStage (63)
                                                      +- ColumnarBroadcastExchange (62)
                                                         +- ^ ProjectExecTransformer (60)
                                                            +- ^ FilterExecTransformer (59)
                                                               +- ^ ScanTransformer parquet  (58)
+- == Initial Plan ==
   Sort (130)
   +- Exchange (129)
      +- HashAggregate (128)
         +- Exchange (127)
            +- HashAggregate (126)
               +- Project (125)
                  +- BroadcastHashJoin Inner BuildRight (124)
                     :- Project (119)
                     :  +- BroadcastHashJoin Inner BuildRight (118)
                     :     :- Project (114)
                     :     :  +- BroadcastHashJoin Inner BuildRight (113)
                     :     :     :- Project (109)
                     :     :     :  +- BroadcastHashJoin Inner BuildRight (108)
                     :     :     :     :- Project (104)
                     :     :     :     :  +- BroadcastHashJoin Inner BuildRight (103)
                     :     :     :     :     :- Project (99)
                     :     :     :     :     :  +- BroadcastHashJoin Inner BuildRight (98)
                     :     :     :     :     :     :- Project (94)
                     :     :     :     :     :     :  +- BroadcastHashJoin Inner BuildLeft (93)
                     :     :     :     :     :     :     :- BroadcastExchange (90)
                     :     :     :     :     :     :     :  +- Project (89)
                     :     :     :     :     :     :     :     +- Filter (88)
                     :     :     :     :     :     :     :        +- Scan parquet (87)
                     :     :     :     :     :     :     +- Filter (92)
                     :     :     :     :     :     :        +- Scan parquet (91)
                     :     :     :     :     :     +- BroadcastExchange (97)
                     :     :     :     :     :        +- Filter (96)
                     :     :     :     :     :           +- Scan parquet (95)
                     :     :     :     :     +- BroadcastExchange (102)
                     :     :     :     :        +- Filter (101)
                     :     :     :     :           +- Scan parquet (100)
                     :     :     :     +- BroadcastExchange (107)
                     :     :     :        +- Filter (106)
                     :     :     :           +- Scan parquet (105)
                     :     :     +- BroadcastExchange (112)
                     :     :        +- Filter (111)
                     :     :           +- Scan parquet (110)
                     :     +- BroadcastExchange (117)
                     :        +- Filter (116)
                     :           +- Scan parquet (115)
                     +- BroadcastExchange (123)
                        +- Project (122)
                           +- Filter (121)
                              +- Scan parquet (120)


(1) ScanTransformer parquet 
Output [2]: [p_partkey#X, p_type#X]
Batched: true
Location: InMemoryFileIndex [*]
PushedFilters: [IsNotNull(p_type), EqualTo(p_type,ECONOMY ANODIZED STEEL), IsNotNull(p_partkey)]
ReadSchema: struct<p_partkey:bigint,p_type:string>

(2) FilterExecTransformer
Input [2]: [p_partkey#X, p_type#X]
Arguments: ((isnotnull(p_type#X) AND (p_type#X = ECONOMY ANODIZED STEEL)) AND isnotnull(p_partkey#X))

(3) ProjectExecTransformer
Output [1]: [p_partkey#X]
Input [2]: [p_partkey#X, p_type#X]

(4) WholeStageCodegenTransformer (X)
Input [1]: [p_partkey#X]
Arguments: false

(5) ColumnarBroadcastExchange
Input [1]: [p_partkey#X]
Arguments: HashedRelationBroadcastMode(List(input[0, bigint, true]),false), [plan_id=X]

(6) BroadcastQueryStage
Output [1]: [p_partkey#X]
Arguments: X

(7) InputAdapter
Input [1]: [p_partkey#X]

(8) InputIteratorTransformer
Input [1]: [p_partkey#X]

(9) ScanTransformer parquet 
Output [5]: [l_orderkey#X, l_partkey#X, l_suppkey#X, l_extendedprice#X, l_discount#X]
Batched: true
Location: InMemoryFileIndex [*]
PushedFilters: [IsNotNull(l_partkey), IsNotNull(l_suppkey), IsNotNull(l_orderkey)]
ReadSchema: struct<l_orderkey:bigint,l_partkey:bigint,l_suppkey:bigint,l_extendedprice:decimal(12,2),l_discount:decimal(12,2)>

(10) FilterExecTransformer
Input [5]: [l_orderkey#X, l_partkey#X, l_suppkey#X, l_extendedprice#X, l_discount#X]
Arguments: ((isnotnull(l_partkey#X) AND isnotnull(l_suppkey#X)) AND isnotnull(l_orderkey#X))

(11) BroadcastHashJoinExecTransformer
Left keys [1]: [p_partkey#X]
Right keys [1]: [l_partkey#X]
Join condition: None

(12) ProjectExecTransformer
Output [4]: [l_orderkey#X, l_suppkey#X, l_extendedprice#X, l_discount#X]
Input [6]: [p_partkey#X, l_orderkey#X, l_partkey#X, l_suppkey#X, l_extendedprice#X, l_discount#X]

(13) ScanTransformer parquet 
Output [2]: [s_suppkey#X, s_nationkey#X]
Batched: true
Location: InMemoryFileIndex [*]
PushedFilters: [IsNotNull(s_suppkey), IsNotNull(s_nationkey)]
ReadSchema: struct<s_suppkey:bigint,s_nationkey:bigint>

(14) FilterExecTransformer
Input [2]: [s_suppkey#X, s_nationkey#X]
Arguments: (isnotnull(s_suppkey#X) AND isnotnull(s_nationkey#X))

(15) WholeStageCodegenTransformer (X)
Input [2]: [s_suppkey#X, s_nationkey#X]
Arguments: false

(16) ColumnarBroadcastExchange
Input [2]: [s_suppkey#X, s_nationkey#X]
Arguments: HashedRelationBroadcastMode(List(input[0, bigint, false]),false), [plan_id=X]

(17) BroadcastQueryStage
Output [2]: [s_suppkey#X, s_nationkey#X]
Arguments: X

(18) InputAdapter
Input [2]: [s_suppkey#X, s_nationkey#X]

(19) InputIteratorTransformer
Input [2]: [s_suppkey#X, s_nationkey#X]

(20) BroadcastHashJoinExecTransformer
Left keys [1]: [l_suppkey#X]
Right keys [1]: [s_suppkey#X]
Join condition: None

(21) ProjectExecTransformer
Output [4]: [l_orderkey#X, l_extendedprice#X, l_discount#X, s_nationkey#X]
Input [6]: [l_orderkey#X, l_suppkey#X, l_extendedprice#X, l_discount#X, s_suppkey#X, s_nationkey#X]

(22) ScanTransformer parquet 
Output [3]: [o_orderkey#X, o_custkey#X, o_orderdate#X]
Batched: true
Location: InMemoryFileIndex [*]
PushedFilters: [IsNotNull(o_orderdate), GreaterThanOrEqual(o_orderdate,1995-01-01), LessThanOrEqual(o_orderdate,1996-12-31), IsNotNull(o_orderkey), IsNotNull(o_custkey)]
ReadSchema: struct<o_orderkey:bigint,o_custkey:bigint,o_orderdate:date>

(23) FilterExecTransformer
Input [3]: [o_orderkey#X, o_custkey#X, o_orderdate#X]
Arguments: ((((isnotnull(o_orderdate#X) AND (o_orderdate#X >= 1995-01-01)) AND (o_orderdate#X <= 1996-12-31)) AND isnotnull(o_orderkey#X)) AND isnotnull(o_custkey#X))

(24) WholeStageCodegenTransformer (X)
Input [3]: [o_orderkey#X, o_custkey#X, o_orderdate#X]
Arguments: false

(25) ColumnarBroadcastExchange
Input [3]: [o_orderkey#X, o_custkey#X, o_orderdate#X]
Arguments: HashedRelationBroadcastMode(List(input[0, bigint, false]),false), [plan_id=X]

(26) BroadcastQueryStage
Output [3]: [o_orderkey#X, o_custkey#X, o_orderdate#X]
Arguments: X

(27) InputAdapter
Input [3]: [o_orderkey#X, o_custkey#X, o_orderdate#X]

(28) InputIteratorTransformer
Input [3]: [o_orderkey#X, o_custkey#X, o_orderdate#X]

(29) BroadcastHashJoinExecTransformer
Left keys [1]: [l_orderkey#X]
Right keys [1]: [o_orderkey#X]
Join condition: None

(30) ProjectExecTransformer
Output [5]: [l_extendedprice#X, l_discount#X, s_nationkey#X, o_custkey#X, o_orderdate#X]
Input [7]: [l_orderkey#X, l_extendedprice#X, l_discount#X, s_nationkey#X, o_orderkey#X, o_custkey#X, o_orderdate#X]

(31) ScanTransformer parquet 
Output [2]: [c_custkey#X, c_nationkey#X]
Batched: true
Location: InMemoryFileIndex [*]
PushedFilters: [IsNotNull(c_custkey), IsNotNull(c_nationkey)]
ReadSchema: struct<c_custkey:bigint,c_nationkey:bigint>

(32) FilterExecTransformer
Input [2]: [c_custkey#X, c_nationkey#X]
Arguments: (isnotnull(c_custkey#X) AND isnotnull(c_nationkey#X))

(33) WholeStageCodegenTransformer (X)
Input [2]: [c_custkey#X, c_nationkey#X]
Arguments: false

(34) ColumnarBroadcastExchange
Input [2]: [c_custkey#X, c_nationkey#X]
Arguments: HashedRelationBroadcastMode(List(input[0, bigint, false]),false), [plan_id=X]

(35) BroadcastQueryStage
Output [2]: [c_custkey#X, c_nationkey#X]
Arguments: X

(36) InputAdapter
Input [2]: [c_custkey#X, c_nationkey#X]

(37) InputIteratorTransformer
Input [2]: [c_custkey#X, c_nationkey#X]

(38) BroadcastHashJoinExecTransformer
Left keys [1]: [o_custkey#X]
Right keys [1]: [c_custkey#X]
Join condition: None

(39) ProjectExecTransformer
Output [5]: [l_extendedprice#X, l_discount#X, s_nationkey#X, o_orderdate#X, c_nationkey#X]
Input [7]: [l_extendedprice#X, l_discount#X, s_nationkey#X, o_custkey#X, o_orderdate#X, c_custkey#X, c_nationkey#X]

(40) ScanTransformer parquet 
Output [2]: [n_nationkey#X, n_regionkey#X]
Batched: true
Location: InMemoryFileIndex [*]
PushedFilters: [IsNotNull(n_nationkey), IsNotNull(n_regionkey)]
ReadSchema: struct<n_nationkey:bigint,n_regionkey:bigint>

(41) FilterExecTransformer
Input [2]: [n_nationkey#X, n_regionkey#X]
Arguments: (isnotnull(n_nationkey#X) AND isnotnull(n_regionkey#X))

(42) WholeStageCodegenTransformer (X)
Input [2]: [n_nationkey#X, n_regionkey#X]
Arguments: false

(43) ColumnarBroadcastExchange
Input [2]: [n_nationkey#X, n_regionkey#X]
Arguments: HashedRelationBroadcastMode(List(input[0, bigint, false]),false), [plan_id=X]

(44) BroadcastQueryStage
Output [2]: [n_nationkey#X, n_regionkey#X]
Arguments: X

(45) InputAdapter
Input [2]: [n_nationkey#X, n_regionkey#X]

(46) InputIteratorTransformer
Input [2]: [n_nationkey#X, n_regionkey#X]

(47) BroadcastHashJoinExecTransformer
Left keys [1]: [c_nationkey#X]
Right keys [1]: [n_nationkey#X]
Join condition: None

(48) ProjectExecTransformer
Output [5]: [l_extendedprice#X, l_discount#X, s_nationkey#X, o_orderdate#X, n_regionkey#X]
Input [7]: [l_extendedprice#X, l_discount#X, s_nationkey#X, o_orderdate#X, c_nationkey#X, n_nationkey#X, n_regionkey#X]

(49) ScanTransformer parquet 
Output [2]: [n_nationkey#X, n_name#X]
Batched: true
Location: InMemoryFileIndex [*]
PushedFilters: [IsNotNull(n_nationkey)]
ReadSchema: struct<n_nationkey:bigint,n_name:string>

(50) FilterExecTransformer
Input [2]: [n_nationkey#X, n_name#X]
Arguments: isnotnull(n_nationkey#X)

(51) WholeStageCodegenTransformer (X)
Input [2]: [n_nationkey#X, n_name#X]
Arguments: false

(52) ColumnarBroadcastExchange
Input [2]: [n_nationkey#X, n_name#X]
Arguments: HashedRelationBroadcastMode(List(input[0, bigint, false]),false), [plan_id=X]

(53) BroadcastQueryStage
Output [2]: [n_nationkey#X, n_name#X]
Arguments: X

(54) InputAdapter
Input [2]: [n_nationkey#X, n_name#X]

(55) InputIteratorTransformer
Input [2]: [n_nationkey#X, n_name#X]

(56) BroadcastHashJoinExecTransformer
Left keys [1]: [s_nationkey#X]
Right keys [1]: [n_nationkey#X]
Join condition: None

(57) ProjectExecTransformer
Output [5]: [l_extendedprice#X, l_discount#X, o_orderdate#X, n_regionkey#X, n_name#X]
Input [7]: [l_extendedprice#X, l_discount#X, s_nationkey#X, o_orderdate#X, n_regionkey#X, n_nationkey#X, n_name#X]

(58) ScanTransformer parquet 
Output [2]: [r_regionkey#X, r_name#X]
Batched: true
Location: InMemoryFileIndex [*]
PushedFilters: [IsNotNull(r_name), EqualTo(r_name,AMERICA), IsNotNull(r_regionkey)]
ReadSchema: struct<r_regionkey:bigint,r_name:string>

(59) FilterExecTransformer
Input [2]: [r_regionkey#X, r_name#X]
Arguments: ((isnotnull(r_name#X) AND (r_name#X = AMERICA)) AND isnotnull(r_regionkey#X))

(60) ProjectExecTransformer
Output [1]: [r_regionkey#X]
Input [2]: [r_regionkey#X, r_name#X]

(61) WholeStageCodegenTransformer (X)
Input [1]: [r_regionkey#X]
Arguments: false

(62) ColumnarBroadcastExchange
Input [1]: [r_regionkey#X]
Arguments: HashedRelationBroadcastMode(List(input[0, bigint, true]),false), [plan_id=X]

(63) BroadcastQueryStage
Output [1]: [r_regionkey#X]
Arguments: X

(64) InputAdapter
Input [1]: [r_regionkey#X]

(65) InputIteratorTransformer
Input [1]: [r_regionkey#X]

(66) BroadcastHashJoinExecTransformer
Left keys [1]: [n_regionkey#X]
Right keys [1]: [r_regionkey#X]
Join condition: None

(67) ProjectExecTransformer
Output [3]: [year(o_orderdate#X) AS o_year#X, CheckOverflow((promote_precision(cast(l_extendedprice#X as decimal(13,2))) * promote_precision(CheckOverflow((1.00 - promote_precision(cast(l_discount#X as decimal(13,2)))), DecimalType(13,2), true))), DecimalType(26,4), true) AS volume#X, CASE WHEN (n_name#X = BRAZIL) THEN CheckOverflow((promote_precision(cast(l_extendedprice#X as decimal(13,2))) * promote_precision(CheckOverflow((1.00 - promote_precision(cast(l_discount#X as decimal(13,2)))), DecimalType(13,2), true))), DecimalType(26,4), true) ELSE 0.0000 END AS _pre_X#X]
Input [6]: [l_extendedprice#X, l_discount#X, o_orderdate#X, n_regionkey#X, n_name#X, r_regionkey#X]

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

(69) ProjectExecTransformer
Output [6]: [hash(o_year#X, 42) AS hash_partition_key#X, o_year#X, sum#X, isEmpty#X, sum#X, isEmpty#X]
Input [5]: [o_year#X, sum#X, isEmpty#X, sum#X, isEmpty#X]

(70) WholeStageCodegenTransformer (X)
Input [6]: [hash_partition_key#X, o_year#X, sum#X, isEmpty#X, sum#X, isEmpty#X]
Arguments: false

(71) VeloxResizeBatches
Input [6]: [hash_partition_key#X, o_year#X, sum#X, isEmpty#X, sum#X, isEmpty#X]
Arguments: X, X

(72) ColumnarExchange
Input [6]: [hash_partition_key#X, o_year#X, sum#X, isEmpty#X, sum#X, isEmpty#X]
Arguments: hashpartitioning(o_year#X, 1), ENSURE_REQUIREMENTS, [o_year#X, sum#X, isEmpty#X, sum#X, isEmpty#X], [plan_id=X], [shuffle_writer_type=hash]

(73) ShuffleQueryStage
Output [5]: [o_year#X, sum#X, isEmpty#X, sum#X, isEmpty#X]
Arguments: X

(74) InputAdapter
Input [5]: [o_year#X, sum#X, isEmpty#X, sum#X, isEmpty#X]

(75) InputIteratorTransformer
Input [5]: [o_year#X, sum#X, isEmpty#X, sum#X, isEmpty#X]

(76) RegularHashAggregateExecTransformer
Input [5]: [o_year#X, sum#X, isEmpty#X, sum#X, isEmpty#X]
Keys [1]: [o_year#X]
Functions [2]: [sum(CASE WHEN (nation#X = BRAZIL) THEN volume#X ELSE 0.0000 END), sum(volume#X)]
Aggregate Attributes [2]: [sum(CASE WHEN (nation#X = BRAZIL) THEN volume#X ELSE 0.0000 END)#X, sum(volume#X)#X]
Results [3]: [o_year#X, sum(CASE WHEN (nation#X = BRAZIL) THEN volume#X ELSE 0.0000 END)#X, sum(volume#X)#X]

(77) ProjectExecTransformer
Output [2]: [o_year#X, CheckOverflow((promote_precision(sum(CASE WHEN (nation#X = BRAZIL) THEN volume#X ELSE 0.0000 END)#X) / promote_precision(sum(volume#X)#X)), DecimalType(38,6), true) AS mkt_share#X]
Input [3]: [o_year#X, sum(CASE WHEN (nation#X = BRAZIL) THEN volume#X ELSE 0.0000 END)#X, sum(volume#X)#X]

(78) WholeStageCodegenTransformer (X)
Input [2]: [o_year#X, mkt_share#X]
Arguments: false

(79) VeloxResizeBatches
Input [2]: [o_year#X, mkt_share#X]
Arguments: X, X

(80) ColumnarExchange
Input [2]: [o_year#X, mkt_share#X]
Arguments: rangepartitioning(o_year#X ASC NULLS FIRST, 1), ENSURE_REQUIREMENTS, [plan_id=X], [shuffle_writer_type=hash]

(81) ShuffleQueryStage
Output [2]: [o_year#X, mkt_share#X]
Arguments: X

(82) InputAdapter
Input [2]: [o_year#X, mkt_share#X]

(83) InputIteratorTransformer
Input [2]: [o_year#X, mkt_share#X]

(84) SortExecTransformer
Input [2]: [o_year#X, mkt_share#X]
Arguments: [o_year#X ASC NULLS FIRST], true, 0

(85) WholeStageCodegenTransformer (X)
Input [2]: [o_year#X, mkt_share#X]
Arguments: false

(86) VeloxColumnarToRow
Input [2]: [o_year#X, mkt_share#X]

(87) Scan parquet
Output [2]: [p_partkey#X, p_type#X]
Batched: true
Location: InMemoryFileIndex [*]
PushedFilters: [IsNotNull(p_type), EqualTo(p_type,ECONOMY ANODIZED STEEL), IsNotNull(p_partkey)]
ReadSchema: struct<p_partkey:bigint,p_type:string>

(88) Filter
Input [2]: [p_partkey#X, p_type#X]
Condition : ((isnotnull(p_type#X) AND (p_type#X = ECONOMY ANODIZED STEEL)) AND isnotnull(p_partkey#X))

(89) Project
Output [1]: [p_partkey#X]
Input [2]: [p_partkey#X, p_type#X]

(90) BroadcastExchange
Input [1]: [p_partkey#X]
Arguments: HashedRelationBroadcastMode(List(input[0, bigint, true]),false), [plan_id=X]

(91) Scan parquet
Output [5]: [l_orderkey#X, l_partkey#X, l_suppkey#X, l_extendedprice#X, l_discount#X]
Batched: true
Location: InMemoryFileIndex [*]
PushedFilters: [IsNotNull(l_partkey), IsNotNull(l_suppkey), IsNotNull(l_orderkey)]
ReadSchema: struct<l_orderkey:bigint,l_partkey:bigint,l_suppkey:bigint,l_extendedprice:decimal(12,2),l_discount:decimal(12,2)>

(92) Filter
Input [5]: [l_orderkey#X, l_partkey#X, l_suppkey#X, l_extendedprice#X, l_discount#X]
Condition : ((isnotnull(l_partkey#X) AND isnotnull(l_suppkey#X)) AND isnotnull(l_orderkey#X))

(93) BroadcastHashJoin
Left keys [1]: [p_partkey#X]
Right keys [1]: [l_partkey#X]
Join condition: None

(94) Project
Output [4]: [l_orderkey#X, l_suppkey#X, l_extendedprice#X, l_discount#X]
Input [6]: [p_partkey#X, l_orderkey#X, l_partkey#X, l_suppkey#X, l_extendedprice#X, l_discount#X]

(95) Scan parquet
Output [2]: [s_suppkey#X, s_nationkey#X]
Batched: true
Location: InMemoryFileIndex [*]
PushedFilters: [IsNotNull(s_suppkey), IsNotNull(s_nationkey)]
ReadSchema: struct<s_suppkey:bigint,s_nationkey:bigint>

(96) Filter
Input [2]: [s_suppkey#X, s_nationkey#X]
Condition : (isnotnull(s_suppkey#X) AND isnotnull(s_nationkey#X))

(97) BroadcastExchange
Input [2]: [s_suppkey#X, s_nationkey#X]
Arguments: HashedRelationBroadcastMode(List(input[0, bigint, false]),false), [plan_id=X]

(98) BroadcastHashJoin
Left keys [1]: [l_suppkey#X]
Right keys [1]: [s_suppkey#X]
Join condition: None

(99) Project
Output [4]: [l_orderkey#X, l_extendedprice#X, l_discount#X, s_nationkey#X]
Input [6]: [l_orderkey#X, l_suppkey#X, l_extendedprice#X, l_discount#X, s_suppkey#X, s_nationkey#X]

(100) Scan parquet
Output [3]: [o_orderkey#X, o_custkey#X, o_orderdate#X]
Batched: true
Location: InMemoryFileIndex [*]
PushedFilters: [IsNotNull(o_orderdate), GreaterThanOrEqual(o_orderdate,1995-01-01), LessThanOrEqual(o_orderdate,1996-12-31), IsNotNull(o_orderkey), IsNotNull(o_custkey)]
ReadSchema: struct<o_orderkey:bigint,o_custkey:bigint,o_orderdate:date>

(101) Filter
Input [3]: [o_orderkey#X, o_custkey#X, o_orderdate#X]
Condition : ((((isnotnull(o_orderdate#X) AND (o_orderdate#X >= 1995-01-01)) AND (o_orderdate#X <= 1996-12-31)) AND isnotnull(o_orderkey#X)) AND isnotnull(o_custkey#X))

(102) BroadcastExchange
Input [3]: [o_orderkey#X, o_custkey#X, o_orderdate#X]
Arguments: HashedRelationBroadcastMode(List(input[0, bigint, false]),false), [plan_id=X]

(103) BroadcastHashJoin
Left keys [1]: [l_orderkey#X]
Right keys [1]: [o_orderkey#X]
Join condition: None

(104) Project
Output [5]: [l_extendedprice#X, l_discount#X, s_nationkey#X, o_custkey#X, o_orderdate#X]
Input [7]: [l_orderkey#X, l_extendedprice#X, l_discount#X, s_nationkey#X, o_orderkey#X, o_custkey#X, o_orderdate#X]

(105) Scan parquet
Output [2]: [c_custkey#X, c_nationkey#X]
Batched: true
Location: InMemoryFileIndex [*]
PushedFilters: [IsNotNull(c_custkey), IsNotNull(c_nationkey)]
ReadSchema: struct<c_custkey:bigint,c_nationkey:bigint>

(106) Filter
Input [2]: [c_custkey#X, c_nationkey#X]
Condition : (isnotnull(c_custkey#X) AND isnotnull(c_nationkey#X))

(107) BroadcastExchange
Input [2]: [c_custkey#X, c_nationkey#X]
Arguments: HashedRelationBroadcastMode(List(input[0, bigint, false]),false), [plan_id=X]

(108) BroadcastHashJoin
Left keys [1]: [o_custkey#X]
Right keys [1]: [c_custkey#X]
Join condition: None

(109) Project
Output [5]: [l_extendedprice#X, l_discount#X, s_nationkey#X, o_orderdate#X, c_nationkey#X]
Input [7]: [l_extendedprice#X, l_discount#X, s_nationkey#X, o_custkey#X, o_orderdate#X, c_custkey#X, c_nationkey#X]

(110) Scan parquet
Output [2]: [n_nationkey#X, n_regionkey#X]
Batched: true
Location: InMemoryFileIndex [*]
PushedFilters: [IsNotNull(n_nationkey), IsNotNull(n_regionkey)]
ReadSchema: struct<n_nationkey:bigint,n_regionkey:bigint>

(111) Filter
Input [2]: [n_nationkey#X, n_regionkey#X]
Condition : (isnotnull(n_nationkey#X) AND isnotnull(n_regionkey#X))

(112) BroadcastExchange
Input [2]: [n_nationkey#X, n_regionkey#X]
Arguments: HashedRelationBroadcastMode(List(input[0, bigint, false]),false), [plan_id=X]

(113) BroadcastHashJoin
Left keys [1]: [c_nationkey#X]
Right keys [1]: [n_nationkey#X]
Join condition: None

(114) Project
Output [5]: [l_extendedprice#X, l_discount#X, s_nationkey#X, o_orderdate#X, n_regionkey#X]
Input [7]: [l_extendedprice#X, l_discount#X, s_nationkey#X, o_orderdate#X, c_nationkey#X, n_nationkey#X, n_regionkey#X]

(115) Scan parquet
Output [2]: [n_nationkey#X, n_name#X]
Batched: true
Location: InMemoryFileIndex [*]
PushedFilters: [IsNotNull(n_nationkey)]
ReadSchema: struct<n_nationkey:bigint,n_name:string>

(116) Filter
Input [2]: [n_nationkey#X, n_name#X]
Condition : isnotnull(n_nationkey#X)

(117) BroadcastExchange
Input [2]: [n_nationkey#X, n_name#X]
Arguments: HashedRelationBroadcastMode(List(input[0, bigint, false]),false), [plan_id=X]

(118) BroadcastHashJoin
Left keys [1]: [s_nationkey#X]
Right keys [1]: [n_nationkey#X]
Join condition: None

(119) Project
Output [5]: [l_extendedprice#X, l_discount#X, o_orderdate#X, n_regionkey#X, n_name#X]
Input [7]: [l_extendedprice#X, l_discount#X, s_nationkey#X, o_orderdate#X, n_regionkey#X, n_nationkey#X, n_name#X]

(120) Scan parquet
Output [2]: [r_regionkey#X, r_name#X]
Batched: true
Location: InMemoryFileIndex [*]
PushedFilters: [IsNotNull(r_name), EqualTo(r_name,AMERICA), IsNotNull(r_regionkey)]
ReadSchema: struct<r_regionkey:bigint,r_name:string>

(121) Filter
Input [2]: [r_regionkey#X, r_name#X]
Condition : ((isnotnull(r_name#X) AND (r_name#X = AMERICA)) AND isnotnull(r_regionkey#X))

(122) Project
Output [1]: [r_regionkey#X]
Input [2]: [r_regionkey#X, r_name#X]

(123) BroadcastExchange
Input [1]: [r_regionkey#X]
Arguments: HashedRelationBroadcastMode(List(input[0, bigint, true]),false), [plan_id=X]

(124) BroadcastHashJoin
Left keys [1]: [n_regionkey#X]
Right keys [1]: [r_regionkey#X]
Join condition: None

(125) Project
Output [3]: [year(o_orderdate#X) AS o_year#X, CheckOverflow((promote_precision(cast(l_extendedprice#X as decimal(13,2))) * promote_precision(CheckOverflow((1.00 - promote_precision(cast(l_discount#X as decimal(13,2)))), DecimalType(13,2), true))), DecimalType(26,4), true) AS volume#X, n_name#X AS nation#X]
Input [6]: [l_extendedprice#X, l_discount#X, o_orderdate#X, n_regionkey#X, n_name#X, r_regionkey#X]

(126) HashAggregate
Input [3]: [o_year#X, volume#X, nation#X]
Keys [1]: [o_year#X]
Functions [2]: [partial_sum(CASE WHEN (nation#X = BRAZIL) THEN volume#X ELSE 0.0000 END), partial_sum(volume#X)]
Aggregate Attributes [4]: [sum#X, isEmpty#X, sum#X, isEmpty#X]
Results [5]: [o_year#X, sum#X, isEmpty#X, sum#X, isEmpty#X]

(127) Exchange
Input [5]: [o_year#X, sum#X, isEmpty#X, sum#X, isEmpty#X]
Arguments: hashpartitioning(o_year#X, 1), ENSURE_REQUIREMENTS, [plan_id=X]

(128) HashAggregate
Input [5]: [o_year#X, sum#X, isEmpty#X, sum#X, isEmpty#X]
Keys [1]: [o_year#X]
Functions [2]: [sum(CASE WHEN (nation#X = BRAZIL) THEN volume#X ELSE 0.0000 END), sum(volume#X)]
Aggregate Attributes [2]: [sum(CASE WHEN (nation#X = BRAZIL) THEN volume#X ELSE 0.0000 END)#X, sum(volume#X)#X]
Results [2]: [o_year#X, CheckOverflow((promote_precision(sum(CASE WHEN (nation#X = BRAZIL) THEN volume#X ELSE 0.0000 END)#X) / promote_precision(sum(volume#X)#X)), DecimalType(38,6), true) AS mkt_share#X]

(129) Exchange
Input [2]: [o_year#X, mkt_share#X]
Arguments: rangepartitioning(o_year#X ASC NULLS FIRST, 1), ENSURE_REQUIREMENTS, [plan_id=X]

(130) Sort
Input [2]: [o_year#X, mkt_share#X]
Arguments: [o_year#X ASC NULLS FIRST], true, 0

(131) AdaptiveSparkPlan
Output [2]: [o_year#X, mkt_share#X]
Arguments: isFinalPlan=true