diff options
Diffstat (limited to 'src/mongo/db/query/query_planner.h')
-rw-r--r-- | src/mongo/db/query/query_planner.h | 146 |
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 |