diff options
author | Katherine Wu <katherine.wu@mongodb.com> | 2020-05-12 18:15:26 -0400 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2020-05-18 17:58:41 +0000 |
commit | 972ce94f18c972b1d648eb89a88f901965fa22dc (patch) | |
tree | 0c18f0fc63800305b9a1c636cf62cc7204082eca /src/mongo/db/pipeline/variables.cpp | |
parent | e8c93d3278965d731522bf9bf05525267d3e8fb8 (diff) | |
download | mongo-972ce94f18c972b1d648eb89a88f901965fa22dc.tar.gz |
SERVER-46998 Support 'let' variables used within $merge custom pipeline update
Diffstat (limited to 'src/mongo/db/pipeline/variables.cpp')
-rw-r--r-- | src/mongo/db/pipeline/variables.cpp | 14 |
1 files changed, 4 insertions, 10 deletions
diff --git a/src/mongo/db/pipeline/variables.cpp b/src/mongo/db/pipeline/variables.cpp index b64ec45db00..4ae50362250 100644 --- a/src/mongo/db/pipeline/variables.cpp +++ b/src/mongo/db/pipeline/variables.cpp @@ -142,7 +142,7 @@ void Variables::setValue(Id id, const Value& value, bool isConstant) { // If a value has already been set for 'id', and that value was marked as constant, then it // is illegal to modify. invariant(!hasConstantValue(id)); - _values[id] = {value, isConstant}; + _letParametersMap[id] = {value, isConstant}; } void Variables::setValue(Variables::Id id, const Value& value) { @@ -158,8 +158,8 @@ void Variables::setConstantValue(Variables::Id id, const Value& value) { Value Variables::getUserDefinedValue(Variables::Id id) const { invariant(isUserDefinedVariable(id)); - auto it = _values.find(id); - uassert(40434, str::stream() << "Undefined variable id: " << id, it != _values.end()); + auto it = _letParametersMap.find(id); + uassert(40434, str::stream() << "Undefined variable id: " << id, it != _letParametersMap.end()); return it->second.value; } @@ -233,12 +233,6 @@ void Variables::setDefaultRuntimeConstants(OperationContext* opCtx) { setRuntimeConstants(Variables::generateRuntimeConstants(opCtx)); } -BSONObj Variables::serializeLetParameters(const VariablesParseState& vps) const { - auto bob = BSONObjBuilder{}; - for (auto&& [id, value] : _letParametersMap) - bob << kIdToBuiltinVarName.at(id) << value; - return bob.appendElements(vps.serialize(*this)).obj(); -} void Variables::seedVariablesWithLetParameters(ExpressionContext* const expCtx, const BSONObj letParams) { for (auto&& elem : letParams) { @@ -332,7 +326,7 @@ std::set<Variables::Id> VariablesParseState::getDefinedVariableIDs() const { return ids; } -BSONObj VariablesParseState::serialize(const Variables& vars) const { +BSONObj VariablesParseState::serializeUserVariables(const Variables& vars) const { auto bob = BSONObjBuilder{}; for (auto&& [var_name, id] : _variables) if (vars.hasValue(id)) |