diff options
author | Tess Avitabile <tess.avitabile@mongodb.com> | 2017-09-14 16:40:46 -0400 |
---|---|---|
committer | Tess Avitabile <tess.avitabile@mongodb.com> | 2017-09-29 09:30:56 -0400 |
commit | e0a505e2a8bfe59d8bdfc4e5a25aef4861d58fcf (patch) | |
tree | 237c46d1e4fd1080ac58b890485fb6197d53484c /src/mongo/db/auth/authz_manager_external_state_mock.cpp | |
parent | 026b5f6f38c883c48d063ac8ee736f7330227281 (diff) | |
download | mongo-e0a505e2a8bfe59d8bdfc4e5a25aef4861d58fcf.tar.gz |
SERVER-30731 MatchExpressionParser::parse() should require an ExpressionContext
Diffstat (limited to 'src/mongo/db/auth/authz_manager_external_state_mock.cpp')
-rw-r--r-- | src/mongo/db/auth/authz_manager_external_state_mock.cpp | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/src/mongo/db/auth/authz_manager_external_state_mock.cpp b/src/mongo/db/auth/authz_manager_external_state_mock.cpp index ca77d4184a7..fbf8a3b2251 100644 --- a/src/mongo/db/auth/authz_manager_external_state_mock.cpp +++ b/src/mongo/db/auth/authz_manager_external_state_mock.cpp @@ -112,7 +112,7 @@ Status AuthzManagerExternalStateMock::findOne(OperationContext* opCtx, const BSONObj& query, BSONObj* result) { BSONObjCollection::iterator iter; - Status status = _findOneIter(collectionName, query, &iter); + Status status = _findOneIter(opCtx, collectionName, query, &iter); if (!status.isOK()) return status; *result = iter->copy(); @@ -126,7 +126,7 @@ Status AuthzManagerExternalStateMock::query( const BSONObj&, const stdx::function<void(const BSONObj&)>& resultProcessor) { std::vector<BSONObjCollection::iterator> iterVector; - Status status = _queryVector(collectionName, query, &iterVector); + Status status = _queryVector(opCtx, collectionName, query, &iterVector); if (!status.isOK()) { return status; } @@ -177,7 +177,9 @@ Status AuthzManagerExternalStateMock::updateOne(OperationContext* opCtx, bool upsert, const BSONObj& writeConcern) { namespace mmb = mutablebson; - UpdateDriver::Options updateOptions; + const CollatorInterface* collator = nullptr; + boost::intrusive_ptr<ExpressionContext> expCtx(new ExpressionContext(opCtx, collator)); + UpdateDriver::Options updateOptions(std::move(expCtx)); UpdateDriver driver(updateOptions); std::map<StringData, std::unique_ptr<ExpressionWithPlaceholder>> arrayFilters; Status status = driver.parse(updatePattern, arrayFilters); @@ -185,7 +187,7 @@ Status AuthzManagerExternalStateMock::updateOne(OperationContext* opCtx, return status; BSONObjCollection::iterator iter; - status = _findOneIter(collectionName, query, &iter); + status = _findOneIter(opCtx, collectionName, query, &iter); mmb::Document document; if (status.isOK()) { document.reset(*iter, mmb::Document::kInPlaceDisabled); @@ -257,7 +259,7 @@ Status AuthzManagerExternalStateMock::remove(OperationContext* opCtx, int* numRemoved) { int n = 0; BSONObjCollection::iterator iter; - while (_findOneIter(collectionName, query, &iter).isOK()) { + while (_findOneIter(opCtx, collectionName, query, &iter).isOK()) { BSONObj idQuery = (*iter)["_id"].wrap(); _documents[collectionName].erase(iter); ++n; @@ -275,11 +277,12 @@ std::vector<BSONObj> AuthzManagerExternalStateMock::getCollectionContents( return mapFindWithDefault(_documents, collectionName, std::vector<BSONObj>()); } -Status AuthzManagerExternalStateMock::_findOneIter(const NamespaceString& collectionName, +Status AuthzManagerExternalStateMock::_findOneIter(OperationContext* opCtx, + const NamespaceString& collectionName, const BSONObj& query, BSONObjCollection::iterator* result) { std::vector<BSONObjCollection::iterator> iterVector; - Status status = _queryVector(collectionName, query, &iterVector); + Status status = _queryVector(opCtx, collectionName, query, &iterVector); if (!status.isOK()) { return status; } @@ -291,11 +294,13 @@ Status AuthzManagerExternalStateMock::_findOneIter(const NamespaceString& collec } Status AuthzManagerExternalStateMock::_queryVector( + OperationContext* opCtx, const NamespaceString& collectionName, const BSONObj& query, std::vector<BSONObjCollection::iterator>* result) { - CollatorInterface* collator = nullptr; - StatusWithMatchExpression parseResult = MatchExpressionParser::parse(query, collator); + const CollatorInterface* collator = nullptr; + boost::intrusive_ptr<ExpressionContext> expCtx(new ExpressionContext(opCtx, collator)); + StatusWithMatchExpression parseResult = MatchExpressionParser::parse(query, std::move(expCtx)); if (!parseResult.isOK()) { return parseResult.getStatus(); } |