alamb commented on code in PR #10183: URL: https://github.com/apache/datafusion/pull/10183#discussion_r1575378141
########## datafusion-examples/examples/expr_api.rs: ########## @@ -248,18 +296,35 @@ fn make_ts_field(name: &str) -> Field { make_field(name, DataType::Timestamp(TimeUnit::Nanosecond, tz)) } -/// Build a physical expression from a logical one, after applying simplification and type coercion +/// Build a physical expression from a logical one, after applying +/// simplification, type coercion, and applying function rewrites pub fn physical_expr(schema: &Schema, expr: Expr) -> Result<Arc<dyn PhysicalExpr>> { let df_schema = schema.clone().to_dfschema_ref()?; - // Simplify + // register the standard DataFusion function library let props = ExecutionProps::new(); let simplifier = ExprSimplifier::new(SimplifyContext::new(&props).with_schema(df_schema.clone())); // apply type coercion here to ensure types match let expr = simplifier.coerce(expr, df_schema.clone())?; + // Support Expr::struct by rewriting expressions + let expr = expr + .transform_up(&|expr| { + Ok(match expr { + Expr::GetIndexedField(GetIndexedField { Review Comment: This basically inlines the necessary code from https://github.com/apache/datafusion/blob/95607325410d6bdd4461c66b1e6ffe01fcbd736f/datafusion/functions-array/src/rewrite.rs#L151-L157 -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: commits-unsubscr...@datafusion.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@datafusion.apache.org For additional commands, e-mail: commits-h...@datafusion.apache.org