postgresql/contrib
Tom Lane fb6fcbd33f Use LOAD not actual code execution to pull in plpython library.
Commit 866566a690 is insufficient to prevent dump/reload failures
when using transform modules in a database with both plpython2 and
plpython3 installed.  The reason is that the transform extension scripts
use DO blocks as a mechanism to pull in the libpython library before
creating the transform function.  It's necessary to preload the library
because the dynamic loader won't do it for us on every platform, leading
to "unresolved symbol" failures when the transform library is loaded.
But it's *not* necessary to execute Python code, and doing so will
provoke a multiple-Pythons-are-loaded error even after the preceding
commit.

To fix, use LOAD instead of a DO block.  That requires superuser privilege,
but creation of a C function does anyway.  It also embeds knowledge of
the underlying library name for each PL language; but that's wired into
the initdb-time contents of pg_pltemplate too, so that doesn't seem like
a large problem either.  Note that CREATE TRANSFORM as such doesn't call
the language module at all.

Per a report from Paul Jones.  Back-patch to 9.5 where transform modules
were introduced.
2016-01-11 20:06:36 -05:00
..
adminpack Update copyright for 2016 2016-01-02 13:33:40 -05:00
auth_delay Update copyright for 2016 2016-01-02 14:19:48 -05:00
auto_explain Update copyright for 2016 2016-01-02 13:33:40 -05:00
btree_gin pgindent run for 9.5 2015-05-23 21:35:49 -04:00
btree_gist Fix misc typos. 2015-09-05 11:35:49 +03:00
chkpass Avoid returning undefined bytes in chkpass_in(). 2015-02-14 12:20:56 -05:00
citext Fix incorrect declaration of citext's regexp_matches() functions. 2015-05-05 15:51:22 -04:00
cube Code and docs review for cube kNN support. 2015-12-28 14:39:12 -05:00
dblink Update copyright for 2016 2016-01-02 13:33:40 -05:00
dict_int Update copyright for 2016 2016-01-02 13:33:40 -05:00
dict_xsyn Update copyright for 2016 2016-01-02 13:33:40 -05:00
earthdistance Add missed CREATE EXTENSION ... CASCADE regression test adjustment. 2015-10-03 21:31:51 +02:00
file_fdw Update copyright for 2016 2016-01-02 13:33:40 -05:00
fuzzystrmatch Update copyright for 2016 2016-01-02 13:33:40 -05:00
hstore Dodge a macro-name conflict with Perl. 2015-11-19 14:54:11 -05:00
hstore_plperl Use LOAD not actual code execution to pull in plpython library. 2016-01-11 20:06:36 -05:00
hstore_plpython Use LOAD not actual code execution to pull in plpython library. 2016-01-11 20:06:36 -05:00
intagg Fix typos in some error messages thrown by extension scripts when fed to psql. 2014-08-25 18:30:37 +02:00
intarray Update copyright for 2016 2016-01-02 13:33:40 -05:00
isn Update copyright for 2016 2016-01-02 13:33:40 -05:00
lo Fix typos in some error messages thrown by extension scripts when fed to psql. 2014-08-25 18:30:37 +02:00
ltree Prevent stack overflow in query-type functions. 2015-10-05 10:06:30 -04:00
ltree_plpython Use LOAD not actual code execution to pull in plpython library. 2016-01-11 20:06:36 -05:00
oid2name Add file version information to most installed Windows binaries. 2014-07-14 14:07:52 -04:00
pageinspect Update copyright for 2016 2016-01-02 13:33:40 -05:00
passwordcheck Update copyright for 2016 2016-01-02 13:33:40 -05:00
pg_buffercache pgindent run for 9.5 2015-05-23 21:35:49 -04:00
pg_freespacemap Fix typos in some error messages thrown by extension scripts when fed to psql. 2014-08-25 18:30:37 +02:00
pg_prewarm Update copyright for 2016 2016-01-02 13:33:40 -05:00
pg_standby Don't use function definitions looking like old-style ones. 2015-08-15 17:25:00 +02:00
pg_stat_statements Update copyright for 2016 2016-01-02 13:33:40 -05:00
pg_trgm Update copyright for 2016 2016-01-02 13:33:40 -05:00
pgcrypto Add forgotten CHECK_FOR_INTERRUPT calls in pgcrypto's crypt() 2015-12-27 13:03:19 -03:00
pgrowlocks Optimize locking a tuple already locked by another subxact 2015-04-10 13:47:15 -03:00
pgstattuple Update copyright for 2016 2016-01-02 13:33:40 -05:00
postgres_fdw Update copyright for 2016 2016-01-02 13:33:40 -05:00
seg Move strategy numbers to include/access/stratnum.h 2015-05-15 17:03:16 -03:00
sepgsql Update copyright for 2016 2016-01-02 13:33:40 -05:00
spi Collection of typo fixes. 2015-05-20 16:56:22 +03:00
sslinfo Fix error message wording in previous sslinfo commit 2015-09-08 11:10:20 -03:00
start-scripts Fix typo in linux startup script. 2015-04-26 09:43:15 -04:00
tablefunc Update copyright for 2016 2016-01-02 13:33:40 -05:00
tcn Update copyright for 2016 2016-01-02 13:33:40 -05:00
test_decoding Update copyright for 2016 2016-01-02 13:33:40 -05:00
tsearch2 Update copyright for 2016 2016-01-02 13:33:40 -05:00
tsm_system_rows Update copyright for 2016 2016-01-02 13:33:40 -05:00
tsm_system_time Update copyright for 2016 2016-01-02 13:33:40 -05:00
unaccent Update copyright for 2016 2016-01-02 13:33:40 -05:00
uuid-ossp Update copyright for 2016 2016-01-02 13:33:40 -05:00
vacuumlo Update copyright for 2016 2016-01-02 13:33:40 -05:00
xml2 Replace a bunch more uses of strncpy() with safer coding. 2015-01-24 13:05:42 -05:00
Makefile Finish removing pg_audit 2015-05-28 12:48:25 -04:00
README Rename 'gmake' to 'make' in docs and recommended commands 2014-02-12 17:29:19 -05:00
contrib-global.mk Remove cvs keywords from all files. 2010-09-20 22:08:53 +02:00

README

The PostgreSQL contrib tree
---------------------------

This subtree contains porting tools, analysis utilities, and plug-in
features that are not part of the core PostgreSQL system, mainly
because they address a limited audience or are too experimental to be
part of the main source tree.  This does not preclude their
usefulness.

User documentation for each module appears in the main SGML
documentation.

When building from the source distribution, these modules are not
built automatically, unless you build the "world" target.  You can
also build and install them all by running "make all" and "make
install" in this directory; or to build and install just one selected
module, do the same in that module's subdirectory.

Some directories supply new user-defined functions, operators, or
types.  To make use of one of these modules, after you have installed
the code you need to register the new SQL objects in the database
system by executing a CREATE EXTENSION command.  In a fresh database,
you can simply do

    CREATE EXTENSION module_name;

See the PostgreSQL documentation for more information about this
procedure.