Re: Why does load_external_function() return PGFunction?

From: Andres Freund <andres(at)anarazel(dot)de>
To: Robert Haas <robertmhaas(at)gmail(dot)com>
Cc: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, "pgsql-hackers(at)postgresql(dot)org" <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Why does load_external_function() return PGFunction?
Date: 2018-05-10 20:45:59
Message-ID: 20180510204559.u2xlkp2oczxurndm@alap3.anarazel.de
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On 2018-05-10 16:41:53 -0400, Robert Haas wrote:
> On Mon, Mar 26, 2018 at 4:16 PM, Andres Freund <andres(at)anarazel(dot)de> wrote:
> > I dug up a thread about the introduction of the warning:
> > https://gcc.gnu.org/ml/gcc-patches/2017-10/msg00423.html
> >
> > Sounds like we should add something like
> > typedef void (*GenericFuncPtr) (void);
> > or such? Similar to what Tom proposed upthread.
>
> His proposal was void (*)() rather than void (*)(void). I see that
> the email to which you linked expects the latter, but I guess I would
> have expected the former to be an intentional statement that we don't
> know what the parameter list is. My expectations may be wrong,
> though, or just irrelevant.

Possible. But IIRC the parameter-unknown form isn't valid C++ and Peter
Eisentraut has done a good chunk of work to make it possible to compile
postgres as that. We shouldn't make his job harder. IMO the important
part isn't that the parameters fit exactly - we'll have to cast for the
return type anyway - but that it's declared as a pointer-to-function for
the hyptothetical supported platform that has different pointers to
functions than to other objects.

Greetings,

Andres Freund

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Tom Lane 2018-05-10 21:08:37 Re: [HACKERS] Cutting initdb's runtime (Perl question embedded)
Previous Message Robert Haas 2018-05-10 20:41:53 Re: Why does load_external_function() return PGFunction?