diff options
author | Hari Khalsa <hkhalsa@10gen.com> | 2014-01-16 16:14:05 -0500 |
---|---|---|
committer | Hari Khalsa <hkhalsa@10gen.com> | 2014-01-21 13:04:51 -0500 |
commit | 5df691c9c829b6ef1666b41943e13e72c9a89520 (patch) | |
tree | f4d1884705263605987a8aa89a5a558a78ac38be /src/mongo/db/exec/working_set.cpp | |
parent | c9fc8a468e1fa9d6421ef35f5a23db0e0f014b4f (diff) | |
download | mongo-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.cpp | 19 |
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) { } |