pgsql: Include last block in FSM vacuum of bulk extended relation

From: Melanie Plageman <melanieplageman(at)gmail(dot)com>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: Include last block in FSM vacuum of bulk extended relation
Date: 2026-07-15 19:56:54
Message-ID: E1wk5iv-000LN9-1H@gemulon.postgresql.org
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Include last block in FSM vacuum of bulk extended relation

When bulk-extending a relation, we add the newly-added blocks that we
won't immediately use to the free space map and then call
FreeSpaceMapVacuumRange() to propagate that free space up the FSM tree,
so other backends can find and reuse it.

However, the end block argument to FreeSpaceMapVacuumRange() is
exclusive, and we passed the number of the last added block (since
00d1e02be24). If that block was the first one covered by a new FSM page,
its free space wasn't propagated up the tree and was therefore invisible
to FSM searches until the next FSM vacuum.

Fix by passing the block number one past the last added block, so the
full range is vacuumed.

Author: Jingtang Zhang <mrdrivingduck(at)gmail(dot)com>
Reviewed-by: Melanie Plageman <melanieplageman(at)gmail(dot)com>
Discussion: https://postgr.es/m/flat/CAPsk3_Bx_vdybN%3D-DZu8HLStf%2BXnuFUBkLwxouONSMkWuO9oug%40mail.gmail.com
Backpatch-through: 16

Branch
------
REL_17_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/768ae083ebac8e886d2fa1754eb27f1deabb5704

Modified Files
--------------
src/backend/access/heap/hio.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Melanie Plageman 2026-07-15 19:59:48 pgsql: Include last block in FSM vacuum of bulk extended relation
Previous Message Melanie Plageman 2026-07-15 19:55:31 pgsql: Include last block in FSM vacuum of bulk extended relation