Обсуждение: Change the signature of pgstat_report_vacuum() so that it's passed a Relation
Change the signature of pgstat_report_vacuum() so that it's passed a Relation
От
Bertrand Drouvot
Дата:
Hi hackers, 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(). PFA a patch to $SUBJECT. Thoughts? [1]: https://www.postgresql.org/message-id/ezbfcpjtfh3vtm667aegyrptcdsvinbuxw6y5p6j3e5fbffrl5@i7v6cjapz3yv Regards, -- Bertrand Drouvot PostgreSQL Contributors Team RDS Open Source Databases Amazon Web Services: https://aws.amazon.com
Вложения
> On Dec 16, 2025, at 14:49, Bertrand Drouvot <bertranddrouvot.pg@gmail.com> wrote: > > Hi hackers, > > 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(). > > PFA a patch to $SUBJECT. > > Thoughts? > > [1]: https://www.postgresql.org/message-id/ezbfcpjtfh3vtm667aegyrptcdsvinbuxw6y5p6j3e5fbffrl5@i7v6cjapz3yv > > Regards, > > -- > Bertrand Drouvot > PostgreSQL Contributors Team > RDS Open Source Databases > Amazon Web Services: https://aws.amazon.com > <v1-0001-Change-the-signature-of-pgstat_report_vacuum-so-t.patch> Combing the two parameters into one looks clearer. And the function pgstat_report_vacuum() has only 1 caller, the changeis a small refactoring. LGTM. Best regards, -- Chao Li (Evan) HighGo Software Co., Ltd. https://www.highgo.com/
Re: Change the signature of pgstat_report_vacuum() so that it's passed a Relation
От
Michael Paquier
Дата:
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. I can get behind the symmetry argument with pgstat_report_analyze() for pgstat_report_vacuum(). Another appoealing argument with this change is that it forces the callers of pgstat_report_vacuum() to open a relation, enforcing the policy that we need a lock of them before reporting stats. I don't think that we will ever have dozens of callers of pgstat_report_vacuum() in the tree, but it makes the API contract cleaner IMO with a long-term picture in mind. -- Michael
Вложения
Re: Change the signature of pgstat_report_vacuum() so that it's passed a Relation
От
Bertrand Drouvot
Дата:
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? Regards, -- Bertrand Drouvot PostgreSQL Contributors Team RDS Open Source Databases Amazon Web Services: https://aws.amazon.com
> 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, Relationis 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/
> 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, Relationis 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/