Struct mz_timely_util::order::Partitioned
source · pub struct Partitioned<P, T>(Product<Interval<P>, T>);
Expand description
A partially ordered timestamp that is partitioned by an arbitrary number of partitions
identified by P
. The construction allows for efficient representation of frontiers with
Antichains.
A Partitioned<P, T>
timestamp is internally the product order of an Interval<P>
and a bare
timestamp T
. An Interval<P>
represents an inclusive range of values from the type P
and
its partial order corresponds to the subset order.
Effectively, the minimum Partitioned
timestamp will start out with the maximum possible
Interval<P>
on one side and the minimum timestamp T
on the other side. Users of this
timestamp can selectively downgrade the timestamp by advancing T
, shrinking the interval, or
both.
Antichains of this type are efficient in storage. In the worst case, where all chosen partitions have gaps between them, the produced antichain has twice as many elements as partitions. This is because the “dead space” between the selected partitions must have a representative timestamp in order for that space to be useable in the future.
Tuple Fields§
§0: Product<Interval<P>, T>
Implementations§
source§impl<P: Clone + PartialOrd, T> Partitioned<P, T>
impl<P: Clone + PartialOrd, T> Partitioned<P, T>
sourcepub fn new_singleton(partition: P, timestamp: T) -> Self
pub fn new_singleton(partition: P, timestamp: T) -> Self
Constructs a new timestamp for a specific partition.
sourcepub fn new_range(lower: P, upper: P, timestamp: T) -> Self
pub fn new_range(lower: P, upper: P, timestamp: T) -> Self
Constructs a new timestamp for a partition range.
sourcepub fn interval(&self) -> &Interval<P>
pub fn interval(&self) -> &Interval<P>
Returns the interval component of this partitioned timestamp.
pub fn timestamp_mut(&mut self) -> &mut T
Trait Implementations§
source§impl<P: Clone, T: Clone> Clone for Partitioned<P, T>
impl<P: Clone, T: Clone> Clone for Partitioned<P, T>
source§fn clone(&self) -> Partitioned<P, T>
fn clone(&self) -> Partitioned<P, T>
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl<P: Copy, T: Copy> Columnation for Partitioned<P, T>
impl<P: Copy, T: Copy> Columnation for Partitioned<P, T>
§type InnerRegion = CopyRegion<Partitioned<P, T>>
type InnerRegion = CopyRegion<Partitioned<P, T>>
Self
type. Note: not allocations of Self
, but of the
things that it owns.source§impl<'de, P, T> Deserialize<'de> for Partitioned<P, T>where
P: Deserialize<'de>,
T: Deserialize<'de>,
impl<'de, P, T> Deserialize<'de> for Partitioned<P, T>where
P: Deserialize<'de>,
T: Deserialize<'de>,
source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
source§impl<P: Ord, T: Ord> Ord for Partitioned<P, T>
impl<P: Ord, T: Ord> Ord for Partitioned<P, T>
source§fn cmp(&self, other: &Partitioned<P, T>) -> Ordering
fn cmp(&self, other: &Partitioned<P, T>) -> Ordering
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
source§impl<P: PartialOrd, T: PartialOrd> PartialOrd for Partitioned<P, T>
impl<P: PartialOrd, T: PartialOrd> PartialOrd for Partitioned<P, T>
source§impl<P: Ord + Eq, T: PartialOrder> PartialOrder for Partitioned<P, T>
impl<P: Ord + Eq, T: PartialOrder> PartialOrder for Partitioned<P, T>
source§impl<P: Clone, T: Timestamp> PathSummary<Partitioned<P, T>> for ()
impl<P: Clone, T: Timestamp> PathSummary<Partitioned<P, T>> for ()
source§fn results_in(&self, src: &Partitioned<P, T>) -> Option<Partitioned<P, T>>
fn results_in(&self, src: &Partitioned<P, T>) -> Option<Partitioned<P, T>>
source§impl<P, T> Serialize for Partitioned<P, T>
impl<P, T> Serialize for Partitioned<P, T>
source§impl<P, T: Timestamp> Timestamp for Partitioned<P, T>
impl<P, T: Timestamp> Timestamp for Partitioned<P, T>
impl<P: Copy, T: Copy> Copy for Partitioned<P, T>
impl<P: Eq, T: Eq> Eq for Partitioned<P, T>
impl<P, T> StructuralPartialEq for Partitioned<P, T>
Auto Trait Implementations§
impl<P, T> Freeze for Partitioned<P, T>
impl<P, T> RefUnwindSafe for Partitioned<P, T>where
T: RefUnwindSafe,
P: RefUnwindSafe,
impl<P, T> Send for Partitioned<P, T>
impl<P, T> Sync for Partitioned<P, T>
impl<P, T> Unpin for Partitioned<P, T>
impl<P, T> UnwindSafe for Partitioned<P, T>where
T: UnwindSafe,
P: UnwindSafe,
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§default unsafe fn clone_to_uninit(&self, dst: *mut T)
default unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)source§impl<T> CloneToUninit for Twhere
T: Copy,
impl<T> CloneToUninit for Twhere
T: Copy,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)source§impl<Q, K> Comparable<K> for Q
impl<Q, K> Comparable<K> for Q
source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
source§impl<T> FutureExt for T
impl<T> FutureExt for T
source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T
in a tonic::Request
source§impl<T> Pointable for T
impl<T> Pointable for T
source§impl<T> PreferredContainer for T
impl<T> PreferredContainer for T
source§impl<T> ProgressEventTimestamp for T
impl<T> ProgressEventTimestamp for T
source§impl<'a, S, T> Semigroup<&'a S> for Twhere
T: Semigroup<S>,
impl<'a, S, T> Semigroup<&'a S> for Twhere
T: Semigroup<S>,
source§fn plus_equals(&mut self, rhs: &&'a S)
fn plus_equals(&mut self, rhs: &&'a S)
std::ops::AddAssign
, for types that do not implement AddAssign
.