[FEA] Filter join probe table rows that contain nulls when nulls are not equal
- Dominant language
- C++
- Stars
- 9.8k
- Forks
- 1.1k
- Avg merge
- 3d 6m
- Merged PRs (30d)
- 278
Description
**Is your feature request related to a problem? Please describe.**
In the hash join implementation, we allow controlling the behavior of whether two null elements are considered equal. If nulls are _not_ equal, then two rows that contain nulls can never be considered equal. We exploit this in the build phase of the hash join by constructing a bitmask from ANDing the bitmasks from all the input columns and using that "row bitmask" to filter out any rows that contain a null element from being inserted into the hash table.
When it comes time to probe the hash table, we do not currently take advantage of this some optimization.
**Describe the solution you'd like**
When probing the hash map and nulls are considered not equal, we should build bitmask from ANDing all of the bitmasks of the probe table and only probe the map when a row does not contain any nulls.
**Additional context**
The hash join implementation is currently going a complete refactor to use the cuCollections `static_multimap`. To support the filtered insert, we added an `insert_if` function. I think we can also add a `retrieve_if` function to support the filtered probing.
Contributor guide
Assessment
This issue has not been assessed yet.