summaryrefslogtreecommitdiff
path: root/src/mongo/db/pipeline/variables.cpp
diff options
context:
space:
mode:
authorNicholas Zolnierz <nicholas.zolnierz@mongodb.com>2019-08-15 20:08:22 +0000
committerevergreen <evergreen@mongodb.com>2019-08-15 20:08:22 +0000
commitc0ca6049bad1bf918e46d83cddab134b7441abf7 (patch)
tree23380aabf54cf84939ef062611d652ba7ad21905 /src/mongo/db/pipeline/variables.cpp
parent7c8f6dcb7f0bf2e397f470e8bca1cc0185216cb4 (diff)
downloadmongo-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.cpp14
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) {