diff --git a/arangod/Aql/OptimizerRules.cpp b/arangod/Aql/OptimizerRules.cpp index 61ecf0a4a4..f926f5c26a 100644 --- a/arangod/Aql/OptimizerRules.cpp +++ b/arangod/Aql/OptimizerRules.cpp @@ -4417,8 +4417,8 @@ bool applyGeoOptimization(bool near, ExecutionPlan* plan, GeoIndexInfo& info){ // if executionNode is sort OR a filter without further sub conditions // the node can be unlinked - if( info.executionNodeType == EN::SORT || !info.expressionParent){ - if (!arangodb::ServerState::instance()->isCoordinator()) { + if(!info.expressionParent){ + if (!arangodb::ServerState::instance()->isCoordinator() || info.executionNodeType == EN::FILTER) { plan->unlinkNode(info.executionNode); } else if (info.executionNodeType == EN::SORT){ //make sure sort is not reinserted in cluster diff --git a/arangod/Aql/SortNode.h b/arangod/Aql/SortNode.h index 2e9f2456d3..6338ec5acf 100644 --- a/arangod/Aql/SortNode.h +++ b/arangod/Aql/SortNode.h @@ -53,7 +53,7 @@ class SortNode : public ExecutionNode { public: SortNode(ExecutionPlan* plan, size_t id, SortElementVector const& elements, bool stable) - : ExecutionNode(plan, id), _elements(elements), _stable(stable) {} + : ExecutionNode(plan, id), _reinsertInCluster(true), _elements(elements), _stable(stable) {} SortNode(ExecutionPlan* plan, arangodb::velocypack::Slice const& base, SortElementVector const& elements, bool stable);