diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2015-07-31 19:26:33 -0400 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2015-07-31 19:26:33 -0400 |
commit | 216977a7d99507ca3227a505510bf5ced4f14799 (patch) | |
tree | b043b137aac55b640e8761a8d674bda99c3b478e /src/backend/access/gist/gistxlog.c | |
parent | 0efa0f62d2f8572e109134f80169aa4224da1b8a (diff) | |
download | postgresql-216977a7d99507ca3227a505510bf5ced4f14799.tar.gz postgresql-216977a7d99507ca3227a505510bf5ced4f14799.zip |
Fix an oversight in checking whether a join with LATERAL refs is legal.
In many cases, we can implement a semijoin as a plain innerjoin by first
passing the righthand-side relation through a unique-ification step.
However, one of the cases where this does NOT work is where the RHS has
a LATERAL reference to the LHS; that makes the RHS dependent on the LHS
so that unique-ification is meaningless. joinpath.c understood this,
and so would not generate any join paths of this kind ... but join_is_legal
neglected to check for the case, so it would think that we could do it.
The upshot would be a "could not devise a query plan for the given query"
failure once we had failed to generate any join paths at all for the bogus
join pair.
Back-patch to 9.3 where LATERAL was added.
Diffstat (limited to 'src/backend/access/gist/gistxlog.c')
0 files changed, 0 insertions, 0 deletions