ReactiveDag.Node.Recompute.Union (reactive_dag v0.17.0-rc.2)

Copy Markdown View Source

Runs a union node: one row per (input cell, key) across several inputs, written into this node's own table.

Scoping

A claim on a union node carries its own provenance — the cell key is "<input>|<key>" — so a claim names exactly which input moved, and only that input is read. That is what makes N inputs safe here: nothing correlates across them, so a partial claim is not a partial answer (contrast a cross-node join, where a claim naming one side leaves the other unread and the fold writes nulls over good data).

A whole-cell claim reads every input, which is the only time it does.

Summary

Functions

The [{key, row}] pairs a union pass produces — the caller materialises them through the ordinary payload loop, so a union writes its rows exactly as any other node does.

Functions

pairs(spec, claimed)

@spec pairs(map(), [String.t()] | nil) :: {[{String.t(), map()}], map()}

The [{key, row}] pairs a union pass produces — the caller materialises them through the ordinary payload loop, so a union writes its rows exactly as any other node does.