summaryrefslogtreecommitdiff
path: root/src/mongo/db/exec/sbe/abt/abt_lower.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/db/exec/sbe/abt/abt_lower.cpp')
-rw-r--r--src/mongo/db/exec/sbe/abt/abt_lower.cpp11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/mongo/db/exec/sbe/abt/abt_lower.cpp b/src/mongo/db/exec/sbe/abt/abt_lower.cpp
index 7da6a8e2cef..7939d166a78 100644
--- a/src/mongo/db/exec/sbe/abt/abt_lower.cpp
+++ b/src/mongo/db/exec/sbe/abt/abt_lower.cpp
@@ -586,14 +586,15 @@ std::unique_ptr<sbe::PlanStage> SBENodeLowering::walk(const GroupByNode& n,
auto& names = binderAgg->names();
auto& exprs = refsAgg->nodes();
- sbe::value::SlotMap<std::unique_ptr<sbe::EExpression>> aggs;
+ sbe::SlotExprPairVector aggs;
+ aggs.reserve(exprs.size());
for (size_t idx = 0; idx < exprs.size(); ++idx) {
auto expr = SBEExpressionLowering{_env, _slotMap}.optimize(exprs[idx]);
auto slot = _slotIdGenerator.generate();
_slotMap.emplace(names[idx], slot);
- aggs.emplace(slot, std::move(expr));
+ aggs.push_back({slot, std::move(expr)});
}
// TODO: use collator slot.
@@ -609,6 +610,11 @@ std::unique_ptr<sbe::PlanStage> SBENodeLowering::walk(const GroupByNode& n,
true /*optimizedClose*/,
collatorSlot,
false /*allowDiskUse*/,
+ // Since we are always disallowing disk use for this stage,
+ // we need not provide merging expressions. Once spilling
+ // is permitted here, we will need to generate merging
+ // expressions during lowering.
+ sbe::makeSlotExprPairVec() /*mergingExprs*/,
planNodeId);
}
@@ -1005,6 +1011,7 @@ std::unique_ptr<sbe::PlanStage> SBENodeLowering::walk(const IndexScanNode& n, co
resultSlot,
ridSlot,
boost::none,
+ boost::none,
indexKeysToInclude,
vars,
seekKeySlotLower,