Re: pg_upgrade fails to detect unsupported arrays and ranges

Daniel Gustafsson <daniel@yesql.se>

From: Daniel Gustafsson <daniel@yesql.se>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>, Tomas Vondra <tomas.vondra@2ndquadrant.com>
Date: 2019-11-10T21:01:21Z
Lists: pgsql-hackers
> On 10 Nov 2019, at 20:07, Tom Lane <tgl@sss.pgh.pa.us> wrote:

> 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.  

A big +1 on this refactoring.

> (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.

Was the source pgindented, but not committed, before generating the patches?  I
fail to apply them on master (or REL_12_STABLE) on what seems to be only
whitespace changes.

> 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?

Having read the patch I agree that it's trivial enough that I wouldn't be
worried to let it slip through.  However, given that we've lacked the check for
a few releases, is it worth rushing with the potential for a last-minute
"oh-shit"?

> +		/* arrays over any type selected so far */
> +						  "			SELECT t.oid FROM pg_catalog.pg_type t, x WHERE typelem = x.oid AND typtype = 'b' "

No need to check typlen?

cheers ./daniel


Commits

  1. Improve wording of some pg_upgrade failure reports.

  2. Fix some more omissions in pg_upgrade's tests for non-upgradable types.

  3. Handle arrays and ranges in pg_upgrade's test for non-upgradable types.