pub(crate) struct FilterCandidate {
expr: Arc<dyn PhysicalExpr>,
required_bytes: usize,
can_use_index: bool,
projection: Vec<usize>,
schema_mapper: Arc<dyn SchemaMapper>,
filter_schema: SchemaRef,
}Expand description
A candidate expression for creating a RowFilter.
Each candidate contains the expression as well as data to estimate the cost of evaluating the resulting expression.
See the module level documentation for more information.
Fields§
§expr: Arc<dyn PhysicalExpr>§required_bytes: usizeEstimate for the total number of bytes that will need to be processed
to evaluate this filter. This is used to estimate the cost of evaluating
the filter and to order the filters when reorder_predicates is true.
This is generated by summing the compressed size of all columns that the filter references.
can_use_index: boolCan this filter use an index (e.g. a page index) to prune rows?
projection: Vec<usize>The projection to read from the file schema to get the columns
required to pass through a SchemaMapper to the table schema
upon which we then evaluate the filter expression.
schema_mapper: Arc<dyn SchemaMapper>A SchemaMapper used to map batches read from the file schema to
the filter’s projection of the table schema.
filter_schema: SchemaRefThe projected table schema that this filter references
Auto Trait Implementations§
impl Freeze for FilterCandidate
impl !RefUnwindSafe for FilterCandidate
impl Send for FilterCandidate
impl Sync for FilterCandidate
impl Unpin for FilterCandidate
impl !UnwindSafe for FilterCandidate
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
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§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 more