postgresql/src/include/optimizer
Tom Lane cc5e80b8d1 Teach planner about some cases where a restriction clause can be
propagated inside an outer join.  In particular, given
LEFT JOIN ON (A = B) WHERE A = constant, we cannot conclude that
B = constant at the top level (B might be null instead), but we
can nonetheless put a restriction B = constant into the quals for
B's relation, since no inner-side rows not meeting that condition
can contribute to the final result.  Similarly, given
FULL JOIN USING (J) WHERE J = constant, we can't directly conclude
that either input J variable = constant, but it's OK to push such
quals into each input rel.  Per recent gripe from Kim Bisgaard.
Along the way, remove 'valid_everywhere' flag from RestrictInfo,
as on closer analysis it was not being used for anything, and was
defined backwards anyway.
2005-07-02 23:00:42 +00:00
..
clauses.h Teach the planner to remove SubqueryScan nodes from the plan if they 2005-05-22 22:30:20 +00:00
cost.h Remove planner's private fields from Query struct, and put them into 2005-06-05 22:32:58 +00:00
geqo.h Remove planner's private fields from Query struct, and put them into 2005-06-05 22:32:58 +00:00
geqo_copy.h Tag appropriate files for rc3 2004-12-31 22:04:05 +00:00
geqo_gene.h Tag appropriate files for rc3 2004-12-31 22:04:05 +00:00
geqo_misc.h Tag appropriate files for rc3 2004-12-31 22:04:05 +00:00
geqo_mutation.h Tag appropriate files for rc3 2004-12-31 22:04:05 +00:00
geqo_pool.h Tag appropriate files for rc3 2004-12-31 22:04:05 +00:00
geqo_random.h Tag appropriate files for rc3 2004-12-31 22:04:05 +00:00
geqo_recombination.h Tag appropriate files for rc3 2004-12-31 22:04:05 +00:00
geqo_selection.h Tag appropriate files for rc3 2004-12-31 22:04:05 +00:00
joininfo.h Simplify the planner's join clause management by storing join clauses 2005-06-09 04:19:00 +00:00
pathnode.h Remove planner's private fields from Query struct, and put them into 2005-06-05 22:32:58 +00:00
paths.h Separate predicate-testing code out of indxpath.c, making it a module 2005-06-10 22:25:37 +00:00
plancat.h Remove planner's private fields from Query struct, and put them into 2005-06-05 22:32:58 +00:00
planmain.h Remove planner's private fields from Query struct, and put them into 2005-06-05 22:32:58 +00:00
planner.h Remove planner's private fields from Query struct, and put them into 2005-06-05 22:32:58 +00:00
predtest.h Separate predicate-testing code out of indxpath.c, making it a module 2005-06-10 22:25:37 +00:00
prep.h If a LIMIT is applied to a UNION ALL query, plan each UNION arm as 2005-06-10 02:21:05 +00:00
restrictinfo.h Teach planner about some cases where a restriction clause can be 2005-07-02 23:00:42 +00:00
subselect.h Remove planner's private fields from Query struct, and put them into 2005-06-05 22:32:58 +00:00
tlist.h Merge Resdom nodes into TargetEntry nodes to simplify code and save a 2005-04-06 16:34:07 +00:00
var.h Remove planner's private fields from Query struct, and put them into 2005-06-05 22:32:58 +00:00