From a1b9653cead02db25c623274604c53ebf782c768 Mon Sep 17 00:00:00 2001 From: notashes Date: Wed, 11 Feb 2026 07:50:06 +0530 Subject: [PATCH] fix: remap dynamic filter columns during post phase for --- datafusion/physical-plan/src/filter.rs | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/datafusion/physical-plan/src/filter.rs b/datafusion/physical-plan/src/filter.rs index abd7b72fc963c..f2beb74f2af10 100644 --- a/datafusion/physical-plan/src/filter.rs +++ b/datafusion/physical-plan/src/filter.rs @@ -32,7 +32,7 @@ use crate::common::can_project; use crate::execution_plan::CardinalityEffect; use crate::filter_pushdown::{ ChildFilterDescription, ChildPushdownResult, FilterDescription, FilterPushdownPhase, - FilterPushdownPropagation, PushedDown, PushedDownPredicate, + FilterPushdownPropagation, PushedDown, }; use crate::metrics::{MetricBuilder, MetricType}; use crate::projection::{ @@ -590,16 +590,11 @@ impl ExecutionPlan for FilterExec { _config: &ConfigOptions, ) -> Result { if !matches!(phase, FilterPushdownPhase::Pre) { - // For non-pre phase, filters pass through unchanged - let filter_supports = parent_filters - .into_iter() - .map(PushedDownPredicate::supported) - .collect(); - - return Ok(FilterDescription::new().with_child(ChildFilterDescription { - parent_filters: filter_supports, - self_filters: vec![], - })); + // Use `ChildFilterDescription::from_child` to remap the columns + // before pushing it down. + let child = + ChildFilterDescription::from_child(&parent_filters, self.input())?; + return Ok(FilterDescription::new().with_child(child)); } let child = ChildFilterDescription::from_child(&parent_filters, self.input())?