kosiew commented on issue #16565:
URL: https://github.com/apache/datafusion/issues/16565#issuecomment-3035480855

   @adriangb,
   
   > incorporating the struct-aware casting logic from #16371 into `CastExpr` 
and `TryCastExpr`
   
   Yes. I think it is a necessary step to explore the feasibility of rewriting 
Expr for schema adaptation.
   
   A few thoughts on this:
   
   1. **Reusability of struct-aware casting kernels**: The core struct-aware 
casting kernel introduced in #16371 was designed to recursively handle casting 
between nested struct types, dealing with missing or reordered fields. 
Integrating this logic into `CastExpr` and `TryCastExpr` would unify casting 
semantics across physical expressions, ensuring consistent behavior during 
predicate rewrite and evaluation.
   
   2. **Improved predicate pushdown**: Predicate pushdown often requires 
projecting predicates down into struct subfields. If schemas differ between 
scans (e.g., fields missing or reordered), leveraging struct-aware casts would 
allow predicates to be adapted instead of dropped—thus generating more 
selective filters pushed down to data sources.
   
   3. **Implementation considerations**: We would need to extend `CastExpr` and 
`TryCastExpr` to detect when the input/output types are structs and invoke the 
struct-aware casting logic appropriately. This means:
      - Adding recursive traversal logic in these expressions.
      - Handling missing subfields by either filling with NULLs or using 
default values as per the kernel's design.
      - Handling field reordering and type promotion gracefully.
   
   4. **Challenge**: Rewriting the struct-aware casting logic from #16371 into 
manipulating expressions. Your expression rewrite prowess bends my mind.
   


-- 
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: github-unsubscr...@datafusion.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: github-unsubscr...@datafusion.apache.org
For additional commands, e-mail: github-h...@datafusion.apache.org

Reply via email to