summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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());