By default, no key columns and no difference columns yet
Optionalrest: JsonObjectReadonlyidUnique within the query and shown to users, e.g. filter101
ReadonlykeyAssigned at construction from a monotonic sequence: the node's identity for change detection
ReadonlyrestThe keys of the node's saved JSON that this version does not know, kept so a re-save writes them back (PLAN §10.3); edits keep them too
Whether edits may change which nodes feed this one. Not for a node whose port semantics are unknown, such as an Unknown node.
Whether the node takes rows by their order, as a Limit does: the emitter then writes its input's order as a sort just before it (PLAN §11.4)
Labels for the input ports, shown on the edges that feed them
The named input slots, in order: none for a source, one for a unary transform, two for a binary one
The type discriminator, e.g. filter
A one-line description for the canvas and the details panel
The description without the values users typed, which may be sensitive, for logs and telemetry. By default the description, which has none.
Whether the node has none of the settings it needs yet, e.g. a Join with no key pair: the canvas shows it as not set, not by its description
The order the node's rows come in, from its inputs' orders in port order
(undefined where unknown), for computeRowOrders (PLAN §11.4). By
default no order, as from a source or a join: a node that keeps its
input's order says so, so a new node never claims an order on columns it
may not have.
A full outer join's columns without the difference columns
(buildJoinSchemaColumns), then, suffix by suffix, x_1 (the left
type), x_2 (the right type), both nullable, and x_valueDifference
(getDifferenceResultType), never empty; undefined when invalid
Checks, in order, stopping at the first failing step:
1–4. the key columns, as a join's (validateJoinKeys);
5–6. there are difference columns, none twice;
7. each is named, not a key, in both inputs, of the same type in both
and numeric, reported for every column at once;
8. no other column name is in both inputs;
9. each output name is valid and no other column's, compared as
databases that ignore case compare them.
Optionalerrors: string[]A new difference with the same id, and these settings changed
The key columns swap sides with the inputs, so the difference stays valid; x_1 is then the other input's
Compares numeric columns of two inputs, spec §7.12's "Compare Column Values": the inputs are joined on pairs of key columns, keeping every row of both (a full outer join), and each difference column
xgivesx_1(the left value),x_2(the right value), each of its input's type and empty for a row only the other input has, andx_valueDifference,x_1 - x_2with an empty value counting as 0. The other columns are a join's.