From 3bd1d8bb96dae6c780ea451cc1dc60794188a69b Mon Sep 17 00:00:00 2001 From: David Storch Date: Fri, 6 Nov 2015 10:32:04 -0500 Subject: SERVER-21227 don't drop invalidated results in the MultiPlanRunner --- src/mongo/db/query/multi_plan_runner.cpp | 30 +++--------------------------- 1 file changed, 3 insertions(+), 27 deletions(-) diff --git a/src/mongo/db/query/multi_plan_runner.cpp b/src/mongo/db/query/multi_plan_runner.cpp index 002b3ebac62..e14d03cc984 100644 --- a/src/mongo/db/query/multi_plan_runner.cpp +++ b/src/mongo/db/query/multi_plan_runner.cpp @@ -149,35 +149,19 @@ namespace mongo { if (NULL != _bestPlan) { _bestPlan->invalidate(dl, type); for (list::iterator it = _alreadyProduced.begin(); - it != _alreadyProduced.end();) { + it != _alreadyProduced.end(); ++it) { WorkingSetMember* member = _bestPlan->getWorkingSet()->get(*it); if (member->hasLoc() && member->loc == dl) { - list::iterator next = it; - next++; WorkingSetCommon::fetchAndInvalidateLoc(member); - _bestPlan->getWorkingSet()->flagForReview(*it); - _alreadyProduced.erase(it); - it = next; - } - else { - it++; } } if (NULL != _backupPlan) { _backupPlan->invalidate(dl, type); for (list::iterator it = _backupAlreadyProduced.begin(); - it != _backupAlreadyProduced.end();) { + it != _backupAlreadyProduced.end(); ++it) { WorkingSetMember* member = _backupPlan->getWorkingSet()->get(*it); if (member->hasLoc() && member->loc == dl) { - list::iterator next = it; - next++; WorkingSetCommon::fetchAndInvalidateLoc(member); - _backupPlan->getWorkingSet()->flagForReview(*it); - _backupAlreadyProduced.erase(it); - it = next; - } - else { - it++; } } } @@ -186,18 +170,10 @@ namespace mongo { for (size_t i = 0; i < _candidates.size(); ++i) { _candidates[i].root->invalidate(dl, type); for (list::iterator it = _candidates[i].results.begin(); - it != _candidates[i].results.end();) { + it != _candidates[i].results.end(); ++it) { WorkingSetMember* member = _candidates[i].ws->get(*it); if (member->hasLoc() && member->loc == dl) { - list::iterator next = it; - next++; WorkingSetCommon::fetchAndInvalidateLoc(member); - _candidates[i].ws->flagForReview(*it); - _candidates[i].results.erase(it); - it = next; - } - else { - it++; } } } -- cgit v1.2.1