pgsql: Un-break pg_upgrade from pre-v12 servers. - Mailing list pgsql-committers

From Tom Lane
Subject pgsql: Un-break pg_upgrade from pre-v12 servers.
Date
Msg-id E1jsvnk-0006d9-OD@gemulon.postgresql.org
Whole thread Raw
List pgsql-committers
Un-break pg_upgrade from pre-v12 servers.

I neglected to test this scenario while preparing commit f3faf35f3,
so of course it was broken, thanks to some very obscure and undocumented
code in pg_dump.  Pre-v12 databases might have toast tables attached to
partitioned tables, which we need to ignore since newer servers never
create such useless toast tables.  There was a filter for this case in
binary_upgrade_set_type_oids_by_rel_oid(), which appeared to just
prevent the pg_type OID from being copied.  But actually it managed to
prevent the toast table from being created at all --- or it did before
I took out that logic.  But that was a fundamentally bizarre place to be
making the test in the first place.  The place where the filter should
have been, one would think, is binary_upgrade_set_pg_class_oids(), so
add it there.

While at it, reorganize binary_upgrade_set_pg_class_oids() so that it
doesn't make a completely useless query when it knows it's being
invoked for an index.  And correct a comment that mis-described the
scenario where we need to force creation of a TOAST table.

Per buildfarm.

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/3f96af4619c8b129ec8d5f4fb961df4310999383

Modified Files
--------------
src/bin/pg_dump/pg_dump.c | 75 +++++++++++++++++++++++++++--------------------
1 file changed, 44 insertions(+), 31 deletions(-)


pgsql-committers by date:

Previous
From: Tom Lane
Date:
Subject: pgsql: Don't create pg_type entries for sequences or toast tables.
Next
From: Michael Paquier
Date:
Subject: pgsql: doc: Fix inconsistencies in GIN, BRIN and SP-GiST for optional o