Skip to content

Interval join

Status: Native. A time-bounded join — a BETWEEN predicate on rowtime or proctime instead of (or alongside) an equi-key match window. Unlike the regular join, both inputs must be insert-only; it is not one of the changelog-aware operators, so a retracting/updating input falls it back per the insert-only guard.

Both event-time and proctime bounds are native. An event-time interval join times rows by rowtime and evicts on the watermark; a proctime interval join times rows by the processing clock and evicts on a processing-time timer instead.

Admission

Same equi-key/type/residual conditions as the regular join: a supported-type equi-key, null-dropping keys for a non-INNER join, and a non-equi residual the native expression engine can express. All four join types — INNER, LEFT, RIGHT, and FULL — are native.

  • the join type isn't INNER, LEFT, RIGHT, or FULL;
  • there's no equi key;
  • the key columns aren't null-dropping for a non-INNER join;
  • the equi-key type is outside the supported set;
  • the non-equi residual (the interval bound plus any extra condition) isn't expressible by the native expression engine.