Rindle docs and package mapSkip to main content

FlippedJoin

Struct FlippedJoin 

Source
pub struct FlippedJoin {
    pub parent: NodeId,
    pub child: NodeId,
    pub parent_key: Vec<ColId>,
    pub child_key: Vec<ColId>,
    pub rel_slot: RelId,
    pub chunk_size: usize,
    pub output: Cell<Option<OutEdge>>,
    /* private fields */
}
Expand description

FlippedJoin: child-driven inner join (spec 06 §3.2). Two input ports (Port::JoinParent/Port::JoinChild) like Join; the child drives the fetch but the parent is the output row, so rel_slot resolves against the parent schema and input_schema is the parent’s.

Fields§

§parent: NodeId

The output side (parent rows). The attached relationship hangs here.

§child: NodeId

The driving side: children are fetched first and grouped by join key.

§parent_key: Vec<ColId>§child_key: Vec<ColId>§rel_slot: RelId

Relationship slot (resolved from the alias against the parent schema at build time, like Join).

§chunk_size: usize

IN-batch chunking threshold (test/seam; default DEFAULT_CHUNK_SIZE). A batch above this needs the node-level merge (deferred — see module docs).

§output: Cell<Option<OutEdge>>

The single downstream edge as a port-carrying OutEdge (like Join): Port::Single to a terminal sink, or a join port when this flipped join feeds another join.

Implementations§

Source§

impl FlippedJoin

Source

pub fn new( parent: NodeId, child: NodeId, parent_key: Vec<ColId>, child_key: Vec<ColId>, rel_slot: RelId, ) -> FlippedJoin

Source

pub fn with_chunk_size(self, chunk_size: usize) -> FlippedJoin

Override the IN-batch chunk size (the setMultiConstraintChunkSizeForTest seam, flipped-join.ts:57). Used by the chunking-equivalence test once the chunked fetch path lands.

Source

pub fn fetch<'g>( &'g self, g: &'g Graph, req: &FetchRequest, ) -> Box<dyn Iterator<Item = Node<'g>> + 'g>

Lazy pull (flipped-join.ts:161): translate the request constraint onto the child key, fetch all children, then fetch_batched.

Source

pub fn push<'g>(&'g self, g: &'g Graph, change: Change<'g>, port: Port)

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.