Commit 5e595842 authored by Bruce Momjian's avatar Bruce Momjian

In pg_upgrade, because toast table names can be mismatched with the heap

oid on 8.4, modify the toast name comparison test to only apply to old
9.0+ servers.  (The test was previously 8.4+.)

Backpatch to 9.1.X.
parent a32dd164
...@@ -57,12 +57,15 @@ gen_db_file_maps(DbInfo *old_db, DbInfo *new_db, ...@@ -57,12 +57,15 @@ gen_db_file_maps(DbInfo *old_db, DbInfo *new_db,
old_db->db_name, old_rel->reloid, new_rel->reloid); old_db->db_name, old_rel->reloid, new_rel->reloid);
/* /*
* In pre-8.4, TOAST table names change during CLUSTER; in >= 8.4 * TOAST table names initially match the heap pg_class oid.
* TOAST relation names always use heap table oids, hence we cannot * In pre-8.4, TOAST table names change during CLUSTER; in pre-9.0,
* check relation names when upgrading from pre-8.4. * 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 || if (strcmp(old_rel->nspname, new_rel->nspname) != 0 ||
((GET_MAJOR_VERSION(old_cluster.major_version) >= 804 || ((GET_MAJOR_VERSION(old_cluster.major_version) >= 900 ||
strcmp(old_rel->nspname, "pg_toast") != 0) && strcmp(old_rel->nspname, "pg_toast") != 0) &&
strcmp(old_rel->relname, new_rel->relname) != 0)) strcmp(old_rel->relname, new_rel->relname) != 0))
pg_log(PG_FATAL, "Mismatch of relation names in database \"%s\": " pg_log(PG_FATAL, "Mismatch of relation names in database \"%s\": "
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment