feichai0017 commented on code in PR #20945:
URL: https://github.com/apache/datafusion/pull/20945#discussion_r3310830490
##########
datafusion/expr/src/type_coercion/functions.rs:
##########
@@ -757,6 +802,10 @@ fn maybe_data_types(
for (i, valid_type) in valid_types.iter().enumerate() {
let current_type = ¤t_types[i];
+ // Keep exact equality here. Some kernels such as `make_array`
+ // require nested field names/order to match exactly at runtime.
+ // Structural-equivalence short-circuiting is handled earlier by
+ // `data_types_match`.
Review Comment:
Thanks, you were right that the previous reasoning was too indirect.
I reworked the fix to target the root cause instead: `get_valid_types()` was
rebuilding array signature types in a way that normalized away the original
list child field name. The fix now preserves that field when deriving the
expected array type, so the existing exact equality in `fields_with_udf` works
as intended.
--
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: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]