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.
Trait Implementations§
impl Eq for TableNode
impl StructuralPartialEq for TableNode
Auto Trait Implementations§
impl Freeze for TableNode
impl RefUnwindSafe for TableNode
impl Send for TableNode
impl Sync for TableNode
impl Unpin for TableNode
impl UnsafeUnpin for TableNode
impl UnwindSafe for TableNode
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.