This is an automated email from the ASF dual-hosted git repository.
zclll 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 b0d1e3725b8 [env](compiler)Reduce hash join build template
instantiations (#61349)
b0d1e3725b8 is described below
commit b0d1e3725b8b6d29e5311ea2f00df71655e96bb9
Author: Mryange <[email protected]>
AuthorDate: Thu Mar 19 14:54:34 2026 +0800
[env](compiler)Reduce hash join build template instantiations (#61349)
before
```
[1/1] Compiling: be/src/exec/operator/hashjoin_build_sink.cpp
→ 69.6s
```
now
```
[1/1] Compiling: be/src/exec/operator/hashjoin_build_sink.cpp
→ 48.9s
```
---
be/src/exec/operator/hashjoin_build_sink.cpp | 19 +++++++------------
be/src/exec/operator/hashjoin_build_sink.h | 5 +++--
2 files changed, 10 insertions(+), 14 deletions(-)
diff --git a/be/src/exec/operator/hashjoin_build_sink.cpp
b/be/src/exec/operator/hashjoin_build_sink.cpp
index 238d0caabf9..db29682c831 100644
--- a/be/src/exec/operator/hashjoin_build_sink.cpp
+++ b/be/src/exec/operator/hashjoin_build_sink.cpp
@@ -590,22 +590,19 @@ Status
HashJoinBuildSinkLocalState::process_build_block(RuntimeState* state, Blo
RETURN_IF_ERROR(_hash_table_init(state, raw_ptrs));
Status st = std::visit(
- Overload {[&](std::monostate& arg, auto join_op,
- auto short_circuit_for_null_in_build_side,
- auto with_other_conjuncts) -> Status {
+ Overload {[&](std::monostate& arg, auto join_op) -> Status {
throw Exception(Status::FatalError("FATAL: uninited
hash table"));
},
- [&](auto&& arg, auto&& join_op, auto
short_circuit_for_null_in_build_side,
- auto with_other_conjuncts) -> Status {
+ [&](auto&& arg, auto&& join_op) -> Status {
using HashTableCtxType = std::decay_t<decltype(arg)>;
using JoinOpType = std::decay_t<decltype(join_op)>;
ProcessHashTableBuild<HashTableCtxType>
hash_table_build_process(
rows, raw_ptrs, this, state->batch_size(),
state);
- auto st = hash_table_build_process.template run<
- JoinOpType::value,
short_circuit_for_null_in_build_side,
- with_other_conjuncts>(
+ auto st = hash_table_build_process.template
run<JoinOpType::value>(
arg, null_map_val ?
&null_map_val->get_data() : nullptr,
- &_shared_state->_has_null_in_build_side);
+ &_shared_state->_has_null_in_build_side,
+ p._short_circuit_for_null_in_build_side,
+ p._have_other_join_conjunct);
COUNTER_SET(_memory_used_counter,
_build_blocks_memory_usage->value() +
(int64_t)(arg.hash_table->get_byte_size() +
@@ -613,9 +610,7 @@ Status
HashJoinBuildSinkLocalState::process_build_block(RuntimeState* state, Blo
return st;
}},
_shared_state->hash_table_variant_vector.front()->method_variant,
- _shared_state->join_op_variants,
- make_bool_variant(p._short_circuit_for_null_in_build_side),
- make_bool_variant((p._have_other_join_conjunct)));
+ _shared_state->join_op_variants);
return st;
}
diff --git a/be/src/exec/operator/hashjoin_build_sink.h
b/be/src/exec/operator/hashjoin_build_sink.h
index bb7c16207d5..c6f492e8df7 100644
--- a/be/src/exec/operator/hashjoin_build_sink.h
+++ b/be/src/exec/operator/hashjoin_build_sink.h
@@ -212,8 +212,9 @@ struct ProcessHashTableBuild {
_batch_size(batch_size),
_state(state) {}
- template <int JoinOpType, bool short_circuit_for_null, bool
with_other_conjuncts>
- Status run(HashTableContext& hash_table_ctx, ConstNullMapPtr null_map,
bool* has_null_key) {
+ template <int JoinOpType>
+ Status run(HashTableContext& hash_table_ctx, ConstNullMapPtr null_map,
bool* has_null_key,
+ bool short_circuit_for_null, bool with_other_conjuncts) {
if (null_map) {
// first row is mocked and is null
if (simd::contain_one(null_map->data() + 1, _rows - 1)) {
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]