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 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 Display for AggregateExpr
impl Display for AggregateExpr
source§impl DisplayText<()> for AggregateExpr
impl DisplayText<()> for AggregateExpr
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<AggregateExpr> for AggregateExpr
impl PartialEq<AggregateExpr> 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<AggregateExpr> for AggregateExpr
impl PartialOrd<AggregateExpr> 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 StructuralEq 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> DisplayExt for Twhere
T: Display,
impl<T> DisplayExt for Twhere
T: Display,
source§fn to_string_alt(&self) -> String
fn to_string_alt(&self) -> String
Formats an object with the “alternative” format (
{:#}
) and returns it.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
Compare self to
key
and return true
if they are equal.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<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
.