Enum mz_sql::plan::expr::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) -> VariadicFunc
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(
_: <VariadicFunc as Arbitrary>::Parameters,
) -> <VariadicFunc as Arbitrary>::Strategy
fn arbitrary_with( _: <VariadicFunc as Arbitrary>::Parameters, ) -> <VariadicFunc as Arbitrary>::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<VariadicFunc, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<VariadicFunc, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
source§impl Display for VariadicFunc
impl Display for VariadicFunc
source§impl From<VariadicFunc> for Operation<HirScalarExpr>
impl From<VariadicFunc> for Operation<HirScalarExpr>
source§fn from(v: VariadicFunc) -> Operation<HirScalarExpr>
fn from(v: VariadicFunc) -> Operation<HirScalarExpr>
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<VariadicFunc, TryFromProtoError>
fn from_proto( proto: ProtoVariadicFunc, ) -> Result<VariadicFunc, 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
source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
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> FmtForward for T
impl<T> FmtForward for T
source§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self
to use its Binary
implementation when Debug
-formatted.source§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self
to use its Display
implementation when
Debug
-formatted.source§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self
to use its LowerExp
implementation when
Debug
-formatted.source§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self
to use its LowerHex
implementation when
Debug
-formatted.source§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self
to use its Octal
implementation when Debug
-formatted.source§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self
to use its Pointer
implementation when
Debug
-formatted.source§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self
to use its UpperExp
implementation when
Debug
-formatted.source§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self
to use its UpperHex
implementation when
Debug
-formatted.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> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
source§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read moresource§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read moresource§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
source§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
source§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self
, then passes self.as_ref()
into the pipe function.source§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self
, then passes self.as_mut()
into the pipe
function.source§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self
, then passes self.deref()
into the pipe function.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
.source§impl<T> Serialize for T
impl<T> Serialize for T
fn erased_serialize(&self, serializer: &mut dyn Serializer) -> Result<Ok, Error>
source§impl<T> Tap for T
impl<T> Tap for T
source§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B>
of a value. Read moresource§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B>
of a value. Read moresource§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R>
view of a value. Read moresource§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R>
view of a value. Read moresource§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target
of a value. Read moresource§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target
of a value. Read moresource§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap()
only in debug builds, and is erased in release builds.source§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut()
only in debug builds, and is erased in release
builds.source§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow()
only in debug builds, and is erased in release
builds.source§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut()
only in debug builds, and is erased in release
builds.source§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref()
only in debug builds, and is erased in release
builds.source§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut()
only in debug builds, and is erased in release
builds.source§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref()
only in debug builds, and is erased in release
builds.