mirror of
https://github.com/postgres/postgres.git
synced 2026-03-10 10:11:28 -04:00
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. |
||
|---|---|---|
| .. | ||
| allpaths.c | ||
| clausesel.c | ||
| costsize.c | ||
| equivclass.c | ||
| indxpath.c | ||
| joinpath.c | ||
| joinrels.c | ||
| Makefile | ||
| pathkeys.c | ||
| tidpath.c | ||