summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthew Russotto <matthew.russotto@10gen.com>2018-07-25 16:09:55 -0400
committerMatthew Russotto <matthew.russotto@10gen.com>2018-08-08 20:14:43 -0400
commit0a28a3d8bf39436e02e0325dc5c02f4ef19abd20 (patch)
tree0839c1c734f6e7e9861689210b7bbbeac7ff94ed
parent08f41abf93060ab4e62797933deba77860132c18 (diff)
downloadmongo-0a28a3d8bf39436e02e0325dc5c02f4ef19abd20.tar.gz
SERVER-36093 QueryRequest should have a single constructor that takes a NamespaceStringOrUUID
-rw-r--r--src/mongo/db/query/query_request.cpp6
-rw-r--r--src/mongo/db/query/query_request.h4
-rw-r--r--src/mongo/db/query/query_request_test.cpp2
3 files changed, 5 insertions, 7 deletions
diff --git a/src/mongo/db/query/query_request.cpp b/src/mongo/db/query/query_request.cpp
index 6f21e814c60..55dc81482e5 100644
--- a/src/mongo/db/query/query_request.cpp
+++ b/src/mongo/db/query/query_request.cpp
@@ -108,8 +108,8 @@ const char kNaturalSortField[] = "$natural";
const char QueryRequest::kFindCommandName[] = "find";
const char QueryRequest::kShardVersionField[] = "shardVersion";
-QueryRequest::QueryRequest(NamespaceString nss) : _nss(std::move(nss)) {}
-QueryRequest::QueryRequest(CollectionUUID uuid) : _uuid(std::move(uuid)) {}
+QueryRequest::QueryRequest(NamespaceStringOrUUID nssOrUuid)
+ : _nss(nssOrUuid.nss() ? *nssOrUuid.nss() : NamespaceString()), _uuid(nssOrUuid.uuid()) {}
void QueryRequest::refreshNSS(OperationContext* opCtx) {
if (_uuid) {
@@ -394,7 +394,7 @@ StatusWith<unique_ptr<QueryRequest>> QueryRequest::makeFromFindCommand(Namespace
BSONElement first = cmdObj.firstElement();
if (first.type() == BinData && first.binDataType() == BinDataType::newUUID) {
auto uuid = uassertStatusOK(UUID::parse(first));
- auto qr = stdx::make_unique<QueryRequest>(uuid);
+ auto qr = stdx::make_unique<QueryRequest>(NamespaceStringOrUUID(nss.db().toString(), uuid));
return parseFromFindCommand(std::move(qr), cmdObj, isExplain);
} else {
auto qr = stdx::make_unique<QueryRequest>(nss);
diff --git a/src/mongo/db/query/query_request.h b/src/mongo/db/query/query_request.h
index 12003a95c22..ccf612b89ae 100644
--- a/src/mongo/db/query/query_request.h
+++ b/src/mongo/db/query/query_request.h
@@ -53,9 +53,7 @@ public:
static const char kFindCommandName[];
static const char kShardVersionField[];
- QueryRequest(NamespaceString nss);
-
- QueryRequest(CollectionUUID uuid);
+ explicit QueryRequest(NamespaceStringOrUUID nss);
/**
* Returns a non-OK status if any property of the QR has a bad value (e.g. a negative skip
diff --git a/src/mongo/db/query/query_request_test.cpp b/src/mongo/db/query/query_request_test.cpp
index d52631051e5..1e3822b10ba 100644
--- a/src/mongo/db/query/query_request_test.cpp
+++ b/src/mongo/db/query/query_request_test.cpp
@@ -1332,7 +1332,7 @@ TEST_F(QueryRequestTest, ParseFromUUID) {
Collection coll(stdx::make_unique<CollectionMock>(nss));
UUIDCatalog& catalog = UUIDCatalog::get(opCtx.get());
catalog.onCreateCollection(opCtx.get(), &coll, uuid);
- QueryRequest qr(uuid);
+ QueryRequest qr(NamespaceStringOrUUID("test", uuid));
// Ensure a call to refreshNSS succeeds.
qr.refreshNSS(opCtx.get());
ASSERT_EQ(nss, qr.nss());