pub struct FilePruner { /* private fields */ }Expand description
Prune based on file-level statistics.
Note: Partition column pruning is handled earlier via replace_columns_with_literals
which substitutes partition column references with their literal values before
the predicate reaches this pruner.
Implementations§
Source§impl FilePruner
impl FilePruner
pub fn new( predicate: Arc<dyn PhysicalExpr>, logical_file_schema: &SchemaRef, _partition_fields: Vec<FieldRef>, partitioned_file: PartitionedFile, predicate_creation_errors: Count, ) -> Result<Self>
Use try_new instead which returns None if no statistics are available
Sourcepub fn try_new(
predicate: Arc<dyn PhysicalExpr>,
file_schema: &SchemaRef,
partitioned_file: &PartitionedFile,
predicate_creation_errors: Count,
) -> Option<Self>
pub fn try_new( predicate: Arc<dyn PhysicalExpr>, file_schema: &SchemaRef, partitioned_file: &PartitionedFile, predicate_creation_errors: Count, ) -> Option<Self>
Create a file pruner for this file, or None when pruning it cannot
help.
Returns None when the file has no statistics struct to evaluate a
pruning predicate against, or when the predicate is purely static and the
file has no usable column statistics — in that case planning already did
everything such a pruner could. A predicate carrying a dynamic filter is
always accepted (given a statistics struct), since it may prune via
partition-value folding even without column statistics.
Sourcepub fn is_watching(&self) -> bool
pub fn is_watching(&self) -> bool
Returns true if this pruner watches a dynamic filter that can still
change, meaning Self::should_prune is worth re-checking as the scan
progresses. When false, the predicate is effectively static for the
remainder of the scan and the caller can avoid wrapping the stream in a
per-batch re-pruning adapter.
pub fn should_prune(&mut self) -> Result<bool>
Auto Trait Implementations§
impl !RefUnwindSafe for FilePruner
impl !UnwindSafe for FilePruner
impl Freeze for FilePruner
impl Send for FilePruner
impl Sync for FilePruner
impl Unpin for FilePruner
impl UnsafeUnpin for FilePruner
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> 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 more