diff options
author | Nikita Lapkov <nikita.lapkov@mongodb.com> | 2021-05-28 12:39:46 +0000 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2021-06-11 12:24:06 +0000 |
commit | 13d2be97d1ba504057ee2cddd67c13e5bce37aa5 (patch) | |
tree | b514a4b87ce3a87b65030862b512a319dd03b15f /src/mongo/db/query/sbe_stage_builder_projection.cpp | |
parent | 7679fadf823e027a30ac81d7a1ec397fe97a0fde (diff) | |
download | mongo-13d2be97d1ba504057ee2cddd67c13e5bce37aa5.tar.gz |
SERVER-54745 Simplify covered projection plans in SBE
Diffstat (limited to 'src/mongo/db/query/sbe_stage_builder_projection.cpp')
-rw-r--r-- | src/mongo/db/query/sbe_stage_builder_projection.cpp | 30 |
1 files changed, 3 insertions, 27 deletions
diff --git a/src/mongo/db/query/sbe_stage_builder_projection.cpp b/src/mongo/db/query/sbe_stage_builder_projection.cpp index 5a4dd5e211f..6afc9e6bf88 100644 --- a/src/mongo/db/query/sbe_stage_builder_projection.cpp +++ b/src/mongo/db/query/sbe_stage_builder_projection.cpp @@ -872,31 +872,6 @@ private: ProjectionTraversalVisitorContext* _context; }; -class ProjectionTraversalWalker final { -public: - ProjectionTraversalWalker(projection_ast::ProjectionASTConstVisitor* preVisitor, - projection_ast::ProjectionASTConstVisitor* inVisitor, - projection_ast::ProjectionASTConstVisitor* postVisitor) - : _preVisitor{preVisitor}, _inVisitor{inVisitor}, _postVisitor{postVisitor} {} - - void preVisit(const projection_ast::ASTNode* node) { - node->acceptVisitor(_preVisitor); - } - - void postVisit(const projection_ast::ASTNode* node) { - node->acceptVisitor(_postVisitor); - } - - void inVisit(long count, const projection_ast::ASTNode* node) { - node->acceptVisitor(_inVisitor); - } - -private: - projection_ast::ProjectionASTConstVisitor* _preVisitor; - projection_ast::ProjectionASTConstVisitor* _inVisitor; - projection_ast::ProjectionASTConstVisitor* _postVisitor; -}; - /** * Generates expression that applies positional projection operator to the array stored in the * 'inputSlot' using optional index from 'maybeIndexSlot'. @@ -1177,7 +1152,7 @@ std::pair<sbe::value::SlotId, EvalStage> generateProjection( ProjectionTraversalPreVisitor preVisitor{&context}; ProjectionTraversalInVisitor inVisitor{&context}; ProjectionTraversalPostVisitor postVisitor{&context}; - ProjectionTraversalWalker walker{&preVisitor, &inVisitor, &postVisitor}; + projection_ast::ProjectionASTConstWalker walker{&preVisitor, &inVisitor, &postVisitor}; tree_walker::walk<true, projection_ast::ASTNode>(projection->root(), &walker); auto [resultSlot, resultStage] = context.done(); @@ -1192,7 +1167,8 @@ std::pair<sbe::value::SlotId, EvalStage> generateProjection( ProjectionTraversalPreVisitor slicePreVisitor{&sliceContext}; ProjectionTraversalInVisitor sliceInVisitor{&sliceContext}; SliceProjectionTraversalPostVisitor slicePostVisitor{&sliceContext}; - ProjectionTraversalWalker sliceWalker{&slicePreVisitor, &sliceInVisitor, &slicePostVisitor}; + projection_ast::ProjectionASTConstWalker sliceWalker{ + &slicePreVisitor, &sliceInVisitor, &slicePostVisitor}; tree_walker::walk<true, projection_ast::ASTNode>(projection->root(), &sliceWalker); std::tie(resultSlot, resultStage) = sliceContext.done(); } |