postgresql/contrib
Tom Lane 9257f07872 Replace uses of SPI_modifytuple that intend to allocate in current context.
Invent a new function heap_modify_tuple_by_cols() that is functionally
equivalent to SPI_modifytuple except that it always allocates its result
by simple palloc.  I chose however to make the API details a bit more
like heap_modify_tuple: pass a tupdesc rather than a Relation, and use
bool convention for the isnull array.

Use this function in place of SPI_modifytuple at all call sites where the
intended behavior is to allocate in current context.  (There actually are
only two call sites left that depend on the old behavior, which makes me
wonder if we should just drop this function rather than keep it.)

This new function is easier to use than heap_modify_tuple() for purposes
of replacing a single column (or, really, any fixed number of columns).
There are a number of places where it would simplify the code to change
over, but I resisted that temptation for the moment ... everywhere except
in plpgsql's exec_assign_value(); changing that might offer some small
performance benefit, so I did it.

This is on the way to removing SPI_push/SPI_pop, but it seems like
good code cleanup in its own right.

Discussion: <9633.1478552022@sss.pgh.pa.us>
2016-11-08 15:36:44 -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 pgindent run for 9.6 2016-06-09 18:02:36 -04:00
bloom Remove unnecessary prototypes 2016-09-30 14:04:16 -04:00
btree_gin Make contrib regression tests safe for Danish locale. 2016-07-21 16:52:35 -04:00
btree_gist Remove unnecessary prototypes 2016-09-30 14:04:16 -04:00
chkpass Avoid returning undefined bytes in chkpass_in(). 2015-02-14 12:20:56 -05:00
citext Support the new regexp_match() function for citext. 2016-08-18 10:52:31 -04:00
cube Improve contrib/cube's handling of zero-D cubes, infinities, and NaNs. 2016-09-27 11:38:33 -04:00
dblink Remove unnecessary prototypes 2016-09-30 14:04:16 -04: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 psql: Split up "Modifiers" column in \d and \dD 2016-11-03 14:02:46 -04:00
file_fdw Allow contrib/file_fdw to read from a program, like COPY FROM PROGRAM. 2016-09-29 13:32:34 -04:00
fuzzystrmatch Update fuzzystrmatch extension for parallel query. 2016-06-07 11:26:41 -04:00
hstore Revert "Provide DLLEXPORT markers for C functions via PG_FUNCTION_INFO_V1 macro." 2016-11-07 10:19:22 -05:00
hstore_plperl Avoid direct cross-module links in hstore_plperl and ltree_plpython, too. 2016-10-04 17:49:07 -04:00
hstore_plpython Fix hstore_plpython for Python 3. 2016-10-04 09:38:43 -04:00
intagg Schema-qualify some references to regprocedure. 2016-06-10 10:41:58 -04:00
intarray Fix -e option in contrib/intarray/bench/bench.pl. 2016-08-17 15:51:10 -04:00
isn Remove unnecessary prototypes 2016-09-30 14:04:16 -04:00
lo Update lo extension for parallel query. 2016-06-07 11:26:42 -04:00
ltree Revert "Provide DLLEXPORT markers for C functions via PG_FUNCTION_INFO_V1 macro." 2016-11-07 10:19:22 -05:00
ltree_plpython Avoid direct cross-module links in hstore_plperl and ltree_plpython, too. 2016-10-04 17:49:07 -04:00
oid2name Simplify correct use of simple_prompt(). 2016-08-30 17:02:02 -04:00
pageinspect Fix gin_leafpage_items(). 2016-11-04 12:11:54 -04:00
passwordcheck Move code shared between libpq and backend from backend/libpq/ to common/. 2016-09-02 13:49:59 +03:00
pg_buffercache Don't bother to lock bufmgr partitions in pg_buffercache. 2016-09-29 13:16:30 +03:00
pg_freespacemap Update pg_freespacemap extension for parallel query. 2016-06-09 17:18:16 -04:00
pg_prewarm Update pg_prewarm extension for parallel query. 2016-06-09 17:18:18 -04:00
pg_standby Fix a bunch of places that called malloc and friends with no NULL check. 2016-08-30 18:22:43 -04:00
pg_stat_statements Improve parsetree representation of special functions such as CURRENT_DATE. 2016-08-16 20:33:01 -04:00
pg_trgm Add macros to make AllocSetContextCreate() calls simpler and safer. 2016-08-27 17:50:38 -04:00
pg_visibility Fix bugs in contrib/pg_visibility. 2016-10-01 16:32:54 -04:00
pgcrypto Revert "Replace PostmasterRandom() with a stronger way of generating randomness." 2016-10-18 16:28:23 +03:00
pgrowlocks Fix handling of multixacts predating pg_upgrade 2016-06-24 18:29:28 -04:00
pgstattuple pgstattuple: Don't take heavyweight locks when examining a hash index. 2016-10-28 12:21:15 -04:00
postgres_fdw postgres_fdw: Fix typo in comment. 2016-11-04 09:03:42 -04:00
seg Update extensions with GIN/GIST support for parallel query. 2016-06-14 13:34:37 -04:00
sepgsql Add macros to make AllocSetContextCreate() calls simpler and safer. 2016-08-27 17:50:38 -04:00
spi Replace uses of SPI_modifytuple that intend to allocate in current context. 2016-11-08 15:36:44 -05:00
sslinfo Support OpenSSL 1.1.0. 2016-09-15 14:42:29 +03:00
start-scripts Fix typo in linux startup script. 2015-04-26 09:43:15 -04:00
tablefunc Remove unnecessary prototypes 2016-09-30 14:04:16 -04:00
tcn Revert CREATE INDEX ... INCLUDING ... 2016-04-08 21:52:13 +03:00
test_decoding psql: Split up "Modifiers" column in \d and \dD 2016-11-03 14:02:46 -04:00
tsearch2 Make contrib regression tests safe for Danish locale. 2016-07-21 16:52:35 -04: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 unaccent extension for parallel query. 2016-06-14 14:55:49 -04:00
uuid-ossp Update uuid-ossp extension for parallel query. 2016-06-14 14:56:21 -04:00
vacuumlo Fix a bunch of places that called malloc and friends with no NULL check. 2016-08-30 18:22:43 -04:00
xml2 Revert "Delete contrib/xml2's legacy implementation of xml_is_well_formed()." 2016-11-07 10:27:52 -05:00
Makefile Bloom index contrib module 2016-04-01 16:42:24 +03:00
README Rename 'gmake' to 'make' in docs and recommended commands 2014-02-12 17:29:19 -05:00
contrib-global.mk Respect TEMP_CONFIG when pg_regress_check and friends are called 2016-02-27 12:28:21 -05: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.