Skip to main content

discover_times

Function discover_times 

Source
pub fn discover_times<T, RIn>(
    key: KeyView<'_, T, RIn>,
    seed_times: impl Iterator<Item = T>,
    out_times: impl Iterator<Item = T>,
    upper: &Antichain<T>,
    scratch: &mut DiscoverScratch<T, RIn>,
    moments: &mut Vec<T>,
    pended: &mut Vec<T>,
)
where T: Timestamp + Lattice, RIn: Semigroup + Clone,
Expand description

Determines the times in [lower, upper) at which a key’s reduction must be re-evaluated (moments), and the times at or beyond upper to carry into the next invocation (pended). Replays the key’s seed_times and pending times in ascending order, marking those that carry updates and closing the set under joins with the input and output histories’ times and with each other. No input collection is materialized, so peak memory is O(times); buffers are advanced by the meet of the times still to come, keeping a key with many distinct times linear rather than quadratic.

seed_times must be the novel batch’s own time support for this key. Seeding from a consolidated view is unsound: compaction may advance a history record onto a novel time, where consolidation cancels the novel update and its interesting time is missed.