]> granicus.if.org Git - postgresql/commitdiff
In pg_upgrade, because toast table names can be mismatched with the heap
authorBruce Momjian <bruce@momjian.us>
Thu, 29 Sep 2011 02:30:44 +0000 (22:30 -0400)
committerBruce Momjian <bruce@momjian.us>
Thu, 29 Sep 2011 02:30:44 +0000 (22:30 -0400)
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.

contrib/pg_upgrade/info.c

index e41ab2b1071c1310a2d936058ca50204395e5075..b55bd6d23c2b5808a59e2abe04ea18a569ed5556 100644 (file)
@@ -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\": "