Store the deletion horizon XID for a deleted GIN page on the right page.
Tom Lane <tgl@sss.pgh.pa.us>
Store the deletion horizon XID for a deleted GIN page on the right page. Commit b10714080 moved the GinPageSetDeleteXid() call to a spot where the "page" variable was pointing to the wrong page, causing the XID to be inserted on a page that's not being deleted, thus allowing later GinPageIsRecyclable tests to recycle the deleted page too soon. It might be a good idea to stop using the single "page" variable for multiple purposes in this function. But for the moment I just moved the GinPageSetDeleteXid() call down beside the GinPageSetDeleted() call, which seems like a more logical place for it anyway. Back-patch to v11, as the faulty patch was. (Fortunately, the bug hasn't made it into any release yet.) Discussion: https://postgr.es/m/21620.1581098806@sss.pgh.pa.us
Files
| Path | Change | +/− |
|---|---|---|
| src/backend/access/gin/ginvacuum.c | modified | +6 −3 |
Discussion
Cited messages not in the archive:
21620.1581098806@sss.pgh.pa.us