Closed GoogleCodeExporter closed 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
buyingyi@gmail.com
Attachments:
Original comment by buyingyi@gmail.com on 2 Jun 2014 at 9:37
Original issue reported on code.google.com by
buyingyi@gmail.com
on 2 Jun 2014 at 9:34Attachments: