summaryrefslogtreecommitdiff
path: root/src/mongo/db/commands/rename_collection_cmd.cpp
diff options
context:
space:
mode:
authorNick Zolnierz <nicholas.zolnierz@mongodb.com>2020-02-25 13:12:34 -0500
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2020-02-28 15:46:37 +0000
commit76e1e97f064016a86e56561a098d6dab8f5c7d21 (patch)
tree9818e576e78b8bc174d7d1d5f714956d79ea5466 /src/mongo/db/commands/rename_collection_cmd.cpp
parent887fe798e0a09546ffdbb39903b4992f5321b98f (diff)
downloadmongo-76e1e97f064016a86e56561a098d6dab8f5c7d21.tar.gz
SERVER-46264 Change the rename command so it is passed through IDL rather than manually constructed BSON
Diffstat (limited to 'src/mongo/db/commands/rename_collection_cmd.cpp')
-rw-r--r--src/mongo/db/commands/rename_collection_cmd.cpp23
1 files changed, 8 insertions, 15 deletions
diff --git a/src/mongo/db/commands/rename_collection_cmd.cpp b/src/mongo/db/commands/rename_collection_cmd.cpp
index 4778255072e..3226d38c550 100644
--- a/src/mongo/db/commands/rename_collection_cmd.cpp
+++ b/src/mongo/db/commands/rename_collection_cmd.cpp
@@ -37,6 +37,7 @@
#include "mongo/db/client.h"
#include "mongo/db/commands.h"
#include "mongo/db/commands/rename_collection.h"
+#include "mongo/db/commands/rename_collection_gen.h"
#include "mongo/db/db_raii.h"
#include "mongo/db/index/index_descriptor.h"
#include "mongo/db/namespace_string.h"
@@ -84,21 +85,13 @@ public:
const BSONObj& cmdObj,
string& errmsg,
BSONObjBuilder& result) {
- const auto sourceNsElt = cmdObj[getName()];
- const auto targetNsElt = cmdObj["to"];
-
- uassert(ErrorCodes::TypeMismatch,
- "'renameCollection' must be of type String",
- sourceNsElt.type() == BSONType::String);
- uassert(ErrorCodes::TypeMismatch,
- "'to' must be of type String",
- targetNsElt.type() == BSONType::String);
-
- const NamespaceString source(sourceNsElt.valueStringData());
- const NamespaceString target(targetNsElt.valueStringData());
- bool dropTarget = cmdObj["dropTarget"].trueValue();
- bool stayTemp = cmdObj["stayTemp"].trueValue();
- validateAndRunRenameCollection(opCtx, source, target, dropTarget, stayTemp);
+ auto renameRequest =
+ RenameCollectionCommand::parse(IDLParserErrorContext("renameCollection"), cmdObj);
+ validateAndRunRenameCollection(opCtx,
+ renameRequest.getCommandParameter(),
+ renameRequest.getTo(),
+ renameRequest.getDropTarget(),
+ renameRequest.getStayTemp());
return true;
}