write [%0->$$17, %0->$$18]
-- SINK_WRITE  |PARTITIONED|
  project ([$$17, $$18])
  -- STREAM_PROJECT  |PARTITIONED|
    exchange 
    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
      group by ([$$17 := %0->$$21]) decor ([]) {
                aggregate [$$18] <- [function-call: hive:sum(FINAL), Args:[%0->$$20]]
                -- AGGREGATE  |LOCAL|
                  nested tuple source
                  -- NESTED_TUPLE_SOURCE  |LOCAL|
             }
      -- PRE_CLUSTERED_GROUP_BY[$$21]  |PARTITIONED|
        exchange 
        -- HASH_PARTITION_MERGE_EXCHANGE MERGE:[$$21(ASC)] HASH:[$$21]  |PARTITIONED|
          group by ([$$21 := %0->$$1]) decor ([]) {
                    aggregate [$$20] <- [function-call: hive:sum(PARTIAL1), Args:[%0->$$5]]
                    -- AGGREGATE  |LOCAL|
                      nested tuple source
                      -- NESTED_TUPLE_SOURCE  |LOCAL|
                 }
          -- SORT_GROUP_BY[$$1]  |PARTITIONED|
            exchange 
            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
              data-scan [$$1, $$5]<-[$$1, $$2, $$3, $$4, $$5, $$6, $$7, $$8, $$9, $$10, $$11, $$12, $$13, $$14, $$15, $$16] <- default.lineitem
              -- DATASOURCE_SCAN  |PARTITIONED|
                exchange 
                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                  empty-tuple-source
                  -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
write [%0->$$36, %0->$$37, %0->$$38, %0->$$39, %0->$$40, %0->$$41]
-- SINK_WRITE  |PARTITIONED|
  project ([$$36, $$37, $$38, $$39, $$40, $$41])
  -- STREAM_PROJECT  |PARTITIONED|
    limit 100
    -- STREAM_LIMIT  |UNPARTITIONED|
      limit 100
      -- STREAM_LIMIT  |UNPARTITIONED|
        exchange 
        -- SORT_MERGE_EXCHANGE [$$40(DESC), $$39(ASC) ]  |PARTITIONED|
          limit 100
          -- STREAM_LIMIT  |PARTITIONED|
            exchange 
            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
              order (DESC, %0->$$40) (ASC, %0->$$39) 
              -- STABLE_SORT [$$40(DESC), $$39(ASC)]  |PARTITIONED|
                exchange 
                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                  group by ([$$36 := %0->$$44; $$37 := %0->$$45; $$38 := %0->$$46; $$39 := %0->$$47; $$40 := %0->$$48]) decor ([]) {
                            aggregate [$$41] <- [function-call: hive:sum(FINAL), Args:[%0->$$43]]
                            -- AGGREGATE  |LOCAL|
                              nested tuple source
                              -- NESTED_TUPLE_SOURCE  |LOCAL|
                         }
                  -- PRE_CLUSTERED_GROUP_BY[$$44, $$45, $$46, $$47, $$48]  |PARTITIONED|
                    exchange 
                    -- HASH_PARTITION_MERGE_EXCHANGE MERGE:[$$44(ASC), $$45(ASC), $$46(ASC), $$47(ASC), $$48(ASC)] HASH:[$$44, $$45, $$46, $$47, $$48]  |PARTITIONED|
                      group by ([$$44 := %0->$$20; $$45 := %0->$$19; $$46 := %0->$$27; $$47 := %0->$$31; $$48 := %0->$$30]) decor ([]) {
                                aggregate [$$43] <- [function-call: hive:sum(PARTIAL1), Args:[%0->$$7]]
                                -- AGGREGATE  |LOCAL|
                                  nested tuple source
                                  -- NESTED_TUPLE_SOURCE  |LOCAL|
                             }
                      -- SORT_GROUP_BY[$$20, $$19, $$27, $$31, $$30]  |PARTITIONED|
                        exchange 
                        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                          project ([$$19, $$20, $$27, $$30, $$31, $$7])
                          -- STREAM_PROJECT  |PARTITIONED|
                            exchange 
                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                              join (function-call: algebricks:eq, Args:[%0->$$27, %0->$$1])
                              -- HYBRID_HASH_JOIN [$$1][$$27]  |PARTITIONED|
                                exchange 
                                -- HASH_PARTITION_EXCHANGE [$$1]  |PARTITIONED|
                                  project ([$$1, $$7])
                                  -- STREAM_PROJECT  |PARTITIONED|
                                    exchange 
                                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                      join (function-call: algebricks:eq, Args:[%0->$$3, %0->$$1])
                                      -- HYBRID_HASH_JOIN [$$3][$$1]  |PARTITIONED|
                                        exchange 
                                        -- HASH_PARTITION_EXCHANGE [$$3]  |PARTITIONED|
                                          data-scan [$$3, $$7]<-[$$3, $$4, $$5, $$6, $$7, $$8, $$9, $$10, $$11, $$12, $$13, $$14, $$15, $$16, $$17, $$18] <- default.lineitem
                                          -- DATASOURCE_SCAN  |PARTITIONED|
                                            exchange 
                                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                              empty-tuple-source
                                              -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
                                        exchange 
                                        -- HASH_PARTITION_EXCHANGE [$$1]  |PARTITIONED|
                                          project ([$$1])
                                          -- STREAM_PROJECT  |PARTITIONED|
                                            select (function-call: algebricks:gt, Args:[%0->$$2, 300.0])
                                            -- STREAM_SELECT  |PARTITIONED|
                                              exchange 
                                              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                data-scan []<-[$$1, $$2] <- default.q18_tmp
                                                -- DATASOURCE_SCAN  |PARTITIONED|
                                                  exchange 
                                                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                    empty-tuple-source
                                                    -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
                                exchange 
                                -- HASH_PARTITION_EXCHANGE [$$27]  |PARTITIONED|
                                  project ([$$27, $$19, $$20, $$30, $$31])
                                  -- STREAM_PROJECT  |PARTITIONED|
                                    exchange 
                                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                      join (function-call: algebricks:eq, Args:[%0->$$28, %0->$$19])
                                      -- HYBRID_HASH_JOIN [$$28][$$19]  |PARTITIONED|
                                        exchange 
                                        -- HASH_PARTITION_EXCHANGE [$$28]  |PARTITIONED|
                                          data-scan [$$28, $$27, $$30, $$31]<-[$$27, $$28, $$29, $$30, $$31, $$32, $$33, $$34, $$35] <- default.orders
                                          -- DATASOURCE_SCAN  |PARTITIONED|
                                            exchange 
                                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                              empty-tuple-source
                                              -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
                                        exchange 
                                        -- HASH_PARTITION_EXCHANGE [$$19]  |PARTITIONED|
                                          data-scan [$$19, $$20]<-[$$19, $$20, $$21, $$22, $$23, $$24, $$25, $$26] <- default.customer
                                          -- DATASOURCE_SCAN  |PARTITIONED|
                                            exchange 
                                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                              empty-tuple-source
                                              -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
