Commit b8accd6
committed
Avoid an Assert failure in deconstruct_array() by making get_attstatsslot()
use the actual element type of the array it's disassembling, rather than
trusting the type OID passed in by its caller. This is needed because
sometimes the planner passes in a type OID that's only binary-compatible
with the target column's type, rather than being an exact match. Per an
example from Bernd Helmle.
Possibly we should refactor get_attstatsslot/free_attstatsslot to not expect
the caller to supply type ID data at all, but for now I'll just do the
minimum-change fix.
Back-patch to 7.4. Bernd's test case only crashes back to 8.0, but since
these subroutines are the same in 7.4, I suspect there may be variant
cases that would crash 7.4 as well.1 parent 8bed5e2 commit b8accd6
1 file changed
+17
-5
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
7 | 7 | | |
8 | 8 | | |
9 | 9 | | |
10 | | - | |
| 10 | + | |
11 | 11 | | |
12 | 12 | | |
13 | 13 | | |
| |||
1888 | 1888 | | |
1889 | 1889 | | |
1890 | 1890 | | |
| 1891 | + | |
| 1892 | + | |
| 1893 | + | |
| 1894 | + | |
1891 | 1895 | | |
1892 | 1896 | | |
1893 | 1897 | | |
| |||
1902 | 1906 | | |
1903 | 1907 | | |
1904 | 1908 | | |
| 1909 | + | |
1905 | 1910 | | |
1906 | 1911 | | |
1907 | 1912 | | |
| |||
1924 | 1929 | | |
1925 | 1930 | | |
1926 | 1931 | | |
1927 | | - | |
| 1932 | + | |
| 1933 | + | |
| 1934 | + | |
| 1935 | + | |
| 1936 | + | |
| 1937 | + | |
| 1938 | + | |
| 1939 | + | |
1928 | 1940 | | |
1929 | | - | |
| 1941 | + | |
1930 | 1942 | | |
1931 | 1943 | | |
1932 | | - | |
| 1944 | + | |
1933 | 1945 | | |
1934 | 1946 | | |
1935 | 1947 | | |
1936 | 1948 | | |
1937 | | - | |
| 1949 | + | |
1938 | 1950 | | |
1939 | 1951 | | |
1940 | 1952 | | |
| |||
0 commit comments