Fix bug in 9.1 pg_upgrade processing of old/new relations; adjust debug
authorBruce Momjian <bruce@momjian.us>
Wed, 16 Feb 2011 00:01:33 +0000 (19:01 -0500)
committerBruce Momjian <bruce@momjian.us>
Wed, 16 Feb 2011 00:01:33 +0000 (19:01 -0500)
output.

contrib/pg_upgrade/info.c

index 74c9da13c6743f04c21ba85f62bdfd5dc017649c..0c518a2d1b4b69104f27e2a3bba1333c681c5e03 100644 (file)
@@ -48,7 +48,7 @@ gen_db_file_maps(DbInfo *old_db, DbInfo *new_db,
    for (relnum = 0; relnum < old_db->rel_arr.nrels; relnum++)
    {
        RelInfo    *old_rel = &old_db->rel_arr.rels[relnum];
-       RelInfo    *new_rel = &old_db->rel_arr.rels[relnum];
+       RelInfo    *new_rel = &new_db->rel_arr.rels[relnum];
 
        if (old_rel->reloid != new_rel->reloid)
            pg_log(PG_FATAL, "mismatch of relation id: database \"%s\", old relid %d, new relid %d\n",
@@ -147,7 +147,8 @@ get_db_and_rel_infos(ClusterInfo *cluster)
 {
    int         dbnum;
 
-   free_db_and_rel_infos(&cluster->dbarr);
+   if (cluster->dbarr.dbs != NULL)
+       free_db_and_rel_infos(&cluster->dbarr);
 
    get_db_infos(cluster);
 
@@ -156,7 +157,7 @@ get_db_and_rel_infos(ClusterInfo *cluster)
 
    if (log_opts.debug)
    {
-       pg_log(PG_DEBUG, "%s databases\n", CLUSTER_NAME(cluster));
+       pg_log(PG_DEBUG, "\n%s databases:\n", CLUSTER_NAME(cluster));
        print_db_infos(&cluster->dbarr);
    }
 }
@@ -319,6 +320,7 @@ free_db_and_rel_infos(DbInfoArr *db_arr)
    for (dbnum = 0; dbnum < db_arr->ndbs; dbnum++)
        free_rel_infos(&db_arr->dbs[dbnum].rel_arr);
    pg_free(db_arr->dbs);
+   db_arr->dbs = NULL;
    db_arr->ndbs = 0;
 }