-
Notifications
You must be signed in to change notification settings - Fork 4k
Closed
Closed
Copy link
Description
Describe the enhancement requested
Currently the supported type of residual filter expression is different between our two hash join implementations:
The HashJoin is assuming only boolean type, which is appropriate
arrow/cpp/src/arrow/acero/hash_join.cc
Line 309 in 79d6458
| const auto& mask_scalar = mask.scalar_as<BooleanScalar>(); |
The
SwissJoin is more tolerant by exceptionally allowing a null type null (not the boolean type null), which I think is a mistake I made in #39487 arrow/cpp/src/arrow/acero/swiss_join.cc
Line 1928 in 79d6458
| if (filter_.IsNullLiteral() || filter_ == literal(false)) { |
The current CI contains a test that explicitly exercises null type null, which is also to be revised:
arrow/cpp/src/arrow/acero/hash_join_node_test.cc
Line 2102 in 79d6458
| TEST(HashJoin, FineGrainedResidualFilter) { |
Component(s)
C++