summaryrefslogtreecommitdiff
path: root/src/mongo/db/query/sbe_stage_builder_coll_scan.cpp
diff options
context:
space:
mode:
authorNikita Lapkov <nikita.lapkov@mongodb.com>2020-12-16 16:36:34 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2021-02-08 19:51:15 +0000
commitde5c14f1b7bab93bdedc1dbc7df7bc1ea654836c (patch)
tree9e37e960d2f38c83af34534efc4305e3145df6b0 /src/mongo/db/query/sbe_stage_builder_coll_scan.cpp
parent40e6c8c21fa1099fb60aa2ec48b98234ade6b278 (diff)
downloadmongo-de5c14f1b7bab93bdedc1dbc7df7bc1ea654836c.tar.gz
SERVER-52914 Support positional projection operator ($) in SBE
Diffstat (limited to 'src/mongo/db/query/sbe_stage_builder_coll_scan.cpp')
-rw-r--r--src/mongo/db/query/sbe_stage_builder_coll_scan.cpp38
1 files changed, 20 insertions, 18 deletions
diff --git a/src/mongo/db/query/sbe_stage_builder_coll_scan.cpp b/src/mongo/db/query/sbe_stage_builder_coll_scan.cpp
index 34435afaa51..3e8a7f573b1 100644
--- a/src/mongo/db/query/sbe_stage_builder_coll_scan.cpp
+++ b/src/mongo/db/query/sbe_stage_builder_coll_scan.cpp
@@ -226,15 +226,16 @@ std::pair<std::unique_ptr<sbe::PlanStage>, PlanStageSlots> generateOptimizedOplo
relevantSlots.push_back(*tsSlot);
}
- stage = generateFilter(opCtx,
- csn->filter.get(),
- std::move(stage),
- slotIdGenerator,
- frameIdGenerator,
- resultSlot,
- env,
- std::move(relevantSlots),
- csn->nodeId());
+ auto [_, filterStage] = generateFilter(opCtx,
+ csn->filter.get(),
+ std::move(stage),
+ slotIdGenerator,
+ frameIdGenerator,
+ resultSlot,
+ env,
+ std::move(relevantSlots),
+ csn->nodeId());
+ stage = std::move(filterStage);
// We may be requested to stop applying the filter after the first match. This can happen
// if the query is just a lower bound on 'ts' on a forward scan. In this case every document
@@ -436,15 +437,16 @@ std::pair<std::unique_ptr<sbe::PlanStage>, PlanStageSlots> generateGenericCollSc
relevantSlots.push_back(*tsSlot);
}
- stage = generateFilter(opCtx,
- csn->filter.get(),
- std::move(stage),
- slotIdGenerator,
- frameIdGenerator,
- resultSlot,
- env,
- std::move(relevantSlots),
- csn->nodeId());
+ auto [_, filterStage] = generateFilter(opCtx,
+ csn->filter.get(),
+ std::move(stage),
+ slotIdGenerator,
+ frameIdGenerator,
+ resultSlot,
+ env,
+ std::move(relevantSlots),
+ csn->nodeId());
+ stage = std::move(filterStage);
}
PlanStageSlots outputs;