diff options
| author | Heikki Linnakangas <heikki.linnakangas@iki.fi> | 2025-12-05 23:39:01 +0200 |
|---|---|---|
| committer | Heikki Linnakangas <heikki.linnakangas@iki.fi> | 2025-12-05 23:39:01 +0200 |
| commit | 7c2061bdfba7c738dac1e2c14db51faeef3f34b1 (patch) | |
| tree | 053cc3083c028d303fd58e7bd34b33506c089838 /src | |
| parent | d0d873c382cd23f3a49511e2bda35b4bf068c92d (diff) | |
Fix test to work with non-8kB block sizesHEADorigin/masterorigin/HEADmaster
Author: Maxim Orlov <orlovmg@gmail.com>
Discussion: https://www.postgresql.org/message-id/CACG%3Dezbtm%2BLOzEMyLX7rzGcAv3ez3F6nNpSJjvZeMzed0Oe6Pw%40mail.gmail.com
Diffstat (limited to 'src')
| -rw-r--r-- | src/test/modules/test_slru/t/002_multixact_wraparound.pl | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/src/test/modules/test_slru/t/002_multixact_wraparound.pl b/src/test/modules/test_slru/t/002_multixact_wraparound.pl index de37d845b11..169333fc564 100644 --- a/src/test/modules/test_slru/t/002_multixact_wraparound.pl +++ b/src/test/modules/test_slru/t/002_multixact_wraparound.pl @@ -25,19 +25,31 @@ command_ok( ], "set the cluster's next multitransaction to 0xFFFFFFF8"); +# Extract a few values from pg_resetwal --dry-run output that we need for +# the calculations below +my $out = (run_command([ 'pg_resetwal', '--dry-run', $node->data_dir ]))[0]; +$out =~ /^Database block size: *(\d+)$/m or die; +my $blcksz = $1; +$out =~ /^Pages per SLRU segment: *(\d+)$/m or die; +my $slru_pages_per_segment = $1; + # Fixup the SLRU files to match the state we reset to. -# initialize SLRU file with zeros (65536 entries * 4 bytes = 262144 bytes) -my $slru_file = "$node_pgdata/pg_multixact/offsets/FFFF"; +# initialize the 'offsets' SLRU file containing the new next multixid +# with zeros +my $multixact_offsets_per_page = $blcksz / 4; # sizeof(MultiXactOffset) == 4 +my $segno = + int(0xFFFFFFF8 / $multixact_offsets_per_page / $slru_pages_per_segment); +my $slru_file = sprintf('%s/pg_multixact/offsets/%04X', $node_pgdata, $segno); open my $fh, ">", $slru_file or die "could not open \"$slru_file\": $!"; binmode $fh; -# Write 65536 entries of 4 bytes each (all zeros) -syswrite($fh, "\0" x 262144) == 262144 +my $bytes_per_seg = $slru_pages_per_segment * $blcksz; +syswrite($fh, "\0" x $bytes_per_seg) == $bytes_per_seg or die "could not write to \"$slru_file\": $!"; close $fh; -# remove old SLRU file +# remove old file unlink("$node_pgdata/pg_multixact/offsets/0000") or die "could not unlink \"$node_pgdata/pg_multixact/offsets/0000\": $!"; |
