Struct mz_expr::AggregateExpr
source · pub struct AggregateExpr {
pub func: AggregateFunc,
pub expr: MirScalarExpr,
pub distinct: bool,
}
Expand description
Describes an aggregation expression.
Fields§
§func: AggregateFunc
Names the aggregation function.
expr: MirScalarExpr
An expression which extracts from each row the input to func
.
distinct: bool
Should the aggregation be applied only to distinct results in each group.
Implementations§
source§impl AggregateExpr
impl AggregateExpr
sourcepub fn typ(&self, column_types: &[ColumnType]) -> ColumnType
pub fn typ(&self, column_types: &[ColumnType]) -> ColumnType
Computes the type of this AggregateExpr
.
sourcepub fn is_constant(&self) -> bool
pub fn is_constant(&self) -> bool
Returns whether the expression has a constant result.
sourcepub fn on_unique(&self, input_type: &[ColumnType]) -> MirScalarExpr
pub fn on_unique(&self, input_type: &[ColumnType]) -> MirScalarExpr
Extracts unique input from aggregate type
sourcepub fn on_unique_ranking_window_funcs(
&self,
input_type: &[ColumnType],
col_name: &str
) -> MirScalarExpr
pub fn on_unique_ranking_window_funcs( &self, input_type: &[ColumnType], col_name: &str ) -> MirScalarExpr
on_unique
for ROW_NUMBER, RANK, DENSE_RANK
sourcepub fn is_count_asterisk(&self) -> bool
pub fn is_count_asterisk(&self) -> bool
Returns whether the expression is COUNT() or not. Note that when we define the count builtin in sql::func, we convert COUNT() to COUNT(true), making it indistinguishable from literal COUNT(true), but we prefer to consider this as the former.
Trait Implementations§
source§impl Arbitrary for AggregateExpr
impl Arbitrary for AggregateExpr
§type Parameters = (<AggregateFunc as Arbitrary>::Parameters, <MirScalarExpr as Arbitrary>::Parameters, <bool as Arbitrary>::Parameters)
type Parameters = (<AggregateFunc as Arbitrary>::Parameters, <MirScalarExpr as Arbitrary>::Parameters, <bool as Arbitrary>::Parameters)
The type of parameters that
arbitrary_with
accepts for configuration
of the generated Strategy
. Parameters must implement Default
.§type Strategy = Map<(<AggregateFunc as Arbitrary>::Strategy, <MirScalarExpr as Arbitrary>::Strategy, <bool as Arbitrary>::Strategy), fn(_: (AggregateFunc, MirScalarExpr, bool)) -> AggregateExpr>
type Strategy = Map<(<AggregateFunc as Arbitrary>::Strategy, <MirScalarExpr as Arbitrary>::Strategy, <bool as Arbitrary>::Strategy), fn(_: (AggregateFunc, MirScalarExpr, bool)) -> AggregateExpr>
The type of
Strategy
used to generate values of type Self
.source§fn arbitrary_with(_top: Self::Parameters) -> Self::Strategy
fn arbitrary_with(_top: Self::Parameters) -> Self::Strategy
source§impl Clone for AggregateExpr
impl Clone for AggregateExpr
source§fn clone(&self) -> AggregateExpr
fn clone(&self) -> AggregateExpr
Returns a copy of the value. Read more
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moresource§impl Debug for AggregateExpr
impl Debug for AggregateExpr
source§impl<'de> Deserialize<'de> for AggregateExpr
impl<'de> Deserialize<'de> for AggregateExpr
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>,
Deserialize this value from the given Serde deserializer. Read more
source§impl Hash for AggregateExpr
impl Hash for AggregateExpr
source§impl MzReflect for AggregateExpr
impl MzReflect for AggregateExpr
source§fn add_to_reflected_type_info(rti: &mut ReflectedTypeInfo)
fn add_to_reflected_type_info(rti: &mut ReflectedTypeInfo)
Adds names and types of the fields of the struct or enum to
rti
. Read moresource§impl Ord for AggregateExpr
impl Ord for AggregateExpr
source§fn cmp(&self, other: &AggregateExpr) -> Ordering
fn cmp(&self, other: &AggregateExpr) -> Ordering
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
Compares and returns the maximum of two values. Read more
source§impl PartialEq for AggregateExpr
impl PartialEq for AggregateExpr
source§fn eq(&self, other: &AggregateExpr) -> bool
fn eq(&self, other: &AggregateExpr) -> bool
This method tests for
self
and other
values to be equal, and is used
by ==
.source§impl PartialOrd for AggregateExpr
impl PartialOrd for AggregateExpr
source§fn partial_cmp(&self, other: &AggregateExpr) -> Option<Ordering>
fn partial_cmp(&self, other: &AggregateExpr) -> Option<Ordering>
1.0.0 · source§fn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
This method tests less than or equal to (for
self
and other
) and is used by the <=
operator. Read moresource§impl RustType<ProtoAggregateExpr> for AggregateExpr
impl RustType<ProtoAggregateExpr> for AggregateExpr
source§fn into_proto(&self) -> ProtoAggregateExpr
fn into_proto(&self) -> ProtoAggregateExpr
Convert a
Self
into a Proto
value.source§fn from_proto(proto: ProtoAggregateExpr) -> Result<Self, TryFromProtoError>
fn from_proto(proto: ProtoAggregateExpr) -> Result<Self, TryFromProtoError>
source§impl Serialize for AggregateExpr
impl Serialize for AggregateExpr
impl Eq for AggregateExpr
impl StructuralPartialEq for AggregateExpr
Auto Trait Implementations§
impl RefUnwindSafe for AggregateExpr
impl Send for AggregateExpr
impl Sync for AggregateExpr
impl Unpin for AggregateExpr
impl UnwindSafe for AggregateExpr
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
Mutably borrows from an owned value. Read more
source§impl<Q, K> Comparable<K> for Q
impl<Q, K> Comparable<K> for Q
source§impl<R, O, T> CopyOnto<ConsecutiveOffsetPairs<R, O>> for T
impl<R, O, T> CopyOnto<ConsecutiveOffsetPairs<R, O>> for T
source§fn copy_onto(
self,
target: &mut ConsecutiveOffsetPairs<R, O>
) -> <ConsecutiveOffsetPairs<R, O> as Region>::Index
fn copy_onto( self, target: &mut ConsecutiveOffsetPairs<R, O> ) -> <ConsecutiveOffsetPairs<R, O> as Region>::Index
Copy self into the target container, returning an index that allows to
look up the corresponding read item.
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
Compare self to
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<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
Compare self to
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>
Wrap the input message
T
in a tonic::Request
source§impl<T, U> OverrideFrom<Option<&T>> for Uwhere
U: OverrideFrom<T>,
impl<T, U> OverrideFrom<Option<&T>> for Uwhere
U: OverrideFrom<T>,
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<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>
See
RustType::from_proto
.source§fn from_rust(rust: &R) -> P
fn from_rust(rust: &R) -> P
See
RustType::into_proto
.