diff options
author | Nicholas Zolnierz <nicholas.zolnierz@mongodb.com> | 2019-08-15 20:08:22 +0000 |
---|---|---|
committer | evergreen <evergreen@mongodb.com> | 2019-08-15 20:08:22 +0000 |
commit | c0ca6049bad1bf918e46d83cddab134b7441abf7 (patch) | |
tree | 23380aabf54cf84939ef062611d652ba7ad21905 /src/mongo/db/pipeline/variables.cpp | |
parent | 7c8f6dcb7f0bf2e397f470e8bca1cc0185216cb4 (diff) | |
download | mongo-c0ca6049bad1bf918e46d83cddab134b7441abf7.tar.gz |
SERVER-42684 Add support for 'scope' RunTimeConstant
Diffstat (limited to 'src/mongo/db/pipeline/variables.cpp')
-rw-r--r-- | src/mongo/db/pipeline/variables.cpp | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/src/mongo/db/pipeline/variables.cpp b/src/mongo/db/pipeline/variables.cpp index 8a37fecc10f..95caa4769a8 100644 --- a/src/mongo/db/pipeline/variables.cpp +++ b/src/mongo/db/pipeline/variables.cpp @@ -40,8 +40,11 @@ namespace mongo { constexpr Variables::Id Variables::kRootId; constexpr Variables::Id Variables::kRemoveId; -const StringMap<Variables::Id> Variables::kBuiltinVarNameToId = { - {"ROOT", kRootId}, {"REMOVE", kRemoveId}, {"NOW", kNowId}, {"CLUSTER_TIME", kClusterTimeId}}; +const StringMap<Variables::Id> Variables::kBuiltinVarNameToId = {{"ROOT", kRootId}, + {"REMOVE", kRemoveId}, + {"NOW", kNowId}, + {"CLUSTER_TIME", kClusterTimeId}, + {"JS_SCOPE", kJsScopeId}}; void Variables::uassertValidNameForUserWrite(StringData varName) { // System variables users allowed to write to (currently just one) @@ -180,6 +183,9 @@ RuntimeConstants Variables::getRuntimeConstants() const { if (auto it = _runtimeConstants.find(kClusterTimeId); it != _runtimeConstants.end()) { constants.setClusterTime(it->second.getTimestamp()); } + if (auto it = _runtimeConstants.find(kJsScopeId); it != _runtimeConstants.end()) { + constants.setJsScope(it->second.getDocument().toBson()); + } return constants; } @@ -192,6 +198,10 @@ void Variables::setRuntimeConstants(const RuntimeConstants& constants) { if (!constants.getClusterTime().isNull()) { _runtimeConstants[kClusterTimeId] = Value(constants.getClusterTime()); } + + if (constants.getJsScope()) { + _runtimeConstants[kJsScopeId] = Value(constants.getJsScope().get()); + } } void Variables::setDefaultRuntimeConstants(OperationContext* opCtx) { |