pgsql: Revise BTP_HAS_GARBAGE nbtree VACUUM comments. - Mailing list pgsql-committers

From Peter Geoghegan
Subject pgsql: Revise BTP_HAS_GARBAGE nbtree VACUUM comments.
Date
Msg-id E1impJf-0006b2-La@gemulon.postgresql.org
Whole thread Raw
List pgsql-committers
Revise BTP_HAS_GARBAGE nbtree VACUUM comments.

_bt_delitems_vacuum() comments claimed that it isn't worth another scan
of the page to avoid falsely unsetting the BTP_HAS_GARBAGE page flag
hint (this happens to be the same wording that was removed from
_bt_delitems_delete() by my recent commit fe97c61c).  The comments made
little sense, though.  The issue can't have much to do with performing a
second scan of the target leaf page, since an LP_DEAD test could easily
be performed in the first scan of the page anyway (the scan that takes
place in btvacuumpage() caller).

Revise the explanation.  It makes much more sense to frame this as an
issue about recovery conflicts.  _bt_delitems_vacuum() cannot easily
generate an XID cutoff in the same way that _bt_delitems_delete() is
designed to.

Falsely unsetting the page flag is not ideal, and is likely to happen
more often than was supposed by the original comments.  Explain why it
usually isn't a problem in practice.  There may be an argument for
_bt_delitems_vacuum() not clearing the BTP_HAS_GARBAGE bit, removing the
question of it being falsely unset by VACUUM (there may even be an
argument for not using a page level hint at all).  This can be revisited
later.

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/4b25f5d0ba0197af80e3af0de7441ca9c88c1e24

Modified Files
--------------
src/backend/access/nbtree/nbtpage.c | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)


pgsql-committers by date:

Previous
From: Tom Lane
Date:
Subject: pgsql: Test GROUP BY matching of join columns that are type-coerced by
Next
From: Amit Kapila
Date:
Subject: pgsql: Fix running out of file descriptors for spill files.