postgresql/contrib
Tom Lane c9d5298485 Re-implement pl/pgsql's expression and assignment parsing.
Invent new RawParseModes that allow the core grammar to handle
pl/pgsql expressions and assignments directly, and thereby get rid
of a lot of hackery in pl/pgsql's parser.  This moves a good deal
of knowledge about pl/pgsql into the core code: notably, we have to
invent a CoercionContext that matches pl/pgsql's (rather dubious)
historical behavior for assignment coercions.  That's getting away
from the original idea of pl/pgsql as an arm's-length extension of
the core, but really we crossed that bridge a long time ago.

The main advantage of doing this is that we can now use the core
parser to generate FieldStore and/or SubscriptingRef nodes to handle
assignments to pl/pgsql variables that are records or arrays.  That
fixes a number of cases that had never been implemented in pl/pgsql
assignment, such as nested records and array slicing, and it allows
pl/pgsql assignment to support the datatype-specific subscripting
behaviors introduced in commit c7aba7c14.

There are cosmetic benefits too: when a syntax error occurs in a
pl/pgsql expression, the error report no longer includes the confusing
"SELECT" keyword that used to get prefixed to the expression text.
Also, there seem to be some small speed gains.

Discussion: https://postgr.es/m/4165684.1607707277@sss.pgh.pa.us
2021-01-04 11:52:00 -05:00
..
adminpack Update copyright for 2021 2021-01-02 13:06:25 -05:00
amcheck Update copyright for 2021 2021-01-02 13:06:25 -05:00
auth_delay Update copyright for 2021 2021-01-02 13:06:25 -05:00
auto_explain Update copyright for 2021 2021-01-02 13:06:25 -05:00
bloom Update copyright for 2021 2021-01-02 13:06:25 -05:00
bool_plperl Create contrib/bool_plperl to provide a bool transform for PL/Perl[U]. 2020-03-06 17:11:23 -05:00
btree_gin Remove support for upgrading extensions from "unpackaged" state. 2020-02-19 16:59:14 -05:00
btree_gist Expose internal function for converting int64 to numeric 2020-09-09 20:16:28 +02:00
citext Make contrib modules' installation scripts more secure. 2020-08-10 10:44:42 -04:00
cube Make contrib modules' installation scripts more secure. 2020-08-10 10:44:42 -04:00
dblink Update copyright for 2021 2021-01-02 13:06:25 -05:00
dict_int Update copyright for 2021 2021-01-02 13:06:25 -05:00
dict_xsyn Update copyright for 2021 2021-01-02 13:06:25 -05:00
earthdistance Make contrib modules' installation scripts more secure. 2020-08-10 10:44:42 -04:00
file_fdw Update copyright for 2021 2021-01-02 13:06:25 -05:00
fuzzystrmatch Update copyright for 2021 2021-01-02 13:06:25 -05:00
hstore Re-implement pl/pgsql's expression and assignment parsing. 2021-01-04 11:52:00 -05:00
hstore_plperl Make contrib modules' installation scripts more secure. 2020-08-10 10:44:42 -04:00
hstore_plpython Split all OBJS style lines in makefiles into one-line-per-entry style. 2019-11-05 14:41:07 -08:00
intagg Make contrib modules' installation scripts more secure. 2020-08-10 10:44:42 -04:00
intarray Update copyright for 2021 2021-01-02 13:06:25 -05:00
isn Update copyright for 2021 2021-01-02 13:06:25 -05:00
jsonb_plperl Expose internal function for converting int64 to numeric 2020-09-09 20:16:28 +02:00
jsonb_plpython Support infinity and -infinity in the numeric data type. 2020-07-22 19:19:44 -04:00
lo Fix bogus CALLED_AS_TRIGGER() defenses. 2020-04-03 11:24:56 -04:00
ltree Make contrib modules' installation scripts more secure. 2020-08-10 10:44:42 -04:00
ltree_plpython Improve error messages in ltree_in and lquery_in. 2020-03-31 11:14:42 -04:00
oid2name Remove arbitrary restrictions on password length. 2020-09-03 20:09:18 -04:00
old_snapshot Update copyright for 2021 2021-01-02 13:06:25 -05:00
pageinspect Update copyright for 2021 2021-01-02 13:06:25 -05:00
passwordcheck Update copyright for 2021 2021-01-02 13:06:25 -05:00
pg_buffercache Remove support for upgrading extensions from "unpackaged" state. 2020-02-19 16:59:14 -05:00
pg_freespacemap Remove support for upgrading extensions from "unpackaged" state. 2020-02-19 16:59:14 -05:00
pg_prewarm Update copyright for 2021 2021-01-02 13:06:25 -05:00
pg_standby pg_standby: Don't use HAVE_WORKING_LINK 2020-03-03 08:54:44 +01:00
pg_stat_statements Update copyright for 2021 2021-01-02 13:06:25 -05:00
pg_surgery Update copyright for 2021 2021-01-02 13:06:25 -05:00
pg_trgm Update copyright for 2021 2021-01-02 13:06:25 -05:00
pg_visibility Update copyright for 2021 2021-01-02 13:06:25 -05:00
pgcrypto Update copyright for 2021 2021-01-02 13:06:25 -05:00
pgrowlocks Avoid holding a directory FD open across assorted SRF calls. 2020-03-16 21:05:52 -04:00
pgstattuple Update copyright for 2021 2021-01-02 13:06:25 -05:00
postgres_fdw Update copyright for 2021 2021-01-02 13:06:25 -05:00
seg Make contrib modules' installation scripts more secure. 2020-08-10 10:44:42 -04:00
sepgsql Update copyright for 2021 2021-01-02 13:06:25 -05:00
spi Remove support for upgrading extensions from "unpackaged" state. 2020-02-19 16:59:14 -05:00
sslinfo Use be_tls_* API for SSL information in sslinfo 2020-11-03 09:47:36 +01:00
start-scripts Remove contrib/start-scripts/osx/. 2017-11-17 12:53:20 -05:00
tablefunc Update copyright for 2021 2021-01-02 13:06:25 -05:00
tcn Update copyright for 2021 2021-01-02 13:06:25 -05:00
test_decoding Allow decoding at prepare time in ReorderBuffer. 2021-01-04 08:34:50 +05:30
tsm_system_rows Update copyright for 2021 2021-01-02 13:06:25 -05:00
tsm_system_time Update copyright for 2021 2021-01-02 13:06:25 -05:00
unaccent Update copyright for 2021 2021-01-02 13:06:25 -05:00
uuid-ossp Update copyright for 2021 2021-01-02 13:06:25 -05:00
vacuumlo Update copyright for 2021 2021-01-02 13:06:25 -05:00
xml2 Remove support for upgrading extensions from "unpackaged" state. 2020-02-19 16:59:14 -05:00
contrib-global.mk Respect TEMP_CONFIG when pg_regress_check and friends are called 2016-02-27 12:28:21 -05:00
Makefile Add new 'old_snapshot' contrib module. 2020-09-24 13:55:47 -04:00
README Rename 'gmake' to 'make' in docs and recommended commands 2014-02-12 17:29:19 -05:00

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.