Thread
Commits
-
doc: Correct description of values used in FSM for indexes
- e5cf186277f9 13.21 landed
- b209856b6224 14.18 landed
- 7ca50f90c097 15.13 landed
- 4fd0156a6de9 16.9 landed
- 2afdb9dd96fb 17.5 landed
- 44fe6ceb51f0 18.0 landed
-
A small correction to doc and comment of FSM for indexes
Alex Friedman <alexf01@gmail.com> — 2025-02-25T17:24:14Z
Hi, This patch fixes a couple of small inaccuracies in the doc and the comment for FSM about index handling. 1. In the doc for pg_freespacemap, it currently says: > For indexes, what is tracked is entirely-unused pages, rather than free space within pages. Therefore, the values are not meaningful, just whether a page is full or empty. However, as what is tracked is entirely-unused pages, the values mean whether a page is "in-use or empty", rather than "full or empty". 2. In indexfsm.c the header comment says: > * This is similar to the FSM used for heap, in freespace.c, but instead > * of tracking the amount of free space on pages, we only track whether > * pages are completely free or in-use. We use the same FSM implementation > * as for heaps, using BLCKSZ - 1 to denote used pages, and 0 for unused. However, in the code we see that used pages are marked with 0: > /* > * RecordUsedIndexPage - mark a page as used in the FSM > */ > void > RecordUsedIndexPage(Relation rel, BlockNumber usedBlock) > { > RecordPageWithFreeSpace(rel, usedBlock, 0); > } And free pages are marked with BLCKSZ - 1: > /* > * RecordFreeIndexPage - mark a page as free in the FSM > */ > void > RecordFreeIndexPage(Relation rel, BlockNumber freeBlock) > { > RecordPageWithFreeSpace(rel, freeBlock, BLCKSZ - 1); > } And so, this patch also fixes the comment's "using BLCKSZ - 1 to denote used pages, and 0 for unused" to be "using 0 to denote used pages, and BLCKSZ - 1 for unused". While these changes are minor, I've seen how this can cause a bit of confusion, and it would be good to clarify it. Best regards, Alex Friedman -
Re: A small correction to doc and comment of FSM for indexes
Michael Paquier <michael@paquier.xyz> — 2025-03-27T01:21:39Z
On Tue, Feb 25, 2025 at 07:24:14PM +0200, Alex Friedman wrote: > However, as what is tracked is entirely-unused pages, the values > mean whether a page is "in-use or empty", rather than "full or > empty". Ah, right, you are obviously right here. Applied and backpatched doen to 13 as the docs of pg_freespacemap have been incorrect for a long time. -- Michael