This is an automated email from the ASF dual-hosted git repository.
gabriellee pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push:
new c7b8c83a7f [Improvement](runtimefilter) Build bloom filter according
to the exact build size for IN_OR_BLOOM_FILTER (#20166)
c7b8c83a7f is described below
commit c7b8c83a7fa87ddbf12b2dae7bfd4015d99f8d5b
Author: Gabriel <[email protected]>
AuthorDate: Tue May 30 12:55:30 2023 +0800
[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
---
be/src/exprs/runtime_filter.cpp | 7 +++++--
be/src/exprs/runtime_filter_slots.h | 2 +-
2 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/be/src/exprs/runtime_filter.cpp b/be/src/exprs/runtime_filter.cpp
index f8a3ffc8d4..499c291ae5 100644
--- a/be/src/exprs/runtime_filter.cpp
+++ b/be/src/exprs/runtime_filter.cpp
@@ -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;
}
diff --git a/be/src/exprs/runtime_filter_slots.h
b/be/src/exprs/runtime_filter_slots.h
index 3367e8d44a..b1f4b125b4 100644
--- a/be/src/exprs/runtime_filter_slots.h
+++ b/be/src/exprs/runtime_filter_slots.h
@@ -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));
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]