enhance: Make hasMoreResult accurate when hit number larger than limit (#33609)

See also milvus-io/milvus-sdk-go#756

Signed-off-by: Congqi Xia <congqi.xia@zilliz.com>
This commit is contained in:
congqixia 2024-06-05 11:51:51 +08:00 committed by GitHub
parent 4ec7cbcae7
commit 597f4c5e03
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 4 additions and 3 deletions

View File

@ -259,6 +259,7 @@ class OffsetOrderedArray : public OffsetMap {
if (!false_filtered_out) {
cnt = size - bitset.count();
}
auto more_hit_than_limit = cnt > limit;
limit = std::min(limit, cnt);
std::vector<int64_t> seg_offsets;
seg_offsets.reserve(limit);
@ -275,7 +276,7 @@ class OffsetOrderedArray : public OffsetMap {
hit_num++;
}
}
return {seg_offsets, it != array_.end()};
return {seg_offsets, more_hit_than_limit && it != array_.end()};
}
void

View File

@ -130,10 +130,10 @@ TYPED_TEST_P(TypedOffsetOrderedArrayTest, find_first) {
none.reset();
auto result_pair = this->map_.find_first(num / 2, none, true);
ASSERT_EQ(0, result_pair.first.size());
ASSERT_TRUE(result_pair.second);
ASSERT_FALSE(result_pair.second);
result_pair = this->map_.find_first(NoLimit, none, true);
ASSERT_EQ(0, result_pair.first.size());
ASSERT_TRUE(result_pair.second);
ASSERT_FALSE(result_pair.second);
}
}