aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBruce Momjian <bruce@momjian.us>2011-09-28 22:30:44 -0400
committerBruce Momjian <bruce@momjian.us>2011-09-28 22:30:44 -0400
commit5e5958428b7c6e91ffddf46bf9aafd920af57a60 (patch)
treeef4ff6a98fbb4ed3db945ea0848cff15941afda7
parenta32dd16459ae8fbc1e09607d7ed960b3dcce7dba (diff)
downloadpostgresql-5e5958428b7c6e91ffddf46bf9aafd920af57a60.tar.gz
postgresql-5e5958428b7c6e91ffddf46bf9aafd920af57a60.zip
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.
-rw-r--r--contrib/pg_upgrade/info.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/contrib/pg_upgrade/info.c b/contrib/pg_upgrade/info.c
index e41ab2b1071..b55bd6d23c2 100644
--- a/contrib/pg_upgrade/info.c
+++ b/contrib/pg_upgrade/info.c
@@ -57,12 +57,15 @@ gen_db_file_maps(DbInfo *old_db, DbInfo *new_db,
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.
+ * 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) >= 804 ||
+ ((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\": "