diff --git a/arangod/Aql/Optimizer.cpp b/arangod/Aql/Optimizer.cpp index 0e5b6a68fa..dbcb8520e7 100644 --- a/arangod/Aql/Optimizer.cpp +++ b/arangod/Aql/Optimizer.cpp @@ -362,8 +362,8 @@ void Optimizer::setupRules () { registerRule("use-index-range", useIndexRange, 710); // try to find sort blocks which are superseeded by indexes - //registerRule("use-index-for-sort", useIndexForSort, 720); - + registerRule("use-index-for-sort", useIndexForSort, 720); + ////////////////////////////////////////////////////////////////////////////// /// END OF OPTIMISATIONS ////////////////////////////////////////////////////////////////////////////// diff --git a/arangod/Aql/OptimizerRules.cpp b/arangod/Aql/OptimizerRules.cpp index e1f44dfd89..1c447502ce 100644 --- a/arangod/Aql/OptimizerRules.cpp +++ b/arangod/Aql/OptimizerRules.cpp @@ -744,9 +744,6 @@ public: v.push_back(std::make_pair(_sortNodeData[j]->attributevec, _sortNodeData[j]->ASC)); rangeInfo.push_back(std::vector()); - - rangeInfo.at(j).push_back(RangeInfo(variableName, - _sortNodeData[j]->attributevec)); } return std::make_pair(v, rangeInfo); } @@ -794,6 +791,7 @@ class sortToIndexNode : public WalkerWorker { if (node->MatchesIndex(result.first)) { _sortNode->removeSortNodeFromPlan(_plan); + std::cout << "aoeuaoeuao\n"; } return true; } @@ -805,6 +803,7 @@ class sortToIndexNode : public WalkerWorker { bool handleEnumerateCollectionNode(EnumerateCollectionNode* node, int level) { auto variableName = node->getVariablesSetHere()[0]->name; auto result = _sortNode->getAttrsForVariableName(variableName); + std::cout << "1aoeuaoeuao\n"; if (result.first.size() == 0) { return false; // we didn't find anything replaceable by indice @@ -828,8 +827,10 @@ class sortToIndexNode : public WalkerWorker { newPlan->replaceNode(newPlan->getNodeById(node->id()), newNode); if (idx.fullmatch) { // if the index superseedes the sort, remove it. + std::cout << "aoeuaoeuaoeuaoueaoeuaoeuao\n"; _sortNode->removeSortNodeFromPlan(newPlan); } + std::cout << newPlan->toJson(TRI_UNKNOWN_MEM_ZONE, false).toString()<< "\n"; _opt->addPlan(newPlan, level, true); } catch (...) {