postgresql/src/backend/optimizer/path
Tom Lane 6af9ee4c8c Make real sure we don't reassociate joins into or out of SEMI/ANTI joins.
Per the discussion in optimizer/README, it's unsafe to reassociate anything
into or out of the RHS of a SEMI or ANTI join.  An example from Piotr
Stefaniak showed that join_is_legal() wasn't sufficiently enforcing this
rule, so lock it down a little harder.

I couldn't find a reasonably simple example of the optimizer trying to
do this, so no new regression test.  (Piotr's example involved the random
search in GEQO accidentally trying an invalid case and triggering a sanity
check way downstream in clause selectivity estimation, which did not seem
like a sequence of events that would be useful to memorialize in a
regression test as-is.)

Back-patch to all active branches.
2015-08-05 14:39:29 -04:00
..
allpaths.c Make entirely-dummy appendrels get marked as such in set_append_rel_size. 2015-07-26 16:19:08 -04:00
clausesel.c Update copyright for 2015 2015-01-06 11:43:47 -05:00
costsize.c Redesign tablesample method API, and do extensive code review. 2015-07-25 14:39:00 -04:00
equivclass.c Move strategy numbers to include/access/stratnum.h 2015-05-15 17:03:16 -03:00
indxpath.c Collection of typo fixes. 2015-05-20 16:56:22 +03:00
joinpath.c Fix a PlaceHolderVar-related oversight in star-schema planning patch. 2015-08-04 14:55:50 -04:00
joinrels.c Make real sure we don't reassociate joins into or out of SEMI/ANTI joins. 2015-08-05 14:39:29 -04:00
Makefile Extract restriction OR clauses whether or not they are indexable. 2013-12-30 12:24:37 -05:00
pathkeys.c Move strategy numbers to include/access/stratnum.h 2015-05-15 17:03:16 -03:00
tidpath.c Update copyright for 2015 2015-01-06 11:43:47 -05:00