postgresql/src/include/optimizer
Tom Lane 488d70ab46 Implement "join removal" for cases where the inner side of a left join
is unique and is not referenced above the join.  In this case the inner
side doesn't affect the query result and can be thrown away entirely.
Although perhaps nobody would ever write such a thing by hand, it's
a reasonably common case in machine-generated SQL.

The current implementation only recognizes the case where the inner side
is a simple relation with a unique index matching the query conditions.
This is enough for the use-cases that have been shown so far, but we
might want to try to handle other cases later.

Robert Haas, somewhat rewritten by Tom
2009-09-17 20:49:29 +00:00
..
clauses.h 8.4 pgindent run, with new combined Linux/FreeBSD/MinGW typedef list 2009-06-11 14:49:15 +00:00
cost.h Rewrite the planner's handling of materialized plan types so that there is 2009-09-12 22:12:09 +00:00
geqo.h Make GEQO's planning deterministic by having it start from a predictable 2009-07-16 20:55:44 +00:00
geqo_copy.h Make GEQO's planning deterministic by having it start from a predictable 2009-07-16 20:55:44 +00:00
geqo_gene.h Update copyright for 2009. 2009-01-01 17:24:05 +00:00
geqo_misc.h Update copyright for 2009. 2009-01-01 17:24:05 +00:00
geqo_mutation.h Make GEQO's planning deterministic by having it start from a predictable 2009-07-16 20:55:44 +00:00
geqo_pool.h Make GEQO's planning deterministic by having it start from a predictable 2009-07-16 20:55:44 +00:00
geqo_random.h Make GEQO's planning deterministic by having it start from a predictable 2009-07-16 20:55:44 +00:00
geqo_recombination.h Make GEQO's planning deterministic by having it start from a predictable 2009-07-16 20:55:44 +00:00
geqo_selection.h Make GEQO's planning deterministic by having it start from a predictable 2009-07-16 20:55:44 +00:00
joininfo.h Update copyright for 2009. 2009-01-01 17:24:05 +00:00
pathnode.h Implement "join removal" for cases where the inner side of a left join 2009-09-17 20:49:29 +00:00
paths.h Implement "join removal" for cases where the inner side of a left join 2009-09-17 20:49:29 +00:00
placeholder.h 8.4 pgindent run, with new combined Linux/FreeBSD/MinGW typedef list 2009-06-11 14:49:15 +00:00
plancat.h Make backend header files C++ safe 2009-07-16 06:33:46 +00:00
planmain.h 8.4 pgindent run, with new combined Linux/FreeBSD/MinGW typedef list 2009-06-11 14:49:15 +00:00
planner.h Arrange for function default arguments to be processed properly in expressions 2009-01-09 15:46:11 +00:00
predtest.h Update copyright for 2009. 2009-01-01 17:24:05 +00:00
prep.h Do some minor code refactoring in preparation for changing the APIs of 2009-05-12 00:56:05 +00:00
restrictinfo.h Fix set_append_rel_pathlist() to deal intelligently with cases where 2009-07-06 18:26:30 +00:00
subselect.h 8.4 pgindent run, with new combined Linux/FreeBSD/MinGW typedef list 2009-06-11 14:49:15 +00:00
tlist.h Update copyright for 2009. 2009-01-01 17:24:05 +00:00
var.h Fix estimate_num_groups() to not fail on PlaceHolderVars, per report from 2009-04-19 19:46:33 +00:00