aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBruce Momjian <bruce@momjian.us>2012-10-02 11:53:45 -0400
committerBruce Momjian <bruce@momjian.us>2012-10-02 11:53:45 -0400
commitcbf99c7aa46d5be64b7adf8169129d5c1453dcdd (patch)
tree9bb882be8a7d3533ca41a6142ae2b011c796296f
parent087f41086bcdf428056fccc06b34c96fd5bc143d (diff)
downloadpostgresql-cbf99c7aa46d5be64b7adf8169129d5c1453dcdd.tar.gz
postgresql-cbf99c7aa46d5be64b7adf8169129d5c1453dcdd.zip
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.
-rw-r--r--contrib/pg_upgrade/info.c12
1 files 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;
}