TakeOrderedAndProject [revenue,o_orderdate,l_orderkey,o_shippriority]
  WholeStageCodegen (4)
    HashAggregate [l_orderkey,o_orderdate,o_shippriority,sum,isEmpty] [sum((l_extendedprice * (1 - l_discount))),revenue,sum,isEmpty]
      InputAdapter
        Exchange [l_orderkey,o_orderdate,o_shippriority] #1
          WholeStageCodegen (3)
            HashAggregate [l_orderkey,o_orderdate,o_shippriority,l_extendedprice,l_discount] [sum,isEmpty,sum,isEmpty]
              Project [o_orderdate,o_shippriority,l_orderkey,l_extendedprice,l_discount]
                BroadcastHashJoin [o_orderkey,l_orderkey]
                  Project [o_orderkey,o_orderdate,o_shippriority]
                    BroadcastHashJoin [c_custkey,o_custkey]
                      Project [c_custkey]
                        Filter [c_mktsegment,c_custkey]
                          ColumnarToRow
                            InputAdapter
                              Scan parquet spark_catalog.default.customer [c_custkey,c_mktsegment]
                      InputAdapter
                        BroadcastExchange #2
                          WholeStageCodegen (1)
                            Filter [o_orderdate,o_custkey,o_orderkey]
                              ColumnarToRow
                                InputAdapter
                                  Scan parquet spark_catalog.default.orders [o_orderkey,o_custkey,o_orderdate,o_shippriority]
                  InputAdapter
                    BroadcastExchange #3
                      WholeStageCodegen (2)
                        Project [l_orderkey,l_extendedprice,l_discount]
                          Filter [l_shipdate,l_orderkey]
                            ColumnarToRow
                              InputAdapter
                                Scan parquet spark_catalog.default.lineitem [l_orderkey,l_extendedprice,l_discount,l_shipdate]
