Is your feature request related to a problem? Please describe.
Auron currently does not support residual join conditions in native broadcast hash joins.
When Spark plans an inner BroadcastHashJoinExec with equi-join keys and an additional non-equi condition, Auron cannot execute the join condition natively. This reduces native execution coverage for common broadcast join queries.
Describe the solution you'd like
Support residual join conditions for native inner broadcast hash joins.
The residual condition should be converted to the existing native JoinFilter representation and evaluated against candidate rows produced by the equi-join lookup.
The implementation should:
- Support both BuildLeft and BuildRight.
- Preserve Spark semantics when the residual condition evaluates to null.
- Remain limited to inner joins.
- Continue rejecting residual conditions for outer, semi, anti, and other broadcast join types.
Describe alternatives you've considered
Continue falling back when a BroadcastHashJoinExec contains a residual condition.
Another alternative is applying the condition as a separate filter above the join, but keeping the condition inside the join better matches Spark's physical plan and avoids producing rows that are immediately filtered.
Additional context
This can reuse the existing native JoinFilter conversion and evaluation logic already used by other native join implementations.
Is your feature request related to a problem? Please describe.
Auron currently does not support residual join conditions in native broadcast hash joins.
When Spark plans an inner BroadcastHashJoinExec with equi-join keys and an additional non-equi condition, Auron cannot execute the join condition natively. This reduces native execution coverage for common broadcast join queries.
Describe the solution you'd like
Support residual join conditions for native inner broadcast hash joins.
The residual condition should be converted to the existing native JoinFilter representation and evaluated against candidate rows produced by the equi-join lookup.
The implementation should:
Describe alternatives you've considered
Continue falling back when a BroadcastHashJoinExec contains a residual condition.
Another alternative is applying the condition as a separate filter above the join, but keeping the condition inside the join better matches Spark's physical plan and avoids producing rows that are immediately filtered.
Additional context
This can reuse the existing native JoinFilter conversion and evaluation logic already used by other native join implementations.