Re: pgstattuple: fix free space calculation

Frédéric Yhuel <frederic.yhuel@dalibo.com>

From: Frédéric Yhuel <frederic.yhuel@dalibo.com>
To: Tom Lane <tgl@sss.pgh.pa.us>, Rafia Sabih <rafia.pghackers@gmail.com>
Cc: Andreas Karlsson <andreas@proxel.se>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2024-09-09T13:49:54Z
Lists: pgsql-hackers

Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. Consistently use PageGetExactFreeSpace() in pgstattuple.

Attachments


On 9/7/24 22:45, Tom Lane wrote:
> I wrote:
>> Now alternatively you could argue that a "new" page isn't usable free
>> space yet and so we should count it as zero, just as we don't count
>> dead tuples as usable free space.  You need VACUUM to turn either of
>> those things into real free space.  But that'd be a bigger definitional
>> change, and I'm not sure we want it.  Thoughts?
> 
> On the third hand: the code in question is in statapprox_heap, which
> is presumably meant to deliver numbers comparable to pgstat_heap.
> And pgstat_heap takes no special care for "new" pages, it just applies
> PageGetHeapFreeSpace (or PageGetExactFreeSpace after this patch).
> So that leaves me feeling pretty strongly that this whole stanza
> is wrong and we should just do PageGetExactFreeSpace here.
> 

+1

v4 patch attached.

Best regards,
Frédéric