From 7b65a958d89b0575a60bb4b4923d96d892fc5777 Mon Sep 17 00:00:00 2001 From: Max Neunhoeffer Date: Wed, 6 Aug 2014 15:13:22 +0200 Subject: [PATCH] Take care of static analyis case AggregateNode. --- arangod/Aql/ExecutionBlock.h | 19 +++++++++++++++++++ arangod/Aql/ExecutionNode.h | 5 ++--- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/arangod/Aql/ExecutionBlock.h b/arangod/Aql/ExecutionBlock.h index a5e6e96d53..a16c5ca17b 100644 --- a/arangod/Aql/ExecutionBlock.h +++ b/arangod/Aql/ExecutionBlock.h @@ -257,6 +257,19 @@ namespace triagens { totalNrRegs++; break; } + case ExecutionNode::AGGREGATE: { + // FIXME: are there more variables being defined in this + // node??? + auto ep = static_cast(eb->getPlanNode()); + if (ep->_outVariable != nullptr) { + nrRegsHere[depth]++; + nrRegs[depth]++; + varInfo.insert(make_pair(ep->_outVariable->id, + VarInfo(depth, totalNrRegs))); + totalNrRegs++; + } + break; + } // TODO: potentially more cases default: break; @@ -272,6 +285,11 @@ namespace triagens { v->setSharedPtr(&v); walk(v.get()); v->reset(); + std::cout << "Varinfo:\n"; + for (auto x : v->varInfo) { + std::cout << x.first << " => " << x.second.depth << "," + << x.second.registerId << std::endl; + } } //////////////////////////////////////////////////////////////////////////////// @@ -1447,6 +1465,7 @@ namespace triagens { for( auto p: en->_elements){ //We know that staticAnalysis has been run, so _varOverview is set up + std::cout << "Looking for " << p.first->id << std::endl; auto it = _varOverview->varInfo.find(p.first->id); TRI_ASSERT(it != _varOverview->varInfo.end()); _sortRegisters.push_back(make_pair(it->second.registerId, p.second)); diff --git a/arangod/Aql/ExecutionNode.h b/arangod/Aql/ExecutionNode.h index 2b041fe73b..b36fe7a4e9 100644 --- a/arangod/Aql/ExecutionNode.h +++ b/arangod/Aql/ExecutionNode.h @@ -68,8 +68,7 @@ namespace triagens { CALCULATION, // done SUBQUERY, // done SORT, // done - AGGREGATE_ON_SORTED, - AGGREGATE_ON_UNSORTED, // todo + AGGREGATE, // todo LOOKUP_JOIN, MERGE_JOIN, LOOKUP_INDEX_UNIQUE, @@ -1033,7 +1032,7 @@ namespace triagens { //////////////////////////////////////////////////////////////////////////////// virtual NodeType getType () const { - return SORT; + return AGGREGATE; } ////////////////////////////////////////////////////////////////////////////////