Re: How best to load modules?

From: Dimitri Fontaine <dimitri(at)2ndQuadrant(dot)fr>
To: Steve White <swhite(at)aip(dot)de>
Cc: pgsql-general(at)postgresql(dot)org
Subject: Re: How best to load modules?
Date: 2011-01-28 12:47:16
Message-ID: m24o8tnqjv.fsf@2ndQuadrant.fr
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Steve White <swhite(at)aip(dot)de> writes:
> What are best practices regarding the loading of postgresql modules, say
> from the contrib/ directory; specifically, with regard to portability?
>
> I would like to distribute an SQL script which loads a module, and works
> with as little further fiddling as possible.

See about PGXS.

http://www.postgresql.org/docs/9.0/static/xfunc-c.html#XFUNC-C-PGXS

> known options
> =============
>
> Within a session, or in a script, one can use
> \i <explicit file path>
> But within a script this has the weakness that the file path varies from
> one system distribution to another.
>
> One can start psql with
> psql ... -f <explicit file path>
> but that's a measure taken outside the script, to done either with session,
> or else be done by a further measure such as a shell script.
>
> Ideally, the location of the default modules directory (or installation
> directory) should be available within a session in some variable or from
> some function call.

You can use pg_config to get this PATH, and in recent versions of
PostgreSQL you can use $libdir as the module directory name.

select name, setting from pg_settings where name ~ 'dynamic_library_path';

> There has been talk about a bigger solution on
> http://wiki.postgresql.org/wiki/Module_Manager
> but little seems to have happened there in some years.

It seemed stalled for a long time because the harder part of this
development was to get an agreement among hackers about what to develop
exactly. We've been slowly reaching that between developer meetings in
2009 and 2010, and the result should hit the official source tree before
the next developer meeting in 2011 :)

https://commitfest.postgresql.org/action/patch_view?id=471
https://commitfest.postgresql.org/action/patch_view?id=472

If you want to see more details about the expected-to-be-commited-soon
development work, have a look there:

http://pgsql.tapoueh.org/extensions/doc/html/extend-extension.html

If you have enough time and interest into the feature, you can even
clone the git repository where the development occurs (branches named
"extension" and "upgrade") and try it for yourself, then maybe send a
mail about your findings (we call that a review):

http://git.postgresql.org/gitweb?p=postgresql-extension.git;a=summary
http://wiki.postgresql.org/wiki/Reviewing_a_Patch

Regards,
--
Dimitri Fontaine
http://2ndQuadrant.fr PostgreSQL : Expertise, Formation et Support

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Girts Laudaks 2011-01-28 12:54:18 Re: Dumpall without OID
Previous Message Jorge Arévalo 2011-01-28 11:55:16 Re: Executing SQL expression from C-functions