Re: [BUGS] Patch to allow C extension modules to initialize/finish - Mailing list pgsql-hackers

From Tom Lane
Subject Re: [BUGS] Patch to allow C extension modules to initialize/finish
Date
Msg-id 26529.1154640648@sss.pgh.pa.us
Whole thread Raw
In response to Patch to allow C extension modules to initialize/finish  ("Ralf S. Engelschall" <rse@engelschall.com>)
Responses Re: [BUGS] Patch to allow C extension modules to initialize/finish
Re: [BUGS] Patch to allow C extension modules to initialize/finish
List pgsql-hackers
"Ralf S. Engelschall" <rse@engelschall.com> writes:
> Hence I propose the patch below (applies to PostgreSQL 8.1.4) which
> mimics the dlopen(3) and dlclose(3) behaviour of some Unix platforms
> and resolves and calls _PG_init and _PG_fini functions of an extension
> module right after/before the pg_dlopen/pg_dlclose calls in the FMGR.

This seems like a reasonably good idea, and we have got uses for at
least the "init" case in most or all of our PLs.  It's nominally too
late for 8.2 feature freeze, but I said just a couple days ago that
we shouldn't take a very hard line on that.  Does anyone object to
considering this for 8.2?

One question I have is whether it really works as expected in all cases.
In particular what if the library is "preloaded" into the postmaster?
Both plpgsql and plperl seem to think they might need to make a
distinction between things to do at library load time and things to do
per-backend ... and yet, neither of them *actually* have anything they
need to do per-backend.

Also, what about Windows?  I assume that DSOs don't remain attached
across the pseudo-fork/exec, will that mess anything up?
        regards, tom lane


pgsql-hackers by date:

Previous
From: Tom Lane
Date:
Subject: Re: [PATCHES] tg_trigtuple/tg_newtuple settings in AFTER triggers
Next
From: Ron Mayer
Date:
Subject: Re: O_NOATIME