diff --git a/contrib/pg_upgrade/controldata.c b/contrib/pg_upgrade/controldata.c index 0d9a64c967..c33c20c7c0 100644 --- a/contrib/pg_upgrade/controldata.c +++ b/contrib/pg_upgrade/controldata.c @@ -470,7 +470,8 @@ get_control_data(ClusterInfo *cluster, bool live_check) /* verify that we got all the mandatory pg_control data */ if (!got_xid || !got_oid || !got_multi || !got_mxoff || - (!got_oldestmulti && cluster->controldata.cat_ver >= MULTIXACT_FORMATCHANGE_CAT_VER) || + (!got_oldestmulti && + cluster->controldata.cat_ver >= MULTIXACT_FORMATCHANGE_CAT_VER) || (!live_check && !got_nextxlogfile) || !got_tli || !got_align || !got_blocksz || !got_largesz || !got_walsz || @@ -493,7 +494,8 @@ get_control_data(ClusterInfo *cluster, bool live_check) if (!got_mxoff) pg_log(PG_REPORT, " latest checkpoint next MultiXactOffset\n"); - if (!got_oldestmulti && cluster->controldata.cat_ver >= MULTIXACT_FORMATCHANGE_CAT_VER) + if (!got_oldestmulti && + cluster->controldata.cat_ver >= MULTIXACT_FORMATCHANGE_CAT_VER) pg_log(PG_REPORT, " latest checkpoint oldest MultiXactId\n"); if (!live_check && !got_nextxlogfile) diff --git a/contrib/pg_upgrade/pg_upgrade.c b/contrib/pg_upgrade/pg_upgrade.c index 75cf68bcda..cd6497c220 100644 --- a/contrib/pg_upgrade/pg_upgrade.c +++ b/contrib/pg_upgrade/pg_upgrade.c @@ -407,11 +407,10 @@ copy_clog_xlog_xid(void) check_ok(); /* - * If both new and old are after the pg_multixact change commit, copy those - * files too. If the old server is before that change and the new server - * is after, then we don't copy anything but we need to reset pg_control so - * that the new server doesn't attempt to read multis older than the cutoff - * value. + * If the old server is before the MULTIXACT_FORMATCHANGE_CAT_VER change + * (see pg_upgrade.h) and the new server is after, then we don't copy + * pg_multixact files, but we need to reset pg_control so that the new + * server doesn't attempt to read multis older than the cutoff value. */ if (old_cluster.controldata.cat_ver >= MULTIXACT_FORMATCHANGE_CAT_VER && new_cluster.controldata.cat_ver >= MULTIXACT_FORMATCHANGE_CAT_VER) diff --git a/contrib/pg_upgrade/pg_upgrade.h b/contrib/pg_upgrade/pg_upgrade.h index c110e45c36..497098199f 100644 --- a/contrib/pg_upgrade/pg_upgrade.h +++ b/contrib/pg_upgrade/pg_upgrade.h @@ -109,7 +109,10 @@ extern char *output_files[]; #define VISIBILITY_MAP_CRASHSAFE_CAT_VER 201107031 /* - * pg_multixact format changed in this catversion: + * pg_multixact format changed in 9.3 commit 0ac5ad5134f2769ccbaefec73844f85, + * ("Improve concurrency of foreign key locking") which also updated catalog + * version to this value. pg_upgrade behavior depends on whether old and new + * server versions are both newer than this, or only the new one is. */ #define MULTIXACT_FORMATCHANGE_CAT_VER 201301231