diff options
Diffstat (limited to 'src/mongo/db/query/projection.h')
| -rw-r--r-- | src/mongo/db/query/projection.h | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/mongo/db/query/projection.h b/src/mongo/db/query/projection.h index 97b8d1e0d30..95d41caba02 100644 --- a/src/mongo/db/query/projection.h +++ b/src/mongo/db/query/projection.h @@ -142,14 +142,25 @@ public: return _deps.containsElemMatch; } + /** + * Optimizes the projection tree. Additionally, re-computes dependencies in case anything + * changes as in projection {x: {$and: [false, "$b"]}} - which when optimized will no longer + * depend on "b". + */ + void optimize(); + private: ProjectionPathASTNode _root; ProjectType _type; ProjectionDependencies _deps; + bool _projOptimized = false; }; /** - * Walks the projection AST and optimizes each node. + * Walks the projection AST and optimizes each node. Note if you have a 'Projection' instance you + * should prefer to use Projection::optimize() since it will additionally re-compute dependencies in + * case anything changes as in projection {x: {$and: [false, "$b"]}} - which when optimized will no + * longer depend on "b". */ void optimizeProjection(ProjectionPathASTNode* root); |
