From: Bruce Momjian Date: Tue, 2 Oct 2012 15:53:45 +0000 (-0400) Subject: In pg_upgrade, improve error reporting when the number of relation X-Git-Tag: REL9_3_BETA1~851 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=8a7598091a29ac13736ef8b70986921746648582;p=thirdparty%2Fpostgresql.git In pg_upgrade, improve error reporting when the number of relation objects does not match between the old and new clusters. Backpatch to 9.2. --- diff --git a/contrib/pg_upgrade/info.c b/contrib/pg_upgrade/info.c index 9d08f410c10..c406941c981 100644 --- a/contrib/pg_upgrade/info.c +++ b/contrib/pg_upgrade/info.c @@ -40,14 +40,11 @@ gen_db_file_maps(DbInfo *old_db, DbInfo *new_db, int relnum; int num_maps = 0; - if (old_db->rel_arr.nrels != new_db->rel_arr.nrels) - pg_log(PG_FATAL, "old and new databases \"%s\" have a different number of relations\n", - old_db->db_name); - maps = (FileNameMap *) pg_malloc(sizeof(FileNameMap) * old_db->rel_arr.nrels); - for (relnum = 0; relnum < old_db->rel_arr.nrels; relnum++) + for (relnum = 0; relnum < Min(old_db->rel_arr.nrels, new_db->rel_arr.nrels); + relnum++) { RelInfo *old_rel = &old_db->rel_arr.rels[relnum]; RelInfo *new_rel = &new_db->rel_arr.rels[relnum]; @@ -78,6 +75,11 @@ gen_db_file_maps(DbInfo *old_db, DbInfo *new_db, num_maps++; } + /* Do this check after the loop so hopefully we will produce a clearer error above */ + if (old_db->rel_arr.nrels != new_db->rel_arr.nrels) + pg_log(PG_FATAL, "old and new databases \"%s\" have a different number of relations\n", + old_db->db_name); + *nmaps = num_maps; return maps; }