Обсуждение: Re: Question -- why is there no errhint_internal function?
(I added Andres to this thread)
Hi Andres,
I saw that a new errhint_internal() function was recently committed
[1]. I had also posted above asking about this same missing function a
month ago [2].
But, your patch only added the new function -- it does not make any
use of it for existing code that was using the errhint("%s", str)
method.
I wondered, given your commit message "but that's not exactly pretty
and makes it harder to avoid memory leaks", if you think it is
worthwhile to revisit those existing "%s" usages and modify them to
use the new errhint_internal? Tom above [3] seemed not keen to modify
those without performance reasons, although at that time
errhint_internal didn't even exist.
======
[1] https://github.com/postgres/postgres/commit/4244cf68769773ba30b868354f1f2fe93238e98b
[2] https://www.postgresql.org/message-id/CAHut%2BPtDHRif49G%2BbzspOGspETym5oKseD13v0tcBJXWUrTx9A%40mail.gmail.com
[3] https://www.postgresql.org/message-id/547688.1738630459%40sss.pgh.pa.us
Kind Regards,
Peter Smith.
Fujitsu Australia
Hi,
On 2025-04-03 09:58:30 +1100, Peter Smith wrote:
> I saw that a new errhint_internal() function was recently committed
> [1]. I had also posted above asking about this same missing function a
> month ago [2].
>
> But, your patch only added the new function -- it does not make any
> use of it for existing code that was using the errhint("%s", str)
> method.
>
> I wondered, given your commit message "but that's not exactly pretty
> and makes it harder to avoid memory leaks", if you think it is
> worthwhile to revisit those existing "%s" usages and modify them to
> use the new errhint_internal? Tom above [3] seemed not keen to modify
> those without performance reasons, although at that time
> errhint_internal didn't even exist.
I'd not go around and just categorically convert all users of errhint("%s",
str), that's probably not worth the noise. And plenty of them won't
benefit. E.g. the first one I just looked at is dblink_res_error(), where I
don't think using it would bring meaningful benefit. I suspect a bunch of
other places are going to be similar.
But I could also imageine there are some places where it'd improve the code /
remove unnecessary allocations.
Greetings,
Andres Freund
On Thu, Apr 3, 2025 at 10:26 AM Andres Freund <andres@anarazel.de> wrote:
>
> Hi,
>
> On 2025-04-03 09:58:30 +1100, Peter Smith wrote:
> > I saw that a new errhint_internal() function was recently committed
> > [1]. I had also posted above asking about this same missing function a
> > month ago [2].
> >
> > But, your patch only added the new function -- it does not make any
> > use of it for existing code that was using the errhint("%s", str)
> > method.
> >
> > I wondered, given your commit message "but that's not exactly pretty
> > and makes it harder to avoid memory leaks", if you think it is
> > worthwhile to revisit those existing "%s" usages and modify them to
> > use the new errhint_internal? Tom above [3] seemed not keen to modify
> > those without performance reasons, although at that time
> > errhint_internal didn't even exist.
>
> I'd not go around and just categorically convert all users of errhint("%s",
> str), that's probably not worth the noise. And plenty of them won't
> benefit. E.g. the first one I just looked at is dblink_res_error(), where I
> don't think using it would bring meaningful benefit. I suspect a bunch of
> other places are going to be similar.
>
Yes, I found 19 examples, but they are all similar to that.
I think they could all be changed
FROM
errhint("%s", str)
TO one of
errhint_internal("%s", str)
errhint_internal(str)
...but due to noise/benefit trade-off, I won't bother.
Thanks for your feedback.
======
Kind Regards,
Peter Smith.
Fujitsu Australia