summaryrefslogtreecommitdiffstats
path: root/searchlib
diff options
context:
space:
mode:
authorTor Egge <Tor.Egge@online.no>2022-05-18 13:45:43 +0200
committerTor Egge <Tor.Egge@online.no>2022-05-18 13:45:43 +0200
commit945ed21906f8875736dfa547a11e8a124e1d0ef6 (patch)
treebe9eb47c1b0d3f55d376ee7129eab3332923606b /searchlib
parenta4dbfc43c7df534ee5b032204ef19a7b038d7e3e (diff)
Read committed doc id limit before getting reader bitvector from
growable bitvector.
Diffstat (limited to 'searchlib')
-rw-r--r--searchlib/src/vespa/searchlib/attribute/singleboolattribute.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/searchlib/src/vespa/searchlib/attribute/singleboolattribute.cpp b/searchlib/src/vespa/searchlib/attribute/singleboolattribute.cpp
index 46fd47014d3..b0765680f78 100644
--- a/searchlib/src/vespa/searchlib/attribute/singleboolattribute.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/singleboolattribute.cpp
@@ -104,6 +104,7 @@ namespace {
class BitVectorSearchContext : public attribute::SearchContext, public attribute::IPostingListSearchContext
{
private:
+ uint32_t _doc_id_limit;
const BitVector & _bv;
bool _invert;
bool _valid;
@@ -122,7 +123,7 @@ private:
}
public:
- BitVectorSearchContext(std::unique_ptr<QueryTermSimple> qTerm, const SingleBoolAttribute & bv);
+ BitVectorSearchContext(std::unique_ptr<QueryTermSimple> qTerm, const SingleBoolAttribute & attr);
std::unique_ptr<queryeval::SearchIterator>
createFilterIterator(fef::TermFieldMatchData * matchData, bool strict) override;
@@ -133,6 +134,7 @@ public:
BitVectorSearchContext::BitVectorSearchContext(std::unique_ptr<QueryTermSimple> qTerm, const SingleBoolAttribute & attr)
: SearchContext(attr),
+ _doc_id_limit(attr.getCommittedDocIdLimit()),
_bv(attr.getBitVector()),
_invert(false),
_valid(qTerm->isValid())
@@ -152,7 +154,7 @@ BitVectorSearchContext::createFilterIterator(fef::TermFieldMatchData * matchData
if (!valid()) {
return std::make_unique<queryeval::EmptySearch>();
}
- return BitVectorIterator::create(&_bv, _attr.getCommittedDocIdLimit(), *matchData, strict, _invert);
+ return BitVectorIterator::create(&_bv, _doc_id_limit, *matchData, strict, _invert);
}
void