Fix some more omissions in pg_upgrade's tests for non-upgradable types.
Tom Lane <tgl@sss.pgh.pa.us>
Fix some more omissions in pg_upgrade's tests for non-upgradable types. Commits 29aeda6e4 et al closed up some oversights involving not checking for non-upgradable types within container types, such as arrays and ranges. However, I only looked at version.c, failing to notice that there were substantially-equivalent tests in check.c. (The division of responsibility between those files is less than clear...) In addition, because genbki.pl does not guarantee that auto-generated rowtype OIDs will hold still across versions, we need to consider that the composite type associated with a system catalog or view is non-upgradable. It seems unlikely that someone would have a user column declared that way, but if they did, trying to read it in another PG version would likely draw "no such pg_type OID" failures, thanks to the type OID embedded in composite Datums. To support the composite and reg*-type cases, extend the recursive query that does the search to allow any base query that returns a column of pg_type OIDs, rather than limiting it to exactly one starting type. As before, back-patch to all supported branches. Discussion: https://postgr.es/m/2798740.1619622555@sss.pgh.pa.us
Files
| Path | Change | +/− |
|---|---|---|
| src/bin/pg_upgrade/check.c | modified | +84 −138 |
| src/bin/pg_upgrade/pg_upgrade.h | modified | +6 −0 |
| src/bin/pg_upgrade/version.c | modified | +43 −10 |
Discussion
- pg_upgrade fails to detect unsupported arrays and ranges 12 messages · 2019-11-10 → 2021-04-28