Struct mz_compute_client::plan::reduce::MonotonicPlan
source · pub struct MonotonicPlan {
pub aggr_funcs: Vec<AggregateFunc>,
pub skips: Vec<usize>,
pub must_consolidate: bool,
}
Expand description
Plan for computing a set of hierarchical aggregations with a monotonic input.
Here, the aggregations will be rendered in place. We don’t need to worry about retractions because the inputs are append only, so we can change our computation to only retain the “best” value in the diff field, instead of holding onto all values.
Fields§
§aggr_funcs: Vec<AggregateFunc>
All of the aggregations we were asked to compute.
skips: Vec<usize>
Set of “skips” or calls to nth()
an iterator needs to do over
the input to extract the relevant datums.
must_consolidate: bool
True if the input is not physically monotonic, and the operator must perform
consolidation to remove potential negations. The operator implementation is
free to consolidate as late as possible while ensuring correctness, so it is
not a requirement that the input be directly subjected to consolidation.
More details in the monotonic one-shot SELECT
s design doc.1
1 https://github.com/MaterializeInc/materialize/blob/main/doc/developer/design/20230421_stabilize_monotonic_select.md
Trait Implementations§
source§impl Clone for MonotonicPlan
impl Clone for MonotonicPlan
source§fn clone(&self) -> MonotonicPlan
fn clone(&self) -> MonotonicPlan
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for MonotonicPlan
impl Debug for MonotonicPlan
source§impl<'de> Deserialize<'de> for MonotonicPlan
impl<'de> Deserialize<'de> for MonotonicPlan
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 PartialEq<MonotonicPlan> for MonotonicPlan
impl PartialEq<MonotonicPlan> for MonotonicPlan
source§fn eq(&self, other: &MonotonicPlan) -> bool
fn eq(&self, other: &MonotonicPlan) -> bool
self
and other
values to be equal, and is used
by ==
.source§impl RustType<ProtoMonotonicPlan> for MonotonicPlan
impl RustType<ProtoMonotonicPlan> for MonotonicPlan
source§fn into_proto(&self) -> ProtoMonotonicPlan
fn into_proto(&self) -> ProtoMonotonicPlan
Self
into a Proto
value.source§fn from_proto(proto: ProtoMonotonicPlan) -> Result<Self, TryFromProtoError>
fn from_proto(proto: ProtoMonotonicPlan) -> Result<Self, TryFromProtoError>
source§impl Serialize for MonotonicPlan
impl Serialize for MonotonicPlan
impl Eq for MonotonicPlan
impl StructuralEq for MonotonicPlan
impl StructuralPartialEq for MonotonicPlan
Auto Trait Implementations§
impl RefUnwindSafe for MonotonicPlan
impl Send for MonotonicPlan
impl Sync for MonotonicPlan
impl Unpin for MonotonicPlan
impl UnwindSafe for MonotonicPlan
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<Q, K> Equivalent<K> for Qwhere
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
impl<Q, K> Equivalent<K> for Qwhere Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,
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 Qwhere
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
impl<Q, K> Equivalent<K> for Qwhere Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,
source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.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<P, R> ProtoType<R> for Pwhere
R: RustType<P>,
impl<P, R> ProtoType<R> for Pwhere R: RustType<P>,
source§fn into_rust(self) -> Result<R, TryFromProtoError>
fn into_rust(self) -> Result<R, TryFromProtoError>
RustType::from_proto
.source§fn from_rust(rust: &R) -> P
fn from_rust(rust: &R) -> P
RustType::into_proto
.