This is an automated email from the ASF dual-hosted git repository.
yiguolei pushed a commit to branch dev-1.1.1
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/dev-1.1.1 by this push:
new 8220d145fd [bugfix] fix coredump of left anti join (#10961)
8220d145fd is described below
commit 8220d145fd007306967d9ae1bff4b35dcec2ffbe
Author: TengJianPing <[email protected]>
AuthorDate: Mon Jul 18 13:43:06 2022 +0800
[bugfix] fix coredump of left anti join (#10961)
Merge fix of #10591 to branch dev-1.1.1.
---
be/src/vec/exec/join/vhash_join_node.cpp | 29 ++++++++++++++++++++---------
1 file changed, 20 insertions(+), 9 deletions(-)
diff --git a/be/src/vec/exec/join/vhash_join_node.cpp
b/be/src/vec/exec/join/vhash_join_node.cpp
index 72af7c29b3..422b77b801 100644
--- a/be/src/vec/exec/join/vhash_join_node.cpp
+++ b/be/src/vec/exec/join/vhash_join_node.cpp
@@ -225,16 +225,27 @@ struct ProcessHashTableProbe {
_build_block_rows[j]);
}
} else {
- auto column =
_build_blocks[_build_block_offsets[j]]
- .get_by_position(i)
- .column;
- if (mcol[i + column_offset]->is_nullable() xor
- column->is_nullable()) {
- DCHECK(mcol[i +
column_offset]->is_nullable() &&
- !column->is_nullable());
- column = make_nullable(column);
+ if (_build_block_offsets[j] == -1) {
+ // the only case to reach here:
+ // 1. left anti join with other conjuncts,
and
+ // 2. equal conjuncts does not match
+ // since nullptr is emplaced back to
visited_map,
+ // the output value of the build side does
not matter,
+ // just insert default value
+ mcol[i + column_offset]->insert_default();
+ } else {
+ auto column =
_build_blocks[_build_block_offsets[j]]
+ .get_by_position(i)
+ .column;
+ if (mcol[i + column_offset]->is_nullable()
xor
+ column->is_nullable()) {
+ DCHECK(mcol[i +
column_offset]->is_nullable() &&
+ !column->is_nullable());
+ column = make_nullable(column);
+ }
+ mcol[i +
column_offset]->insert_from(*column,
+
_build_block_rows[j]);
}
- mcol[i + column_offset]->insert_from(*column,
_build_block_rows[j]);
}
}
} else {
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]