Commit f24b156
committed
Rethink extraction of collation dependencies.
As it stands, find_expr_references_walker() pays attention to leaf-node
collation fields while ignoring the input collations of actual function
and operator nodes. That seems exactly backwards from a semantic
standpoint, and it leads to reporting dependencies on collations that
really have nothing to do with the expression's behavior.
Hence, rewrite to look at function input collations instead. This
isn't completely perfect either; it fails to account for the behavior
of record_eq and its siblings. (The previous coding at least gave an
approximation of that, though I think it could be fooled pretty easily
into considering the columns of irrelevant composite types.) We may
be able to improve on this later, but for now this should satisfy the
buildfarm members that didn't like ef387be.
In passing fix some oversights in GetTypeCollations(), and get
rid of its duplicative de-duplications. (I'm worried that it's
still potentially O(N^2) or worse, but this makes it a little
better.)
Discussion: https://postgr.es/m/3564817.1618420687@sss.pgh.pa.us1 parent 8a2df44 commit f24b156Copy full SHA for f24b156
File tree
Expand file treeCollapse file tree
4 files changed
+72
-86
lines changedOpen diff view settings
Filter options
- src
- backend/catalog
- test/regress
- expected
- sql
Expand file treeCollapse file tree
4 files changed
+72
-86
lines changedOpen diff view settings
Collapse file
src/backend/catalog/dependency.c
Copy file name to clipboardExpand all lines: src/backend/catalog/dependency.c+50-54Lines changed: 50 additions & 54 deletions
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| ||
1835 | 1835 | |
1836 | 1836 | |
1837 | 1837 | |
1838 | | - |
1839 | | - |
| 1838 | + |
| 1839 | + |
| 1840 | + |
| 1841 | + |
| 1842 | + |
| 1843 | + |
| 1844 | + |
| 1845 | + |
| 1846 | + |
| 1847 | + |
| 1848 | + |
1840 | 1849 | |
1841 | 1850 | |
1842 | 1851 | |
| ||
1876 | 1885 | |
1877 | 1886 | |
1878 | 1887 | |
1879 | | - |
1880 | | - |
1881 | | - |
1882 | | - |
1883 | | - |
1884 | | - |
1885 | | - |
1886 | | - |
1887 | | - |
1888 | | - |
1889 | | - |
1890 | | - |
1891 | | - |
1892 | | - |
1893 | | - |
1894 | | - |
1895 | | - |
1896 | | - |
1897 | | - |
1898 | | - |
1899 | | - |
1900 | | - |
1901 | | - |
1902 | 1888 | |
1903 | 1889 | |
1904 | 1890 | |
| ||
1920 | 1906 | |
1921 | 1907 | |
1922 | 1908 | |
1923 | | - |
1924 | | - |
1925 | | - |
1926 | | - |
1927 | | - |
1928 | | - |
1929 | | - |
1930 | | - |
1931 | | - |
1932 | 1909 | |
1933 | 1910 | |
1934 | 1911 | |
| ||
2013 | 1990 | |
2014 | 1991 | |
2015 | 1992 | |
2016 | | - |
2017 | | - |
2018 | | - |
2019 | | - |
2020 | 1993 | |
2021 | 1994 | |
2022 | 1995 | |
2023 | 1996 | |
2024 | 1997 | |
2025 | 1998 | |
2026 | 1999 | |
| 2000 | + |
| 2001 | + |
| 2002 | + |
2027 | 2003 | |
2028 | 2004 | |
2029 | 2005 | |
| ||
2032 | 2008 | |
2033 | 2009 | |
2034 | 2010 | |
| 2011 | + |
| 2012 | + |
| 2013 | + |
2035 | 2014 | |
2036 | 2015 | |
2037 | 2016 | |
| ||
2040 | 2019 | |
2041 | 2020 | |
2042 | 2021 | |
| 2022 | + |
| 2023 | + |
| 2024 | + |
2043 | 2025 | |
2044 | 2026 | |
2045 | 2027 | |
| ||
2048 | 2030 | |
2049 | 2031 | |
2050 | 2032 | |
| 2033 | + |
| 2034 | + |
| 2035 | + |
2051 | 2036 | |
2052 | 2037 | |
2053 | 2038 | |
| ||
2056 | 2041 | |
2057 | 2042 | |
2058 | 2043 | |
| 2044 | + |
| 2045 | + |
| 2046 | + |
2059 | 2047 | |
2060 | 2048 | |
2061 | 2049 | |
| ||
2064 | 2052 | |
2065 | 2053 | |
2066 | 2054 | |
| 2055 | + |
| 2056 | + |
| 2057 | + |
2067 | 2058 | |
2068 | 2059 | |
2069 | 2060 | |
| ||
2072 | 2063 | |
2073 | 2064 | |
2074 | 2065 | |
| 2066 | + |
| 2067 | + |
| 2068 | + |
2075 | 2069 | |
2076 | 2070 | |
2077 | 2071 | |
| ||
2116 | 2110 | |
2117 | 2111 | |
2118 | 2112 | |
2119 | | - |
2120 | | - |
2121 | | - |
2122 | | - |
2123 | 2113 | |
2124 | 2114 | |
2125 | 2115 | |
| ||
2146 | 2136 | |
2147 | 2137 | |
2148 | 2138 | |
2149 | | - |
2150 | | - |
2151 | | - |
2152 | | - |
2153 | 2139 | |
2154 | 2140 | |
2155 | 2141 | |
| ||
2158 | 2144 | |
2159 | 2145 | |
2160 | 2146 | |
2161 | | - |
2162 | | - |
2163 | | - |
2164 | | - |
2165 | 2147 | |
2166 | 2148 | |
2167 | 2149 | |
| ||
2170 | 2152 | |
2171 | 2153 | |
2172 | 2154 | |
2173 | | - |
2174 | | - |
2175 | | - |
2176 | | - |
2177 | 2155 | |
2178 | 2156 | |
2179 | 2157 | |
| ||
2213 | 2191 | |
2214 | 2192 | |
2215 | 2193 | |
| 2194 | + |
| 2195 | + |
| 2196 | + |
| 2197 | + |
| 2198 | + |
| 2199 | + |
| 2200 | + |
| 2201 | + |
| 2202 | + |
| 2203 | + |
| 2204 | + |
| 2205 | + |
| 2206 | + |
| 2207 | + |
| 2208 | + |
| 2209 | + |
| 2210 | + |
| 2211 | + |
2216 | 2212 | |
2217 | 2213 | |
2218 | 2214 | |
|
Collapse file
src/backend/catalog/pg_type.c
Copy file name to clipboardExpand all lines: src/backend/catalog/pg_type.c+19-10Lines changed: 19 additions & 10 deletions
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| ||
535 | 535 | |
536 | 536 | |
537 | 537 | |
| 538 | + |
| 539 | + |
| 540 | + |
| 541 | + |
538 | 542 | |
539 | | - |
| 543 | + |
540 | 544 | |
541 | 545 | |
542 | 546 | |
| ||
546 | 550 | |
547 | 551 | |
548 | 552 | |
| 553 | + |
| 554 | + |
549 | 555 | |
550 | 556 | |
551 | 557 | |
| ||
558 | 564 | |
559 | 565 | |
560 | 566 | |
561 | | - |
562 | | - |
563 | | - |
| 567 | + |
564 | 568 | |
565 | 569 | |
566 | 570 | |
567 | | - |
| 571 | + |
568 | 572 | |
569 | | - |
| 573 | + |
| 574 | + |
| 575 | + |
| 576 | + |
| 577 | + |
570 | 578 | |
571 | | - |
| 579 | + |
| 580 | + |
| 581 | + |
572 | 582 | |
573 | | - |
574 | | - |
575 | | - |
| 583 | + |
| 584 | + |
576 | 585 | |
577 | 586 | |
578 | 587 | |
|
Collapse file
src/test/regress/expected/collate.icu.utf8.out
Copy file name to clipboardExpand all lines: src/test/regress/expected/collate.icu.utf8.out+2-21Lines changed: 2 additions & 21 deletions
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| ||
1958 | 1958 | |
1959 | 1959 | |
1960 | 1960 | |
1961 | | - |
| 1961 | + |
1962 | 1962 | |
1963 | 1963 | |
1964 | 1964 | |
| ||
2054 | 2054 | |
2055 | 2055 | |
2056 | 2056 | |
2057 | | - |
2058 | | - |
2059 | 2057 | |
2060 | | - |
2061 | | - |
2062 | | - |
2063 | | - |
2064 | 2058 | |
2065 | | - |
2066 | | - |
2067 | | - |
2068 | | - |
2069 | | - |
2070 | | - |
2071 | | - |
2072 | 2059 | |
2073 | | - |
2074 | | - |
2075 | | - |
2076 | 2060 | |
2077 | | - |
2078 | 2061 | |
2079 | | - |
2080 | 2062 | |
2081 | | - |
2082 | 2063 | |
2083 | 2064 | |
2084 | 2065 | |
2085 | 2066 | |
2086 | | - |
| 2067 | + |
2087 | 2068 | |
2088 | 2069 | |
2089 | 2070 | |
|
Collapse file
src/test/regress/sql/collate.icu.utf8.sql
Copy file name to clipboardExpand all lines: src/test/regress/sql/collate.icu.utf8.sql+1-1Lines changed: 1 addition & 1 deletion
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| ||
755 | 755 | |
756 | 756 | |
757 | 757 | |
758 | | - |
| 758 | + |
759 | 759 | |
760 | 760 | |
761 | 761 | |
|
0 commit comments