pub struct Trace;
Expand description
An interpreter that returns whether or not a particular expression is “pushdownable”.
Broadly speaking, an expression is pushdownable if the result of evaluating the expression
depends on the range of possible column values in a way that ColumnSpecs
is able to reason about.
In practice, we internally need to distinguish between expressions that are trivially predicable (because they’re constant) and expressions that depend on the column ranges themselves. See the TraceSummary variants for those distinctions, and TraceSummary::pushdownable for the overall assessment.
Trait Implementations§
source§impl Interpreter for Trace
impl Interpreter for Trace
type Summary = TraceSummary
source§fn literal(
&self,
_result: &Result<Row, EvalError>,
_col_type: &ColumnType,
) -> Self::Summary
fn literal( &self, _result: &Result<Row, EvalError>, _col_type: &ColumnType, ) -> Self::Summary
A literal value.
(Stored as a row, because we can’t own a Datum.)
source§fn unmaterializable(&self, _func: &UnmaterializableFunc) -> Self::Summary
fn unmaterializable(&self, _func: &UnmaterializableFunc) -> Self::Summary
A call to an unmaterializable function. Read more
source§fn unary(&self, func: &UnaryFunc, expr: Self::Summary) -> Self::Summary
fn unary(&self, func: &UnaryFunc, expr: Self::Summary) -> Self::Summary
A function call that takes one expression as an argument.
source§fn binary(
&self,
func: &BinaryFunc,
left: Self::Summary,
right: Self::Summary,
) -> Self::Summary
fn binary( &self, func: &BinaryFunc, left: Self::Summary, right: Self::Summary, ) -> Self::Summary
A function call that takes two expressions as arguments.
source§fn variadic(
&self,
func: &VariadicFunc,
exprs: Vec<Self::Summary>,
) -> Self::Summary
fn variadic( &self, func: &VariadicFunc, exprs: Vec<Self::Summary>, ) -> Self::Summary
A function call that takes an arbitrary number of arguments.
source§fn cond(
&self,
cond: Self::Summary,
then: Self::Summary,
els: Self::Summary,
) -> Self::Summary
fn cond( &self, cond: Self::Summary, then: Self::Summary, els: Self::Summary, ) -> Self::Summary
Conditionally evaluated expressions.
source§fn expr(&self, expr: &MirScalarExpr) -> Self::Summary
fn expr(&self, expr: &MirScalarExpr) -> Self::Summary
Evaluate an entire expression, by delegating to the fine-grained methods on Interpreter.
source§fn mfp_filter(&self, mfp: &MapFilterProject) -> Self::Summary
fn mfp_filter(&self, mfp: &MapFilterProject) -> Self::Summary
Specifically, this evaluates the map and filters stages of an MFP: summarize each of the
map expressions, then
and
together all of the filters.source§fn mfp_plan_filter(&self, plan: &MfpPlan) -> Self::Summary
fn mfp_plan_filter(&self, plan: &MfpPlan) -> Self::Summary
Similar to Self::mfp_filter, but includes the additional temporal filters that have been
broken out.
Auto Trait Implementations§
impl Freeze for Trace
impl RefUnwindSafe for Trace
impl Send for Trace
impl Sync for Trace
impl Unpin for Trace
impl UnwindSafe for Trace
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> 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<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
.