summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKaloian Manassiev <kaloian.manassiev@mongodb.com>2016-03-14 17:49:35 -0400
committerKaloian Manassiev <kaloian.manassiev@mongodb.com>2016-03-15 09:39:27 -0400
commit643ef6752b12a9831cfd5e75e0795c3529b12389 (patch)
tree315816264eaf1a08bce7796d5c1e06b2d14f92e4
parent03918a5cd5314421c72a4aa83b35fff4951c4789 (diff)
downloadmongo-643ef6752b12a9831cfd5e75e0795c3529b12389.tar.gz
SERVER-23136 Count command should return InvalidNamespace instead of BadValue
-rw-r--r--src/mongo/db/query/count_request.cpp12
-rw-r--r--src/mongo/db/query/count_request.h2
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;