diff options
author | Geert Bosch <geert@mongodb.com> | 2017-09-19 14:10:39 -0400 |
---|---|---|
committer | Geert Bosch <geert@mongodb.com> | 2017-09-21 11:27:15 -0400 |
commit | affde69fb41c8a76bbd80dab2df3b36b3efb0450 (patch) | |
tree | a793afb50f199e8f9aaad07bd74ef8cc61388d36 /src/mongo/db/commands | |
parent | f3bf7e7920a51df7100238a55c304ed7cd3aed1f (diff) | |
download | mongo-affde69fb41c8a76bbd80dab2df3b36b3efb0450.tar.gz |
SERVER-31159 Make count command support UUIDs
Diffstat (limited to 'src/mongo/db/commands')
-rw-r--r-- | src/mongo/db/commands/count_cmd.cpp | 14 | ||||
-rw-r--r-- | src/mongo/db/commands/list_indexes.cpp | 2 |
2 files changed, 11 insertions, 5 deletions
diff --git a/src/mongo/db/commands/count_cmd.cpp b/src/mongo/db/commands/count_cmd.cpp index 3f18b9056fe..9ce6c54675e 100644 --- a/src/mongo/db/commands/count_cmd.cpp +++ b/src/mongo/db/commands/count_cmd.cpp @@ -105,13 +105,16 @@ public: ExplainOptions::Verbosity verbosity, BSONObjBuilder* out) const { const bool isExplain = true; - auto request = CountRequest::parseFromBSON(dbname, cmdObj, isExplain); + Lock::DBLock dbLock(opCtx, dbname, MODE_IS); + auto nss = parseNsOrUUID(opCtx, dbname, cmdObj); + auto request = CountRequest::parseFromBSON(nss, cmdObj, isExplain); if (!request.isOK()) { return request.getStatus(); } // Acquire the db read lock. - AutoGetCollectionOrViewForReadCommand ctx(opCtx, request.getValue().getNs()); + AutoGetCollectionOrViewForReadCommand ctx( + opCtx, request.getValue().getNs(), std::move(dbLock)); Collection* collection = ctx.getCollection(); if (ctx.getView()) { @@ -160,12 +163,15 @@ public: const BSONObj& cmdObj, BSONObjBuilder& result) { const bool isExplain = false; - auto request = CountRequest::parseFromBSON(dbname, cmdObj, isExplain); + Lock::DBLock dbLock(opCtx, dbname, MODE_IS); + auto nss = parseNsOrUUID(opCtx, dbname, cmdObj); + auto request = CountRequest::parseFromBSON(nss, cmdObj, isExplain); if (!request.isOK()) { return appendCommandStatus(result, request.getStatus()); } - AutoGetCollectionOrViewForReadCommand ctx(opCtx, request.getValue().getNs()); + AutoGetCollectionOrViewForReadCommand ctx( + opCtx, request.getValue().getNs(), std::move(dbLock)); Collection* collection = ctx.getCollection(); if (ctx.getView()) { diff --git a/src/mongo/db/commands/list_indexes.cpp b/src/mongo/db/commands/list_indexes.cpp index 74b75cfeffa..75d79099c39 100644 --- a/src/mongo/db/commands/list_indexes.cpp +++ b/src/mongo/db/commands/list_indexes.cpp @@ -100,7 +100,7 @@ public: // Check for the listIndexes ActionType on the database, or find on system.indexes for pre // 3.0 systems. - const NamespaceString ns(parseNsCollectionRequired(dbname, cmdObj)); + const NamespaceString ns(parseNsOrUUID(client->getOperationContext(), dbname, cmdObj)); if (authzSession->isAuthorizedForActionsOnResource(ResourcePattern::forExactNamespace(ns), ActionType::listIndexes) || authzSession->isAuthorizedForActionsOnResource( |