diff options
author | Kaloian Manassiev <kaloian.manassiev@mongodb.com> | 2016-03-14 17:49:35 -0400 |
---|---|---|
committer | Kaloian Manassiev <kaloian.manassiev@mongodb.com> | 2016-03-15 09:39:27 -0400 |
commit | 643ef6752b12a9831cfd5e75e0795c3529b12389 (patch) | |
tree | 315816264eaf1a08bce7796d5c1e06b2d14f92e4 | |
parent | 03918a5cd5314421c72a4aa83b35fff4951c4789 (diff) | |
download | mongo-643ef6752b12a9831cfd5e75e0795c3529b12389.tar.gz |
SERVER-23136 Count command should return InvalidNamespace instead of BadValue
-rw-r--r-- | src/mongo/db/query/count_request.cpp | 12 | ||||
-rw-r--r-- | src/mongo/db/query/count_request.h | 2 |
2 files changed, 7 insertions, 7 deletions
diff --git a/src/mongo/db/query/count_request.cpp b/src/mongo/db/query/count_request.cpp index ad27d36c376..fec461455df 100644 --- a/src/mongo/db/query/count_request.cpp +++ b/src/mongo/db/query/count_request.cpp @@ -43,8 +43,8 @@ const char kHintField[] = "hint"; } // namespace -CountRequest::CountRequest(const std::string& fullNs, BSONObj query) - : _nss(fullNs), _query(query.getOwned()) {} +CountRequest::CountRequest(NamespaceString nss, BSONObj query) + : _nss(std::move(nss)), _query(query.getOwned()) {} void CountRequest::setHint(BSONObj hint) { _hint = hint.getOwned(); @@ -76,13 +76,13 @@ StatusWith<CountRequest> CountRequest::parseFromBSON(const std::string& dbname, BSONElement firstElt = cmdObj.firstElement(); const std::string coll = (firstElt.type() == BSONType::String) ? firstElt.str() : ""; - const std::string ns = str::stream() << dbname << "." << coll; - if (!nsIsFull(ns)) { - return Status(ErrorCodes::BadValue, "invalid collection name"); + NamespaceString nss(dbname, coll); + if (!nss.isValid()) { + return Status(ErrorCodes::InvalidNamespace, "invalid collection name"); } // We don't validate that "query" is a nested object due to SERVER-15456. - CountRequest request(ns, cmdObj.getObjectField(kQueryField)); + CountRequest request(std::move(nss), cmdObj.getObjectField(kQueryField)); // Limit if (cmdObj[kLimitField].isNumber()) { diff --git a/src/mongo/db/query/count_request.h b/src/mongo/db/query/count_request.h index 781b06dd91f..5ea4c1b08d7 100644 --- a/src/mongo/db/query/count_request.h +++ b/src/mongo/db/query/count_request.h @@ -48,7 +48,7 @@ public: /** * Construct an empty request. */ - CountRequest(const std::string& fullNs, BSONObj query); + CountRequest(NamespaceString nss, BSONObj query); const NamespaceString& getNs() const { return _nss; |