@ -396,8 +396,8 @@ SELECT modify_rel_block('tmp_corr', 1, corrupt_header=>true);
{
my $ invalid_page_re =
$ tblname eq 'tbl_corr'
? qr/invalid page in block 1 of relation base\/ \ d + \ /\d+/
: qr/invalid page in block 1 of relation base\/ \ d + \ /t\d+_\d+/ ;
? qr/invalid page in block 1 of relation " base\/ \ d + \ /\d+/
: qr/invalid page in block 1 of relation " base\/ \ d + \ /t\d+_\d+/ ;
# verify the error is reported in custom C code
psql_like (
@ -798,7 +798,7 @@ SELECT inj_io_short_read_attach(8192);
"shortened multi-block read detects invalid page" ,
qq( SELECT count ( * ) FROM tbl_corr WHERE ctid < ' ( 2, 1 ) ' ) ,
qr/^$/ ,
qr/ERROR:.*invalid page in block 1 of relation base\/ . * / ) ;
qr/ERROR:.*invalid page in block 1 of relation " base\/ . * / ) ;
# trigger a hard error, should error out
$ psql - > query_safe (
@ -985,7 +985,7 @@ SELECT modify_rel_block('tbl_zero', 0, corrupt_header=>true);
qq(
SELECT read_rel_block_ll ( 'tbl_zero' , 0 , zero_on_error = > false ) ) ,
qr/^$/ ,
qr/^psql:<stdin>:\d+: ERROR: invalid page in block 0 of relation base\/ . * \ /.*$/
qr/^psql:<stdin>:\d+: ERROR: invalid page in block 0 of relation " base\/ . * \ /.*$/
) ;
# Check that page validity errors are zeroed
@ -996,7 +996,7 @@ SELECT read_rel_block_ll('tbl_zero', 0, zero_on_error=>false)),
qq(
SELECT read_rel_block_ll ( 'tbl_zero' , 0 , zero_on_error = > true ) ) ,
qr/^$/ ,
qr/^psql:<stdin>:\d+: WARNING: invalid page in block 0 of relation base\/ . * \ /.*; zeroing out page$/
qr/^psql:<stdin>:\d+: WARNING: invalid page in block 0 of relation " base\/ . * \ /.*" ; zeroing out page$/
) ;
# And that once the corruption is fixed, we can read again
@ -1027,7 +1027,7 @@ SELECT modify_rel_block('tbl_zero', 3, corrupt_header=>true);
"$persistency: test zeroing of invalid block 3" ,
qq( SELECT read_rel_block_ll ( 'tbl_zero', 3, zero_on_error=>true ) ; ) ,
qr/^$/ ,
qr/^psql:<stdin>:\d+: WARNING: invalid page in block 3 of relation base\/ . * \ /.*; zeroing out page$/
qr/^psql:<stdin>:\d+: WARNING: invalid page in block 3 of relation " base\/ . * \ /.*" ; zeroing out page$/
) ;
@ -1044,7 +1044,7 @@ SELECT modify_rel_block('tbl_zero', 3, corrupt_header=>true);
"$persistency: test reading of invalid block 2,3 in larger read" ,
qq( SELECT read_rel_block_ll ( 'tbl_zero', 1, nblocks=>4, zero_on_error=>false ) ) ,
qr/^$/ ,
qr/^psql:<stdin>:\d+: ERROR: 2 invalid pages among blocks 1..4 of relation base\/ . * \ /.*\nDETAIL: Block 2 held first invalid page\.\nHINT:[^\n]+$/
qr/^psql:<stdin>:\d+: ERROR: 2 invalid pages among blocks 1..4 of relation " base\/ . * \ /.*\nDETAIL: Block 2 held the first invalid page\.\nHINT:[^\n]+$/
) ;
# Then test zeroing via ZERO_ON_ERROR flag
@ -1054,7 +1054,7 @@ SELECT modify_rel_block('tbl_zero', 3, corrupt_header=>true);
"$persistency: test zeroing of invalid block 2,3 in larger read, ZERO_ON_ERROR" ,
qq( SELECT read_rel_block_ll ( 'tbl_zero', 1, nblocks=>4, zero_on_error=>true ) ) ,
qr/^$/ ,
qr/^psql:<stdin>:\d+: WARNING: zeroing out 2 invalid pages among blocks 1..4 of relation base\/ . * \ /.*\nDETAIL: Block 2 held first zeroed page\.\nHINT:[^\n]+$/
qr/^psql:<stdin>:\d+: WARNING: zeroing out 2 invalid pages among blocks 1..4 of relation " base\/ . * \ /.*\nDETAIL: Block 2 held the first zeroed page\.\nHINT:[^\n]+$/
) ;
# Then test zeroing via zero_damaged_pages
@ -1069,7 +1069,7 @@ SELECT read_rel_block_ll('tbl_zero', 1, nblocks=>4, zero_on_error=>false)
COMMIT ;
) ,
qr/^$/ ,
qr/^psql:<stdin>:\d+: WARNING: zeroing out 2 invalid pages among blocks 1..4 of relation base\/ . * \ /.*\nDETAIL: Block 2 held first zeroed page\.\nHINT:[^\n]+$/
qr/^psql:<stdin>:\d+: WARNING: zeroing out 2 invalid pages among blocks 1..4 of relation " base\/ . * \ /.*\nDETAIL: Block 2 held the first zeroed page\.\nHINT:[^\n]+$/
) ;
$ psql_a - > query_safe ( qq( COMMIT ) ) ;
@ -1091,7 +1091,7 @@ SELECT modify_rel_block('tbl_zero', 3, zero=>true);
qq(
SELECT count ( * ) FROM tbl_zero ) ,
qr/^$/ ,
qr/^psql:<stdin>:\d+: ERROR: invalid page in block 2 of relation base\/ . * \ /.*$/
qr/^psql:<stdin>:\d+: ERROR: invalid page in block 2 of relation " base\/ . * \ /.*$/
) ;
# Verify that bufmgr.c IO zeroes out pages with page validity errors
@ -1106,7 +1106,7 @@ SELECT count(*) FROM tbl_zero;
COMMIT ;
) ,
qr/^\d+$/ ,
qr/^psql:<stdin>:\d+: WARNING: invalid page in block 2 of relation base\/ . * \ /.*$/
qr/^psql:<stdin>:\d+: WARNING: invalid page in block 2 of relation " base\/ . * \ /.*$/
) ;
# Check that warnings/errors about page validity in an IO started by
@ -1192,7 +1192,7 @@ SELECT modify_rel_block('pg_shseclabel', 3, corrupt_checksum=>true);
qq(
SELECT read_rel_block_ll ( 'tbl_normal' , 3 , nblocks = > 1 , zero_on_error = > false ) ; ) ,
qr/^$/ ,
qr/^psql:<stdin>:\d+: ERROR: invalid page in block 3 of relation base\/ \ d + \ /\d+$/
qr/^psql:<stdin>:\d+: ERROR: invalid page in block 3 of relation " base\/ \ d + \ /\d+" $/
) ;
my ( $ cs_count_after , $ cs_ts_after ) =
@ -1214,7 +1214,7 @@ SELECT read_rel_block_ll('tbl_normal', 3, nblocks=>1, zero_on_error=>false);),
qq(
SELECT read_rel_block_ll ( 'tbl_temp' , 4 , nblocks = > 2 , zero_on_error = > false ) ; ) ,
qr/^$/ ,
qr/^psql:<stdin>:\d+: ERROR: invalid page in block 4 of relation base\/ \ d + \ /t\d+_\d+$/
qr/^psql:<stdin>:\d+: ERROR: invalid page in block 4 of relation " base\/ \ d + \ /t\d+_\d+" $/
) ;
( $ cs_count_after , $ cs_ts_after ) = checksum_failures ( $ psql_a , 'postgres' ) ;
@ -1235,7 +1235,7 @@ SELECT read_rel_block_ll('tbl_temp', 4, nblocks=>2, zero_on_error=>false);),
qq(
SELECT read_rel_block_ll ( 'pg_shseclabel' , 2 , nblocks = > 2 , zero_on_error = > false ) ; ) ,
qr/^$/ ,
qr/^psql:<stdin>:\d+: ERROR: 2 invalid pages among blocks 2..3 of relation global\/ \ d + \ nDETAIL: Block 2 held first invalid page \ . \ nHINT: [ ^ \ n ] + $/
qr/^psql:<stdin>:\d+: ERROR: 2 invalid pages among blocks 2..3 of relation " global\/ \ d + " \ nDETAIL: Block 2 held the first invalid page \ . \ nHINT: [ ^ \ n ] + $/
) ;
( $ cs_count_after , $ cs_ts_after ) = checksum_failures ( $ psql_a ) ;
@ -1300,7 +1300,7 @@ STRATEGY wal_log;
"create database w/ wal strategy, invalid source" ,
$ createdb_sql ,
qr/^$/ ,
qr/psql:<stdin>:\d+: ERROR: invalid page in block 1 of relation base\/ \ d + \ /\d+$/
qr/psql:<stdin>:\d+: ERROR: invalid page in block 1 of relation " base\/ \ d + \ /\d+" $/
) ;
my ( $ cs_count_after , $ cs_ts_after ) =
checksum_failures ( $ psql , 'regression_createdb_source' ) ;
@ -1409,7 +1409,7 @@ SELECT read_rel_block_ll('tbl_cs_fail', 3, nblocks=>1, zero_on_error=>false);),
qq(
SELECT read_rel_block_ll ( 'tbl_cs_fail' , 2 , nblocks = > 3 , zero_on_error = > false ) ; ) ,
qr/^$/ ,
qr/^psql:<stdin>:\d+: ERROR: invalid page in block 4 of relation base\/ \ d + \ /\d+$/
qr/^psql:<stdin>:\d+: ERROR: invalid page in block 4 of relation " base\/ \ d + \ /\d+" $/
) ;
# Test multi-block read with different problems in different blocks
@ -1431,7 +1431,7 @@ SELECT modify_rel_block('tbl_cs_fail', 5, corrupt_header=>true);
qq(
SELECT read_rel_block_ll ( 'tbl_cs_fail' , 1 , nblocks = > 5 , zero_on_error = > true ) ; ) ,
qr/^$/ ,
qr/^psql:<stdin>:\d+: WARNING: zeroing 3 page\(s\) and ignoring 2 checksum failure\(s\) among blocks 1..5 of relation/
qr/^psql:<stdin>:\d+: WARNING: zeroing 3 page\(s\) and ignoring 2 checksum failure\(s\) among blocks 1..5 of relation " /
) ;
@ -1444,17 +1444,17 @@ SELECT read_rel_block_ll('tbl_cs_fail', 1, nblocks=>5, zero_on_error=>true);),
ok ( 1 , "$io_method: found information about checksum failure in block 2" ) ;
$ node - > wait_for_log (
qr/LOG: invalid page in block 3 of relation base.*; zeroing out page/ ,
qr/LOG: invalid page in block 3 of relation " base.*" ; zeroing out page/ ,
$ log_location ) ;
ok ( 1 , "$io_method: found information about invalid page in block 3" ) ;
$ node - > wait_for_log (
qr/LOG: invalid page in block 4 of relation base.*; zeroing out page/ ,
qr/LOG: invalid page in block 4 of relation " base.*" ; zeroing out page/ ,
$ log_location ) ;
ok ( 1 , "$io_method: found information about checksum failure in block 4" ) ;
$ node - > wait_for_log (
qr/LOG: invalid page in block 5 of relation base.*; zeroing out page/ ,
qr/LOG: invalid page in block 5 of relation " base.*" ; zeroing out page/ ,
$ log_location ) ;
ok ( 1 , "$io_method: found information about checksum failure in block 5" ) ;
@ -1473,7 +1473,7 @@ SELECT modify_rel_block('tbl_cs_fail', 3, corrupt_checksum=>true, corrupt_header
qq(
SELECT read_rel_block_ll ( 'tbl_cs_fail' , 3 , nblocks = > 1 , zero_on_error = > false ) ; ) ,
qr/^$/ ,
qr/^psql:<stdin>:\d+: ERROR: invalid page in block 3 of relation/ ) ;
qr/^psql:<stdin>:\d+: ERROR: invalid page in block 3 of relation " / ) ;
psql_like (
$ io_method ,
@ -1482,7 +1482,7 @@ SELECT read_rel_block_ll('tbl_cs_fail', 3, nblocks=>1, zero_on_error=>false);),
qq(
SELECT read_rel_block_ll ( 'tbl_cs_fail' , 3 , nblocks = > 1 , zero_on_error = > true ) ; ) ,
qr/^$/ ,
qr/^psql:<stdin>:\d+: WARNING: invalid page in block 3 of relation base\/ . * ; zeroing out page /
qr/^psql:<stdin>:\d+: WARNING: invalid page in block 3 of relation " base\/ . * " ; zeroing out page /
) ;