Skip to content

Support inner residual join conditions in native broadcast hash join #2437

Description

@weimingdiit

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions