Re: Change the signature of pgstat_report_vacuum() so that it's passed a Relation

Chao Li <li.evan.chao@gmail.com>

From: Chao Li <li.evan.chao@gmail.com>
To: Bertrand Drouvot <bertranddrouvot.pg@gmail.com>
Cc: Michael Paquier <michael@paquier.xyz>, pgsql-hackers@lists.postgresql.org
Date: 2025-12-16T09:56:20Z
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. Change pgstat_report_vacuum() to use Relation


> On Dec 16, 2025, at 17:45, Bertrand Drouvot <bertranddrouvot.pg@gmail.com> wrote:
> 
> Hi,
> 
> On Tue, Dec 16, 2025 at 04:39:05PM +0900, Michael Paquier wrote:
>> On Tue, Dec 16, 2025 at 06:49:13AM +0000, Bertrand Drouvot wrote:
>>> While working on relfilenode statistics, Andres suggested that we pass the Relation
>>> to pgstat_report_vacuum() (instead of the parameters inherited from the Relation,
>>> (See [1])).
>>> 
>>> That looks like a good idea to me as it reduces the number of parameters and it's
>>> consistent with pgstat_report_analyze().
>> 
>> Fine by me.
> 
> Thank you both for looking at it!
> 
> I'm just thinking that we could mark the new "Relation rel" parameter as a
> const one. Indeed we are in a "report" function that only makes use of the
> Relation as read only.
> 
> But, we can't do the same for pgstat_report_analyze() because pgstat_should_count_relation()
> can modify the relation through pgstat_assoc_relation(). So I'm inclined to
> let it as in v1. Thoughts?
> 

I guess you don’t have to. I search over the code base, and cannot find a “const Ration” parameter. And actually, Relation is typedef of “structure RelationData *”, so if you want to make it const, then you have to do “const structure RelationData *rel”, because “const Relation rel” won’t behave as your intention.

Best regards,
--
Chao Li (Evan)
HighGo Software Co., Ltd.
https://www.highgo.com/