liukun4515 opened a new issue, #4356:
URL: https://github.com/apache/arrow-datafusion/issues/4356
**Is your feature request related to a problem or challenge? Please describe
what you are trying to do.**
A clear and concise description of what the problem is. Ex. I'm always
frustrated when [...]
(This section helps Arrow developers understand the context and *why* for
this feature, in addition to the *what*)
From the bug #4247, there are bugs for hash join for right semi/anti join.
The current code base has many `match` path for each `Join_type`, each
`join_type` has different logic and path, it easy to produce the bugs when we
add feature in the `HashJoin`.
Proposal:
split vectorization `HashJoin` to three phase:
1. get the result of matched equal join : left_idx and right_idx
2. apply non_equal filter to `left_idx and right_idx` and get the
filter_left_idx with filter_right_idx
3. according to the `Join Type` to construct the result
```
according to the matched `filter_left_idx` and `filter_right_idx` to get the
result
match join_type{
inner_join:
left_join:
right_join:
full_join:
left_semi: set the left bitmap
left_anti: set the left bitmap
right_semi: set the right bitmap, and get the result from the right
bitmap(set_bit)
right_anti:: set the right bitmap, and get the result from the right
bitmap(not_set_bit)
}
```
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features
you've considered.
**Additional context**
Add any other context or screenshots about the feature request here.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]