diff --git a/crates/polars-lazy/src/frame/mod.rs b/crates/polars-lazy/src/frame/mod.rs index 4d6b5d227e9a..fd4334cad066 100644 --- a/crates/polars-lazy/src/frame/mod.rs +++ b/crates/polars-lazy/src/frame/mod.rs @@ -612,12 +612,12 @@ impl LazyFrame { lp_arena, expr_arena, scratch, - Some(&|expr, expr_arena| { + Some(&|expr, expr_arena, schema| { let phys_expr = create_physical_expr( expr, Context::Default, expr_arena, - &Default::default(), + schema, &mut ExpressionConversionState::new(true, 0), ) .ok()?; diff --git a/crates/polars-plan/src/plans/optimizer/predicate_pushdown/mod.rs b/crates/polars-plan/src/plans/optimizer/predicate_pushdown/mod.rs index 7cb0753e5a6d..ed3f3e0376bd 100644 --- a/crates/polars-plan/src/plans/optimizer/predicate_pushdown/mod.rs +++ b/crates/polars-plan/src/plans/optimizer/predicate_pushdown/mod.rs @@ -17,7 +17,7 @@ use crate::prelude::optimizer::predicate_pushdown::rename::process_rename; use crate::utils::{check_input_node, has_aexpr}; pub type ExprEval<'a> = - Option<&'a dyn Fn(&ExprIR, &Arena) -> Option>>; + Option<&'a dyn Fn(&ExprIR, &Arena, &SchemaRef) -> Option>>; pub struct PredicatePushDown<'a> { expr_eval: ExprEval<'a>, @@ -364,7 +364,9 @@ impl<'a> PredicatePushDown<'a> { let predicate = predicate_at_scan(acc_predicates, predicate.clone(), expr_arena); if let (Some(hive_parts), Some(predicate)) = (&scan_hive_parts, &predicate) { - if let Some(io_expr) = self.expr_eval.unwrap()(predicate, expr_arena) { + if let Some(io_expr) = + self.expr_eval.unwrap()(predicate, expr_arena, &file_info.schema) + { if let Some(stats_evaluator) = io_expr.as_stats_evaluator() { let paths = sources.as_paths().ok_or_else(|| { polars_err!(nyi = "Hive partitioning of in-memory buffers")