From 8c59264f86619d20010692fdfba752fd15b76221 Mon Sep 17 00:00:00 2001 From: wiedld Date: Fri, 11 Oct 2024 12:30:18 -0700 Subject: [PATCH] fix: when extracting metadata from expr, handle CastExpr --- datafusion/physical-plan/src/projection.rs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/datafusion/physical-plan/src/projection.rs b/datafusion/physical-plan/src/projection.rs index 49bf05964226..a28328fb5d43 100644 --- a/datafusion/physical-plan/src/projection.rs +++ b/datafusion/physical-plan/src/projection.rs @@ -40,7 +40,7 @@ use datafusion_common::stats::Precision; use datafusion_common::Result; use datafusion_execution::TaskContext; use datafusion_physical_expr::equivalence::ProjectionMapping; -use datafusion_physical_expr::expressions::Literal; +use datafusion_physical_expr::expressions::{CastExpr, Literal}; use crate::execution_plan::CardinalityEffect; use futures::stream::{Stream, StreamExt}; @@ -246,6 +246,10 @@ pub(crate) fn get_field_metadata( e: &Arc, input_schema: &Schema, ) -> Option> { + if let Some(cast) = e.as_any().downcast_ref::() { + return get_field_metadata(cast.expr(), input_schema); + } + // Look up field by index in schema (not NAME as there can be more than one // column with the same name) e.as_any()