diff options
author | Bruce Momjian <bruce@momjian.us> | 2012-10-02 11:53:45 -0400 |
---|---|---|
committer | Bruce Momjian <bruce@momjian.us> | 2012-10-02 11:53:45 -0400 |
commit | cbf99c7aa46d5be64b7adf8169129d5c1453dcdd (patch) | |
tree | 9bb882be8a7d3533ca41a6142ae2b011c796296f | |
parent | 087f41086bcdf428056fccc06b34c96fd5bc143d (diff) | |
download | postgresql-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.c | 12 |
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; } |