RequiredColumns

Struct RequiredColumns 

Source
pub struct RequiredColumns {
    columns: Vec<(Column, StatisticsType, Field)>,
}
Expand description

Describes which columns statistics are necessary to evaluate a PruningPredicate.

This structure permits reading and creating the minimum number statistics, which is important since statistics may be non trivial to read (e.g. large strings or when there are 1000s of columns).

Handles creating references to the min/max statistics for columns as well as recording which statistics are needed

Fields§

§columns: Vec<(Column, StatisticsType, Field)>

The statistics required to evaluate this predicate:

  • The unqualified column in the input schema
  • Statistics type (e.g. Min or Max or Null_Count)
  • The field the statistics value should be placed in for pruning predicate evaluation (e.g. min_value or max_value)

Implementations§

Source§

impl RequiredColumns

Source

fn new() -> Self

Source

pub fn single_column(&self) -> Option<&Column>

Returns Some(column) if this is a single column predicate.

Returns None if this is a multi-column predicate.

Examples:

  • a > 5 OR a < 10 returns Some(a)
  • a > 5 OR b < 10 returns None
  • true returns None
Source

fn schema(&self) -> Schema

Returns a schema that describes the columns required to evaluate this pruning predicate. The schema contains the fields for each column in self.columns with the appropriate data type for the statistics. Order matters, this same order is used to evaluate the pruning predicate.

Source

pub(crate) fn iter( &self, ) -> impl Iterator<Item = &(Column, StatisticsType, Field)>

Returns an iterator over items in columns (see doc on self.columns for details)

Source

fn find_stat_column( &self, column: &Column, statistics_type: StatisticsType, ) -> Option<usize>

Source

fn stat_column_expr( &mut self, column: &Column, column_expr: &Arc<dyn PhysicalExpr>, field: &Field, stat_type: StatisticsType, ) -> Result<Arc<dyn PhysicalExpr>>

Rewrites column_expr so that all appearances of column are replaced with a reference to either the min or max statistics column, while keeping track that a reference to the statistics column is required

for example, an expression like col("foo") > 5, when called with Max would result in an expression like col("foo_max") > 5 with the appropriate entry noted in self.columns

Source

fn min_column_expr( &mut self, column: &Column, column_expr: &Arc<dyn PhysicalExpr>, field: &Field, ) -> Result<Arc<dyn PhysicalExpr>>

rewrite col –> col_min

Source

fn max_column_expr( &mut self, column: &Column, column_expr: &Arc<dyn PhysicalExpr>, field: &Field, ) -> Result<Arc<dyn PhysicalExpr>>

rewrite col –> col_max

Source

fn null_count_column_expr( &mut self, column: &Column, column_expr: &Arc<dyn PhysicalExpr>, field: &Field, ) -> Result<Arc<dyn PhysicalExpr>>

rewrite col –> col_null_count

Source

fn row_count_column_expr( &mut self, column: &Column, column_expr: &Arc<dyn PhysicalExpr>, field: &Field, ) -> Result<Arc<dyn PhysicalExpr>>

rewrite col –> col_row_count

Trait Implementations§

Source§

impl Clone for RequiredColumns

Source§

fn clone(&self) -> RequiredColumns

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for RequiredColumns

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for RequiredColumns

Source§

fn default() -> RequiredColumns

Returns the “default value” for a type. Read more
Source§

impl From<Vec<(Column, StatisticsType, Field)>> for RequiredColumns

Source§

fn from(columns: Vec<(Column, StatisticsType, Field)>) -> Self

Converts to this type from the input type.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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 more
§

impl<T> PolicyExt for T
where T: ?Sized,

§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] only if self and other return Action::Follow. Read more
§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

impl<T> Allocation for T
where T: RefUnwindSafe + Send + Sync,

§

impl<T> ErasedDestructor for T
where T: 'static,