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
sourcefn on_unique_ranking_window_funcs(
&self,
input_type: &[ColumnType],
col_name: &str,
) -> MirScalarExpr
fn on_unique_ranking_window_funcs( &self, input_type: &[ColumnType], col_name: &str, ) -> MirScalarExpr
on_unique
for ROW_NUMBER, RANK, DENSE_RANK
fn on_unique_lag_lead( lag_lead: &LagLeadType, encoded_args: MirScalarExpr, return_type: ScalarType, ) -> (MirScalarExpr, ColumnName)
fn on_unique_first_value_last_value( window_frame: &WindowFrame, arg: MirScalarExpr, return_type: ScalarType, ) -> (MirScalarExpr, ColumnName)
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§impl PartialOrd for AggregateExpr
impl PartialOrd for AggregateExpr
source§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§fn into_proto_owned(self) -> Proto
fn into_proto_owned(self) -> Proto
A zero clone version of
Self::into_proto
that types can
optionally implement, otherwise, the default implementation
delegates to Self::into_proto
.source§impl Serialize for AggregateExpr
impl Serialize for AggregateExpr
impl Eq for AggregateExpr
impl StructuralPartialEq for AggregateExpr
Auto Trait Implementations§
impl Freeze for AggregateExpr
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<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)
🔬This is a nightly-only experimental API. (
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§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
.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)
The method of
std::ops::AddAssign
, for types that do not implement AddAssign
.