postgresql/src/backend/optimizer/path
Tom Lane 3bef56e116 Invent "join domains" to replace the below_outer_join hack.
EquivalenceClasses are now understood as applying within a "join
domain", which is a set of inner-joined relations (possibly underneath
an outer join).  We no longer need to treat an EC from below an outer
join as a second-class citizen.

I have hopes of eventually being able to treat outer-join clauses via
EquivalenceClasses, by means of only applying deductions within the
EC's join domain.  There are still problems in the way of that, though,
so for now the reconsider_outer_join_clause logic is still here.

I haven't been able to get rid of RestrictInfo.is_pushed_down either,
but I wonder if that could be recast using JoinDomains.

I had to hack one test case in postgres_fdw.sql to make it still test
what it was meant to, because postgres_fdw is inconsistent about
how it deals with quals containing non-shippable expressions; see
https://postgr.es/m/1691374.1671659838@sss.pgh.pa.us.  That should
be improved, but I don't think it's within the scope of this patch
series.

Patch by me; thanks to Richard Guo for review.

Discussion: https://postgr.es/m/830269.1656693747@sss.pgh.pa.us
2023-01-30 13:50:25 -05:00
..
allpaths.c Do assorted mop-up in the planner. 2023-01-30 13:44:36 -05:00
clausesel.c Do assorted mop-up in the planner. 2023-01-30 13:44:36 -05:00
costsize.c Do assorted mop-up in the planner. 2023-01-30 13:44:36 -05:00
equivclass.c Invent "join domains" to replace the below_outer_join hack. 2023-01-30 13:50:25 -05:00
indxpath.c Make Vars be outer-join-aware. 2023-01-30 13:16:20 -05:00
joinpath.c Invent "join domains" to replace the below_outer_join hack. 2023-01-30 13:50:25 -05:00
joinrels.c Do assorted mop-up in the planner. 2023-01-30 13:44:36 -05:00
Makefile Split all OBJS style lines in makefiles into one-line-per-entry style. 2019-11-05 14:41:07 -08:00
meson.build Update copyright for 2023 2023-01-02 15:00:37 -05:00
pathkeys.c Do assorted mop-up in the planner. 2023-01-30 13:44:36 -05:00
tidpath.c Make Vars be outer-join-aware. 2023-01-30 13:16:20 -05:00