diff options
Diffstat (limited to 'src/mongo/db/query/sbe_stage_builder_helpers.cpp')
-rw-r--r-- | src/mongo/db/query/sbe_stage_builder_helpers.cpp | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/src/mongo/db/query/sbe_stage_builder_helpers.cpp b/src/mongo/db/query/sbe_stage_builder_helpers.cpp index bf60eb6d0f6..519e6121e68 100644 --- a/src/mongo/db/query/sbe_stage_builder_helpers.cpp +++ b/src/mongo/db/query/sbe_stage_builder_helpers.cpp @@ -203,10 +203,12 @@ std::unique_ptr<sbe::EExpression> makeFillEmptyFalse(std::unique_ptr<sbe::EExpre sbe::value::bitcastFrom<bool>(false))); } -std::unique_ptr<sbe::EExpression> makeVariable(sbe::value::SlotId slotId, - boost::optional<sbe::FrameId> frameId) { - return frameId ? sbe::makeE<sbe::EVariable>(*frameId, slotId) - : sbe::makeE<sbe::EVariable>(slotId); +std::unique_ptr<sbe::EExpression> makeVariable(sbe::value::SlotId slotId) { + return sbe::makeE<sbe::EVariable>(slotId); +} + +std::unique_ptr<sbe::EExpression> makeVariable(sbe::FrameId frameId, sbe::value::SlotId slotId) { + return sbe::makeE<sbe::EVariable>(frameId, slotId); } std::unique_ptr<sbe::EExpression> makeFillEmptyNull(std::unique_ptr<sbe::EExpression> e) { @@ -215,6 +217,13 @@ std::unique_ptr<sbe::EExpression> makeFillEmptyNull(std::unique_ptr<sbe::EExpres "fillEmpty"_sd, std::move(e), sbe::makeE<sbe::EConstant>(sbe::value::TypeTags::Null, 0)); } +std::unique_ptr<sbe::EExpression> makeFillEmptyUndefined(std::unique_ptr<sbe::EExpression> e) { + using namespace std::literals; + return makeFunction("fillEmpty"_sd, + std::move(e), + sbe::makeE<sbe::EConstant>(sbe::value::TypeTags::bsonUndefined, 0)); +} + std::unique_ptr<sbe::EExpression> makeNothingArrayCheck( std::unique_ptr<sbe::EExpression> isArrayInput, std::unique_ptr<sbe::EExpression> otherwise) { using namespace std::literals; |