From 4a2e64b44cf8ec22a264d8fa495432f535482fb4 Mon Sep 17 00:00:00 2001 From: Maxim Orlov Date: Fri, 27 Dec 2024 19:39:58 +0300 Subject: [PATCH v13 6/7] TEST: try to replicate buggy oldest offset --- src/bin/pg_upgrade/t/005_offset.pl | 59 ++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) diff --git a/src/bin/pg_upgrade/t/005_offset.pl b/src/bin/pg_upgrade/t/005_offset.pl index df84186de4..2d91d101fa 100644 --- a/src/bin/pg_upgrade/t/005_offset.pl +++ b/src/bin/pg_upgrade/t/005_offset.pl @@ -305,6 +305,8 @@ my @TESTS = ( 100, 101, 102, 103, 104, 105, 106, # self upgrade 1000, + # buggy + 2000 ); # ============================================================================= @@ -560,4 +562,61 @@ SKIP: ok(1, "TEST $TEST_NO PASSED"); } +# ============================================================================= +# Buggy +# ============================================================================= + +SKIP: +{ + my $TEST_NO = 2000; + skip "do not test case $TEST_NO", 1 + unless ( grep( /^$TEST_NO$/, @TESTS ) ); + + if (!defined($ENV{oldinstall})) + { + die "oldinstall is not defined"; + } + + my $dbname = 'buggy'; + my $newnode = PostgreSQL::Test::Cluster->new("new_$dbname"); + my $oldnode = PostgreSQL::Test::Cluster->new("old_$dbname", + install_path => $ENV{oldinstall}); + $newnode->init; + $oldnode->init(force_initdb => 1); + + $oldnode->append_conf('postgresql.conf', q( + autovacuum = off + max_prepared_transactions = 2 + fsync = off + )); + $oldnode->start; + + mxid_gen2($oldnode, 'FOO', 1.25); + mxid_gen2($oldnode, 'BAR', 1.25); + + $oldnode->safe_psql('postgres', q( + DROP TABLE BAR; + CHECKPOINT; + )); + $oldnode->stop; + + unlink($oldnode->data_dir . "/pg_multixact/offsets/0000"); + + command_ok( + [ + 'pg_upgrade', '--no-sync', + '-d', $oldnode->data_dir, + '-D', $newnode->data_dir, + '-b', $oldnode->config_data('--bindir'), + '-B', $newnode->config_data('--bindir'), + '-s', $newnode->host, + '-p', $oldnode->port, + '-P', $newnode->port, + '--copy' + ], + 'run of pg_upgrade'); + + ok(1, "TEST $TEST_NO PASSED"); +} + done_testing(); -- 2.43.0