[Improvement](runtimefilter) Build bloom filter according to the exact build size for IN_OR_BLOOM_FILTER (#20166)

* [Improvement](runtimefilter) Build bloom filter according to the exact build size for IN_OR_BLOOM_FILTER
This commit is contained in:
Gabriel
2023-05-30 12:55:30 +08:00
committed by GitHub
parent 945cb56fb6
commit c7b8c83a7f
2 changed files with 6 additions and 3 deletions

View File

@ -421,6 +421,7 @@ public:
_context.hybrid_set.reset(create_set(_column_return_type));
_context.bloom_filter_func.reset(create_bloom_filter(_column_return_type));
_context.bloom_filter_func->set_length(params->bloom_filter_size);
_context.bloom_filter_func->set_build_bf_exactly(params->build_bf_exactly);
return Status::OK();
}
case RuntimeFilterType::BITMAP_FILTER: {
@ -445,7 +446,8 @@ public:
}
Status init_bloom_filter(const size_t build_bf_cardinality) {
DCHECK(_filter_type == RuntimeFilterType::BLOOM_FILTER);
DCHECK(_filter_type == RuntimeFilterType::BLOOM_FILTER ||
_filter_type == RuntimeFilterType::IN_OR_BLOOM_FILTER);
return _context.bloom_filter_func->init_with_cardinality(build_bf_cardinality);
}
@ -1360,7 +1362,8 @@ Status IRuntimeFilter::init_with_desc(const TRuntimeFilterDesc* desc, const TQue
// 2. Do not have remote target (e.g. do not need to merge)
// 3. Bloom filter
params.build_bf_exactly = build_bf_exactly && !_has_remote_target &&
_runtime_filter_type == RuntimeFilterType::BLOOM_FILTER;
(_runtime_filter_type == RuntimeFilterType::BLOOM_FILTER ||
_runtime_filter_type == RuntimeFilterType::IN_OR_BLOOM_FILTER);
if (desc->__isset.bloom_filter_size_bytes) {
params.bloom_filter_size = desc->bloom_filter_size_bytes;
}

View File

@ -104,7 +104,7 @@ public:
runtime_filter->change_to_bloom_filter();
}
if (runtime_filter->type() == RuntimeFilterType::BLOOM_FILTER) {
if (runtime_filter->is_bloomfilter()) {
RETURN_IF_ERROR(runtime_filter->init_bloom_filter(build_bf_cardinality));
}