]> granicus.if.org Git - postgresql/commit
> I can see a couple possible downsides: (a) the library might have some
authorBruce Momjian <bruce@momjian.us>
Thu, 20 Mar 2003 04:51:44 +0000 (04:51 +0000)
committerBruce Momjian <bruce@momjian.us>
Thu, 20 Mar 2003 04:51:44 +0000 (04:51 +0000)
commit15ce2d2e4a3e9ae70801a5caa07579200a66b510
tree6adec7f9487d6af68091139a0f93c260cd54c869
parente733510d5d67a0b4fb1a9228df598034e487f194
> I can see a couple possible downsides: (a) the library might have some
> weird behavior across fork boundaries; (b) the additional memory space
> that has to be duplicated into child processes will cost something per
> child launch, even if the child never uses it.  But these are only
> arguments that it might not *always* be a prudent thing to do, not that
> we shouldn't give the DBA the tool to do it if he wants.  So fire away.

Here is a patch for the above, including a documentation update. It
creates a new GUC variable "preload_libraries", that accepts a list in
the form:

   preload_libraries = '$libdir/mylib1:initfunc,$libdir/mylib2'

If ":initfunc" is omitted or not found, no initialization function is
executed, but the library is still preloaded. If "$libdir/mylib" isn't
found, the postmaster refuses to start.

In my testing with PL/R, it reduces the first call to a PL/R function
(after connecting) from almost 2 seconds, down to about 8 ms.

Joe Conway
doc/src/sgml/runtime.sgml
src/backend/postmaster/postmaster.c
src/backend/utils/init/miscinit.c
src/backend/utils/misc/guc.c
src/backend/utils/misc/postgresql.conf.sample
src/include/miscadmin.h