]> granicus.if.org Git - postgresql/commit
Simplify the planner's join clause management by storing join clauses
authorTom Lane <tgl@sss.pgh.pa.us>
Thu, 9 Jun 2005 04:19:00 +0000 (04:19 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Thu, 9 Jun 2005 04:19:00 +0000 (04:19 +0000)
commita31ad27fc5dc32a1453233575b3cf7b5c34cf515
tree6bff6baa96ebe794165a4939d234f3a54068e2c6
parentc51815afed2bfac02fbc4afff891eb1224eb7eae
Simplify the planner's join clause management by storing join clauses
of a relation in a flat 'joininfo' list.  The former arrangement grouped
the join clauses according to the set of unjoined relids used in each;
however, profiling on test cases involving lots of joins proves that
that data structure is a net loss.  It takes more time to group the
join clauses together than is saved by avoiding duplicate tests later.
It doesn't help any that there are usually not more than one or two
clauses per group ...
19 files changed:
src/backend/nodes/copyfuncs.c
src/backend/nodes/equalfuncs.c
src/backend/nodes/outfuncs.c
src/backend/optimizer/README
src/backend/optimizer/geqo/geqo_eval.c
src/backend/optimizer/path/allpaths.c
src/backend/optimizer/path/indxpath.c
src/backend/optimizer/path/joinrels.c
src/backend/optimizer/path/orindxpath.c
src/backend/optimizer/path/pathkeys.c
src/backend/optimizer/plan/initsplan.c
src/backend/optimizer/prep/prepunion.c
src/backend/optimizer/util/joininfo.c
src/backend/optimizer/util/relnode.c
src/backend/optimizer/util/restrictinfo.c
src/include/nodes/nodes.h
src/include/nodes/relation.h
src/include/optimizer/joininfo.h
src/include/optimizer/restrictinfo.h