summaryrefslogtreecommitdiff
path: root/src/mongo/db/query/sbe_stage_builder_projection.cpp
diff options
context:
space:
mode:
authorNikita Lapkov <nikita.lapkov@mongodb.com>2021-05-28 12:39:46 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2021-06-11 12:24:06 +0000
commit13d2be97d1ba504057ee2cddd67c13e5bce37aa5 (patch)
treeb514a4b87ce3a87b65030862b512a319dd03b15f /src/mongo/db/query/sbe_stage_builder_projection.cpp
parent7679fadf823e027a30ac81d7a1ec397fe97a0fde (diff)
downloadmongo-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.cpp30
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();
}