aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBruce Momjian <bruce@momjian.us>2020-06-15 20:59:40 -0400
committerBruce Momjian <bruce@momjian.us>2020-06-15 20:59:40 -0400
commita2c72851a898170ee1f2e7c21c1bf9086dec2d5c (patch)
tree6de971aea088f62d23ae9303e7f2108b40f16d4d /src
parent4701efa9f741aa0ca38cfe922dfcaef1749b5b02 (diff)
downloadpostgresql-a2c72851a898170ee1f2e7c21c1bf9086dec2d5c.tar.gz
postgresql-a2c72851a898170ee1f2e7c21c1bf9086dec2d5c.zip
pg_upgrade: set vacuum_defer_cleanup_age to zero
Non-zero vacuum_defer_cleanup_age values cause pg_upgrade freezing of the system catalogs to be incomplete, or do nothing. This will cause the upgrade to fail in confusing ways. Reported-by: Laurenz Albe Discussion: https://postgr.es/m/7d6f6c22ba05ce0c526e9e8b7bfa8105e7da45e6.camel@cybertec.at Backpatch-through: 9.5
Diffstat (limited to 'src')
-rw-r--r--src/bin/pg_upgrade/server.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/bin/pg_upgrade/server.c b/src/bin/pg_upgrade/server.c
index 7d17280ecb4..79ec3f04c0e 100644
--- a/src/bin/pg_upgrade/server.c
+++ b/src/bin/pg_upgrade/server.c
@@ -239,6 +239,9 @@ start_postmaster(ClusterInfo *cluster, bool report_and_exit_on_error)
* we only modify the new cluster, so only use it there. If there is a
* crash, the new cluster has to be recreated anyway. fsync=off is a big
* win on ext4.
+ *
+ * Force vacuum_defer_cleanup_age to 0 on the new cluster, so that
+ * vacuumdb --freeze actually freezes the tuples.
*/
snprintf(cmd, sizeof(cmd),
"\"%s/pg_ctl\" -w -l \"%s\" -D \"%s\" -o \"-p %d%s%s %s%s\" start",
@@ -247,7 +250,7 @@ start_postmaster(ClusterInfo *cluster, bool report_and_exit_on_error)
BINARY_UPGRADE_SERVER_FLAG_CAT_VER) ? " -b" :
" -c autovacuum=off -c autovacuum_freeze_max_age=2000000000",
(cluster == &new_cluster) ?
- " -c synchronous_commit=off -c fsync=off -c full_page_writes=off" : "",
+ " -c synchronous_commit=off -c fsync=off -c full_page_writes=off -c vacuum_defer_cleanup_age=0" : "",
cluster->pgopts ? cluster->pgopts : "", socket_string);
/*