local exchange (GATHER, SINGLE, [])
    remote exchange (GATHER, SINGLE, [])
        final aggregation over (custkey_0, name, orderdate, orderkey_3, totalprice)
            local exchange (GATHER, SINGLE, [])
                partial aggregation over (custkey_0, name, orderdate, orderkey_3, totalprice)
                    semijoin (PARTITIONED):
                        join (INNER, PARTITIONED):
                            remote exchange (REPARTITION, HASH, ["orderkey_3"])
                                scan lineitem
                            local exchange (GATHER, SINGLE, [])
                                remote exchange (REPARTITION, HASH, ["orderkey"])
                                    join (INNER, PARTITIONED):
                                        remote exchange (REPARTITION, HASH, ["custkey_0"])
                                            scan orders
                                        local exchange (GATHER, SINGLE, [])
                                            remote exchange (REPARTITION, HASH, ["custkey"])
                                                scan customer
                        local exchange (GATHER, SINGLE, [])
                            remote exchange (REPARTITION, HASH, ["orderkey_6"])
                                final aggregation over (orderkey_6)
                                    local exchange (GATHER, SINGLE, [])
                                        remote exchange (REPARTITION, HASH, ["orderkey_6"])
                                            partial aggregation over (orderkey_6)
                                                scan lineitem
