Enum mz_expr::TraceSummary
source · pub enum TraceSummary {
Constant,
Dynamic,
Unknown,
}
Expand description
A summary type for the Trace interpreter.
The ordering of this type is meaningful: the “smaller” the summary, the more information we have
about the possible values of the expression. This means we can eg. use max
in the
interpreter below to find the summary for a function-call expression based on the summaries
of its arguments.
Variants§
Constant
The expression is constant: we can evaluate it without any runtime information.
This corresponds to a ResultSpec
of a single value.
Dynamic
The expression depends on runtime information, but in “predictable” way… ie. if we know
the range of possible values for all columns and unmaterializable functions, we can
predict the possible values of the output.
This corresponds to a ResultSpec
of a perhaps range of values.
Unknown
The expression depends on runtime information in an unpredictable way.
This corresponds to a ResultSpec::value_all()
or something similarly vague.
Implementations§
source§impl TraceSummary
impl TraceSummary
sourcefn apply_fn(self, pushdownable: bool) -> Self
fn apply_fn(self, pushdownable: bool) -> Self
We say that a function is “pushdownable” for a particular
argument if ColumnSpecs
can determine the spec of the function’s output given the input spec for
that argument. (In practice, this is true when either the function is monotone in that argument
or it’s been special-cased in the interpreter.)
sourcepub fn pushdownable(self) -> bool
pub fn pushdownable(self) -> bool
We say that an expression is “pushdownable” if it’s either constant or dynamic.
Trait Implementations§
source§impl Clone for TraceSummary
impl Clone for TraceSummary
source§fn clone(&self) -> TraceSummary
fn clone(&self) -> TraceSummary
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for TraceSummary
impl Debug for TraceSummary
source§impl Ord for TraceSummary
impl Ord for TraceSummary
source§fn cmp(&self, other: &TraceSummary) -> Ordering
fn cmp(&self, other: &TraceSummary) -> 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 TraceSummary
impl PartialEq for TraceSummary
source§impl PartialOrd for TraceSummary
impl PartialOrd for TraceSummary
impl Copy for TraceSummary
impl Eq for TraceSummary
impl StructuralPartialEq for TraceSummary
Auto Trait Implementations§
impl Freeze for TraceSummary
impl RefUnwindSafe for TraceSummary
impl Send for TraceSummary
impl Sync for TraceSummary
impl Unpin for TraceSummary
impl UnwindSafe for TraceSummary
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<T> CloneToUninit for Twhere
T: Copy,
impl<T> CloneToUninit for Twhere
T: Copy,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
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<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
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
.