)]}'
{
  "commit": "a77e5a5c50f5e5c870af6b7d37fb337f231c7fe6",
  "tree": "e8d2fbdaab19023dd6cec88c72f01ca0c73d8b58",
  "parents": [
    "568f19fa3911883d9e8f11a564bc156f73cb0a39"
  ],
  "author": {
    "name": "Jeffrey Vo",
    "email": "jeffrey.vo.australia@gmail.com",
    "time": "Wed Jan 28 22:54:04 2026 +0900"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Wed Jan 28 13:54:04 2026 +0000"
  },
  "message": "Further refactoring of type coercion function code (#19603)\n\n## Which issue does this PR close?\n\n\u003c!--\nWe generally require a GitHub issue to be filed for all bug fixes and\nenhancements and this helps us generate change logs for our releases.\nYou can link an issue to this PR using the GitHub syntax. For example\n`Closes #123` indicates that this PR will close issue #123.\n--\u003e\n\n- Follow up to #19518\n- Initial work before tackling #19004\n\n## Rationale for this change\n\n\u003c!--\nWhy are you proposing this change? If this is already explained clearly\nin the issue then this section is not needed.\nExplaining clearly why changes are proposed helps reviewers understand\nyour changes and offer better suggestions for fixes.\n--\u003e\n\nFound lots of code duplicated here, so unifying them.\n\n## What changes are included in this PR?\n\n\u003c!--\nThere is no need to duplicate the description in the issue here but it\nis sometimes worth providing a summary of the individual changes in this\nPR.\n--\u003e\n\n- Reduce code duplication around handling scalar/aggregate/window UDFs\nin type coercion related code, via usage of new `UDFCoercionExt` trait\nwhich unifies some of their behaviours (introduced by #19518)\n- Deprecate functions `can_coerce_from()` and\n`generate_signature_error_msg()` to work towards minimizing our public\nAPI surface\n- Fix some UDF signatures which nested `UserDefined` within `OneOf`\n- Fix bug where type coercion rewrites weren\u0027t being applied to\narguments of non-aggregate window UDFs\n\n## Are these changes tested?\n\n\u003c!--\nWe typically require tests for all PRs in order to:\n1. Prevent the code from being accidentally broken by subsequent changes\n2. Serve as another way to document the expected behavior of the code\n\nIf tests are not included in your PR, please explain why (for example,\nare they covered by existing tests)?\n--\u003e\n\nExisting tests.\n\n## Are there any user-facing changes?\n\n\u003c!--\nIf there are user-facing changes then we may require documentation to be\nupdated before approving the PR.\n--\u003e\n\nDeprecated some functions.\n\n\u003c!--\nIf there are any breaking changes to public APIs, please add the `api\nchange` label.\n--\u003e\n\n---------\n\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "57baf271c59131a27e9fb9c13d7c544dba76d12a",
      "old_mode": 33188,
      "old_path": "datafusion/core/tests/user_defined/user_defined_window_functions.rs",
      "new_id": "775325a3371842d92be8af53c2c2c770e74dc5ee",
      "new_mode": 33188,
      "new_path": "datafusion/core/tests/user_defined/user_defined_window_functions.rs"
    },
    {
      "type": "modify",
      "old_id": "454839fdb75ac78ea63b99f52b38991403afdadc",
      "old_mode": 33188,
      "old_path": "datafusion/expr/src/expr.rs",
      "new_id": "8eae81bc5bc736c5739c1b87c737ce293f94e413",
      "new_mode": 33188,
      "new_path": "datafusion/expr/src/expr.rs"
    },
    {
      "type": "modify",
      "old_id": "76cbf7b4acb2bce3fee81d1d8ba536caa1bc726e",
      "old_mode": 33188,
      "old_path": "datafusion/expr/src/expr_schema.rs",
      "new_id": "f4e4f014f533c412ccdcf8df0af727ff1b29124c",
      "new_mode": 33188,
      "new_path": "datafusion/expr/src/expr_schema.rs"
    },
    {
      "type": "modify",
      "old_id": "fba796d1901b30dcd6525e74a12348b277c3bc3f",
      "old_mode": 33188,
      "old_path": "datafusion/expr/src/type_coercion/functions.rs",
      "new_id": "d839d84c6625a5b93824a9bd907b7d17e25b9505",
      "new_mode": 33188,
      "new_path": "datafusion/expr/src/type_coercion/functions.rs"
    },
    {
      "type": "modify",
      "old_id": "7d13c9c1d24d10f53dbee7970867d484fbf18f98",
      "old_mode": 33188,
      "old_path": "datafusion/expr/src/utils.rs",
      "new_id": "b19299981cef39f1cebe5534619fe0c4e25c8d86",
      "new_mode": 33188,
      "new_path": "datafusion/expr/src/utils.rs"
    },
    {
      "type": "modify",
      "old_id": "410a545853acf1d92b1f1d77e6dc514ac08bae60",
      "old_mode": 33188,
      "old_path": "datafusion/functions-nested/src/make_array.rs",
      "new_id": "bc899126fb643b5ff4e3ca9aa975394d151d067c",
      "new_mode": 33188,
      "new_path": "datafusion/functions-nested/src/make_array.rs"
    },
    {
      "type": "modify",
      "old_id": "c62f0a9ae4e89e80b2a67a40a5f5070ed0430117",
      "old_mode": 33188,
      "old_path": "datafusion/functions-window/src/nth_value.rs",
      "new_id": "c8980d9f1dc675783b75e226193c51e6cebed58e",
      "new_mode": 33188,
      "new_path": "datafusion/functions-window/src/nth_value.rs"
    },
    {
      "type": "modify",
      "old_id": "5ce2c3b6af6a6d11182b244cdb86bd74eb0770a2",
      "old_mode": 33188,
      "old_path": "datafusion/optimizer/src/analyzer/type_coercion.rs",
      "new_id": "8b57cc798d079609b41d142fd8bbe59968dbfaf2",
      "new_mode": 33188,
      "new_path": "datafusion/optimizer/src/analyzer/type_coercion.rs"
    },
    {
      "type": "modify",
      "old_id": "6d9f9a1695e1bcf6fa4ade0ce598bc3180e757be",
      "old_mode": 33188,
      "old_path": "datafusion/spark/src/function/array/spark_array.rs",
      "new_id": "1ad0a394b8ca6096f2dfb0d0678dfdc3728144fb",
      "new_mode": 33188,
      "new_path": "datafusion/spark/src/function/array/spark_array.rs"
    },
    {
      "type": "modify",
      "old_id": "d280b9c1c0022cf0d7a8c9ff7bc4d6b64b0f57bc",
      "old_mode": 33188,
      "old_path": "datafusion/spark/src/function/string/concat.rs",
      "new_id": "b2073690fc4463c8a838331eca6505dc8c5f1780",
      "new_mode": 33188,
      "new_path": "datafusion/spark/src/function/string/concat.rs"
    }
  ]
}
