RowGroupAccessPlanFilter

Struct RowGroupAccessPlanFilter 

Source
pub struct RowGroupAccessPlanFilter {
    access_plan: ParquetAccessPlan,
}
Expand description

Reduces the ParquetAccessPlan based on row group level metadata.

This struct implements the various types of pruning that are applied to a set of row groups within a parquet file, progressively narrowing down the set of row groups (and ranges/selections within those row groups) that should be scanned, based on the available metadata.

Fields§

§access_plan: ParquetAccessPlan

Implementations§

Source§

impl RowGroupAccessPlanFilter

Source

pub fn new(access_plan: ParquetAccessPlan) -> RowGroupAccessPlanFilter

Create a new RowGroupPlanBuilder for pruning out the groups to scan based on metadata and statistics

Source

pub fn is_empty(&self) -> bool

Return true if there are no row groups

Source

pub fn remaining_row_group_count(&self) -> usize

Return the number of row groups that are currently expected to be scanned

Source

pub fn build(self) -> ParquetAccessPlan

Returns the inner access plan

Source

pub fn prune_by_range(&mut self, groups: &[RowGroupMetaData], range: &FileRange)

Prune remaining row groups to only those within the specified range.

Updates this set to mark row groups that should not be scanned

§Panics

if groups.len() != self.len()

Source

pub fn prune_by_statistics( &mut self, arrow_schema: &Schema, parquet_schema: &SchemaDescriptor, groups: &[RowGroupMetaData], predicate: &PruningPredicate, metrics: &ParquetFileMetrics, )

Prune remaining row groups using min/max/null_count statistics and the PruningPredicate to determine if the predicate can not be true.

Updates this set to mark row groups that should not be scanned

Note: This method currently ignores ColumnOrder https://github.com/apache/datafusion/issues/8335

§Panics

if groups.len() != self.len()

Source

pub async fn prune_by_bloom_filters<T>( &mut self, arrow_schema: &Schema, builder: &mut ArrowReaderBuilder<AsyncReader<T>>, predicate: &PruningPredicate, metrics: &ParquetFileMetrics, )
where T: AsyncFileReader + Send + 'static,

Prune remaining row groups using available bloom filters and the PruningPredicate.

Updates this set with row groups that should not be scanned

§Panics

if the builder does not have the same number of row groups as this set

Trait Implementations§

Source§

impl Clone for RowGroupAccessPlanFilter

Source§

fn clone(&self) -> RowGroupAccessPlanFilter

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 RowGroupAccessPlanFilter

Source§

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

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

impl PartialEq for RowGroupAccessPlanFilter

Source§

fn eq(&self, other: &RowGroupAccessPlanFilter) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl StructuralPartialEq for RowGroupAccessPlanFilter

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,