remote exchange (GATHER, SINGLE, [])
    local exchange (GATHER, UNKNOWN, [])
        remote exchange (REPARTITION, ROUND_ROBIN, [])
            final aggregation over (brand, size, type)
                local exchange (GATHER, SINGLE, [])
                    remote exchange (REPARTITION, HASH, ["brand", "size", "type"])
                        partial aggregation over (brand, size, type)
                            final aggregation over (brand, size, suppkey, type)
                                local exchange (GATHER, SINGLE, [])
                                    partial aggregation over (brand, size, suppkey, type)
                                        semijoin (PARTITIONED):
                                            remote exchange (REPARTITION, HASH, ["suppkey"])
                                                join (INNER, PARTITIONED):
                                                    remote exchange (REPARTITION, HASH, ["partkey"])
                                                        scan partsupp
                                                    local exchange (GATHER, SINGLE, [])
                                                        remote exchange (REPARTITION, HASH, ["partkey_0"])
                                                            scan part
                                            local exchange (GATHER, SINGLE, [])
                                                remote exchange (REPARTITION, HASH, ["suppkey_3"])
                                                    scan supplier
