diff options
| author | Lucas de Castro Borges <lucas@gnuabordo.com.br> | 2025-02-11 15:07:35 -0300 |
|---|---|---|
| committer | Lucas de Castro Borges <lucas@gnuabordo.com.br> | 2025-02-11 15:07:35 -0300 |
| commit | 4cb8841196d0625dfa3825aa326f071cd27c7b8b (patch) | |
| tree | 1682a647d4463397c119183369ae6f750d5fdcff /src/mongo/db/query/plan_cache_indexability.h | |
| parent | aa03c6362cbaa767638e6eed9b031d86dd2643d1 (diff) | |
| parent | 8f0827553e09872941945a093b647a4211a9db7f (diff) | |
Update upstream source from tag 'upstream/6.0.0'master
Update to upstream version '6.0.0'
with Debian dir 5604a80ec1c96ca76f25f40d78e6ef855abec322
Diffstat (limited to 'src/mongo/db/query/plan_cache_indexability.h')
| -rw-r--r-- | src/mongo/db/query/plan_cache_indexability.h | 32 |
1 files changed, 8 insertions, 24 deletions
diff --git a/src/mongo/db/query/plan_cache_indexability.h b/src/mongo/db/query/plan_cache_indexability.h index 0aa08359c27..9bc03494865 100644 --- a/src/mongo/db/query/plan_cache_indexability.h +++ b/src/mongo/db/query/plan_cache_indexability.h @@ -47,7 +47,6 @@ class ProjectionExecutor; using IndexabilityDiscriminator = std::function<bool(const MatchExpression* me)>; using IndexabilityDiscriminators = std::vector<IndexabilityDiscriminator>; using IndexToDiscriminatorMap = StringMap<CompositeIndexabilityDiscriminator>; -using PathDiscriminatorsMap = StringMap<IndexToDiscriminatorMap>; /** * CompositeIndexabilityDiscriminator holds all indexability discriminators for a particular path, @@ -78,14 +77,9 @@ private: }; /** - * PlanCacheIndexabilityState holds a set of "indexability discriminators. An indexability - * discriminator is a binary predicate function, used to classify match expressions based on the - * data values in the expression. - * - * These discriminators are used to distinguish between queries of a similar shape but not the same - * candidate indexes. So each discriminator typically represents a decision like "is this index - * valid?" or "does this piece of the query disqualify it from using this index?". The output of - * these decisions is included in the plan cache key. + * PlanCacheIndexabilityState holds a set of "indexability discriminators" for certain paths. + * An indexability discriminator is a binary predicate function, used to classify match + * expressions based on the data values in the expression. */ class PlanCacheIndexabilityState { PlanCacheIndexabilityState(const PlanCacheIndexabilityState&) = delete; @@ -101,15 +95,7 @@ public: * The object returned by reference is valid until the next call to updateDiscriminators() or * until destruction of 'this', whichever is first. */ - const IndexToDiscriminatorMap& getPathDiscriminators(StringData path) const; - - /** - * Returns a map of index name to discriminator set. These discriminators are not - * associated with a particular path of a query and apply to the entire MatchExpression. - */ - const IndexToDiscriminatorMap& getGlobalDiscriminators() const { - return _globalDiscriminatorMap; - } + const IndexToDiscriminatorMap& getDiscriminators(StringData path) const; /** * Construct an IndexToDiscriminator map for the given path, only for the wildcard indexes @@ -123,6 +109,8 @@ public: void updateDiscriminators(const std::vector<CoreIndexInfo>& indexCores); private: + using PathDiscriminatorsMap = StringMap<IndexToDiscriminatorMap>; + /** * A $** index may index an infinite number of fields. We cannot just store a discriminator for * every possible field that it indexes, so we have to maintain some special context about the @@ -154,8 +142,8 @@ private: void processSparseIndex(const std::string& indexName, const BSONObj& keyPattern); /** - * Adds a global discriminator for the partial index with the given filter expression - * to the discriminators for that index in '_globalDiscriminatorMap'. + * Adds partial index discriminators for the partial index with the given filter expression + * to the discriminators for that index in '_pathDiscriminatorsMap'. * * A partial index discriminator distinguishes expressions that match a given partial index * predicate from expressions that don't match the partial index predicate. For example, @@ -186,10 +174,6 @@ private: // PathDiscriminatorsMap is a map from field path to index name to IndexabilityDiscriminator. PathDiscriminatorsMap _pathDiscriminatorsMap; - // Map from index name to global discriminators. These are discriminators which do not apply to - // a single path but the entire MatchExpression. - IndexToDiscriminatorMap _globalDiscriminatorMap; - std::vector<WildcardIndexDiscriminatorContext> _wildcardIndexDiscriminators; }; |
