diff options
author | Qingyang Chen <qingyang.chen@10gen.com> | 2015-06-16 16:16:12 -0400 |
---|---|---|
committer | Qingyang Chen <qingyang.chen@10gen.com> | 2015-06-23 13:47:27 -0400 |
commit | d674d15ee5cb573567d0683041c8049c8ee8cb21 (patch) | |
tree | 6d7eaccc12f35f05cd6a725a40cc3be650303e48 /src/mongo/db/commands/index_filter_commands.cpp | |
parent | 2ce8b867f1571d92370e5df1e5d10390167c485e (diff) | |
download | mongo-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.cpp | 27 |
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); |