repro.txt
text/plain
Filename: repro.txt
Type: text/plain
Part: 0
#! /bin/sh
# Primary setup
/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
echo "archive_mode = on
archive_command = 'cp %p /tmp/archive/%f'
max_prepared_transactions = 10" >> /usr/local/pgsql/data/postgresql.conf
/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l /tmp/logfile_p start
# Secondary setup
/usr/local/pgsql/bin/pg_basebackup -D /usr/local/pgsql/data_s -X stream && touch /usr/local/pgsql/data_s/recovery.signal
echo "port = 6432
restore_command = 'cp /tmp/archive/%f %p'
recovery_target_name = 'rp'
recovery_target_action = 'promote'
max_prepared_transactions = 20" >> /usr/local/pgsql/data_s/postgresql.conf
# Workload
echo "CREATE TABLE foo(i int);
BEGIN;
INSERT INTO foo VALUES(1);
PREPARE TRANSACTION 'fooinsert';
SELECT pg_create_restore_point('rp');
INSERT INTO foo VALUES(2);
SELECT pg_switch_wal();
" > /tmp/workload.sql
/usr/local/pgsql/bin/psql postgres -f /tmp/workload.sql
/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data_s -l /tmp/logfile_s start
sleep 5
/usr/local/pgsql/bin/pg_waldump /tmp/archive/000000010000000000000003 > /tmp/archive_000000010000000000000003
/usr/local/pgsql/bin/pg_waldump /usr/local/pgsql/data_s/pg_wal/000000010000000000000003 > /tmp/standby_000000010000000000000003
diff -u /tmp/archive_000000010000000000000003 /tmp/standby_000000010000000000000003 > /tmp/waldiff.diff
cat /tmp/waldiff.diff