namhnguyen / asterixdb

Automatically exported from code.google.com/p/asterixdb
0 stars 0 forks source link

Introduce Combiner issue for NestedGroupBy #783

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
The plan before introduce combiner:

group by ([$$34 := %0->$$39]) decor ([%0->$$0; %0->$$1; %0->$$35; $$46 := 
%0->$$47]) {
          aggregate [$$31] <- [function-call: asterix:listify, Args:[function-call: asterix:open-record-constructor, Args:[AString: {order_date}, %0->$$4, AString: {sum_price}, %0->$$43]]] -- |LOCAL|
            limit AInt32: {3} -- |LOCAL|
              order (ASC, %0->$$43)  -- |LOCAL|
                group by ([$$4 := %0->$$32]) decor ([]) {
                          aggregate [$$43] <- [function-call: asterix:agg-sum, Args:[%0->$$28]] -- |LOCAL|
                            nested tuple source -- |LOCAL|
                       } -- |LOCAL|
                  select (function-call: algebricks:not, Args:[function-call: algebricks:is-null, Args:[%0->$$38]]) -- |LOCAL|
                    nested tuple source -- |LOCAL|
       } -- |PARTITIONED|
  left outer join (function-call: algebricks:eq, Args:[%0->$$41, %0->$$36]) -- |PARTITIONED|
    join (function-call: algebricks:eq, Args:[%0->$$44, %0->$$39]) -- |PARTITIONED|
      join (function-call: algebricks:eq, Args:[%0->$$39, %0->$$35]) -- |PARTITIONED|
        assign [$$47] <- [function-call: asterix:field-access-by-index, Args:[%0->$$0, AInt32: {1}]] -- |PARTITIONED|
          data-scan []<-[$$39, $$0] <- tpch:Nation -- |PARTITIONED|
            empty-tuple-source -- |PARTITIONED|
        data-scan []<-[$$35, $$1] <- tpch:SelectedNation -- |PARTITIONED|
          empty-tuple-source -- |PARTITIONED|
      assign [$$44] <- [function-call: asterix:field-access-by-index, Args:[%0->$$2, AInt32: {3}]] -- |PARTITIONED|
        data-scan []<-[$$36, $$2] <- tpch:Customer -- |PARTITIONED|
          empty-tuple-source -- |PARTITIONED|
    assign [$$38, $$28, $$32, $$41] <- [TRUE, function-call: asterix:field-access-by-index, Args:[%0->$$5, AInt32: {3}], function-call: asterix:field-access-by-index, Args:[%0->$$5, AInt32: {4}], function-call: asterix:field-access-by-index, Args:[%0->$$5, AInt32: {1}]] -- |PARTITIONED|
      data-scan []<-[$$37, $$5] <- tpch:Orders -- |PARTITIONED|
        empty-tuple-source -- |PARTITIONED|

The plan after introduce combiner:
project ([$$13]) -- |PARTITIONED|
  assign [$$13] <- [function-call: asterix:open-record-constructor, Args:[AString: {nation_key}, %0->$$34, AString: {name}, %0->$$46, AString: {aggregates}, %0->$$31]] -- |PARTITIONED|
    group by ([$$34 := %0->$$49]) decor ([$$46 := %0->$$54]) {
              aggregate [$$31] <- [function-call: asterix:listify, Args:[function-call: asterix:open-record-constructor, Args:[AString: {order_date}, %0->$$4, AString: {sum_price}, %0->$$43]]] -- |LOCAL|
                limit AInt32: {3} -- |LOCAL|
                  order (ASC, %0->$$43)  -- |LOCAL|
                    group by ([$$4 := %0->$$50]) decor ([]) {
                              aggregate [$$43] <- [function-call: asterix:agg-sum, Args:[%0->$$48]] -- |LOCAL|
                                nested tuple source -- |LOCAL|
                           } -- |LOCAL|
                      select (function-call: algebricks:not, Args:[function-call: algebricks:is-null, Args:[%0->$$38]]) -- |LOCAL|
                        nested tuple source -- |LOCAL|
           } -- |PARTITIONED|
      project ([$$50, $$49, $$48, $$54]) -- |LOCAL|
        group by ([$$49 := %0->$$39; $$50 := %0->$$32]) decor ([$$51 := %0->$$0; $$52 := %0->$$1; $$53 := %0->$$35; $$54 := %0->$$47; $$55 := %0->$$38]) {
                  aggregate [$$48] <- [function-call: asterix:agg-local-sum, Args:[%0->$$28]] -- |LOCAL|
                    nested tuple source -- |LOCAL|
               } -- |LOCAL|
          left outer join (function-call: algebricks:eq, Args:[%0->$$41, %0->$$36]) -- |PARTITIONED|
            join (function-call: algebricks:eq, Args:[%0->$$44, %0->$$39]) -- |PARTITIONED|
              join (function-call: algebricks:eq, Args:[%0->$$39, %0->$$35]) -- |PARTITIONED|
                assign [$$47] <- [function-call: asterix:field-access-by-index, Args:[%0->$$0, AInt32: {1}]] -- |PARTITIONED|
                  data-scan []<-[$$39, $$0] <- tpch:Nation -- |PARTITIONED|
                    empty-tuple-source -- |PARTITIONED|
                data-scan []<-[$$35, $$1] <- tpch:SelectedNation -- |PARTITIONED|
                  empty-tuple-source -- |PARTITIONED|
              assign [$$44] <- [function-call: asterix:field-access-by-index, Args:[%0->$$2, AInt32: {3}]] -- |PARTITIONED|
                data-scan []<-[$$36, $$2] <- tpch:Customer -- |PARTITIONED|
                  empty-tuple-source -- |PARTITIONED|
            assign [$$38, $$28, $$32, $$41] <- [TRUE, function-call: asterix:field-access-by-index, Args:[%0->$$5, AInt32: {3}], function-call: asterix:field-access-by-index, Args:[%0->$$5, AInt32: {4}], function-call: asterix:field-access-by-index, Args:[%0->$$5, AInt32: {1}]] -- |PARTITIONED|
              data-scan []<-[$$37, $$5] <- tpch:Orders -- |PARTITIONED|
                empty-tuple-source -- |PARTITIONED|

 select (function-call: algebricks:not, Args:[function-call: algebricks:is-null, Args:[%0->$$38]]) -- |LOCAL| which is before the nested group-by is not pushed to the combiner group-by operator.

Original issue reported on code.google.com by buyingyi@gmail.com on 2 Jun 2014 at 9:34

Attachments:

GoogleCodeExporter commented 9 years ago

Original comment by buyingyi@gmail.com on 2 Jun 2014 at 9:37