Skip to main content

define_inner_star_join_index

Macro define_inner_star_join_index 

Source
macro_rules! define_inner_star_join_index {
    ($n:literal) => { ... };
}
Expand description

Generate a inner_star_join_indexN/inner_star_join_indexN_nested function.

Call this macro for every number N in order to generate an N-way inner star join index operator for both RootCircuit and NestedCircuit.

The operator computes an incremental join of multiple streams on the same key using a user-provided join function that can return 0 or more output key-value pairs for each input tuple.

Example generated function signature:

    pub fn inner_star_join_index4<K, V1, V2, V3, V4, OK, OV, It>(
        stream1: &Stream<RootCircuit, OrdIndexedZSet<K, V1>>,
        stream2: &Stream<RootCircuit, OrdIndexedZSet<K, V2>>,
        stream3: &Stream<RootCircuit, OrdIndexedZSet<K, V3>>,
        stream4: &Stream<RootCircuit, OrdIndexedZSet<K, V4>>,
        join_func: impl Fn(&K, &V1, &V2, &V3, &V4) -> It + Clone + 'static,
    ) -> Stream<RootCircuit, OrdIndexedZSet<OK, OV>>
    where
        K: DBData,
        V1: DBData,
        V2: DBData,
        V3: DBData,
        V4: DBData,
        OK: DBData,
        OV: DBData,
        It: IntoIterator<Item = (OK, OV)> + 'static;

    pub fn inner_star_join_index4_nested<K, V1, V2, V3, V4, OK, OV, It>(
        stream1: &Stream<NestedCircuit, OrdIndexedZSet<K, V1>>,
        stream2: &Stream<NestedCircuit, OrdIndexedZSet<K, V2>>,
        stream3: &Stream<NestedCircuit, OrdIndexedZSet<K, V3>>,
        stream4: &Stream<NestedCircuit, OrdIndexedZSet<K, V4>>,
        join_func: impl Fn(&K, &V1, &V2, &V3, &V4) -> It + Clone + 'static,
    ) -> Stream<NestedCircuit, OrdIndexedZSet<OK, OV>>
    where
        K: DBData,
        V1: DBData,
        V2: DBData,
        V3: DBData,
        V4: DBData,
        OK: DBData,
        OV: DBData,
        It: IntoIterator<Item = (OK, OV)> + 'static;