diff options
author | A. Jesse Jiryu Davis <jesse@mongodb.com> | 2021-02-19 15:45:48 -0500 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2021-02-20 01:24:41 +0000 |
commit | 8f0d629e42b2e53505f04680d1285cd06bb32f4b (patch) | |
tree | 152c82a5b754ab14f685604931169230ca3980c6 /src | |
parent | 8973f963f3f600f172e59fadc25b9c6c5d97701f (diff) | |
download | mongo-8f0d629e42b2e53505f04680d1285cd06bb32f4b.tar.gz |
SERVER-52542 Improve dropIndexes code with visit_helper
Diffstat (limited to 'src')
-rw-r--r-- | src/mongo/db/catalog/drop_indexes.cpp | 34 |
1 files changed, 12 insertions, 22 deletions
diff --git a/src/mongo/db/catalog/drop_indexes.cpp b/src/mongo/db/catalog/drop_indexes.cpp index 9044d3ee426..c3f878245c9 100644 --- a/src/mongo/db/catalog/drop_indexes.cpp +++ b/src/mongo/db/catalog/drop_indexes.cpp @@ -50,6 +50,7 @@ #include "mongo/db/service_context.h" #include "mongo/db/views/view_catalog.h" #include "mongo/logv2/log.h" +#include "mongo/util/visit_helper.h" namespace mongo { namespace { @@ -147,23 +148,19 @@ StatusWith<std::vector<std::string>> getIndexNames(OperationContext* opCtx, invariant(opCtx->lockState()->isCollectionLockedForMode(collection->ns(), MODE_IX)); return stdx::visit( - [&](auto&& arg) -> StatusWith<std::vector<std::string>> { - using T = std::decay_t<decltype(arg)>; - if constexpr (std::is_same_v<T, std::string>) { - return {{arg}}; - } else if constexpr (std::is_same_v<T, std::vector<std::string>>) { + visit_helper::Overloaded{ + [](const std::string& arg) -> StatusWith<std::vector<std::string>> { return {{arg}}; }, + [](const std::vector<std::string>& arg) -> StatusWith<std::vector<std::string>> { return arg; - } else if constexpr (std::is_same_v<T, BSONObj>) { + }, + [&](const BSONObj& arg) -> StatusWith<std::vector<std::string>> { auto swDescriptor = getDescriptorByKeyPattern(opCtx, collection->getIndexCatalog(), arg); if (!swDescriptor.isOK()) { return swDescriptor.getStatus(); } return {{swDescriptor.getValue()->indexName()}}; - } else { - MONGO_UNREACHABLE; - } - }, + }}, index); } @@ -328,18 +325,11 @@ DropIndexesReply dropIndexes(OperationContext* opCtx, "namespace"_attr = nss, "uuid"_attr = collectionUUID, "indexes"_attr = stdx::visit( - [](auto&& arg) -> std::string { - using T = std::decay_t<decltype(arg)>; - if constexpr (std::is_same_v<T, std::string>) { - return arg; - } else if constexpr (std::is_same_v<T, std::vector<std::string>>) { - return boost::algorithm::join(arg, ","); - } else if constexpr (std::is_same_v<T, BSONObj>) { - return arg.toString(); - } else { - MONGO_UNREACHABLE; - } - }, + visit_helper::Overloaded{[](const std::string& arg) { return arg; }, + [](const std::vector<std::string>& arg) { + return boost::algorithm::join(arg, ","); + }, + [](const BSONObj& arg) { return arg.toString(); }}, index)); } |