Skip to content

Delegate joins to DataFusion's hash join

Applies to: time-bounded joins (interval join, window join)

The time-bounded joins buffer and evict, but the match itself runs as a HashJoinExec over the buffered batches (Arroyo's split), putting the O(n·m) work on a vectorized, maintained join — the join benches run at 20–40 M elements/s.

Reusing one TaskContext instead of rebuilding a SessionContext (and its whole function registry) per pushed batch later cut the join hot loops roughly in half: interval join 115 → 63 µs, window join 184 → 130 µs per 4096-row batch.