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++; totalNrRegs++;
break; 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 // TODO: potentially more cases
default: default:
break; break;
@ -272,6 +285,11 @@ namespace triagens {
v->setSharedPtr(&v); v->setSharedPtr(&v);
walk(v.get()); walk(v.get());
v->reset(); 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){ for( auto p: en->_elements){
//We know that staticAnalysis has been run, so _varOverview is set up //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); auto it = _varOverview->varInfo.find(p.first->id);
TRI_ASSERT(it != _varOverview->varInfo.end()); TRI_ASSERT(it != _varOverview->varInfo.end());
_sortRegisters.push_back(make_pair(it->second.registerId, p.second)); _sortRegisters.push_back(make_pair(it->second.registerId, p.second));

View File

@ -68,8 +68,7 @@ namespace triagens {
CALCULATION, // done CALCULATION, // done
SUBQUERY, // done SUBQUERY, // done
SORT, // done SORT, // done
AGGREGATE_ON_SORTED, AGGREGATE, // todo
AGGREGATE_ON_UNSORTED, // todo
LOOKUP_JOIN, LOOKUP_JOIN,
MERGE_JOIN, MERGE_JOIN,
LOOKUP_INDEX_UNIQUE, LOOKUP_INDEX_UNIQUE,
@ -1033,7 +1032,7 @@ namespace triagens {
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
virtual NodeType getType () const { 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, result = TRI_CompareShapeTypes(nullptr,
nullptr, nullptr,
left, left,
right->_document, right->_document->getShapedJsonPtr(),
&right->_subObjects[rightPosition], &right->_subObjects[rightPosition],
nullptr, nullptr,
shaper); shaper);
@ -109,10 +109,10 @@ static int CompareElementElement (TRI_skiplist_index_element_t* left,
TRI_ASSERT(nullptr != left); TRI_ASSERT(nullptr != left);
TRI_ASSERT(nullptr != right); TRI_ASSERT(nullptr != right);
int result = TRI_CompareShapeTypes(left->_document, int result = TRI_CompareShapeTypes(left->_document->getShapedJsonPtr(),
&left->_subObjects[leftPosition], &left->_subObjects[leftPosition],
nullptr, nullptr,
right->_document, right->_document->getShapedJsonPtr(),
&right->_subObjects[rightPosition], &right->_subObjects[rightPosition],
nullptr, nullptr,
shaper); shaper);

View File

@ -1128,10 +1128,10 @@ static void DestroyAttributesVector (TRI_vector_t* vector) {
/// You must either supply (rightDocument, rightObject) or rightShaped. /// 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_sub_t* leftObject,
TRI_shaped_json_t const* leftShaped, TRI_shaped_json_t const* leftShaped,
TRI_doc_mptr_t* rightDocument, char const* rightDocument,
TRI_shaped_sub_t* rightObject, TRI_shaped_sub_t* rightObject,
TRI_shaped_json_t const* rightShaped, TRI_shaped_json_t const* rightShaped,
TRI_shaper_t* shaper) { 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 leftElement;
TRI_shaped_json_t right; TRI_shaped_json_t right;
TRI_shaped_json_t rightElement; TRI_shaped_json_t rightElement;
char const* ptr;
int result; int result;
// left is either a shaped json or a shaped sub object // left is either a shaped json or a shaped sub object
if (leftDocument != nullptr) { if (leftDocument != nullptr) {
ptr = leftDocument->getShapedJsonPtr(); // ONLY IN INDEX
left._sid = leftObject->_sid; left._sid = leftObject->_sid;
left._data.length = (uint32_t) leftObject->_length; 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 { else {
left = *leftShaped; 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 // right is either a shaped json or a shaped sub object
if (rightDocument != nullptr) { if (rightDocument != nullptr) {
ptr = rightDocument->getShapedJsonPtr(); // ONLY IN INDEX
right._sid = rightObject->_sid; right._sid = rightObject->_sid;
right._data.length = (uint32_t) rightObject->_length; 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 { else {
right = *rightShaped; right = *rightShaped;

View File

@ -125,10 +125,10 @@ bool TRI_ExtractShapedJsonVocShaper (TRI_shaper_t* s,
/// You must either supply (rightDocument, rightObject) or rightShaped. /// 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_sub_t* leftObject,
TRI_shaped_json_t const* leftShaped, TRI_shaped_json_t const* leftShaped,
TRI_doc_mptr_t* rightDocument, char const* rightDocument,
TRI_shaped_sub_t* rightObject, TRI_shaped_sub_t* rightObject,
TRI_shaped_json_t const* rightShaped, TRI_shaped_json_t const* rightShaped,
TRI_shaper_t* shaper); TRI_shaper_t* shaper);