Обсуждение: pgsql: Teach planner how to rearrange join order for some classes of
pgsql: Teach planner how to rearrange join order for some classes of
От
tgl@postgresql.org (Tom Lane)
Дата:
Log Message: ----------- Teach planner how to rearrange join order for some classes of OUTER JOIN. Per my recent proposal. I ended up basing the implementation on the existing mechanism for enforcing valid join orders of IN joins --- the rules for valid outer-join orders are somewhat similar. Modified Files: -------------- pgsql/doc/src/sgml: config.sgml (r1.38 -> r1.39) (http://developer.postgresql.org/cvsweb.cgi/pgsql/doc/src/sgml/config.sgml.diff?r1=1.38&r2=1.39) perform.sgml (r1.54 -> r1.55) (http://developer.postgresql.org/cvsweb.cgi/pgsql/doc/src/sgml/perform.sgml.diff?r1=1.54&r2=1.55) pgsql/src/backend/nodes: copyfuncs.c (r1.322 -> r1.323) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/nodes/copyfuncs.c.diff?r1=1.322&r2=1.323) equalfuncs.c (r1.258 -> r1.259) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/nodes/equalfuncs.c.diff?r1=1.258&r2=1.259) outfuncs.c (r1.264 -> r1.265) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/nodes/outfuncs.c.diff?r1=1.264&r2=1.265) pgsql/src/backend/optimizer: README (r1.33 -> r1.34) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/optimizer/README.diff?r1=1.33&r2=1.34) pgsql/src/backend/optimizer/geqo: geqo_eval.c (r1.78 -> r1.79) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/optimizer/geqo/geqo_eval.c.diff?r1=1.78&r2=1.79) pgsql/src/backend/optimizer/path: allpaths.c (r1.138 -> r1.139) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/optimizer/path/allpaths.c.diff?r1=1.138&r2=1.139) joinrels.c (r1.77 -> r1.78) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/optimizer/path/joinrels.c.diff?r1=1.77&r2=1.78) pgsql/src/backend/optimizer/plan: initsplan.c (r1.112 -> r1.113) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/optimizer/plan/initsplan.c.diff?r1=1.112&r2=1.113) planmain.c (r1.90 -> r1.91) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/optimizer/plan/planmain.c.diff?r1=1.90&r2=1.91) planner.c (r1.195 -> r1.196) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/optimizer/plan/planner.c.diff?r1=1.195&r2=1.196) pgsql/src/backend/optimizer/prep: prepjointree.c (r1.32 -> r1.33) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/optimizer/prep/prepjointree.c.diff?r1=1.32&r2=1.33) pgsql/src/backend/optimizer/util: clauses.c (r1.203 -> r1.204) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/optimizer/util/clauses.c.diff?r1=1.203&r2=1.204) relnode.c (r1.73 -> r1.74) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/optimizer/util/relnode.c.diff?r1=1.73&r2=1.74) pgsql/src/backend/utils/misc: guc.c (r1.301 -> r1.302) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/utils/misc/guc.c.diff?r1=1.301&r2=1.302) pgsql/src/include/nodes: nodes.h (r1.178 -> r1.179) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/nodes/nodes.h.diff?r1=1.178&r2=1.179) primnodes.h (r1.109 -> r1.110) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/nodes/primnodes.h.diff?r1=1.109&r2=1.110) relation.h (r1.121 -> r1.122) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/nodes/relation.h.diff?r1=1.121&r2=1.122) pgsql/src/include/optimizer: clauses.h (r1.80 -> r1.81) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/optimizer/clauses.h.diff?r1=1.80&r2=1.81) paths.h (r1.89 -> r1.90) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/optimizer/paths.h.diff?r1=1.89&r2=1.90) planmain.h (r1.90 -> r1.91) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/optimizer/planmain.h.diff?r1=1.90&r2=1.91) prep.h (r1.52 -> r1.53) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/optimizer/prep.h.diff?r1=1.52&r2=1.53)