pub struct PruningPredicateBuilder<'a> { /* private fields */ }Expand description
Builder for a PruningPredicate. Groups optional configuration —
IN (...) rewrite cap, error counter — so future additions do not
churn the top-level API.
The two entry points are:
Self::build: convenience for scan sites that already track apredicate_creation_errorscounter. ReturnsSome(Arc<..>)when the resulting predicate can actually prune,Nonewhen it is trivially true or when construction failed (in which case the error counter is incremented if one was supplied).Self::try_build: returns a rawResult<PruningPredicate>for callers that want to surface errors themselves.
Implementations§
Source§impl<'a> PruningPredicateBuilder<'a>
impl<'a> PruningPredicateBuilder<'a>
Sourcepub fn with_file_schema(self, file_schema: SchemaRef) -> Self
pub fn with_file_schema(self, file_schema: SchemaRef) -> Self
Set the schema of the container that will be pruned (typically the parquet file schema).
Sourcepub fn with_error_counter(self, error_counter: &'a Count) -> Self
pub fn with_error_counter(self, error_counter: &'a Count) -> Self
Metric counter incremented once per predicate that fails to build.
Only consulted by Self::build; Self::try_build surfaces the
error directly.
Sourcepub fn with_max_in_list_size(self, max_in_list_size: usize) -> Self
pub fn with_max_in_list_size(self, max_in_list_size: usize) -> Self
Cap on the size of IN (...) lists that will be rewritten into per-
value min/max statistics checks. Lists longer than this fall back to
the unhandled-predicate hook (typically “keep the container”).
Query engines typically pass
datafusion.execution.parquet.max_in_list_size here.
Sourcepub fn build(
self,
predicate: Arc<dyn PhysicalExpr>,
) -> Option<Arc<PruningPredicate>>
pub fn build( self, predicate: Arc<dyn PhysicalExpr>, ) -> Option<Arc<PruningPredicate>>
Build a PruningPredicate wrapped in Some(Arc<..>) when it can
prune, None when it is trivially true or when construction fails.
If Self::with_error_counter was set, construction failures are
recorded there.
Sourcepub fn try_build(
self,
predicate: Arc<dyn PhysicalExpr>,
) -> Result<PruningPredicate>
pub fn try_build( self, predicate: Arc<dyn PhysicalExpr>, ) -> Result<PruningPredicate>
Build a PruningPredicate, returning the construction error
directly. Callers that want the always-true predicate elided or
errors folded into a counter should use Self::build instead.
Trait Implementations§
Source§impl<'a> Default for PruningPredicateBuilder<'a>
impl<'a> Default for PruningPredicateBuilder<'a>
Source§fn default() -> PruningPredicateBuilder<'a>
fn default() -> PruningPredicateBuilder<'a>
Auto Trait Implementations§
impl<'a> Freeze for PruningPredicateBuilder<'a>
impl<'a> RefUnwindSafe for PruningPredicateBuilder<'a>
impl<'a> Send for PruningPredicateBuilder<'a>
impl<'a> Sync for PruningPredicateBuilder<'a>
impl<'a> Unpin for PruningPredicateBuilder<'a>
impl<'a> UnsafeUnpin for PruningPredicateBuilder<'a>
impl<'a> UnwindSafe for PruningPredicateBuilder<'a>
Blanket Implementations§
impl<T> Allocation for T
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