Commit cd7d00ad authored by Alvaro Herrera's avatar Alvaro Herrera

Improve pg_upgrade commentary on multixact change

Per gripe from Andres Freund
parent 63d283ec
...@@ -470,7 +470,8 @@ get_control_data(ClusterInfo *cluster, bool live_check) ...@@ -470,7 +470,8 @@ get_control_data(ClusterInfo *cluster, bool live_check)
/* verify that we got all the mandatory pg_control data */ /* verify that we got all the mandatory pg_control data */
if (!got_xid || !got_oid || if (!got_xid || !got_oid ||
!got_multi || !got_mxoff || !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) || (!live_check && !got_nextxlogfile) ||
!got_tli || !got_tli ||
!got_align || !got_blocksz || !got_largesz || !got_walsz || !got_align || !got_blocksz || !got_largesz || !got_walsz ||
...@@ -493,7 +494,8 @@ get_control_data(ClusterInfo *cluster, bool live_check) ...@@ -493,7 +494,8 @@ get_control_data(ClusterInfo *cluster, bool live_check)
if (!got_mxoff) if (!got_mxoff)
pg_log(PG_REPORT, " latest checkpoint next MultiXactOffset\n"); 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"); pg_log(PG_REPORT, " latest checkpoint oldest MultiXactId\n");
if (!live_check && !got_nextxlogfile) if (!live_check && !got_nextxlogfile)
......
...@@ -407,11 +407,10 @@ copy_clog_xlog_xid(void) ...@@ -407,11 +407,10 @@ copy_clog_xlog_xid(void)
check_ok(); check_ok();
/* /*
* If both new and old are after the pg_multixact change commit, copy those * If the old server is before the MULTIXACT_FORMATCHANGE_CAT_VER change
* files too. If the old server is before that change and the new server * (see pg_upgrade.h) and the new server is after, then we don't copy
* is after, then we don't copy anything but we need to reset pg_control so * pg_multixact files, but we need to reset pg_control so that the new
* that the new server doesn't attempt to read multis older than the cutoff * server doesn't attempt to read multis older than the cutoff value.
* value.
*/ */
if (old_cluster.controldata.cat_ver >= MULTIXACT_FORMATCHANGE_CAT_VER && if (old_cluster.controldata.cat_ver >= MULTIXACT_FORMATCHANGE_CAT_VER &&
new_cluster.controldata.cat_ver >= MULTIXACT_FORMATCHANGE_CAT_VER) new_cluster.controldata.cat_ver >= MULTIXACT_FORMATCHANGE_CAT_VER)
......
...@@ -109,7 +109,10 @@ extern char *output_files[]; ...@@ -109,7 +109,10 @@ extern char *output_files[];
#define VISIBILITY_MAP_CRASHSAFE_CAT_VER 201107031 #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 #define MULTIXACT_FORMATCHANGE_CAT_VER 201301231
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment