/* 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;
         *  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,