Thread: pgsql: Simplify the planner's join clause management by storing join
pgsql: Simplify the planner's join clause management by storing join
From
tgl@svr1.postgresql.org (Tom Lane)
Date:
Log Message: ----------- 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 ... Modified Files: -------------- pgsql/src/backend/nodes: copyfuncs.c (r1.305 -> r1.306) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/nodes/copyfuncs.c.diff?r1=1.305&r2=1.306) equalfuncs.c (r1.242 -> r1.243) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/nodes/equalfuncs.c.diff?r1=1.242&r2=1.243) outfuncs.c (r1.254 -> r1.255) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/nodes/outfuncs.c.diff?r1=1.254&r2=1.255) pgsql/src/backend/optimizer: README (r1.32 -> r1.33) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/optimizer/README.diff?r1=1.32&r2=1.33) pgsql/src/backend/optimizer/geqo: geqo_eval.c (r1.75 -> r1.76) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/optimizer/geqo/geqo_eval.c.diff?r1=1.75&r2=1.76) pgsql/src/backend/optimizer/path: allpaths.c (r1.132 -> r1.133) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/optimizer/path/allpaths.c.diff?r1=1.132&r2=1.133) indxpath.c (r1.181 -> r1.182) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/optimizer/path/indxpath.c.diff?r1=1.181&r2=1.182) joinrels.c (r1.73 -> r1.74) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/optimizer/path/joinrels.c.diff?r1=1.73&r2=1.74) orindxpath.c (r1.71 -> r1.72) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/optimizer/path/orindxpath.c.diff?r1=1.71&r2=1.72) pathkeys.c (r1.67 -> r1.68) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/optimizer/path/pathkeys.c.diff?r1=1.67&r2=1.68) pgsql/src/backend/optimizer/plan: initsplan.c (r1.106 -> r1.107) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/optimizer/plan/initsplan.c.diff?r1=1.106&r2=1.107) pgsql/src/backend/optimizer/prep: prepunion.c (r1.122 -> r1.123) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/optimizer/prep/prepunion.c.diff?r1=1.122&r2=1.123) pgsql/src/backend/optimizer/util: joininfo.c (r1.42 -> r1.43) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/optimizer/util/joininfo.c.diff?r1=1.42&r2=1.43) relnode.c (r1.69 -> r1.70) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/optimizer/util/relnode.c.diff?r1=1.69&r2=1.70) restrictinfo.c (r1.36 -> r1.37) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/optimizer/util/restrictinfo.c.diff?r1=1.36&r2=1.37) pgsql/src/include/nodes: nodes.h (r1.169 -> r1.170) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/nodes/nodes.h.diff?r1=1.169&r2=1.170) relation.h (r1.112 -> r1.113) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/nodes/relation.h.diff?r1=1.112&r2=1.113) pgsql/src/include/optimizer: joininfo.h (r1.29 -> r1.30) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/optimizer/joininfo.h.diff?r1=1.29&r2=1.30) restrictinfo.h (r1.30 -> r1.31) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/optimizer/restrictinfo.h.diff?r1=1.30&r2=1.31)