postgresql/contrib
Tom Lane decb08ebdf Code review for NextValueExpr expression node type.
Add missing infrastructure for this node type, notably in ruleutils.c where
its lack could demonstrably cause EXPLAIN to fail.  Add outfuncs/readfuncs
support.  (outfuncs support is useful today for debugging purposes.  The
readfuncs support may never be needed, since at present it would only
matter for parallel query and NextValueExpr should never appear in a
parallelizable query; but it seems like a bad idea to have a primnode type
that isn't fully supported here.)  Teach planner infrastructure that
NextValueExpr is a volatile, parallel-unsafe, non-leaky expression node
with cost cpu_operator_cost.  Given its limited scope of usage, there
*might* be no live bug today from the lack of that knowledge, but it's
certainly going to bite us on the rear someday.  Teach pg_stat_statements
about the new node type, too.

While at it, also teach cost_qual_eval() that MinMaxExpr, SQLValueFunction,
XmlExpr, and CoerceToDomain should be charged as cpu_operator_cost.
Failing to do this for SQLValueFunction was an oversight in my commit
0bb51aa96.  The others are longer-standing oversights, but no time like the
present to fix them.  (In principle, CoerceToDomain could have cost much
higher than this, but it doesn't presently seem worth trying to examine the
domain's constraints here.)

Modify execExprInterp.c to execute NextValueExpr as an out-of-line
function; it seems quite unlikely to me that it's worth insisting that
it be inlined in all expression eval methods.  Besides, providing the
out-of-line function doesn't stop anyone from inlining if they want to.

Adjust some places where NextValueExpr support had been inserted with the
aid of a dartboard rather than keeping it in the same order as elsewhere.

Discussion: https://postgr.es/m/23862.1499981661@sss.pgh.pa.us
2017-07-14 15:25:43 -04:00
..
adminpack Phase 3 of pgindent updates. 2017-06-21 15:35:54 -04:00
amcheck Phase 3 of pgindent updates. 2017-06-21 15:35:54 -04:00
auth_delay Phase 3 of pgindent updates. 2017-06-21 15:35:54 -04:00
auto_explain Phase 3 of pgindent updates. 2017-06-21 15:35:54 -04:00
bloom Phase 3 of pgindent updates. 2017-06-21 15:35:54 -04:00
btree_gin Phase 3 of pgindent updates. 2017-06-21 15:35:54 -04:00
btree_gist Phase 3 of pgindent updates. 2017-06-21 15:35:54 -04:00
chkpass Further cleanup from the strong-random patch. 2016-12-12 11:55:32 +02:00
citext Optimize joins when the inner relation can be proven unique. 2017-04-07 22:20:13 -04:00
cube Phase 3 of pgindent updates. 2017-06-21 15:35:54 -04:00
dblink Phase 3 of pgindent updates. 2017-06-21 15:35:54 -04: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 Phase 3 of pgindent updates. 2017-06-21 15:35:54 -04:00
file_fdw Phase 3 of pgindent updates. 2017-06-21 15:35:54 -04:00
fuzzystrmatch Phase 2 of pgindent updates. 2017-06-21 15:19:25 -04:00
hstore Phase 3 of pgindent updates. 2017-06-21 15:35:54 -04:00
hstore_plperl psql: Use more consistent capitalization of some output headings 2017-06-13 14:41:14 -04: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 Phase 3 of pgindent updates. 2017-06-21 15:35:54 -04:00
isn Phase 3 of pgindent updates. 2017-06-21 15:35:54 -04:00
lo Phase 2 of pgindent updates. 2017-06-21 15:19:25 -04:00
ltree Phase 3 of pgindent updates. 2017-06-21 15:35:54 -04:00
ltree_plpython Code review for avoidance of direct cross-module links. 2017-02-02 11:21:16 -05:00
oid2name Phase 3 of pgindent updates. 2017-06-21 15:35:54 -04:00
pageinspect Phase 3 of pgindent updates. 2017-06-21 15:35:54 -04:00
passwordcheck Phase 3 of pgindent updates. 2017-06-21 15:35:54 -04:00
pg_buffercache Phase 2 of pgindent updates. 2017-06-21 15:19:25 -04:00
pg_freespacemap Default monitoring roles 2017-03-30 14:18:53 -04:00
pg_prewarm Phase 3 of pgindent updates. 2017-06-21 15:35:54 -04:00
pg_standby Phase 3 of pgindent updates. 2017-06-21 15:35:54 -04:00
pg_stat_statements Code review for NextValueExpr expression node type. 2017-07-14 15:25:43 -04:00
pg_trgm Phase 2 of pgindent updates. 2017-06-21 15:19:25 -04:00
pg_visibility Phase 3 of pgindent updates. 2017-06-21 15:35:54 -04:00
pgcrypto Forbid gen_random_uuid() with --disable-strong-random 2017-07-03 12:10:11 +03:00
pgrowlocks Teach pgrowlocks to check relkind before scanning 2017-06-21 23:19:13 -04:00
pgstattuple Phase 3 of pgindent updates. 2017-06-21 15:35:54 -04:00
postgres_fdw Fix typo in comment 2017-06-30 14:51:15 -04:00
seg Phase 3 of pgindent updates. 2017-06-21 15:35:54 -04:00
sepgsql Phase 3 of pgindent updates. 2017-06-21 15:35:54 -04:00
spi Phase 3 of pgindent updates. 2017-06-21 15:35:54 -04:00
sslinfo Phase 3 of pgindent updates. 2017-06-21 15:35:54 -04:00
start-scripts Fix typos in comments. 2017-02-06 11:33:58 +02:00
tablefunc Phase 3 of pgindent updates. 2017-06-21 15:35:54 -04:00
tcn Phase 3 of pgindent updates. 2017-06-21 15:35:54 -04:00
test_decoding Phase 3 of pgindent updates. 2017-06-21 15:35:54 -04: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 Phase 3 of pgindent updates. 2017-06-21 15:35:54 -04:00
uuid-ossp Phase 2 of pgindent updates. 2017-06-21 15:19:25 -04:00
vacuumlo Initial pgindent run with pg_bsd_indent version 2.0. 2017-06-21 14:39:04 -04:00
xml2 Phase 3 of pgindent updates. 2017-06-21 15:35:54 -04:00
Makefile Add amcheck extension to contrib. 2017-03-09 16:33:02 -08: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.