Missing declaration of _PG_init()

Started by Jack Orensteinover 5 years ago3 messagesgeneral
Jump to latest
#1Jack Orenstein
jao@geophile.com

I am writing an extension. The docs describe a _PG_init function that will
be called upon
loading the shared library (https://www.postgresql.org/docs/12/xfunc-c.html).
I include
postgres.h and fmgr.h, but on compilation, _PG_init has not been declared.
Grepping the postgres source, _PG_init appears to be involved in
programming language extensions, and the function is declared in plpgsql.h.
Looking at various contrib modules, I see
explicit declarations of _PG_init(void).

Should _PG_init(void) be declared in someplace included by postgres.h or
fmgr.h?

Jack Orenstein

#2Laurenz Albe
laurenz.albe@cybertec.at
In reply to: Jack Orenstein (#1)
Re: Missing declaration of _PG_init()

On Fri, 2021-01-08 at 09:49 -0500, Jack Orenstein wrote:

I am writing an extension. The docs describe a _PG_init function that will be called upon
loading the shared library (https://www.postgresql.org/docs/12/xfunc-c.html). I include
postgres.h and fmgr.h, but on compilation, _PG_init has not been declared.
Grepping the postgres source, _PG_init appears to be involved in programming language
extensions, and the function is declared in plpgsql.h. Looking at various contrib modules, I see
explicit declarations of _PG_init(void).

Should _PG_init(void) be declared in someplace included by postgres.h or fmgr.h?

It is provided by your module, so it must be declared by your module:

extern void _PG_init(void);

Yours,
Laurenz Albe
--
Cybertec | https://www.cybertec-postgresql.com

#3Tom Lane
tgl@sss.pgh.pa.us
In reply to: Jack Orenstein (#1)
Re: Missing declaration of _PG_init()

Jack Orenstein <jao@geophile.com> writes:

Should _PG_init(void) be declared in someplace included by postgres.h or
fmgr.h?

No, because it's something a given module might or might not provide.
Also, a global extern might give the impression that this was a global
function that the core code provides, rather than a per-module function.

regards, tom lane