=== Stage 1 ===
SortShuffleWriterExec: partitioning=Hash([c_custkey@0], 16)
  FilterExec: c_mktsegment@1 = BUILDING, projection=[c_custkey@0]
    StatsExec: rows=15000000

=== Stage 2 ===
SortShuffleWriterExec: partitioning=Hash([o_custkey@1], 16)
  FilterExec: o_orderdate@2 < 1995-03-15
    StatsExec: rows=150000000

=== Stage 3 ===
SortShuffleWriterExec: partitioning=Hash([o_orderkey@0], 16)
  ProjectionExec: expr=[o_orderkey@1 as o_orderkey, o_orderdate@3 as o_orderdate, o_shippriority@4 as o_shippriority]
    SortMergeJoinExec: join_type=Inner, on=[(c_custkey@0, o_custkey@1)]
      SortExec: expr=[c_custkey@0 ASC], preserve_partitioning=[true]
        UnresolvedShuffleExec: stage=1, partitioning: Hash([c_custkey@0], 16)
      SortExec: expr=[o_custkey@1 ASC], preserve_partitioning=[true]
        UnresolvedShuffleExec: stage=2, partitioning: Hash([o_custkey@1], 16)

=== Stage 4 ===
SortShuffleWriterExec: partitioning=Hash([l_orderkey@0], 16)
  FilterExec: l_shipdate@3 > 1995-03-15, projection=[l_orderkey@0, l_extendedprice@1, l_discount@2]
    StatsExec: rows=600037902

=== Stage 5 ===
ShuffleWriterExec: partitioning: None
  SortExec: TopK(fetch=10), expr=[revenue@1 DESC, o_orderdate@2 ASC NULLS LAST], preserve_partitioning=[true]
    ProjectionExec: expr=[l_orderkey@0 as l_orderkey, sum(lineitem.l_extendedprice * Int64(1) - lineitem.l_discount)@3 as revenue, o_orderdate@1 as o_orderdate, o_shippriority@2 as o_shippriority]
      AggregateExec: mode=SinglePartitioned, gby=[l_orderkey@2 as l_orderkey, o_orderdate@0 as o_orderdate, o_shippriority@1 as o_shippriority], aggr=[sum(lineitem.l_extendedprice * Some(1),20,0 - lineitem.l_discount) as sum(lineitem.l_extendedprice * Int64(1) - lineitem.l_discount)], ordering_mode=PartiallySorted([0])
        ProjectionExec: expr=[o_orderdate@1 as o_orderdate, o_shippriority@2 as o_shippriority, l_orderkey@3 as l_orderkey, l_extendedprice@4 as l_extendedprice, l_discount@5 as l_discount]
          SortMergeJoinExec: join_type=Inner, on=[(o_orderkey@0, l_orderkey@0)]
            SortExec: expr=[o_orderkey@0 ASC], preserve_partitioning=[true]
              UnresolvedShuffleExec: stage=3, partitioning: Hash([o_orderkey@0], 16)
            SortExec: expr=[l_orderkey@0 ASC], preserve_partitioning=[true]
              UnresolvedShuffleExec: stage=4, partitioning: Hash([l_orderkey@0], 16)

=== Stage 6 ===
ShuffleWriterExec: partitioning: None
  SortPreservingMergeExec: [revenue@1 DESC, o_orderdate@2 ASC NULLS LAST], fetch=10
    UnresolvedShuffleExec: stage=5, partitioning: Hash([l_orderkey@0], 16)
