summaryrefslogtreecommitdiff
path: root/src/mongo/db/query/query_planner.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/db/query/query_planner.h')
-rw-r--r--src/mongo/db/query/query_planner.h146
1 files changed, 73 insertions, 73 deletions
diff --git a/src/mongo/db/query/query_planner.h b/src/mongo/db/query/query_planner.h
index 80d41bef1e8..0b33b109b4e 100644
--- a/src/mongo/db/query/query_planner.h
+++ b/src/mongo/db/query/query_planner.h
@@ -34,84 +34,84 @@
namespace mongo {
- class CachedSolution;
- class Collection;
+class CachedSolution;
+class Collection;
+
+/**
+ * QueryPlanner's job is to provide an entry point to the query planning and optimization
+ * process.
+ */
+class QueryPlanner {
+public:
+ // Identifies the version of the query planner module. Reported in explain.
+ static const int kPlannerVersion;
/**
- * QueryPlanner's job is to provide an entry point to the query planning and optimization
- * process.
+ * Outputs a series of possible solutions for the provided 'query' into 'out'. Uses the
+ * indices and other data in 'params' to plan with.
+ *
+ * Caller owns pointers in *out.
*/
- class QueryPlanner {
- public:
- // Identifies the version of the query planner module. Reported in explain.
- static const int kPlannerVersion;
+ static Status plan(const CanonicalQuery& query,
+ const QueryPlannerParams& params,
+ std::vector<QuerySolution*>* out);
- /**
- * Outputs a series of possible solutions for the provided 'query' into 'out'. Uses the
- * indices and other data in 'params' to plan with.
- *
- * Caller owns pointers in *out.
- */
- static Status plan(const CanonicalQuery& query,
- const QueryPlannerParams& params,
- std::vector<QuerySolution*>* out);
-
- /**
- * Attempt to generate a query solution, given data retrieved
- * from the plan cache.
- *
- * @param query -- query for which we are generating a plan
- * @param params -- planning parameters
- * @param cachedSoln -- the CachedSolution retrieved from the plan cache.
- * @param out -- an out-parameter which will be filled in with the solution
- * generated from the cache data
- *
- * On success, the caller is responsible for deleting *out.
- */
- static Status planFromCache(const CanonicalQuery& query,
- const QueryPlannerParams& params,
- const CachedSolution& cachedSoln,
- QuerySolution** out);
+ /**
+ * Attempt to generate a query solution, given data retrieved
+ * from the plan cache.
+ *
+ * @param query -- query for which we are generating a plan
+ * @param params -- planning parameters
+ * @param cachedSoln -- the CachedSolution retrieved from the plan cache.
+ * @param out -- an out-parameter which will be filled in with the solution
+ * generated from the cache data
+ *
+ * On success, the caller is responsible for deleting *out.
+ */
+ static Status planFromCache(const CanonicalQuery& query,
+ const QueryPlannerParams& params,
+ const CachedSolution& cachedSoln,
+ QuerySolution** out);
- /**
- * Used to generated the index tag tree that will be inserted
- * into the plan cache. This data gets stashed inside a QuerySolution
- * until it can be inserted into the cache proper.
- *
- * @param taggedTree -- a MatchExpression with index tags that has been
- * produced by the enumerator.
- * @param relevantIndices -- a list of the index entries used to tag
- * the tree (i.e. index numbers in the tags refer to entries in this vector)
- *
- * On success, a new tagged tree is returned through the out-parameter 'out'.
- * The caller has ownership of both taggedTree and *out.
- *
- * On failure, 'out' is set to NULL.
- */
- static Status cacheDataFromTaggedTree(const MatchExpression* const taggedTree,
- const std::vector<IndexEntry>& relevantIndices,
- PlanCacheIndexTree** out);
+ /**
+ * Used to generated the index tag tree that will be inserted
+ * into the plan cache. This data gets stashed inside a QuerySolution
+ * until it can be inserted into the cache proper.
+ *
+ * @param taggedTree -- a MatchExpression with index tags that has been
+ * produced by the enumerator.
+ * @param relevantIndices -- a list of the index entries used to tag
+ * the tree (i.e. index numbers in the tags refer to entries in this vector)
+ *
+ * On success, a new tagged tree is returned through the out-parameter 'out'.
+ * The caller has ownership of both taggedTree and *out.
+ *
+ * On failure, 'out' is set to NULL.
+ */
+ static Status cacheDataFromTaggedTree(const MatchExpression* const taggedTree,
+ const std::vector<IndexEntry>& relevantIndices,
+ PlanCacheIndexTree** out);
- /**
- * @param filter -- an untagged MatchExpression
- * @param indexTree -- a tree structure retrieved from the
- * cache with index tags that indicates how 'filter' should
- * be tagged.
- * @param indexMap -- needed in order to put the proper index
- * numbers inside the index tags
- *
- * On success, 'filter' is mutated so that it has all the
- * index tags needed in order for the access planner to recreate
- * the cached plan.
- *
- * On failure, the tag state attached to the nodes of 'filter'
- * is invalid. Planning from the cache should be aborted.
- *
- * Does not take ownership of either filter or indexTree.
- */
- static Status tagAccordingToCache(MatchExpression* filter,
- const PlanCacheIndexTree* const indexTree,
- const std::map<BSONObj, size_t>& indexMap);
- };
+ /**
+ * @param filter -- an untagged MatchExpression
+ * @param indexTree -- a tree structure retrieved from the
+ * cache with index tags that indicates how 'filter' should
+ * be tagged.
+ * @param indexMap -- needed in order to put the proper index
+ * numbers inside the index tags
+ *
+ * On success, 'filter' is mutated so that it has all the
+ * index tags needed in order for the access planner to recreate
+ * the cached plan.
+ *
+ * On failure, the tag state attached to the nodes of 'filter'
+ * is invalid. Planning from the cache should be aborted.
+ *
+ * Does not take ownership of either filter or indexTree.
+ */
+ static Status tagAccordingToCache(MatchExpression* filter,
+ const PlanCacheIndexTree* const indexTree,
+ const std::map<BSONObj, size_t>& indexMap);
+};
} // namespace mongo