From 46ca012e2b57bc8c23bbd21febf06963be2fd3a1 Mon Sep 17 00:00:00 2001 From: EmmyMiao87 <522274284@qq.com> Date: Fri, 31 Dec 2021 16:05:33 +0800 Subject: [PATCH] [fix](bloom-filter) Fix error when handle empty string in bloom filter (#7448) --- be/src/exprs/bloomfilter_predicate.h | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/be/src/exprs/bloomfilter_predicate.h b/be/src/exprs/bloomfilter_predicate.h index e90f02d4f1..a6b7f83636 100644 --- a/be/src/exprs/bloomfilter_predicate.h +++ b/be/src/exprs/bloomfilter_predicate.h @@ -206,11 +206,12 @@ struct StringFindOp { template struct FixedStringFindOp : public StringFindOp { ALWAYS_INLINE bool find_olap_engine(const BloomFilterAdaptor& bloom_filter, - const void* data) const { - const auto* value = reinterpret_cast(data); - auto end_ptr = value->ptr + value->len - 1; - while (end_ptr > value->ptr && *end_ptr == '\0') --end_ptr; - return bloom_filter.test_bytes(value->ptr, end_ptr - value->ptr + 1); + const void* input_data) const { + const auto* value = reinterpret_cast(input_data); + int64_t size = value->len; + char* data = value->ptr; + while (size > 0 && data[size - 1] == '\0') size--; + return bloom_filter.test_bytes(value->ptr, size); } };