struct PushdownChecker<'schema> {
non_primitive_columns: bool,
projected_columns: bool,
required_columns: BTreeSet<usize>,
table_schema: &'schema Schema,
}Fields§
§non_primitive_columns: boolDoes the expression require any non-primitive columns (like structs)?
projected_columns: boolDoes the expression reference any columns that are in the table schema but not in the file schema? This includes partition columns and projected columns.
required_columns: BTreeSet<usize>§table_schema: &'schema SchemaImplementations§
Source§impl<'schema> PushdownChecker<'schema>
impl<'schema> PushdownChecker<'schema>
fn new(table_schema: &'schema Schema) -> Self
fn check_single_column( &mut self, column_name: &str, ) -> Option<TreeNodeRecursion>
fn prevents_pushdown(&self) -> bool
fn check(&mut self, node: Arc<dyn PhysicalExpr>) -> Result<TreeNodeRecursion>
Trait Implementations§
Source§impl TreeNodeVisitor<'_> for PushdownChecker<'_>
impl TreeNodeVisitor<'_> for PushdownChecker<'_>
Source§type Node = Arc<dyn PhysicalExpr>
type Node = Arc<dyn PhysicalExpr>
The node type which is visitable.
Source§fn f_down(&mut self, node: &Self::Node) -> Result<TreeNodeRecursion>
fn f_down(&mut self, node: &Self::Node) -> Result<TreeNodeRecursion>
Invoked while traversing down the tree, before any children are visited.
Default implementation continues the recursion.
Source§fn f_up(
&mut self,
_node: &'n Self::Node,
) -> Result<TreeNodeRecursion, DataFusionError>
fn f_up( &mut self, _node: &'n Self::Node, ) -> Result<TreeNodeRecursion, DataFusionError>
Invoked while traversing up the tree after children are visited. Default
implementation continues the recursion.
Auto Trait Implementations§
impl<'schema> Freeze for PushdownChecker<'schema>
impl<'schema> RefUnwindSafe for PushdownChecker<'schema>
impl<'schema> Send for PushdownChecker<'schema>
impl<'schema> Sync for PushdownChecker<'schema>
impl<'schema> Unpin for PushdownChecker<'schema>
impl<'schema> UnwindSafe for PushdownChecker<'schema>
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
Mutably borrows from an owned value. Read more
§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>
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 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>
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