Enum mz_dataflow_types::plan::reduce::ReducePlan
source · [−]pub enum ReducePlan {
Distinct,
DistinctNegated,
Accumulable(AccumulablePlan),
Hierarchical(HierarchicalPlan),
Basic(BasicPlan),
Collation(CollationPlan),
}
Expand description
A ReducePlan
provides a concise description for how we will
execute a given reduce expression.
The provided reduce expression can have no
aggregations, in which case its just a Distinct
and otherwise
it’s composed of a combination of accumulable, hierarchical and
basic aggregations.
We want to try to centralize as much decision making about the shape / general computation of the rendered dataflow graph in this plan, and then make actually rendering the graph be as simple (and compiler verifiable) as possible.
Variants
Distinct
Plan for not computing any aggregations, just determining the set of distinct keys.
DistinctNegated
Plan for not computing any aggregations, just determining the set of distinct keys. A specialization of ReducePlan::Distinct maintaining rows not in the output.
Accumulable(AccumulablePlan)
Plan for computing only accumulable aggregations.
Hierarchical(HierarchicalPlan)
Plan for computing only hierarchical aggregations.
Basic(BasicPlan)
Plan for computing only basic aggregations.
Collation(CollationPlan)
Plan for computing a mix of different kinds of aggregations. We need to do extra work here to reassemble results back in the requested order.
Implementations
sourceimpl ReducePlan
impl ReducePlan
sourcepub fn create_from(
aggregates: Vec<AggregateExpr>,
monotonic: bool,
expected_group_size: Option<usize>
) -> Self
pub fn create_from(
aggregates: Vec<AggregateExpr>,
monotonic: bool,
expected_group_size: Option<usize>
) -> Self
Generate a plan for computing the supplied aggregations.
The resulting plan summarizes what the dataflow to be created and how the aggregations will be executed.
sourcepub fn keys(&self, key_arity: usize, arity: usize) -> AvailableCollections
pub fn keys(&self, key_arity: usize, arity: usize) -> AvailableCollections
Reports all keys of produced arrangements.
This is likely either an empty vector, for no arrangement, or a singleton vector containing the list of expressions that key a single arrangement.
Trait Implementations
sourceimpl Arbitrary for ReducePlan
impl Arbitrary for ReducePlan
To avoid stack overflow, this limits the arbitrarily-generated test
ReducePlan
s to involve at most 8 aggregations.
To have better coverage of realistic expected group sizes, the
expected group size
has a logarithmic distribution.
type Parameters = ()
type Parameters = ()
The type of parameters that arbitrary_with
accepts for configuration
of the generated Strategy
. Parameters must implement Default
. Read more
type Strategy = BoxedStrategy<Self>
type Strategy = BoxedStrategy<Self>
sourcefn arbitrary_with(_: Self::Parameters) -> Self::Strategy
fn arbitrary_with(_: Self::Parameters) -> Self::Strategy
sourceimpl Clone for ReducePlan
impl Clone for ReducePlan
sourcefn clone(&self) -> ReducePlan
fn clone(&self) -> ReducePlan
Returns a copy of the value. Read more
1.0.0 · sourcefn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read more
sourceimpl Debug for ReducePlan
impl Debug for ReducePlan
sourceimpl<'de> Deserialize<'de> for ReducePlan
impl<'de> Deserialize<'de> for ReducePlan
sourcefn 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>,
Deserialize this value from the given Serde deserializer. Read more
sourceimpl PartialEq<ReducePlan> for ReducePlan
impl PartialEq<ReducePlan> for ReducePlan
sourcefn eq(&self, other: &ReducePlan) -> bool
fn eq(&self, other: &ReducePlan) -> bool
This method tests for self
and other
values to be equal, and is used
by ==
. Read more
sourcefn ne(&self, other: &ReducePlan) -> bool
fn ne(&self, other: &ReducePlan) -> bool
This method tests for !=
.
sourceimpl RustType<ProtoReducePlan> for ReducePlan
impl RustType<ProtoReducePlan> for ReducePlan
sourcefn into_proto(&self) -> ProtoReducePlan
fn into_proto(&self) -> ProtoReducePlan
Convert a Self
into a Proto
value.
sourcefn from_proto(proto: ProtoReducePlan) -> Result<Self, TryFromProtoError>
fn from_proto(proto: ProtoReducePlan) -> Result<Self, TryFromProtoError>
Consume and convert a Proto
back into a Self
value. Read more
sourceimpl Serialize for ReducePlan
impl Serialize for ReducePlan
impl Eq for ReducePlan
impl StructuralEq for ReducePlan
impl StructuralPartialEq for ReducePlan
Auto Trait Implementations
impl RefUnwindSafe for ReducePlan
impl Send for ReducePlan
impl Sync for ReducePlan
impl Unpin for ReducePlan
impl UnwindSafe for ReducePlan
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<Q, K> Equivalent<K> for Q where
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
impl<Q, K> Equivalent<K> for Q where
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
sourcefn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to key
and return true
if they are equal.
sourceimpl<T> FutureExt for T
impl<T> FutureExt for T
sourcefn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
sourcefn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
sourceimpl<T> Instrument for T
impl<T> Instrument for T
sourcefn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
sourcefn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
sourceimpl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
sourcefn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message T
in a tonic::Request
sourceimpl<T> ProgressEventTimestamp for T where
T: Data + Debug + Any,
impl<T> ProgressEventTimestamp for T where
T: Data + Debug + Any,
sourceimpl<P, R> ProtoType<R> for P where
R: RustType<P>,
impl<P, R> ProtoType<R> for P where
R: RustType<P>,
sourcefn into_rust(self) -> Result<R, TryFromProtoError>
fn into_rust(self) -> Result<R, TryFromProtoError>
See RustType::from_proto
.
sourcefn from_rust(rust: &R) -> P
fn from_rust(rust: &R) -> P
See RustType::into_proto
.
sourceimpl<T> ToOwned for T where
T: Clone,
impl<T> ToOwned for T where
T: Clone,
type Owned = T
type Owned = T
The resulting type after obtaining ownership.
sourcefn clone_into(&self, target: &mut T)
fn clone_into(&self, target: &mut T)
toowned_clone_into
)Uses borrowed data to replace owned data, usually by cloning. Read more
sourceimpl<T> WithSubscriber for T
impl<T> WithSubscriber for T
sourcefn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> where
S: Into<Dispatch>,
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> where
S: Into<Dispatch>,
Attaches the provided Subscriber
to this type, returning a
WithDispatch
wrapper. Read more
sourcefn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
Attaches the current default Subscriber
to this type, returning a
WithDispatch
wrapper. Read more