diff --git a/arangod/Aql/ExecutionPlan.cpp b/arangod/Aql/ExecutionPlan.cpp index 54706efc9f..20cdcd3b29 100644 --- a/arangod/Aql/ExecutionPlan.cpp +++ b/arangod/Aql/ExecutionPlan.cpp @@ -297,13 +297,21 @@ Json SortPlan::toJson (TRI_memory_zone_t* zone) const { return json; } try { - Json vec(Json::List,_sortAttributes.size()); - for (auto it = _sortAttributes.begin(); it != _sortAttributes.end(); ++it) { + Json numbers(Json::List, _varNumbers.size()); + for (auto it = _varNumbers.begin(); it != _varNumbers.end(); ++it) { + numbers(Json(static_cast(*it))); + } + Json names(Json::List, _varNames.size()); + for (auto it = _varNames.begin(); it != _varNames.end(); ++it) { + names(Json(*it)); + } + Json vec(Json::List, _sortAscending.size()); + for (auto it = _sortAscending.begin(); it != _sortAscending.end(); ++it) { vec(Json(*it)); } - json("varNumber", Json(static_cast(_varNumber))) - ("varName", Json(_varName)) - ("sortAttributes", vec); + json("varNumbers", numbers) + ("varNames", names) + ("sortAscending", vec); } catch (std::exception& e) { return Json(); diff --git a/arangod/Aql/ExecutionPlan.h b/arangod/Aql/ExecutionPlan.h index e93ba70bc8..4d667bd765 100644 --- a/arangod/Aql/ExecutionPlan.h +++ b/arangod/Aql/ExecutionPlan.h @@ -765,11 +765,11 @@ namespace triagens { public: - SortPlan (VariableId varNumber, - std::string varName, - std::vector sortAttributes) - : ExecutionPlan(), _varNumber(varNumber), _varName(varName), - _sortAttributes(sortAttributes) { + SortPlan (std::vector varNumbers, + std::vector varNames, + std::vector sortAscending) + : ExecutionPlan(), _varNumbers(varNumbers), _varNames(varNames), + _sortAscending(sortAscending) { } //////////////////////////////////////////////////////////////////////////////// @@ -800,7 +800,7 @@ namespace triagens { //////////////////////////////////////////////////////////////////////////////// virtual ExecutionPlan* clone () const { - auto c = new SortPlan(_varNumber, _varName, _sortAttributes); + auto c = new SortPlan(_varNumbers, _varNames, _sortAscending); cloneDependencies(c); return static_cast(c); } @@ -812,22 +812,22 @@ namespace triagens { private: //////////////////////////////////////////////////////////////////////////////// -/// @brief _varNumber, input variable +/// @brief _varNumbers, input variables for sorting //////////////////////////////////////////////////////////////////////////////// - VariableId _varNumber; + std::vector _varNumbers; //////////////////////////////////////////////////////////////////////////////// -/// @brief _varName, name of variable to read from +/// @brief _varNames, name of variables for sorting //////////////////////////////////////////////////////////////////////////////// - std::string _varName; + std::vector _varNames; //////////////////////////////////////////////////////////////////////////////// /// @brief vector of attributes to sort by //////////////////////////////////////////////////////////////////////////////// - std::vector _sortAttributes; + std::vector _sortAscending; };