diff options
author | Nikita Lapkov <nikita.lapkov@mongodb.com> | 2020-12-16 16:36:34 +0000 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2021-02-08 19:51:15 +0000 |
commit | de5c14f1b7bab93bdedc1dbc7df7bc1ea654836c (patch) | |
tree | 9e37e960d2f38c83af34534efc4305e3145df6b0 /src/mongo/db/query/sbe_stage_builder_coll_scan.cpp | |
parent | 40e6c8c21fa1099fb60aa2ec48b98234ade6b278 (diff) | |
download | mongo-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.cpp | 38 |
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; |