Enum mz_expr::func::VariadicFunc
source · pub enum VariadicFunc {
Show 41 variants
Coalesce,
Greatest,
Least,
Concat,
ConcatWs,
MakeTimestamp,
PadLeading,
Substr,
Replace,
JsonbBuildArray,
JsonbBuildObject,
MapBuild {
value_type: ScalarType,
},
ArrayCreate {
elem_type: ScalarType,
},
ArrayToString {
elem_type: ScalarType,
},
ArrayIndex {
offset: i64,
},
ListCreate {
elem_type: ScalarType,
},
RecordCreate {
field_names: Vec<ColumnName>,
},
ListIndex,
ListSliceLinear,
SplitPart,
RegexpMatch,
HmacString,
HmacBytes,
ErrorIfNull,
DateBinTimestamp,
DateBinTimestampTz,
DateDiffTimestamp,
DateDiffTimestampTz,
DateDiffDate,
DateDiffTime,
And,
Or,
RangeCreate {
elem_type: ScalarType,
},
MakeAclItem,
MakeMzAclItem,
Translate,
ArrayPosition,
ArrayFill {
elem_type: ScalarType,
},
TimezoneTime,
RegexpSplitToArray,
RegexpReplace,
}
Variants§
Coalesce
Greatest
Least
Concat
ConcatWs
MakeTimestamp
PadLeading
Substr
Replace
JsonbBuildArray
JsonbBuildObject
MapBuild
Fields
value_type: ScalarType
ArrayCreate
Fields
elem_type: ScalarType
ArrayToString
Fields
elem_type: ScalarType
ArrayIndex
ListCreate
Fields
elem_type: ScalarType
RecordCreate
Fields
field_names: Vec<ColumnName>
ListIndex
ListSliceLinear
SplitPart
RegexpMatch
HmacString
HmacBytes
ErrorIfNull
DateBinTimestamp
DateBinTimestampTz
DateDiffTimestamp
DateDiffTimestampTz
DateDiffDate
DateDiffTime
And
Or
RangeCreate
Fields
elem_type: ScalarType
MakeAclItem
MakeMzAclItem
Translate
ArrayPosition
ArrayFill
Fields
elem_type: ScalarType
TimezoneTime
RegexpSplitToArray
RegexpReplace
Implementations§
source§impl VariadicFunc
impl VariadicFunc
pub fn eval<'a>( &'a self, datums: &[Datum<'a>], temp_storage: &'a RowArena, exprs: &'a [MirScalarExpr], ) -> Result<Datum<'a>, EvalError>
pub fn is_associative(&self) -> bool
pub fn output_type(&self, input_types: Vec<ColumnType>) -> ColumnType
sourcepub fn propagates_nulls(&self) -> bool
pub fn propagates_nulls(&self) -> bool
Whether the function output is NULL if any of its inputs are NULL.
sourcepub fn introduces_nulls(&self) -> bool
pub fn introduces_nulls(&self) -> bool
Whether the function might return NULL even if none of its inputs are NULL.
This is presently conservative, and may indicate that a function introduces nulls even when it does not.
pub fn switch_and_or(&self) -> Self
pub fn is_infix_op(&self) -> bool
sourcepub fn unit_of_and_or(&self) -> MirScalarExpr
pub fn unit_of_and_or(&self) -> MirScalarExpr
Gives the unit (u) of OR or AND, such that u AND/OR x == x
.
Note that a 0-arg AND/OR evaluates to unit_of_and_or.
sourcepub fn zero_of_and_or(&self) -> MirScalarExpr
pub fn zero_of_and_or(&self) -> MirScalarExpr
Gives the zero (z) of OR or AND, such that z AND/OR x == z
.
sourcepub fn could_error(&self) -> bool
pub fn could_error(&self) -> bool
Returns true if the function could introduce an error on non-error inputs.
sourcepub fn is_monotone(&self) -> bool
pub fn is_monotone(&self) -> bool
Returns true if the function is monotone. (Non-strict; either increasing or decreasing.) Monotone functions map ranges to ranges: ie. given a range of possible inputs, we can determine the range of possible outputs just by mapping the endpoints.
This describes the pointwise behaviour of the function:
ie. if more than one argument is provided, this describes the behaviour of
any specific argument as the others are held constant. (For example, COALESCE(a, b)
is
monotone in a
because for any particular value of b
, increasing a
will never
cause the result to decrease.)
This property describes the behaviour of the function over ranges where the function is defined: ie. the arguments and the result are non-error datums.
Trait Implementations§
source§impl Arbitrary for VariadicFunc
impl Arbitrary for VariadicFunc
An explicit Arbitrary
implementation needed here because of a known
proptest
issue.
Revert to the derive-macro impementation once the issue1 is fixed.
§type Parameters = ()
type Parameters = ()
arbitrary_with
accepts for configuration
of the generated Strategy
. Parameters must implement Default
.§type Strategy = Union<BoxedStrategy<VariadicFunc>>
type Strategy = Union<BoxedStrategy<VariadicFunc>>
Strategy
used to generate values of type Self
.source§fn arbitrary_with(_: Self::Parameters) -> Self::Strategy
fn arbitrary_with(_: Self::Parameters) -> Self::Strategy
source§impl Clone for VariadicFunc
impl Clone for VariadicFunc
source§fn clone(&self) -> VariadicFunc
fn clone(&self) -> VariadicFunc
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for VariadicFunc
impl Debug for VariadicFunc
source§impl<'de> Deserialize<'de> for VariadicFunc
impl<'de> Deserialize<'de> for VariadicFunc
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 Display for VariadicFunc
impl Display for VariadicFunc
source§impl Hash for VariadicFunc
impl Hash for VariadicFunc
source§impl MzReflect for VariadicFunc
impl MzReflect for VariadicFunc
source§fn add_to_reflected_type_info(rti: &mut ReflectedTypeInfo)
fn add_to_reflected_type_info(rti: &mut ReflectedTypeInfo)
rti
. Read moresource§impl Ord for VariadicFunc
impl Ord for VariadicFunc
source§fn cmp(&self, other: &VariadicFunc) -> Ordering
fn cmp(&self, other: &VariadicFunc) -> Ordering
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
source§impl PartialEq for VariadicFunc
impl PartialEq for VariadicFunc
source§impl PartialOrd for VariadicFunc
impl PartialOrd for VariadicFunc
source§impl RustType<ProtoVariadicFunc> for VariadicFunc
impl RustType<ProtoVariadicFunc> for VariadicFunc
source§fn into_proto(&self) -> ProtoVariadicFunc
fn into_proto(&self) -> ProtoVariadicFunc
Self
into a Proto
value.source§fn from_proto(proto: ProtoVariadicFunc) -> Result<Self, TryFromProtoError>
fn from_proto(proto: ProtoVariadicFunc) -> Result<Self, TryFromProtoError>
source§fn into_proto_owned(self) -> Proto
fn into_proto_owned(self) -> Proto
Self::into_proto
that types can
optionally implement, otherwise, the default implementation
delegates to Self::into_proto
.source§impl Serialize for VariadicFunc
impl Serialize for VariadicFunc
impl Eq for VariadicFunc
impl StructuralPartialEq for VariadicFunc
Auto Trait Implementations§
impl Freeze for VariadicFunc
impl RefUnwindSafe for VariadicFunc
impl Send for VariadicFunc
impl Sync for VariadicFunc
impl Unpin for VariadicFunc
impl UnwindSafe for VariadicFunc
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<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)
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
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
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, 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>
RustType::from_proto
.source§fn from_rust(rust: &R) -> P
fn from_rust(rust: &R) -> P
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)
std::ops::AddAssign
, for types that do not implement AddAssign
.