pub struct TableNode {
pub table: Box<str>,
pub children: Vec<Option<TableNode>>,
}Expand description
The query’s table tree: each frame’s base table plus, per relationship slot (in the
query-local RelId order), the child frame’s tree. It is the path-free replacement for
PathSeg: folding a CaughtChange::Child descends children[rel] to
learn the child’s table, then throws the parent row away.
children[i] corresponds to slot i of [query_local_slot_names] — materialized
related first (in ast.related order), then EXISTS gating aliases in where-tree
pre-order. This is the same slot layout the dataflow and view_schema use, so a
CaughtChange::Child’s rel indexes straight into children by construction.
A slot is None when it is pruned (exists_noSync, EXISTS-NOSYNC-DESIGN.md §4): a
system: Permissions EXISTS gate whose witnesses must not enter the footprint (and so are
never synced). The slot keeps its position — dropping it would shift later indices out
of alignment with the dataflow RelIds — but the fold neither descends into it nor counts
its rows.
Fields§
§table: Box<str>This frame’s base table name.
children: Vec<Option<TableNode>>One subtree per query-local relationship slot, in slot order; None ⇒ a pruned
(exists_noSync) slot whose witnesses are excluded from the footprint.