Repository navigation
Commit 5b22857
authored
fix: avoid extraneous casts for equivalent nested types (#20945)
## Summary
This PR avoids inserting extraneous casts during function argument
coercion when two nested types are structurally equivalent but differ
only in nested field names or metadata.
Specifically, it:
- treats equivalent nested `DataType`s as matching during UDF argument
coercion
- avoids rewriting such arguments with unnecessary `CAST`s
- adds regression coverage in both `datafusion-expr` and
`datafusion-optimizer`
Closes #19943.
## Tests
- `cargo test -p datafusion-optimizer`
- `./dev/rust_lint.sh`
- `cargo test -p datafusion-expr` currently fails on an existing
snapshot mismatch in `logical_plan::plan::tests::test_display_pg_json`
on the current `main` baseline, unrelated to this change1 parent 467d2c3 commit 5b22857
2 files changed
Lines changed: 128 additions & 13 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
586 | 586 | | |
587 | 587 | | |
588 | 588 | | |
| 589 | + | |
| 590 | + | |
| 591 | + | |
| 592 | + | |
| 593 | + | |
| 594 | + | |
| 595 | + | |
| 596 | + | |
| 597 | + | |
| 598 | + | |
| 599 | + | |
| 600 | + | |
| 601 | + | |
| 602 | + | |
| 603 | + | |
| 604 | + | |
| 605 | + | |
| 606 | + | |
| 607 | + | |
| 608 | + | |
| 609 | + | |
| 610 | + | |
| 611 | + | |
| 612 | + | |
| 613 | + | |
| 614 | + | |
| 615 | + | |
| 616 | + | |
| 617 | + | |
| 618 | + | |
| 619 | + | |
| 620 | + | |
| 621 | + | |
| 622 | + | |
| 623 | + | |
| 624 | + | |
| 625 | + | |
| 626 | + | |
| 627 | + | |
| 628 | + | |
| 629 | + | |
| 630 | + | |
| 631 | + | |
| 632 | + | |
| 633 | + | |
| 634 | + | |
589 | 635 | | |
590 | 636 | | |
591 | 637 | | |
| |||
657 | 703 | | |
658 | 704 | | |
659 | 705 | | |
660 | | - | |
661 | | - | |
662 | | - | |
663 | | - | |
664 | | - | |
665 | | - | |
666 | | - | |
667 | | - | |
668 | | - | |
669 | | - | |
670 | | - | |
671 | 706 | | |
672 | | - | |
673 | | - | |
| 707 | + | |
| 708 | + | |
| 709 | + | |
674 | 710 | | |
| 711 | + | |
| 712 | + | |
675 | 713 | | |
676 | 714 | | |
677 | 715 | | |
| |||
1664 | 1702 | | |
1665 | 1703 | | |
1666 | 1704 | | |
| 1705 | + | |
| 1706 | + | |
| 1707 | + | |
| 1708 | + | |
| 1709 | + | |
| 1710 | + | |
| 1711 | + | |
| 1712 | + | |
| 1713 | + | |
| 1714 | + | |
| 1715 | + | |
| 1716 | + | |
| 1717 | + | |
| 1718 | + | |
| 1719 | + | |
| 1720 | + | |
| 1721 | + | |
| 1722 | + | |
| 1723 | + | |
| 1724 | + | |
| 1725 | + | |
| 1726 | + | |
| 1727 | + | |
| 1728 | + | |
| 1729 | + | |
1667 | 1730 | | |
1668 | 1731 | | |
1669 | 1732 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1772 | 1772 | | |
1773 | 1773 | | |
1774 | 1774 | | |
| 1775 | + | |
| 1776 | + | |
| 1777 | + | |
| 1778 | + | |
| 1779 | + | |
| 1780 | + | |
| 1781 | + | |
| 1782 | + | |
| 1783 | + | |
| 1784 | + | |
| 1785 | + | |
| 1786 | + | |
| 1787 | + | |
| 1788 | + | |
| 1789 | + | |
| 1790 | + | |
| 1791 | + | |
| 1792 | + | |
| 1793 | + | |
| 1794 | + | |
| 1795 | + | |
| 1796 | + | |
| 1797 | + | |
| 1798 | + | |
| 1799 | + | |
1775 | 1800 | | |
1776 | 1801 | | |
1777 | 1802 | | |
| |||
2669 | 2694 | | |
2670 | 2695 | | |
2671 | 2696 | | |
| 2697 | + | |
| 2698 | + | |
| 2699 | + | |
| 2700 | + | |
| 2701 | + | |
| 2702 | + | |
| 2703 | + | |
| 2704 | + | |
| 2705 | + | |
| 2706 | + | |
| 2707 | + | |
| 2708 | + | |
| 2709 | + | |
| 2710 | + | |
| 2711 | + | |
| 2712 | + | |
| 2713 | + | |
| 2714 | + | |
| 2715 | + | |
| 2716 | + | |
| 2717 | + | |
| 2718 | + | |
| 2719 | + | |
| 2720 | + | |
| 2721 | + | |
| 2722 | + | |
| 2723 | + | |
2672 | 2724 | | |
2673 | 2725 | | |
2674 | 2726 | | |
| |||
0 commit comments