mirror of https://gitee.com/bigwinds/arangodb
Merge branch 'aql2' of https://github.com/triAGENS/ArangoDB into aql2
This commit is contained in:
commit
a69da2fea3
|
@ -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));
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue