summaryrefslogtreecommitdiff
path: root/src/mongo/db/commands/index_filter_commands.cpp
diff options
context:
space:
mode:
authorQingyang Chen <qingyang.chen@10gen.com>2015-06-16 16:16:12 -0400
committerQingyang Chen <qingyang.chen@10gen.com>2015-06-23 13:47:27 -0400
commitd674d15ee5cb573567d0683041c8049c8ee8cb21 (patch)
tree6d7eaccc12f35f05cd6a725a40cc3be650303e48 /src/mongo/db/commands/index_filter_commands.cpp
parent2ce8b867f1571d92370e5df1e5d10390167c485e (diff)
downloadmongo-d674d15ee5cb573567d0683041c8049c8ee8cb21.tar.gz
SERVER-16889 CanonicalQuery::canonicalize() return SW<unique_ptr<CQ>>
Diffstat (limited to 'src/mongo/db/commands/index_filter_commands.cpp')
-rw-r--r--src/mongo/db/commands/index_filter_commands.cpp27
1 files changed, 12 insertions, 15 deletions
diff --git a/src/mongo/db/commands/index_filter_commands.cpp b/src/mongo/db/commands/index_filter_commands.cpp
index 20783c5b244..0b6345ef06a 100644
--- a/src/mongo/db/commands/index_filter_commands.cpp
+++ b/src/mongo/db/commands/index_filter_commands.cpp
@@ -268,13 +268,12 @@ Status ClearFilters::clear(OperationContext* txn,
// - clear hints for single query shape when a query shape is described in the
// command arguments.
if (cmdObj.hasField("query")) {
- CanonicalQuery* cqRaw;
- Status status = PlanCacheCommand::canonicalize(txn, ns, cmdObj, &cqRaw);
- if (!status.isOK()) {
- return status;
+ auto statusWithCQ = PlanCacheCommand::canonicalize(txn, ns, cmdObj);
+ if (!statusWithCQ.isOK()) {
+ return statusWithCQ.getStatus();
}
- unique_ptr<CanonicalQuery> cq(cqRaw);
+ unique_ptr<CanonicalQuery> cq = std::move(statusWithCQ.getValue());
querySettings->removeAllowedIndices(planCache->computeKey(*cq));
// Remove entry from plan cache
@@ -315,11 +314,10 @@ Status ClearFilters::clear(OperationContext* txn,
invariant(entry);
// Create canonical query.
- CanonicalQuery* cqRaw;
- Status result = CanonicalQuery::canonicalize(
- ns, entry->query, entry->sort, entry->projection, &cqRaw, whereCallback);
- invariant(result.isOK());
- unique_ptr<CanonicalQuery> cq(cqRaw);
+ auto statusWithCQ = CanonicalQuery::canonicalize(
+ ns, entry->query, entry->sort, entry->projection, whereCallback);
+ invariant(statusWithCQ.isOK());
+ std::unique_ptr<CanonicalQuery> cq = std::move(statusWithCQ.getValue());
// Remove plan cache entry.
planCache->remove(*cq);
@@ -384,12 +382,11 @@ Status SetFilter::set(OperationContext* txn,
indexes.push_back(obj.getOwned());
}
- CanonicalQuery* cqRaw;
- Status status = PlanCacheCommand::canonicalize(txn, ns, cmdObj, &cqRaw);
- if (!status.isOK()) {
- return status;
+ auto statusWithCQ = PlanCacheCommand::canonicalize(txn, ns, cmdObj);
+ if (!statusWithCQ.isOK()) {
+ return statusWithCQ.getStatus();
}
- unique_ptr<CanonicalQuery> cq(cqRaw);
+ unique_ptr<CanonicalQuery> cq = std::move(statusWithCQ.getValue());
// Add allowed indices to query settings, overriding any previous entries.
querySettings->setAllowedIndices(*cq, planCache->computeKey(*cq), indexes);