Skip to main content

Extract

Trait Extract 

Source
pub trait Extract {
    type Time;
    type Output;

    // Required method
    fn extract<'a>(
        &'a mut self,
        upper: AntichainRef<'_, Self::Time>,
    ) -> (Option<Self::Output>, AntichainRef<'a, Self::Time>);
}
Expand description

Supertrait for Batcher that ensures a consistent time and output across C0 implementations.

Required Associated Types§

Source

type Time

The timestamps by which updates are carved out.

Source

type Output

The batches released by extraction.

Required Methods§

Source

fn extract<'a>( &'a mut self, upper: AntichainRef<'_, Self::Time>, ) -> (Option<Self::Output>, AntichainRef<'a, Self::Time>)

Extracts the updates upper unblocks as a batch, and lower bounds the times of those retained.

What upper unblocks is the implementor’s to decide. It can be based on the antichain up set, or it can be based on the total order of times (as used in delta join constructions). Absent a batch, upper unblocked no updates.

The reported lower bound should accurately reflect the times of all accepted updates that have not been extracted. Over approximation can result in stalling dataflows, and under approximation is simply incorrect.

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§

Source§

impl<Chu, M, S> Extract for MergeBatcher<Chu, M, S>
where M: Extractor<Time: Timestamp>, Chu: ContainerBuilder<Container = M::Chunk>, S: Sealer<M::Chunk>,

Source§

type Time = <M as Extractor>::Time

Source§

type Output = <S as Sealer<<M as Merger>::Chunk>>::Output