diff options
author | Håvard Pettersen <havardpe@oath.com> | 2017-11-14 14:15:49 +0000 |
---|---|---|
committer | Håvard Pettersen <havardpe@oath.com> | 2017-11-14 14:15:49 +0000 |
commit | 7ac79b89486b537882894970922c521772eb3ad6 (patch) | |
tree | 8a677768be6c8f53dfa289d87c87ac56674e4f6c /searchlib | |
parent | 3c2a0964ff6b1caed437fba425c40467560b3c37 (diff) |
we need to keep all iterators to handle additional ranges
Diffstat (limited to 'searchlib')
-rw-r--r-- | searchlib/src/vespa/searchlib/queryeval/multisearch.cpp | 26 | ||||
-rw-r--r-- | searchlib/src/vespa/searchlib/queryeval/multisearch.h | 1 |
2 files changed, 5 insertions, 22 deletions
diff --git a/searchlib/src/vespa/searchlib/queryeval/multisearch.cpp b/searchlib/src/vespa/searchlib/queryeval/multisearch.cpp index 19d744dfd28..b63a54785a4 100644 --- a/searchlib/src/vespa/searchlib/queryeval/multisearch.cpp +++ b/searchlib/src/vespa/searchlib/queryeval/multisearch.cpp @@ -27,32 +27,16 @@ MultiSearch::remove(size_t index) void MultiSearch::doUnpack(uint32_t docid) { - size_t sz(_children.size()); - for (size_t i = 0; i < sz; ) { - if (__builtin_expect(_children[i]->getDocId() < docid, false)) { - _children[i]->doSeek(docid); - if (_children[i]->isAtEnd()) { - sz = deactivate(i); - continue; - } + for (SearchIterator *child: _children) { + if (__builtin_expect(child->getDocId() < docid, false)) { + child->doSeek(docid); } - if (__builtin_expect(_children[i]->getDocId() == docid, false)) { - _children[i]->doUnpack(docid); + if (__builtin_expect(child->getDocId() == docid, false)) { + child->doUnpack(docid); } - i++; } } -size_t -MultiSearch::deactivate(size_t idx) -{ - assert(idx < _children.size()); - delete _children[idx]; - _children[idx] = _children.back(); - _children.pop_back(); - return _children.size(); -} - MultiSearch::MultiSearch(const Children & children) : _children(children) { diff --git a/searchlib/src/vespa/searchlib/queryeval/multisearch.h b/searchlib/src/vespa/searchlib/queryeval/multisearch.h index 16bbd5d4ecc..d67f895ddb5 100644 --- a/searchlib/src/vespa/searchlib/queryeval/multisearch.h +++ b/searchlib/src/vespa/searchlib/queryeval/multisearch.h @@ -54,7 +54,6 @@ private: virtual void onInsert(size_t index) { (void) index; } bool isMultiSearch() const override { return true; } - size_t deactivate(size_t index); Children _children; }; |