1
0
Fork 0

Merge branch 'aql2' of https://github.com/triAGENS/ArangoDB into aql2

This commit is contained in:
Jan Steemann 2014-08-06 16:19:55 +02:00
commit a69da2fea3
5 changed files with 30 additions and 17 deletions

View File

@ -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<AggregateNode const*>(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));

View File

@ -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;
}
////////////////////////////////////////////////////////////////////////////////

View File

@ -75,7 +75,7 @@ static int CompareKeyElement (TRI_shaped_json_t const* left,
result = TRI_CompareShapeTypes(nullptr,
nullptr,
left,
right->_document,
right->_document->getShapedJsonPtr(),
&right->_subObjects[rightPosition],
nullptr,
shaper);
@ -109,10 +109,10 @@ static int CompareElementElement (TRI_skiplist_index_element_t* left,
TRI_ASSERT(nullptr != left);
TRI_ASSERT(nullptr != right);
int result = TRI_CompareShapeTypes(left->_document,
int result = TRI_CompareShapeTypes(left->_document->getShapedJsonPtr(),
&left->_subObjects[leftPosition],
nullptr,
right->_document,
right->_document->getShapedJsonPtr(),
&right->_subObjects[rightPosition],
nullptr,
shaper);

View File

@ -1128,10 +1128,10 @@ static void DestroyAttributesVector (TRI_vector_t* vector) {
/// You must either supply (rightDocument, rightObject) or rightShaped.
////////////////////////////////////////////////////////////////////////////////
int TRI_CompareShapeTypes (TRI_doc_mptr_t* leftDocument,
int TRI_CompareShapeTypes (char const* leftDocument,
TRI_shaped_sub_t* leftObject,
TRI_shaped_json_t const* leftShaped,
TRI_doc_mptr_t* rightDocument,
char const* rightDocument,
TRI_shaped_sub_t* rightObject,
TRI_shaped_json_t const* rightShaped,
TRI_shaper_t* shaper) {
@ -1144,16 +1144,13 @@ int TRI_CompareShapeTypes (TRI_doc_mptr_t* leftDocument,
TRI_shaped_json_t leftElement;
TRI_shaped_json_t right;
TRI_shaped_json_t rightElement;
char const* ptr;
int result;
// left is either a shaped json or a shaped sub object
if (leftDocument != nullptr) {
ptr = leftDocument->getShapedJsonPtr(); // ONLY IN INDEX
left._sid = leftObject->_sid;
left._data.length = (uint32_t) leftObject->_length;
left._data.data = const_cast<char*>(ptr) + leftObject->_offset;
left._data.data = const_cast<char*>(leftDocument) + leftObject->_offset;
}
else {
left = *leftShaped;
@ -1161,11 +1158,9 @@ int TRI_CompareShapeTypes (TRI_doc_mptr_t* leftDocument,
// right is either a shaped json or a shaped sub object
if (rightDocument != nullptr) {
ptr = rightDocument->getShapedJsonPtr(); // ONLY IN INDEX
right._sid = rightObject->_sid;
right._data.length = (uint32_t) rightObject->_length;
right._data.data = const_cast<char*>(ptr) + rightObject->_offset;
right._data.data = const_cast<char*>(rightDocument) + rightObject->_offset;
}
else {
right = *rightShaped;

View File

@ -125,10 +125,10 @@ bool TRI_ExtractShapedJsonVocShaper (TRI_shaper_t* s,
/// You must either supply (rightDocument, rightObject) or rightShaped.
////////////////////////////////////////////////////////////////////////////////
int TRI_CompareShapeTypes (TRI_doc_mptr_t* leftDocument,
int TRI_CompareShapeTypes (char const* leftDocument,
TRI_shaped_sub_t* leftObject,
TRI_shaped_json_t const* leftShaped,
TRI_doc_mptr_t* rightDocument,
char const* rightDocument,
TRI_shaped_sub_t* rightObject,
TRI_shaped_json_t const* rightShaped,
TRI_shaper_t* shaper);