diff options
author | Nick Zolnierz <nicholas.zolnierz@mongodb.com> | 2020-02-25 13:12:34 -0500 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2020-02-28 15:46:37 +0000 |
commit | 76e1e97f064016a86e56561a098d6dab8f5c7d21 (patch) | |
tree | 9818e576e78b8bc174d7d1d5f714956d79ea5466 /src/mongo/db/commands/rename_collection_cmd.cpp | |
parent | 887fe798e0a09546ffdbb39903b4992f5321b98f (diff) | |
download | mongo-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.cpp | 23 |
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; } |