summaryrefslogtreecommitdiff
path: root/src/mongo/db/commands
diff options
context:
space:
mode:
authorGeert Bosch <geert@mongodb.com>2017-09-19 14:10:39 -0400
committerGeert Bosch <geert@mongodb.com>2017-09-21 11:27:15 -0400
commitaffde69fb41c8a76bbd80dab2df3b36b3efb0450 (patch)
treea793afb50f199e8f9aaad07bd74ef8cc61388d36 /src/mongo/db/commands
parentf3bf7e7920a51df7100238a55c304ed7cd3aed1f (diff)
downloadmongo-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.cpp14
-rw-r--r--src/mongo/db/commands/list_indexes.cpp2
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(