summaryrefslogtreecommitdiff
path: root/src/mongo/db/update/object_replace_executor.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/db/update/object_replace_executor.cpp')
-rw-r--r--src/mongo/db/update/object_replace_executor.cpp17
1 files changed, 6 insertions, 11 deletions
diff --git a/src/mongo/db/update/object_replace_executor.cpp b/src/mongo/db/update/object_replace_executor.cpp
index 205b270a8ca..e2d9262e001 100644
--- a/src/mongo/db/update/object_replace_executor.cpp
+++ b/src/mongo/db/update/object_replace_executor.cpp
@@ -45,24 +45,19 @@ namespace {
constexpr StringData kIdFieldName = "_id"_sd;
} // namespace
-ObjectReplaceExecutor::ObjectReplaceExecutor(BSONObj replacement, bool bypassEmptyTsReplacement)
- : _replacementDoc(replacement.getOwned()),
- _containsId(false),
- _bypassEmptyTsReplacement(bypassEmptyTsReplacement) {
- // Check for the existence of the "_id" field, and if approrpriate replace all zero-valued
- // timestamps with the current time.
+ObjectReplaceExecutor::ObjectReplaceExecutor(BSONObj replacement)
+ : _replacementDoc(replacement.getOwned()), _containsId(false) {
+
+ // Replace all zero-valued timestamps with the current time and check for the existence of _id.
for (auto&& elem : _replacementDoc) {
+
// Do not change the _id field.
if (elem.fieldNameStringData() == kIdFieldName) {
_containsId = true;
continue;
}
- // For updates that originated from the oplog, we're required to apply the update
- // exactly as it was recorded (even if it contains zero-valued timestamps). Therefore,
- // we should only replace zero-valued timestamps with the current time when
- // '_bypassEmptyTsReplacement' is false.
- if (!_bypassEmptyTsReplacement && elem.type() == BSONType::bsonTimestamp) {
+ if (elem.type() == BSONType::bsonTimestamp) {
auto timestampView = DataView(const_cast<char*>(elem.value()));
// We don't need to do an endian-safe read here, because 0 is 0 either way.