[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:
@ -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;
|
||||
}
|
||||
|
||||
@ -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));
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user