Bruce Momjian wrote: > Tom Lane wrote: > > Bruce Momjian <br...@momjian.us> writes: > > > I propose I just remove the 8.4 > > > test and always allow toast table names not to match --- the oids are > > > still checked and are preserved. > > > > +1. You'll still make the check for non-toast tables, of course? > > Yes, only toast tables will skip the check. Proposed patch attached.
I was wrong. I can check for the version number because the toast file name is made to match when pg_upgrade completes on the 9.0+ cluster. Updated patch attached that adds comments and checks for 9.0 instead of 8.4. -- Bruce Momjian <br...@momjian.us> http://momjian.us EnterpriseDB http://enterprisedb.com + It's impossible for everything to be true. +
diff --git a/contrib/pg_upgrade/info.c b/contrib/pg_upgrade/info.c new file mode 100644 index e41ab2b..b55bd6d *** a/contrib/pg_upgrade/info.c --- b/contrib/pg_upgrade/info.c *************** gen_db_file_maps(DbInfo *old_db, DbInfo *** 57,68 **** old_db->db_name, old_rel->reloid, new_rel->reloid); /* ! * In pre-8.4, TOAST table names change during CLUSTER; in >= 8.4 ! * TOAST relation names always use heap table oids, hence we cannot ! * check relation names when upgrading from pre-8.4. */ if (strcmp(old_rel->nspname, new_rel->nspname) != 0 || ! ((GET_MAJOR_VERSION(old_cluster.major_version) >= 804 || strcmp(old_rel->nspname, "pg_toast") != 0) && strcmp(old_rel->relname, new_rel->relname) != 0)) pg_log(PG_FATAL, "Mismatch of relation names in database \"%s\": " --- 57,71 ---- old_db->db_name, old_rel->reloid, new_rel->reloid); /* ! * TOAST table names initially match the heap pg_class oid. ! * In pre-8.4, TOAST table names change during CLUSTER; in pre-9.0, ! * TOAST table names change during ALTER TABLE ALTER COLUMN SET TYPE. ! * In >= 9.0, TOAST relation names always use heap table oids, hence ! * we cannot check relation names when upgrading from pre-9.0. ! * Clusters upgraded to 9.0 will get matching TOAST names. */ if (strcmp(old_rel->nspname, new_rel->nspname) != 0 || ! ((GET_MAJOR_VERSION(old_cluster.major_version) >= 900 || strcmp(old_rel->nspname, "pg_toast") != 0) && strcmp(old_rel->relname, new_rel->relname) != 0)) pg_log(PG_FATAL, "Mismatch of relation names in database \"%s\": "
-- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers