Skip to content

Union

Status: native, with one gap.

UNION ALL substitutes to a native Union operator that simply concatenates its inputs' Arrow batches — no state, no key. It admits any row type the columnar boundary can carry.

Fallback

  • An inconvertible row type — a column (or nested leaf) outside the Arrow boundary's supported types falls the operator back, dragging the whole query with it per the all-or-nothing island rule.

Not a fallback: UNION (distinct)

Plain UNION isn't planned as this operator at all — Flink's own optimizer rewrites duplicate elimination into a GROUP BY before the plan reaches us, so a distinct union accelerates through the GROUP BY path instead. It never reaches the Union matcher, so there's nothing here for it to decline.