summaryrefslogtreecommitdiff
path: root/src/mongo/db/exec/working_set.cpp
diff options
context:
space:
mode:
authorHari Khalsa <hkhalsa@10gen.com>2014-01-16 16:14:05 -0500
committerHari Khalsa <hkhalsa@10gen.com>2014-01-21 13:04:51 -0500
commit5df691c9c829b6ef1666b41943e13e72c9a89520 (patch)
treef4d1884705263605987a8aa89a5a558a78ac38be /src/mongo/db/exec/working_set.cpp
parentc9fc8a468e1fa9d6421ef35f5a23db0e0f014b4f (diff)
downloadmongo-5df691c9c829b6ef1666b41943e13e72c9a89520.tar.gz
SERVER-12113 keep mutated docs in query results when it's sane to
Diffstat (limited to 'src/mongo/db/exec/working_set.cpp')
-rw-r--r--src/mongo/db/exec/working_set.cpp19
1 files changed, 6 insertions, 13 deletions
diff --git a/src/mongo/db/exec/working_set.cpp b/src/mongo/db/exec/working_set.cpp
index 4fe772eee0a..9db2c75093b 100644
--- a/src/mongo/db/exec/working_set.cpp
+++ b/src/mongo/db/exec/working_set.cpp
@@ -32,7 +32,7 @@
namespace mongo {
- WorkingSet::MemberHolder::MemberHolder() : flagged(false), member(NULL) { }
+ WorkingSet::MemberHolder::MemberHolder() : member(NULL) { }
WorkingSet::MemberHolder::~MemberHolder() {}
WorkingSet::WorkingSet() : _freeList(INVALID_ID) { }
@@ -76,23 +76,16 @@ namespace mongo {
void WorkingSet::flagForReview(const WorkingSetID& i) {
WorkingSetMember* member = get(i);
verify(WorkingSetMember::OWNED_OBJ == member->state);
- _data[i].flagged = true;
+ _flagged.insert(i);
}
- unordered_set<WorkingSetID> WorkingSet::getFlagged() const {
- // This is slow, but it is only for tests.
- unordered_set<WorkingSetID> out;
- for (size_t i = 0; i < _data.size(); i++) {
- if (_data[i].flagged) {
- out.insert(i);
- }
- }
- return out;
+ const unordered_set<WorkingSetID>& WorkingSet::getFlagged() const {
+ return _flagged;
}
bool WorkingSet::isFlagged(WorkingSetID id) const {
- verify(id < _data.size());
- return _data[id].flagged;
+ invariant(id < _data.size());
+ return _flagged.end() != _flagged.find(id);
}
WorkingSetMember::WorkingSetMember() : state(WorkingSetMember::INVALID) { }