summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBruce Momjian2011-11-03 17:56:56 +0000
committerBruce Momjian2011-11-03 17:57:52 +0000
commit84b8fcaa923259d6f7daf228183ecbeb924dc950 (patch)
tree8a2a694e37c42b7e1fdbb44b3ac6698d06f03efe
parent7ed36056751cc900418871b39595100cbb06de21 (diff)
Adjust pg_upgrade "new database skip" code, e.g. 'postgres', to more
cleanly handle old/new database mismatches.
-rw-r--r--contrib/pg_upgrade/relfilenode.c20
1 files changed, 11 insertions, 9 deletions
diff --git a/contrib/pg_upgrade/relfilenode.c b/contrib/pg_upgrade/relfilenode.c
index 382588f191..d67d01fea9 100644
--- a/contrib/pg_upgrade/relfilenode.c
+++ b/contrib/pg_upgrade/relfilenode.c
@@ -41,11 +41,10 @@ transfer_all_new_dbs(DbInfoArr *old_db_arr,
/* Scan the old cluster databases and transfer their files */
for (old_dbnum = new_dbnum = 0;
- old_dbnum < old_db_arr->ndbs && new_dbnum < new_db_arr->ndbs;
+ old_dbnum < old_db_arr->ndbs;
old_dbnum++, new_dbnum++)
{
- DbInfo *old_db = &old_db_arr->dbs[old_dbnum];
- DbInfo *new_db = &new_db_arr->dbs[new_dbnum];
+ DbInfo *old_db = &old_db_arr->dbs[old_dbnum], *new_db;
FileNameMap *mappings;
int n_maps;
pageCnvCtx *pageConverter = NULL;
@@ -55,13 +54,16 @@ transfer_all_new_dbs(DbInfoArr *old_db_arr,
* but not in the old, e.g. "postgres". (The user might
* have removed the 'postgres' database from the old cluster.)
*/
- while (strcmp(old_db->db_name, new_db->db_name) != 0 &&
- new_dbnum < new_db_arr->ndbs)
- new_db = &new_db_arr->dbs[++new_dbnum];
+ for (; new_dbnum < new_db_arr->ndbs; new_dbnum++)
+ {
+ new_db = &new_db_arr->dbs[new_dbnum];
+ if (strcmp(old_db->db_name, new_db->db_name) == 0)
+ break;
+ }
- if (strcmp(old_db->db_name, new_db->db_name) != 0)
- pg_log(PG_FATAL, "old and new databases have different names: old \"%s\", new \"%s\"\n",
- old_db->db_name, new_db->db_name);
+ if (new_dbnum >= new_db_arr->ndbs)
+ pg_log(PG_FATAL, "old database \"%s\" not found in the new cluster\n",
+ old_db->db_name);
n_maps = 0;
mappings = gen_db_file_maps(old_db, new_db, &n_maps, old_pgdata,