diff options
author | Ian Boros <ian.boros@mongodb.com> | 2020-08-13 14:08:58 -0400 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2020-08-27 03:08:04 +0000 |
commit | 3a32dd0a25105ba547712190ff503a46e91f392e (patch) | |
tree | 3bf333229d495a35ffde62aa0ace0e312a720352 /src/mongo/db/query | |
parent | 6791200c0513187dc193895af70cc170db9afc78 (diff) | |
download | mongo-3a32dd0a25105ba547712190ff503a46e91f392e.tar.gz |
SERVER-50217 change auth op observer to handle $v:1 and $v:2 updates
This commit also removes an implicit constructor for write_ops::UpdateModification.
Diffstat (limited to 'src/mongo/db/query')
-rw-r--r-- | src/mongo/db/query/find_and_modify_request.cpp | 2 | ||||
-rw-r--r-- | src/mongo/db/query/find_and_modify_request_test.cpp | 65 |
2 files changed, 53 insertions, 14 deletions
diff --git a/src/mongo/db/query/find_and_modify_request.cpp b/src/mongo/db/query/find_and_modify_request.cpp index 582f4753d13..9f2a5e6d192 100644 --- a/src/mongo/db/query/find_and_modify_request.cpp +++ b/src/mongo/db/query/find_and_modify_request.cpp @@ -367,7 +367,7 @@ void FindAndModifyRequest::setQuery(BSONObj query) { _query = query.getOwned(); } void FindAndModifyRequest::setUpdateObj(BSONObj updateObj) { - _update.emplace(updateObj.getOwned()); + _update.emplace(write_ops::UpdateModification::parseFromClassicUpdate(updateObj.getOwned())); } void FindAndModifyRequest::setShouldReturnNew(bool shouldReturnNew) { diff --git a/src/mongo/db/query/find_and_modify_request_test.cpp b/src/mongo/db/query/find_and_modify_request_test.cpp index f9f01b82769..115e0e25178 100644 --- a/src/mongo/db/query/find_and_modify_request_test.cpp +++ b/src/mongo/db/query/find_and_modify_request_test.cpp @@ -41,7 +41,10 @@ namespace { TEST(FindAndModifyRequest, BasicUpdate) { const BSONObj query(BSON("x" << 1)); const BSONObj update(BSON("y" << 1)); - auto request = FindAndModifyRequest::makeUpdate(NamespaceString("test.user"), query, update); + auto request = FindAndModifyRequest::makeUpdate( + NamespaceString("test.user"), + query, + write_ops::UpdateModification::parseFromClassicUpdate(update)); BSONObj expectedObj(fromjson(R"json({ findAndModify: 'user', @@ -71,7 +74,10 @@ TEST(FindAndModifyRequest, PipelineUpdate) { TEST(FindAndModifyRequest, UpdateWithUpsert) { const BSONObj query(BSON("x" << 1)); const BSONObj update(BSON("y" << 1)); - auto request = FindAndModifyRequest::makeUpdate(NamespaceString("test.user"), query, update); + auto request = FindAndModifyRequest::makeUpdate( + NamespaceString("test.user"), + query, + write_ops::UpdateModification::parseFromClassicUpdate(update)); request.setUpsert(true); BSONObj expectedObj(fromjson(R"json({ @@ -87,7 +93,10 @@ TEST(FindAndModifyRequest, UpdateWithUpsert) { TEST(FindAndModifyRequest, UpdateWithUpsertFalse) { const BSONObj query(BSON("x" << 1)); const BSONObj update(BSON("y" << 1)); - auto request = FindAndModifyRequest::makeUpdate(NamespaceString("test.user"), query, update); + auto request = FindAndModifyRequest::makeUpdate( + NamespaceString("test.user"), + query, + write_ops::UpdateModification::parseFromClassicUpdate(update)); request.setUpsert(false); BSONObj expectedObj(fromjson(R"json({ @@ -104,7 +113,10 @@ TEST(FindAndModifyRequest, UpdateWithProjection) { const BSONObj update(BSON("y" << 1)); const BSONObj field(BSON("z" << 1)); - auto request = FindAndModifyRequest::makeUpdate(NamespaceString("test.user"), query, update); + auto request = FindAndModifyRequest::makeUpdate( + NamespaceString("test.user"), + query, + write_ops::UpdateModification::parseFromClassicUpdate(update)); request.setFieldProjection(field); BSONObj expectedObj(fromjson(R"json({ @@ -121,7 +133,10 @@ TEST(FindAndModifyRequest, UpdateWithNewTrue) { const BSONObj query(BSON("x" << 1)); const BSONObj update(BSON("y" << 1)); - auto request = FindAndModifyRequest::makeUpdate(NamespaceString("test.user"), query, update); + auto request = FindAndModifyRequest::makeUpdate( + NamespaceString("test.user"), + query, + write_ops::UpdateModification::parseFromClassicUpdate(update)); request.setShouldReturnNew(true); BSONObj expectedObj(fromjson(R"json({ @@ -138,7 +153,10 @@ TEST(FindAndModifyRequest, UpdateWithNewFalse) { const BSONObj query(BSON("x" << 1)); const BSONObj update(BSON("y" << 1)); - auto request = FindAndModifyRequest::makeUpdate(NamespaceString("test.user"), query, update); + auto request = FindAndModifyRequest::makeUpdate( + NamespaceString("test.user"), + query, + write_ops::UpdateModification::parseFromClassicUpdate(update)); request.setShouldReturnNew(false); BSONObj expectedObj(fromjson(R"json({ @@ -155,7 +173,10 @@ TEST(FindAndModifyRequest, UpdateWithSort) { const BSONObj update(BSON("y" << 1)); const BSONObj sort(BSON("z" << -1)); - auto request = FindAndModifyRequest::makeUpdate(NamespaceString("test.user"), query, update); + auto request = FindAndModifyRequest::makeUpdate( + NamespaceString("test.user"), + query, + write_ops::UpdateModification::parseFromClassicUpdate(update)); request.setSort(sort); BSONObj expectedObj(fromjson(R"json({ @@ -173,7 +194,10 @@ TEST(FindAndModifyRequest, UpdateWithHint) { const BSONObj update(BSON("y" << 1)); const BSONObj hint(BSON("z" << -1)); - auto request = FindAndModifyRequest::makeUpdate(NamespaceString("test.user"), query, update); + auto request = FindAndModifyRequest::makeUpdate( + NamespaceString("test.user"), + query, + write_ops::UpdateModification::parseFromClassicUpdate(update)); request.setHint(hint); BSONObj expectedObj(fromjson(R"json({ @@ -192,7 +216,10 @@ TEST(FindAndModifyRequest, UpdateWithCollation) { const BSONObj collation(BSON("locale" << "en_US")); - auto request = FindAndModifyRequest::makeUpdate(NamespaceString("test.user"), query, update); + auto request = FindAndModifyRequest::makeUpdate( + NamespaceString("test.user"), + query, + write_ops::UpdateModification::parseFromClassicUpdate(update)); request.setCollation(collation); BSONObj expectedObj(fromjson(R"json({ @@ -210,7 +237,10 @@ TEST(FindAndModifyRequest, UpdateWithArrayFilters) { const BSONObj update(BSON("y" << 1)); const std::vector<BSONObj> arrayFilters{BSON("i" << 0)}; - auto request = FindAndModifyRequest::makeUpdate(NamespaceString("test.user"), query, update); + auto request = FindAndModifyRequest::makeUpdate( + NamespaceString("test.user"), + query, + write_ops::UpdateModification::parseFromClassicUpdate(update)); request.setArrayFilters(arrayFilters); BSONObj expectedObj(fromjson(R"json({ @@ -228,7 +258,10 @@ TEST(FindAndModifyRequest, UpdateWithWriteConcern) { const BSONObj update(BSON("y" << 1)); const WriteConcernOptions writeConcern(2, WriteConcernOptions::SyncMode::FSYNC, 150); - auto request = FindAndModifyRequest::makeUpdate(NamespaceString("test.user"), query, update); + auto request = FindAndModifyRequest::makeUpdate( + NamespaceString("test.user"), + query, + write_ops::UpdateModification::parseFromClassicUpdate(update)); request.setWriteConcern(writeConcern); BSONObj expectedObj(fromjson(R"json({ @@ -245,7 +278,10 @@ TEST(FindAndModifyRequest, UpdateWithRuntimeConstants) { const BSONObj query(BSON("x" << 1)); const BSONObj update(BSON("y" << 1)); - auto request = FindAndModifyRequest::makeUpdate(NamespaceString("test.user"), query, update); + auto request = FindAndModifyRequest::makeUpdate( + NamespaceString("test.user"), + query, + write_ops::UpdateModification::parseFromClassicUpdate(update)); request.setRuntimeConstants({Date_t(), Timestamp(1, 0)}); BSONObj expectedObj(fromjson(R"json({ @@ -273,7 +309,10 @@ TEST(FindAndModifyRequest, UpdateWithFullSpec) { const WriteConcernOptions writeConcern(2, WriteConcernOptions::SyncMode::FSYNC, 150); auto rtc = RuntimeConstants{Date_t(), Timestamp(1, 0)}; - auto request = FindAndModifyRequest::makeUpdate(NamespaceString("test.user"), query, update); + auto request = FindAndModifyRequest::makeUpdate( + NamespaceString("test.user"), + query, + write_ops::UpdateModification::parseFromClassicUpdate(update)); request.setFieldProjection(field); request.setShouldReturnNew(true); request.setSort(sort); |