summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRushan Chen <rushan.chen@mongodb.com>2022-03-24 11:37:05 +0000
committerRushan Chen <rushan.chen@mongodb.com>2022-03-24 14:01:38 +0000
commitfa09b63b30289d92f6bcc77027844bfb49463a04 (patch)
treef42c9ba53631383a86869bb8cc8f9a2cf30e10b9
parent5c12495a4e7dbf803ba0dc5064dd3c5b1491f170 (diff)
downloadmongo-fa09b63b30289d92f6bcc77027844bfb49463a04.tar.gz
SERVER-64812 use the correct operand arity check for ExpressionObject
-rw-r--r--src/mongo/db/query/sbe_stage_builder_expression.cpp7
1 files changed, 3 insertions, 4 deletions
diff --git a/src/mongo/db/query/sbe_stage_builder_expression.cpp b/src/mongo/db/query/sbe_stage_builder_expression.cpp
index 81a7da56bb2..b049d744184 100644
--- a/src/mongo/db/query/sbe_stage_builder_expression.cpp
+++ b/src/mongo/db/query/sbe_stage_builder_expression.cpp
@@ -2419,14 +2419,13 @@ public:
}
void visit(const ExpressionObject* expr) final {
auto&& childExprs = expr->getChildExpressions();
- tassert(5995102,
- "All child expressions must have been compiled",
- childExprs.size() == _context->evalStack.topFrame().exprsCount());
+ size_t childSize = childExprs.size();
+ _context->ensureArity(childSize);
// The expression argument for 'newObj' must be a sequence of a field name constant
// expression and an expression for the value. So, we need 2 * childExprs.size() elements in
// the expression vector.
- sbe::EExpression::Vector exprs(childExprs.size() * 2);
+ sbe::EExpression::Vector exprs(childSize * 2);
size_t i = exprs.size();
for (auto rit = childExprs.rbegin(); rit != childExprs.rend(); ++rit) {
exprs[--i] = _context->popExpr();