rewriteheap.c bug: toast rows don't get XIDs matching their parents - Mailing list pgsql-hackers

From Tom Lane
Subject rewriteheap.c bug: toast rows don't get XIDs matching their parents
Date
Msg-id 16465.1326405058@sss.pgh.pa.us
Whole thread Raw
Responses Re: rewriteheap.c bug: toast rows don't get XIDs matching their parents  (Robert Haas <robertmhaas@gmail.com>)
List pgsql-hackers
While working on bug #6393 I was reminded of the truth of $SUBJECT: any
rows inserted into the new toast table will have the xmin of the CLUSTER
or VACUUM FULL operation, and invalid xmax, whereas their parent heap
rows will have xmin/xmax copied from the previous instance of the table.
This does not matter much for ordinary live heap rows, but it's also
necessary for CLUSTER/VACUUM FULL to copy recently-dead,
insert-in-progress, and delete-in-progress rows.  In such cases, a later
plain VACUUM might reap the parent heap rows and not the toast rows,
leading to a storage leak that won't be recovered short of another
CLUSTER/VACUUM FULL.

I can't remember if we discussed this risk when the heap rewrite code
was written.  I'm not sure it's worth fixing, but at the least it ought
to be documented in the comments in rewriteheap.c.
        regards, tom lane


pgsql-hackers by date:

Previous
From: Thomas Munro
Date:
Subject: Re: WIP -- renaming implicit sequences
Next
From: Simon Riggs
Date:
Subject: ERRCODE_READ_ONLY_SQL_TRANSACTION