pub struct SafeMfpPlan<E: OptimizableExpr = MirScalarExpr> {
pub(crate) mfp: MapFilterProject<E>,
}Expand description
A wrapper type which indicates it is safe to simply evaluate all expressions.
Fields§
§mfp: MapFilterProject<E>Implementations§
Source§impl<E: OptimizableExpr> SafeMfpPlan<E>
impl<E: OptimizableExpr> SafeMfpPlan<E>
Sourcepub fn from_mfp(mfp: MapFilterProject<E>) -> Self
pub fn from_mfp(mfp: MapFilterProject<E>) -> Self
Wrap a MapFilterProject in a SafeMfpPlan.
Sourcepub fn into_mfp(self) -> MapFilterProject<E>
pub fn into_mfp(self) -> MapFilterProject<E>
Unwrap the inner MapFilterProject.
Sourcepub fn permute_fn<F>(&mut self, remap: F, new_arity: usize)
pub fn permute_fn<F>(&mut self, remap: F, new_arity: usize)
Remaps references to input columns according to remap.
Leaves other column references, e.g. to newly mapped columns, unchanged.
Sourcepub fn is_identity(&self) -> bool
pub fn is_identity(&self) -> bool
Returns true when Self is the identity.
Source§impl<E: OptimizableExpr + Eval> SafeMfpPlan<E>
impl<E: OptimizableExpr + Eval> SafeMfpPlan<E>
Sourcepub fn evaluate_into<'a, 'row>(
&'a self,
datums: &mut Vec<Datum<'a>>,
arena: &'a RowArena,
row_buf: &'row mut Row,
) -> Result<Option<&'row Row>, EvalError>
pub fn evaluate_into<'a, 'row>( &'a self, datums: &mut Vec<Datum<'a>>, arena: &'a RowArena, row_buf: &'row mut Row, ) -> Result<Option<&'row Row>, EvalError>
Evaluates the linear operator on a supplied list of datums.
The arguments are the initial datums associated with the row, and an appropriately lifetimed arena for temporary allocations needed by scalar evaluation.
An Ok result will either be None if any predicate did not
evaluate to Datum::True, or the values of the columns listed
by self.projection if all predicates passed. If an error
occurs in the evaluation it is returned as an Err variant.
As the evaluation exits early with failed predicates, it may
miss some errors that would occur later in evaluation.
The row is not cleared first, but emptied if the function
returns `Ok(Some(row)).
Sourcepub fn evaluate_iter<'b, 'a: 'b>(
&'a self,
datums: &'b mut Vec<Datum<'a>>,
arena: &'a RowArena,
) -> Result<Option<impl Iterator<Item = Datum<'a>> + 'b>, EvalError>
pub fn evaluate_iter<'b, 'a: 'b>( &'a self, datums: &'b mut Vec<Datum<'a>>, arena: &'a RowArena, ) -> Result<Option<impl Iterator<Item = Datum<'a>> + 'b>, EvalError>
A version of evaluate which produces an iterator over Datum
as output.
This version can be useful when one wants to capture the resulting datums without packing and then unpacking a row.
Sourcepub fn evaluate_inner<'b, 'a: 'b>(
&'a self,
datums: &'b mut Vec<Datum<'a>>,
arena: &'a RowArena,
) -> Result<bool, EvalError>
pub fn evaluate_inner<'b, 'a: 'b>( &'a self, datums: &'b mut Vec<Datum<'a>>, arena: &'a RowArena, ) -> Result<bool, EvalError>
Populates datums with self.expressions and tests self.predicates.
This does not apply self.projection, which is up to the calling method.
Sourcepub fn could_error(&self) -> bool
pub fn could_error(&self) -> bool
Returns true if evaluation could introduce an error on non-error inputs.
Methods from Deref<Target = MapFilterProject<E>>§
Sourcepub fn is_identity(&self) -> bool
pub fn is_identity(&self) -> bool
True if the operator describes the identity transformation.
Sourcepub fn as_map_filter_project(&self) -> (Vec<E>, Vec<E>, Vec<usize>)
pub fn as_map_filter_project(&self) -> (Vec<E>, Vec<E>, Vec<usize>)
As the arguments to Map, Filter, and Project operators.
In principle, this operator can be implemented as a sequence of more elemental operators, likely less efficiently.
Sourcepub fn has_temporal_predicates(&self) -> bool
pub fn has_temporal_predicates(&self) -> bool
Returns true if any predicate in this MFP contains a temporal expression (mz_now()).
Sourcepub fn demand(&self) -> BTreeSet<usize>
pub fn demand(&self) -> BTreeSet<usize>
Lists input columns whose values are used in outputs.
You can use BTreeSet::last() to extract the maximum demanded column from the set.
It is entirely appropriate to determine the demand of an instance
and then both apply a projection to the subject of the instance and
self.permute this instance.
Trait Implementations§
Source§impl<E: Clone + OptimizableExpr> Clone for SafeMfpPlan<E>
impl<E: Clone + OptimizableExpr> Clone for SafeMfpPlan<E>
Source§fn clone(&self) -> SafeMfpPlan<E>
fn clone(&self) -> SafeMfpPlan<E>
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl<E: Debug + OptimizableExpr> Debug for SafeMfpPlan<E>
impl<E: Debug + OptimizableExpr> Debug for SafeMfpPlan<E>
Source§impl<E: OptimizableExpr> Deref for SafeMfpPlan<E>
impl<E: OptimizableExpr> Deref for SafeMfpPlan<E>
Source§impl<'de, E> Deserialize<'de> for SafeMfpPlan<E>where
E: DeserializeOwned + OptimizableExpr,
impl<'de, E> Deserialize<'de> for SafeMfpPlan<E>where
E: DeserializeOwned + OptimizableExpr,
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<E: Ord + OptimizableExpr> Ord for SafeMfpPlan<E>
impl<E: Ord + OptimizableExpr> Ord for SafeMfpPlan<E>
Source§fn cmp(&self, other: &SafeMfpPlan<E>) -> Ordering
fn cmp(&self, other: &SafeMfpPlan<E>) -> Ordering
1.21.0 (const: unstable) · Source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
Source§impl<E: PartialEq + OptimizableExpr> PartialEq for SafeMfpPlan<E>
impl<E: PartialEq + OptimizableExpr> PartialEq for SafeMfpPlan<E>
Source§fn eq(&self, other: &SafeMfpPlan<E>) -> bool
fn eq(&self, other: &SafeMfpPlan<E>) -> bool
self and other values to be equal, and is used by ==.Source§impl<E: PartialOrd + OptimizableExpr> PartialOrd for SafeMfpPlan<E>
impl<E: PartialOrd + OptimizableExpr> PartialOrd for SafeMfpPlan<E>
Source§impl<E> Serialize for SafeMfpPlan<E>where
E: Serialize + OptimizableExpr,
impl<E> Serialize for SafeMfpPlan<E>where
E: Serialize + OptimizableExpr,
impl<E: Eq + OptimizableExpr> Eq for SafeMfpPlan<E>
impl<E: OptimizableExpr> StructuralPartialEq for SafeMfpPlan<E>
Auto Trait Implementations§
impl<E> Freeze for SafeMfpPlan<E>
impl<E> RefUnwindSafe for SafeMfpPlan<E>where
E: RefUnwindSafe,
impl<E> Send for SafeMfpPlan<E>where
E: Send,
impl<E> Sync for SafeMfpPlan<E>where
E: Sync,
impl<E> Unpin for SafeMfpPlan<E>where
E: Unpin,
impl<E> UnsafeUnpin for SafeMfpPlan<E>
impl<E> UnwindSafe for SafeMfpPlan<E>where
E: UnwindSafe,
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§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<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> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§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::RequestSource§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> Paint for Twhere
T: ?Sized,
impl<T> Paint for Twhere
T: ?Sized,
Source§fn fg(&self, value: Color) -> Painted<&T>
fn fg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the foreground set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like red() and
green(), which have the same functionality but are
pithier.
§Example
Set foreground color to white using fg():
use yansi::{Paint, Color};
painted.fg(Color::White);Set foreground color to white using white().
use yansi::Paint;
painted.white();Source§fn bright_black(&self) -> Painted<&T>
fn bright_black(&self) -> Painted<&T>
Source§fn bright_red(&self) -> Painted<&T>
fn bright_red(&self) -> Painted<&T>
Source§fn bright_green(&self) -> Painted<&T>
fn bright_green(&self) -> Painted<&T>
Source§fn bright_yellow(&self) -> Painted<&T>
fn bright_yellow(&self) -> Painted<&T>
Source§fn bright_blue(&self) -> Painted<&T>
fn bright_blue(&self) -> Painted<&T>
Source§fn bright_magenta(&self) -> Painted<&T>
fn bright_magenta(&self) -> Painted<&T>
Source§fn bright_cyan(&self) -> Painted<&T>
fn bright_cyan(&self) -> Painted<&T>
Source§fn bright_white(&self) -> Painted<&T>
fn bright_white(&self) -> Painted<&T>
Source§fn bg(&self, value: Color) -> Painted<&T>
fn bg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the background set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like on_red() and
on_green(), which have the same functionality but
are pithier.
§Example
Set background color to red using fg():
use yansi::{Paint, Color};
painted.bg(Color::Red);Set background color to red using on_red().
use yansi::Paint;
painted.on_red();Source§fn on_primary(&self) -> Painted<&T>
fn on_primary(&self) -> Painted<&T>
Source§fn on_magenta(&self) -> Painted<&T>
fn on_magenta(&self) -> Painted<&T>
Source§fn on_bright_black(&self) -> Painted<&T>
fn on_bright_black(&self) -> Painted<&T>
Source§fn on_bright_red(&self) -> Painted<&T>
fn on_bright_red(&self) -> Painted<&T>
Source§fn on_bright_green(&self) -> Painted<&T>
fn on_bright_green(&self) -> Painted<&T>
Source§fn on_bright_yellow(&self) -> Painted<&T>
fn on_bright_yellow(&self) -> Painted<&T>
Source§fn on_bright_blue(&self) -> Painted<&T>
fn on_bright_blue(&self) -> Painted<&T>
Source§fn on_bright_magenta(&self) -> Painted<&T>
fn on_bright_magenta(&self) -> Painted<&T>
Source§fn on_bright_cyan(&self) -> Painted<&T>
fn on_bright_cyan(&self) -> Painted<&T>
Source§fn on_bright_white(&self) -> Painted<&T>
fn on_bright_white(&self) -> Painted<&T>
Source§fn attr(&self, value: Attribute) -> Painted<&T>
fn attr(&self, value: Attribute) -> Painted<&T>
Enables the styling Attribute value.
This method should be used rarely. Instead, prefer to use
attribute-specific builder methods like bold() and
underline(), which have the same functionality
but are pithier.
§Example
Make text bold using attr():
use yansi::{Paint, Attribute};
painted.attr(Attribute::Bold);Make text bold using using bold().
use yansi::Paint;
painted.bold();Source§fn rapid_blink(&self) -> Painted<&T>
fn rapid_blink(&self) -> Painted<&T>
Source§fn quirk(&self, value: Quirk) -> Painted<&T>
fn quirk(&self, value: Quirk) -> Painted<&T>
Enables the yansi Quirk value.
This method should be used rarely. Instead, prefer to use quirk-specific
builder methods like mask() and
wrap(), which have the same functionality but are
pithier.
§Example
Enable wrapping using .quirk():
use yansi::{Paint, Quirk};
painted.quirk(Quirk::Wrap);Enable wrapping using wrap().
use yansi::Paint;
painted.wrap();Source§fn clear(&self) -> Painted<&T>
👎Deprecated since 1.0.1: renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
fn clear(&self) -> Painted<&T>
renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
Source§fn whenever(&self, value: Condition) -> Painted<&T>
fn whenever(&self, value: Condition) -> Painted<&T>
Conditionally enable styling based on whether the Condition value
applies. Replaces any previous condition.
See the crate level docs for more details.
§Example
Enable styling painted only when both stdout and stderr are TTYs:
use yansi::{Paint, Condition};
painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
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.