aboutsummaryrefslogtreecommitdiffstats
path: root/searchlib
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2022-08-15 15:46:04 +0200
committerGitHub <noreply@github.com>2022-08-15 15:46:04 +0200
commite4346cd4abe3f7ec8a7b7b1ad734fe67e66e3386 (patch)
tree2318446f62e8f391273ac925a45eb2dacf67ae77 /searchlib
parentc5f24b200ec24ac96897327baa9e3fef8d3e633f (diff)
parent2831803a3af7e8802fd34df881d74e39e6ad1e10 (diff)
Merge pull request #23651 from vespa-engine/balder/test-unpack-rebased
Balder/test unpack rebased
Diffstat (limited to 'searchlib')
-rw-r--r--searchlib/src/tests/queryeval/dot_product/dot_product_test.cpp12
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/dot_product_search.cpp8
-rw-r--r--searchlib/src/vespa/searchlib/test/initrange.cpp4
3 files changed, 15 insertions, 9 deletions
diff --git a/searchlib/src/tests/queryeval/dot_product/dot_product_test.cpp b/searchlib/src/tests/queryeval/dot_product/dot_product_test.cpp
index 77cc7920ea8..0fef721a6fa 100644
--- a/searchlib/src/tests/queryeval/dot_product/dot_product_test.cpp
+++ b/searchlib/src/tests/queryeval/dot_product/dot_product_test.cpp
@@ -263,8 +263,11 @@ TEST_F("test Eager Matching Children", MockFixture(5)) {
class IteratorChildrenVerifier : public search::test::IteratorChildrenVerifier {
private:
- SearchIterator::UP create(const std::vector<SearchIterator*> &children) const override {
- std::vector<fef::TermFieldMatchData*> no_child_match;
+ SearchIterator::UP
+ create(const std::vector<SearchIterator*> &children) const override {
+ // This is a pragmatic and dirty workaround to make IteratorVerifier test
+ // not fail on unpack when accessing child match weights
+ std::vector<fef::TermFieldMatchData*> no_child_match(children.size(), &_tfmd);
MatchData::UP no_match_data;
return DotProductSearch::create(children, _tfmd, false, no_child_match, _weights, std::move(no_match_data));
}
@@ -272,8 +275,9 @@ private:
class WeightIteratorChildrenVerifier : public search::test::DwaIteratorChildrenVerifier {
private:
- SearchIterator::UP create(std::vector<DocumentWeightIterator> && children) const override {
- return SearchIterator::UP(DotProductSearch::create(_tfmd, false, _weights, std::move(children)));
+ SearchIterator::UP
+ create(std::vector<DocumentWeightIterator> && children) const override {
+ return DotProductSearch::create(_tfmd, false, _weights, std::move(children));
}
};
diff --git a/searchlib/src/vespa/searchlib/queryeval/dot_product_search.cpp b/searchlib/src/vespa/searchlib/queryeval/dot_product_search.cpp
index 393140784b0..34cc343b16d 100644
--- a/searchlib/src/vespa/searchlib/queryeval/dot_product_search.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/dot_product_search.cpp
@@ -169,9 +169,9 @@ DotProductSearch::create(const std::vector<SearchIterator*> &children,
*childMatch[0], weights[0], std::move(md));
}
if (childMatch.size() < 128) {
- return SearchIterator::UP(new ArrayHeapImpl(tmd, field_is_filter, weights, SearchIteratorPack(children, childMatch, std::move(md))));
+ return std::make_unique<ArrayHeapImpl>(tmd, field_is_filter, weights, SearchIteratorPack(children, childMatch, std::move(md)));
}
- return SearchIterator::UP(new HeapImpl(tmd, field_is_filter, weights, SearchIteratorPack(children, childMatch, std::move(md))));
+ return std::make_unique<HeapImpl>(tmd, field_is_filter, weights, SearchIteratorPack(children, childMatch, std::move(md)));
}
//-----------------------------------------------------------------------------
@@ -186,9 +186,9 @@ DotProductSearch::create(TermFieldMatchData &tmd,
typedef DotProductSearchImpl<vespalib::LeftHeap, AttributeIteratorPack> HeapImpl;
if (iterators.size() < 128) {
- return SearchIterator::UP(new ArrayHeapImpl(tmd, field_is_filter, weights, AttributeIteratorPack(std::move(iterators))));
+ return std::make_unique<ArrayHeapImpl>(tmd, field_is_filter, weights, AttributeIteratorPack(std::move(iterators)));
}
- return SearchIterator::UP(new HeapImpl(tmd, field_is_filter, weights, AttributeIteratorPack(std::move(iterators))));
+ return std::make_unique<HeapImpl>(tmd, field_is_filter, weights, AttributeIteratorPack(std::move(iterators)));
}
//-----------------------------------------------------------------------------
diff --git a/searchlib/src/vespa/searchlib/test/initrange.cpp b/searchlib/src/vespa/searchlib/test/initrange.cpp
index 5154a8abb08..d082bfd4e78 100644
--- a/searchlib/src/vespa/searchlib/test/initrange.cpp
+++ b/searchlib/src/vespa/searchlib/test/initrange.cpp
@@ -72,7 +72,7 @@ InitRangeVerifier::InitRangeVerifier() :
}
}
-InitRangeVerifier::~InitRangeVerifier() { }
+InitRangeVerifier::~InitRangeVerifier() = default;
InitRangeVerifier::DocIds
InitRangeVerifier::invert(const DocIds & docIds, uint32_t docIdlimit)
@@ -173,6 +173,7 @@ InitRangeVerifier::searchRelaxed(SearchIterator & it, Range range)
for (uint32_t docid = range.first; docid < range.second; ++docid) {
if (it.seek(docid)) {
result.emplace_back(docid);
+ it.unpack(docid);
}
}
return result;
@@ -185,6 +186,7 @@ InitRangeVerifier::searchStrict(SearchIterator & it, Range range)
it.initRange(range.first, range.second);
for (uint32_t docId = it.seekFirst(range.first); docId < range.second; docId = it.seekNext(docId + 1)) {
result.push_back(docId);
+ it.unpack(docId);
}
return result;
}