postgresql/contrib
Tom Lane 9e7e29c75a Fix planner problems with LATERAL references in PlaceHolderVars.
The planner largely failed to consider the possibility that a
PlaceHolderVar's expression might contain a lateral reference to a Var
coming from somewhere outside the PHV's syntactic scope.  We had a previous
report of a problem in this area, which I tried to fix in a quick-hack way
in commit 4da6439bd8, but Antonin Houska
pointed out that there were still some problems, and investigation turned
up other issues.  This patch largely reverts that commit in favor of a more
thoroughly thought-through solution.  The new theory is that a PHV's
ph_eval_at level cannot be higher than its original syntactic level.  If it
contains lateral references, those don't change the ph_eval_at level, but
rather they create a lateral-reference requirement for the ph_eval_at join
relation.  The code in joinpath.c needs to handle that.

Another issue is that createplan.c wasn't handling nested PlaceHolderVars
properly.

In passing, push knowledge of lateral-reference checks for join clauses
into join_clause_is_movable_to.  This is mainly so that FDWs don't need
to deal with it.

This patch doesn't fix the original join-qual-placement problem reported by
Jeremy Evans (and indeed, one of the new regression test cases shows the
wrong answer because of that).  But the PlaceHolderVar problems need to be
fixed before that issue can be addressed, so committing this separately
seems reasonable.
2013-08-17 20:22:37 -04:00
..
adminpack
auth_delay
auto_explain
btree_gin
btree_gist
chkpass
citext
cube Fix contrib/cube and contrib/seg to build with bison 3.0. 2013-07-29 10:42:37 -04:00
dblink Fix typo in update scripts for some contrib modules. 2013-07-19 04:13:01 +09:00
dict_int
dict_xsyn
dummy_seclabel
earthdistance
file_fdw
fuzzystrmatch
hstore Fix typo in update scripts for some contrib modules. 2013-07-19 04:13:01 +09:00
intagg
intarray
isn
lo
ltree
oid2name
pageinspect Fix typo in update scripts for some contrib modules. 2013-07-19 04:13:01 +09:00
passwordcheck
pg_archivecleanup
pg_buffercache
pg_freespacemap
pg_standby
pg_stat_statements Fix typo in update scripts for some contrib modules. 2013-07-19 04:13:01 +09:00
pg_test_fsync pg_test_fsync: expand ops/sec display 2013-08-02 00:45:19 -04:00
pg_test_timing
pg_trgm Fix typo in update scripts for some contrib modules. 2013-07-19 04:13:01 +09:00
pg_upgrade pg_upgrade: shut down server after auth failure 2013-08-16 11:09:09 -04:00
pg_upgrade_support
pg_xlogdump
pgbench Add --rate option. 2013-07-23 08:40:22 +09:00
pgcrypto
pgrowlocks pgrowlocks: Use GetActiveSnapshot() rather than SnapshotNow. 2013-07-22 16:21:14 -04:00
pgstattuple pgstattuple: Use SnapshotDirty, not SnapshotNow. 2013-07-25 16:21:13 -04:00
postgres_fdw Fix planner problems with LATERAL references in PlaceHolderVars. 2013-08-17 20:22:37 -04:00
seg Fix contrib/cube and contrib/seg to build with bison 3.0. 2013-07-29 10:42:37 -04:00
sepgsql
spi
sslinfo
start-scripts
tablefunc
tcn
test_parser
tsearch2
unaccent
uuid-ossp
vacuumlo vacuumlo: Use a cursor to limit client-side memory usage. 2013-07-15 10:51:27 -04:00
worker_spi Remove bgw_sighup and bgw_sigterm. 2013-07-22 14:13:00 -04:00
xml2
contrib-global.mk
Makefile
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 "gmake all" and "gmake
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.