Re: pgsql: Teach verify_heapam() to validate update chains within a page.
От | Andres Freund |
---|---|
Тема | Re: pgsql: Teach verify_heapam() to validate update chains within a page. |
Дата | |
Msg-id | 20230322200549.5ne67suf64qv7cs5@awork3.anarazel.de обсуждение исходный текст |
Ответ на | Re: pgsql: Teach verify_heapam() to validate update chains within a page. (Andrew Dunstan <andrew@dunslane.net>) |
Ответы |
Re: pgsql: Teach verify_heapam() to validate update chains within a page.
|
Список | pgsql-committers |
Hi, On 2023-03-22 15:33:15 -0400, Andrew Dunstan wrote: > On 2023-03-22 We 09:17, Robert Haas wrote: > > Teach verify_heapam() to validate update chains within a page. > > > > Prior to this commit, we only consider each tuple or line pointer > > on the page in isolation, but now we can do some validation of a line > > pointer against its successor. For example, a redirect line pointer > > shouldn't point to another redirect line pointer, and if a tuple > > is HOT-updated, the result should be a heap-only tuple. > > > > Himanshu Upadhyaya and Robert Haas, reviewed by Aleksander Alekseev, > > Andres Freund, and Peter Geoghegan. > > > This has apparently broken one case in the buildfarm, which now fails an > upgrade from REL9_2_STABLE because we run amcheck after the upgrade: > > > heap table "regression.public.xacttest", block 0, offset 1: > non-heap-only update produced a heap-only tuple at offset 18 > heap table "regression.public.xacttest", block 0, offset 2: > non-heap-only update produced a heap-only tuple at offset 19 > heap table "regression.public.xacttest", block 0, offset 4: > non-heap-only update produced a heap-only tuple at offset 20 > heap table "regression.public.xacttest", block 0, offset 5: > non-heap-only update produced a heap-only tuple at offset 21 > heap table "regression.public.wslot", block 0, offset 89: > non-heap-only update produced a heap-only tuple at offset 95 > heap table "regression.public.pslot", block 0, offset 95: > non-heap-only update produced a heap-only tuple at offset 100 > heap table "regression.public.pslot", block 0, offset 96: > non-heap-only update produced a heap-only tuple at offset 101 > > > I don't know if this is a bug in this commit or if the REL9_2_STABLE repo is > really broken. FWIW, I get errors on a bunch of catalog tables, on HEAD, if I run the regression tests and then run amcheck. heap table "ecpg1_regression.pg_catalog.pg_class", block 7, offset 16: non-heap-only update produced a heap-only tuple at offset 19 heap table "ecpg1_regression.pg_catalog.pg_class", block 13, offset 49: non-heap-only update produced a heap-only tuple at offset 52 heap table "ecpg1_regression.pg_catalog.pg_class", block 13, offset 53: ... heap table "regression_pg_surgery.pg_catalog.pg_class", block 0, offset 4: non-heap-only update produced a heap-only tuple at offset 5 heap table "regression_pg_surgery.pg_catalog.pg_class", block 0, offset 5: non-heap-only update produced a heap-only tuple at offset 6 So either this very quickly bagged the first bugs, or there's something wrong with the checks. Greetings, Andres Freund
В списке pgsql-committers по дате отправления: