pg_upgrade fails to detect unsupported arrays and ranges
Tom Lane <tgl@sss.pgh.pa.us>
From: Tom Lane <tgl@sss.pgh.pa.us>
To: pgsql-hackers@lists.postgresql.org
Cc: Tomas Vondra <tomas.vondra@2ndquadrant.com>
Date: 2019-11-10T19:07:18Z
Lists: pgsql-hackers
Attachments
- 0001-factor-out-common-code.patch (text/x-diff) patch 0001
- 0002-handle-arrays-and-ranges.patch (text/x-diff) patch 0002
While composing the release note entry for commits 8d48e6a72 et al (handle recursive type dependencies while checking for unsupported types in pg_upgrade), I realized that there's a huge hole in pg_upgrade's test for such cases. It looks for domains containing the unsupported type, and for composites containing it, but not for arrays or ranges containing it. It's definitely possible to create tables containing arrays of lines, or arrays of composites containing line, etc etc. A range over line is harder for lack of a btree opclass, but a range over sql_identifier is possible. The attached patches fix this. 0001 refactors the code in question so that we have only one copy not three-and-growing. The only difference between the three copies was that one case didn't bother to search indexes, but I judged that that wasn't an optimization we need to preserve. (Note: this patch is shown with --ignore-space-change to make it more reviewable, but I did re-pgindent the code.) Then 0002 actually adds the array and range cases. Although this is a really straightforward patch and I've tested it against appropriate old versions (9.1 and 9.2), I'm very hesitant to shove it in so soon before a release wrap. Should I do that, or let it wait till after the wrap? regards, tom lane
Commits
-
Improve wording of some pg_upgrade failure reports.
- c9c37ae03fea 14.0 landed
-
Fix some more omissions in pg_upgrade's tests for non-upgradable types.
- 54a23307193c 9.6.22 landed
- d5722c92795d 10.17 landed
- bbcfee0e56a2 13.3 landed
- ba86371b9ca0 12.7 landed
- 57c081de0afc 14.0 landed
- 404946d40109 11.12 landed
-
Handle arrays and ranges in pg_upgrade's test for non-upgradable types.
- fb26754af4da 9.5.21 landed
- f378d4dac4ce 9.6.17 landed
- c443e3c43927 10.12 landed
- 8e4ef328738f 11.7 landed
- 56c06999d3c3 9.4.26 landed
- 29aeda6e4e60 13.0 landed
- 1cd57b05ef8b 12.2 landed