diff options
Diffstat (limited to 'src/mongo/db/query/query_planner.cpp')
-rw-r--r-- | src/mongo/db/query/query_planner.cpp | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/src/mongo/db/query/query_planner.cpp b/src/mongo/db/query/query_planner.cpp index 9de0aec1c73..270a395af93 100644 --- a/src/mongo/db/query/query_planner.cpp +++ b/src/mongo/db/query/query_planner.cpp @@ -58,8 +58,8 @@ namespace mongo { -using std::unique_ptr; using std::numeric_limits; +using std::unique_ptr; namespace dps = ::mongo::dotted_path_support; @@ -137,6 +137,10 @@ string optionString(size_t options) { break; case QueryPlannerParams::TRACK_LATEST_OPLOG_TS: ss << "TRACK_LATEST_OPLOG_TS "; + break; + case QueryPlannerParams::ENUMERATE_OR_CHILDREN_LOCKSTEP: + ss << "ENUMERATE_OR_CHILDREN_LOCKSTEP "; + break; case QueryPlannerParams::DEFAULT: MONGO_UNREACHABLE; break; @@ -863,12 +867,15 @@ Status QueryPlanner::plan(const CanonicalQuery& query, enumParams.intersect = params.options & QueryPlannerParams::INDEX_INTERSECTION; enumParams.root = query.root(); enumParams.indices = &relevantIndices; + enumParams.enumerateOrChildrenLockstep = + params.options & QueryPlannerParams::ENUMERATE_OR_CHILDREN_LOCKSTEP; - PlanEnumerator isp(enumParams); - isp.init().transitional_ignore(); + PlanEnumerator planEnumerator(enumParams); + uassertStatusOK(planEnumerator.init()); unique_ptr<MatchExpression> nextTaggedTree; - while ((nextTaggedTree = isp.getNext()) && (out->size() < params.maxIndexedSolutions)) { + while ((nextTaggedTree = planEnumerator.getNext()) && + (out->size() < params.maxIndexedSolutions)) { LOG(5) << "About to build solntree from tagged tree:" << endl << redact(nextTaggedTree->toString()); |