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>,
)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.