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++;
|
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));
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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);
|
||||||
|
|
Loading…
Reference in New Issue