postgres.git / summary / log / commit / refs
commit cbf99c7aa46d5be64b7adf8169129d5c1453dcdd
Author: Bruce Momjian <bruce@momjian.us>
Date: Tue Oct 02 15:53:45 2012 +0000
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.
contrib/pg_upgrade/info.c | 12 +++++++-----
1 file changed, 7 insertions(+), 5 deletions(-)
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;
}
[parent: 087f41086bcd]