postgresql/contrib
Alvaro Herrera fcec6caafa Support XMLTABLE query expression
XMLTABLE is defined by the SQL/XML standard as a feature that allows
turning XML-formatted data into relational form, so that it can be used
as a <table primary> in the FROM clause of a query.

This new construct provides significant simplicity and performance
benefit for XML data processing; what in a client-side custom
implementation was reported to take 20 minutes can be executed in 400ms
using XMLTABLE.  (The same functionality was said to take 10 seconds
using nested PostgreSQL XPath function calls, and 5 seconds using
XMLReader under PL/Python).

The implemented syntax deviates slightly from what the standard
requires.  First, the standard indicates that the PASSING clause is
optional and that multiple XML input documents may be given to it; we
make it mandatory and accept a single document only.  Second, we don't
currently support a default namespace to be specified.

This implementation relies on a new executor node based on a hardcoded
method table.  (Because the grammar is fixed, there is no extensibility
in the current approach; further constructs can be implemented on top of
this such as JSON_TABLE, but they require changes to core code.)

Author: Pavel Stehule, Álvaro Herrera
Extensively reviewed by: Craig Ringer
Discussion: https://postgr.es/m/CAFj8pRAgfzMD-LoSmnMGybD0WsEznLHWap8DO79+-GTRAPR4qA@mail.gmail.com
2017-03-08 12:40:26 -03:00
..
adminpack Update copyright via script for 2017 2017-01-03 13:48:53 -05:00
auth_delay Consistently declare timestamp variables as TimestampTz. 2017-02-23 15:57:08 -05:00
auto_explain Update copyright via script for 2017 2017-01-03 13:48:53 -05:00
bloom Add optimizer and executor support for parallel index scans. 2017-02-15 13:53:24 -05:00
btree_gin Test all contrib-created operator classes with amvalidate. 2016-11-29 15:05:22 -05:00
btree_gist Consistently declare timestamp variables as TimestampTz. 2017-02-23 15:57:08 -05:00
chkpass Further cleanup from the strong-random patch. 2016-12-12 11:55:32 +02:00
citext Move some things from builtins.h to new header files 2017-01-20 20:29:53 -05:00
cube Fix typos in comments. 2017-02-06 11:33:58 +02:00
dblink chomp PQerrorMessage() in backend uses 2017-02-27 08:54:51 -05:00
dict_int Update copyright via script for 2017 2017-01-03 13:48:53 -05:00
dict_xsyn Update copyright via script for 2017 2017-01-03 13:48:53 -05:00
earthdistance Fix typos in comments. 2017-02-06 11:33:58 +02:00
file_fdw Update copyright via script for 2017 2017-01-03 13:48:53 -05:00
fuzzystrmatch Remove useless duplicate inclusions of system header files. 2017-02-25 16:12:55 -05:00
hstore Test all contrib-created operator classes with amvalidate. 2016-11-29 15:05:22 -05:00
hstore_plperl Code review for avoidance of direct cross-module links. 2017-02-02 11:21:16 -05:00
hstore_plpython Drop support for Python 2.3 2017-02-21 09:49:22 -05:00
intagg Schema-qualify some references to regprocedure. 2016-06-10 10:41:58 -04:00
intarray Generate fmgr prototypes automatically 2017-01-17 14:06:07 -05:00
isn Fix typos in comments. 2017-02-06 11:33:58 +02:00
lo Move atooid() definition to a central place 2017-03-01 11:55:28 -05:00
ltree Remove useless duplicate inclusions of system header files. 2017-02-25 16:12:55 -05:00
ltree_plpython Code review for avoidance of direct cross-module links. 2017-02-02 11:21:16 -05:00
oid2name Simplify correct use of simple_prompt(). 2016-08-30 17:02:02 -04:00
pageinspect Fix incorrect typecast. 2017-02-22 12:05:42 +05:30
passwordcheck Replace isMD5() with a more future-proof way to check if pw is encrypted. 2017-02-01 13:11:37 +02: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 copyright via script for 2017 2017-01-03 13:48:53 -05:00
pg_standby Fix typos in comments. 2017-02-06 11:33:58 +02:00
pg_stat_statements Support XMLTABLE query expression 2017-03-08 12:40:26 -03:00
pg_trgm Fix contrib/pg_trgm's extraction of trigrams from regular expressions. 2017-02-22 15:04:26 -05:00
pg_visibility Update copyright via script for 2017 2017-01-03 13:48:53 -05:00
pgcrypto Support SCRAM-SHA-256 authentication (RFC 5802 and 7677). 2017-03-07 14:25:40 +02:00
pgrowlocks Move some things from builtins.h to new header files 2017-01-20 20:29:53 -05:00
pgstattuple pgstattuple: Add pgstathashindex. 2017-02-03 14:37:16 -05:00
postgres_fdw chomp PQerrorMessage() in backend uses 2017-02-27 08:54:51 -05:00
seg Fix typos in comments. 2017-02-06 11:33:58 +02:00
sepgsql Fix typo also in expected output. 2017-02-06 12:04:04 +02:00
spi Fix typos in comments. 2017-02-06 11:33:58 +02:00
sslinfo Support OpenSSL 1.1.0. 2016-09-15 14:42:29 +03:00
start-scripts Fix typos in comments. 2017-02-06 11:33:58 +02:00
tablefunc Update copyright via script for 2017 2017-01-03 13:48:53 -05:00
tcn Update copyright via script for 2017 2017-01-03 13:48:53 -05:00
test_decoding Remove all references to "xlog" from SQL-callable functions in pg_proc. 2017-02-09 15:10:09 -05:00
tsm_system_rows Update copyright via script for 2017 2017-01-03 13:48:53 -05:00
tsm_system_time Update copyright via script for 2017 2017-01-03 13:48:53 -05:00
unaccent Move some things from builtins.h to new header files 2017-01-20 20:29:53 -05:00
uuid-ossp Update copyright via script for 2017 2017-01-03 13:48:53 -05:00
vacuumlo Move atooid() definition to a central place 2017-03-01 11:55:28 -05:00
xml2 Fix typos in comments. 2017-02-06 11:33:58 +02:00
Makefile Remove contrib/tsearch2. 2017-02-13 11:06:11 -05: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.