Re: Unstable regression test for contrib/pageinspect - Mailing list pgsql-hackers

From Mark Dilger
Subject Re: Unstable regression test for contrib/pageinspect
Date
Msg-id 970ED201-9D3F-44AC-BCB1-77B83598CC7A@enterprisedb.com
Whole thread Raw
In response to Unstable regression test for contrib/pageinspect  (Tom Lane <tgl@sss.pgh.pa.us>)
Responses Re: Unstable regression test for contrib/pageinspect
List pgsql-hackers

> On Nov 20, 2022, at 12:37 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
>
> contrib/amcheck and contrib/pg_visibility are also using
> DISABLE_PAGE_SKIPPING, so I wonder if they have similar hazards.
> I haven't seen them fall over, though.

In the amcheck regression test case, it's because the test isn't sensitive to whether the freeze actually happens.  You
cancomment out that line, and the only test difference is the comment: 

@@ -108,8 +108,8 @@
 ERROR:  ending block number must be between 0 and 0
 SELECT * FROM verify_heapam(relation := 'heaptest', startblock := 10000, endblock := 11000);
 ERROR:  starting block number must be between 0 and 0
--- Vacuum freeze to change the xids encountered in subsequent tests
-VACUUM (FREEZE, DISABLE_PAGE_SKIPPING) heaptest;
+-- -- Vacuum freeze to change the xids encountered in subsequent tests
+-- VACUUM (FREEZE, DISABLE_PAGE_SKIPPING) heaptest;
 -- Check that valid options are not rejected nor corruption reported
 -- for a non-empty frozen table
 SELECT * FROM verify_heapam(relation := 'heaptest', skip := 'none');


The amcheck TAP test is sensitive to commenting out the freeze, though:

t/001_verify_heapam.pl .. 42/?
#   Failed test 'all-frozen corrupted table skipping all-frozen'
#   at t/001_verify_heapam.pl line 58.
#          got: '0|3||line pointer redirection to item at offset 21840 exceeds maximum offset 38
# 0|4||line pointer to page offset 21840 with length 21840 ends beyond maximum page offset 8192
# 0|5||line pointer redirection to item at offset 0 precedes minimum offset 1
# 0|6||line pointer length 0 is less than the minimum tuple header size 24
# 0|7||line pointer to page offset 15 is not maximally aligned
# 0|8||line pointer length 15 is less than the minimum tuple header size 24'
#     expected: ''
t/001_verify_heapam.pl .. 211/? # Looks like you failed 1 test of 272.
t/001_verify_heapam.pl .. Dubious, test returned 1 (wstat 256, 0x100)
Failed 1/272 subtests
t/002_cic.pl ............ ok
t/003_cic_2pc.pl ........ ok

Test Summary Report
-------------------
t/001_verify_heapam.pl (Wstat: 256 (exited 1) Tests: 272 Failed: 1)
  Failed test:  80
  Non-zero exit status: 1
Files=3, Tests=280, 10 wallclock secs ( 0.05 usr  0.02 sys +  3.84 cusr  3.10 csys =  7.01 CPU)
Result: FAIL
make: *** [check] Error 1


But the TAP test also disables autovacuum, so a background auto-analyze shouldn't be running.  Maybe that's why you
haven'tseen amcheck fall over? 

—
Mark Dilger
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company






pgsql-hackers by date:

Previous
From: Justin Pryzby
Date:
Subject: Re: CREATE INDEX CONCURRENTLY on partitioned index
Next
From: Tom Lane
Date:
Subject: Re: Unstable regression test for contrib/pageinspect