summaryrefslogtreecommitdiff
path: root/src/mongo/db/query/sbe_stage_builder_helpers.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/db/query/sbe_stage_builder_helpers.cpp')
-rw-r--r--src/mongo/db/query/sbe_stage_builder_helpers.cpp17
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;