summaryrefslogtreecommitdiffstats
path: root/searchlib
diff options
context:
space:
mode:
authorHåvard Pettersen <havardpe@oath.com>2017-11-14 14:15:49 +0000
committerHåvard Pettersen <havardpe@oath.com>2017-11-14 14:15:49 +0000
commit7ac79b89486b537882894970922c521772eb3ad6 (patch)
tree8a677768be6c8f53dfa289d87c87ac56674e4f6c /searchlib
parent3c2a0964ff6b1caed437fba425c40467560b3c37 (diff)
we need to keep all iterators to handle additional ranges
Diffstat (limited to 'searchlib')
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/multisearch.cpp26
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/multisearch.h1
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;
};