Skip to main content

build_halfjoin_trace

Function build_halfjoin_trace 

Source
fn build_halfjoin_trace<'scope, T, Tr>(
    updates: VecCollection<'scope, T, (Row, T), Diff>,
    trace: Arranged<'scope, Tr>,
    prev_key: Vec<LirScalarExpr>,
    prev_thinning: Vec<usize>,
    strict: bool,
    closure: JoinClosure,
) -> (VecCollection<'scope, T, (Row, T), Diff>, VecCollection<'scope, T, DataflowErrorSer, Diff>)
where T: RenderTimestamp, Tr: TraceReader<Batch: Navigable, Time = T> + Clone + 'static, for<'a> BatchCursor<Tr>: Cursor<Val<'a>: ExtendDatums, KeyContainer: BatchContainer<Owned = Row>, Time = T, Diff = Diff>,
Expand description

Constructs a half_join from supplied arguments.

This method exists to factor common logic from the code paths that are generic over the type of trace. strict breaks ties consistently: it is false when the source relation precedes the lookup relation in the total order on relations, and true otherwise. A delta query pairs a strict operator with a non-strict one, so each pair of matching updates interacts exactly once.

The input and output streams are of pairs (data, time) where the time component can be greater than the time of the update. This operator may manipulate time as part of this pair, but will not manipulate the time of the update. This is crucial for correctness, as the total order on times of updates is used to ensure that any two updates are matched at most once.