> On 28 Apr 2021, at 17:09, Tom Lane <t...@sss.pgh.pa.us> wrote:
> 
> [ blast-from-the-past department ]
> 
> I wrote:
>> Daniel Gustafsson <dan...@yesql.se> writes:
>>> I can see the appeal of
>>> including it before the wrap, even though I personally would've held off.
> 
>> Nah, I'm not gonna risk it at this stage.  I concur with your point
>> that this is an ancient bug, and one that is unlikely to bite many
>> people.  I'll push it Wednesday or so.
> 
> I happened across a couple of further pg_upgrade oversights in the
> same vein as 29aeda6e4 et al:

Nice find, this makes a lot of sense.

> ..the same OID was 12022 in v13, 11551 in v11, etc.  So if you
> had a column of type pg_enum, you'd likely get no-such-type-OID
> failures when reading the values after an upgrade.  I don't see
> much use-case for doing such a thing, so it seems saner to just
> block off the possibility rather than trying to support it.

Agreed.  Having implemented basically this for Greenplum I think it’s wise to
avoid it unless we really have to, it gets very complicated once the layers of
worms are peeled back.

> The attached proposed patch fixes these cases too.  I generalized
> the recursive query a little more so that it could start from an
> arbitrary query yielding pg_type OIDs, rather than just one type
> name; otherwise it's pretty straightforward.
> 
> Barring objections I'll apply and back-patch this soon.

Patch LGTM on reading, +1 on applying.  Being on parental leave I don’t have my
dev env ready to go so I didn’t perform testing; sorry about that.

> +             pg_fatal("Your installation contains system-defined composite 
> type(s) in user tables.\n"
> +                              "These type OIDs are not stable across 
> PostgreSQL versions,\n"
> +                              "so this cluster cannot currently be upgraded. 
>  You can\n"
> +                              "remove the problem tables and restart the 
> upgrade.\n"
> +                              "A list of the problem columns is in the 
> file:\n"

Would it be helpful to inform the user that they can alter/drop just the
problematic columns as a potentially less scary alternative to dropping the
entire table?

> -              * The type of interest might be wrapped in a domain, array,
> +              * The types of interest might be wrapped in a domain, array,

Shouldn't this be "type(s)” as in the other changes here?

--
Daniel Gustafsson               https://vmware.com/



Reply via email to