The half_join operator and its ilk take a frontier_func: FF argument that is meant to act on times and "rewind" them enough that logical compaction using their output will keep their input from being consolidated with the past (primarily to allow "strict inequality" with the timestamp, which would not be correct if the past were consolidated up to it).
This function was previous from a time to a time, but this is insufficiently expressive. For example, with a partial order one needs to take times (x, y, z) to (x - 1, y - 1, z - 1), where it would be sufficient to use the frontier { (x - 1, y, z), (x, y - 1, z), (x, y, z - 1) }.
This PR modifies the function to allow it to modify an Antichain argument, rather than needing to return a new single timestamp.
The
half_join
operator and its ilk take afrontier_func: FF
argument that is meant to act on times and "rewind" them enough that logical compaction using their output will keep their input from being consolidated with the past (primarily to allow "strict inequality" with the timestamp, which would not be correct if the past were consolidated up to it).This function was previous from a time to a time, but this is insufficiently expressive. For example, with a partial order one needs to take times
(x, y, z)
to(x - 1, y - 1, z - 1)
, where it would be sufficient to use the frontier{ (x - 1, y, z), (x, y - 1, z), (x, y, z - 1) }
.This PR modifies the function to allow it to modify an
Antichain
argument, rather than needing to return a new single timestamp.