postgresql/contrib
Robert Haas 131c7e70b4 postgres_fdw: Check PlaceHolderVars before pushing down a join.
As discovered by Andreas Seltenreich via sqlsmith, it's possible for a
remote join to need to generate a target list which contains a
PlaceHolderVar which would need to be evaluated on the remote server.
This happens when we try to push down a join tree which contains outer
joins and the nullable side of the join contains a subquery which
evauates some expression which can go to NULL above the level of the
join.  Since the deparsing logic can't build a remote query that
involves subqueries, it fails while trying to produce an SQL query
that can be sent to the remote side.  Detect such cases and don't try
to push down the join at all.

It's actually fine to push down the join if the PlaceHolderVar needs
to be evaluated at the current join level.  This patch makes a small
change to build_tlist_to_deparse so that this case will work.

Amit Langote, Ashutosh Bapat, and me.
2016-06-14 11:48:27 -04: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 Minor fixes in contrib installation scripts. 2016-06-14 10:47:06 -04:00
btree_gin pgindent run for 9.5 2015-05-23 21:35:49 -04:00
btree_gist Handle contrib's GIN/GIST support function signature changes honestly. 2016-06-09 16:44:25 -04:00
chkpass Avoid returning undefined bytes in chkpass_in(). 2015-02-14 12:20:56 -05:00
citext Schema-qualify some references to regprocedure. 2016-06-10 10:41:58 -04:00
cube Handle contrib's GIN/GIST support function signature changes honestly. 2016-06-09 16:44:25 -04:00
dblink Revert CREATE INDEX ... INCLUDING ... 2016-04-08 21:52:13 +03: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 Update earthdistance extension for parallel query. 2016-06-07 11:26:41 -04:00
file_fdw pgindent run for 9.6 2016-06-09 18:02:36 -04:00
fuzzystrmatch Update fuzzystrmatch extension for parallel query. 2016-06-07 11:26:41 -04:00
hstore Handle contrib's GIN/GIST support function signature changes honestly. 2016-06-09 16:44:25 -04:00
hstore_plperl Minor fixes in contrib installation scripts. 2016-06-14 10:47:06 -04:00
hstore_plpython Minor fixes in contrib installation scripts. 2016-06-14 10:47:06 -04:00
intagg Schema-qualify some references to regprocedure. 2016-06-10 10:41:58 -04:00
intarray Handle contrib's GIN/GIST support function signature changes honestly. 2016-06-09 16:44:25 -04:00
isn pgindent run for 9.6 2016-06-09 18:02:36 -04:00
lo Update lo extension for parallel query. 2016-06-07 11:26:42 -04:00
ltree Handle contrib's GIN/GIST support function signature changes honestly. 2016-06-09 16:44:25 -04:00
ltree_plpython Minor fixes in contrib installation scripts. 2016-06-14 10:47:06 -04:00
oid2name Add file version information to most installed Windows binaries. 2014-07-14 14:07:52 -04:00
pageinspect pgindent run for 9.6 2016-06-09 18:02:36 -04:00
passwordcheck Update copyright for 2016 2016-01-02 13:33:40 -05:00
pg_buffercache Update pg_buffercache extension for parallel query. 2016-06-09 17:18:12 -04: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 Don't use function definitions looking like old-style ones. 2015-08-15 17:25:00 +02:00
pg_stat_statements Update pg_stat_statements extension for parallel query. 2016-06-10 10:42:01 -04:00
pg_trgm pgindent run for 9.6 2016-06-09 18:02:36 -04:00
pg_visibility pgindent run for 9.6 2016-06-09 18:02:36 -04:00
pgcrypto Minor fixes in contrib installation scripts. 2016-06-14 10:47:06 -04:00
pgrowlocks Minor fixes in contrib installation scripts. 2016-06-14 10:47:06 -04:00
pgstattuple Minor fixes in contrib installation scripts. 2016-06-14 10:47:06 -04:00
postgres_fdw postgres_fdw: Check PlaceHolderVars before pushing down a join. 2016-06-14 11:48:27 -04:00
seg Handle contrib's GIN/GIST support function signature changes honestly. 2016-06-09 16:44:25 -04:00
sepgsql Don't use !! but != 0/NULL to force boolean evaluation. 2016-03-27 18:10:19 +02:00
spi Widen query numbers-of-tuples-processed counters to uint64. 2016-03-12 16:05:29 -05:00
sslinfo Minor fixes in contrib installation scripts. 2016-06-14 10:47:06 -04:00
start-scripts Fix typo in linux startup script. 2015-04-26 09:43:15 -04:00
tablefunc Widen query numbers-of-tuples-processed counters to uint64. 2016-03-12 16:05:29 -05:00
tcn Revert CREATE INDEX ... INCLUDING ... 2016-04-08 21:52:13 +03:00
test_decoding pgindent run for 9.6 2016-06-09 18:02:36 -04:00
tsearch2 Update contrib/tsearch2/expected/tsearch2_1.out for phrase FTS. 2016-06-04 00:49:42 -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 fix typo in comment 2016-03-16 17:18:14 +03: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 Widen query numbers-of-tuples-processed counters to uint64. 2016-03-12 16:05:29 -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.