PostgreSQL Bugs

Collected from the PG bugs email list.

Bug ID15615
PG Version9.4.20
OSSlackware, Debian
Opened2019-01-31 16:19:01+00
Reported bySergey Burladyan

Body of first available message related to this bug follows.

The following bug has been logged on the website:

Bug reference:      15615
Logged by:          Sergey Burladyan
Email address:      (redacted)
PostgreSQL version: 9.4.20
Operating system:   Slackware, Debian


I use production config for pg_upgrade for new cluster and it has
vacuum_defer_cleanup_age = 900000

With this setting pg_upgrade cannot freeze pg_catalog in new cluster
(it do 'vacuumdb --all --freeze') during performing upgrade and upgrade

Performing Upgrade
Analyzing all rows in the new cluster                       ok
Freezing all rows on the new cluster                        ok
Deleting files from new pg_clog                             ok
Copying old pg_clog to new server                           ok
Setting next transaction ID and epoch for new cluster       ok
Deleting files from new pg_multixact/offsets                ok
Copying old pg_multixact/offsets to new server              ok
Deleting files from new pg_multixact/members                ok
Copying old pg_multixact/members to new server              ok
Setting next multixact ID and offset for new cluster        ok
Resetting WAL archives                                      ok

connection to database failed: FATAL:  database "template1" does not exist

could not connect to new postmaster started with the command:
"/home/test/inst/pg9.6/bin/pg_ctl" -w -l "pg_upgrade_server.log" -D "new/"
-o "-p 50432 -b -c synchronous_commit=off -c fsync=off -c
full_page_writes=off  -c listen_addresses='' -c unix_socket_permissions=0700
-c unix_socket_directories='/home/test/tmp/u'" start
Failure, exiting

I did not find any prohibition in the documentation on using production
with pg_upgrade, may be I am wrong and this is already mentioned in

Test script:


${PGOLD}/pg_ctl init -s -D old -o "--lc-messages=C -T pg_catalog.english"

${PGNEW}/pg_ctl init -s -D new -o "--lc-messages=C -T pg_catalog.english"
echo vacuum_defer_cleanup_age=10000 >> new/

# move txid to 3 000 000 000 in old cluster as in production
${PGOLD}/pg_ctl start -w -D old -o "--port=54321
${PGOLD}/vacuumdb -h /tmp -p 54321 --all --analyze
${PGOLD}/vacuumdb -h /tmp -p 54321 --all --freeze
${PGOLD}/pg_ctl stop -D old -m smart
${PGOLD}/pg_resetxlog -x 3000000000 old
dd if=/dev/zero of=old/pg_clog/0B2D bs=262144 count=1

# # move txid in new cluster bigger than vacuum_defer_cleanup_age may fix
# ${PGNEW}/pg_ctl start -w -D new -o "--port=54321
# echo "select txid_current();" | ${PGNEW}/pgbench -h /tmp -p 54321 -n -P 5
-t 100000 -f- postgres
# ${PGNEW}/pg_ctl stop -D new -m smart

${PGNEW}/pg_upgrade -k -d old/ -D new/ -b ${PGOLD}/ -B ${PGNEW}/

# rm -r new old pg_upgrade_*


2019-01-31 16:19:01+00PG Bug reporting formBUG #15615: pg_upgrade and vacuum_defer_cleanup_age
2020-07-02 09:33:05+00Laurenz AlbeRe: BUG #15615: pg_upgrade and vacuum_defer_cleanup_age