pgsql: Refactor planner's pathkeys data structure to create a separate,

From: tgl(at)postgresql(dot)org (Tom Lane)
To: pgsql-committers(at)postgresql(dot)org
Subject: pgsql: Refactor planner's pathkeys data structure to create a separate,
Date: 2007-01-20 20:45:41
Message-ID: 20070120204541.39F8C9FB579@postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Log Message:
-----------
Refactor planner's pathkeys data structure to create a separate, explicit
representation of equivalence classes of variables. This is an extensive
rewrite, but it brings a number of benefits:
* planner no longer fails in the presence of "incomplete" operator families
that don't offer operators for every possible combination of datatypes.
* avoid generating and then discarding redundant equality clauses.
* remove bogus assumption that derived equalities always use operators
named "=".
* mergejoins can work with a variety of sort orders (e.g., descending) now,
instead of tying each mergejoinable operator to exactly one sort order.
* better recognition of redundant sort columns.
* can make use of equalities appearing underneath an outer join.

Modified Files:
--------------
pgsql/doc/src/sgml:
xoper.sgml (r1.37 -> r1.38)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/doc/src/sgml/xoper.sgml.diff?r1=1.37&r2=1.38)
pgsql/src/backend/nodes:
copyfuncs.c (r1.361 -> r1.362)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/nodes/copyfuncs.c.diff?r1=1.361&r2=1.362)
equalfuncs.c (r1.295 -> r1.296)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/nodes/equalfuncs.c.diff?r1=1.295&r2=1.296)
outfuncs.c (r1.293 -> r1.294)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/nodes/outfuncs.c.diff?r1=1.293&r2=1.294)
print.c (r1.82 -> r1.83)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/nodes/print.c.diff?r1=1.82&r2=1.83)
pgsql/src/backend/optimizer:
README (r1.35 -> r1.36)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/optimizer/README.diff?r1=1.35&r2=1.36)
pgsql/src/backend/optimizer/path:
Makefile (r1.17 -> r1.18)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/optimizer/path/Makefile.diff?r1=1.17&r2=1.18)
allpaths.c (r1.156 -> r1.157)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/optimizer/path/allpaths.c.diff?r1=1.156&r2=1.157)
costsize.c (r1.174 -> r1.175)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/optimizer/path/costsize.c.diff?r1=1.174&r2=1.175)
indxpath.c (r1.215 -> r1.216)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/optimizer/path/indxpath.c.diff?r1=1.215&r2=1.216)
joinpath.c (r1.110 -> r1.111)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/optimizer/path/joinpath.c.diff?r1=1.110&r2=1.111)
joinrels.c (r1.83 -> r1.84)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/optimizer/path/joinrels.c.diff?r1=1.83&r2=1.84)
pathkeys.c (r1.81 -> r1.82)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/optimizer/path/pathkeys.c.diff?r1=1.81&r2=1.82)
pgsql/src/backend/optimizer/plan:
createplan.c (r1.221 -> r1.222)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/optimizer/plan/createplan.c.diff?r1=1.221&r2=1.222)
initsplan.c (r1.127 -> r1.128)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/optimizer/plan/initsplan.c.diff?r1=1.127&r2=1.128)
planmain.c (r1.98 -> r1.99)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/optimizer/plan/planmain.c.diff?r1=1.98&r2=1.99)
planner.c (r1.211 -> r1.212)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/optimizer/plan/planner.c.diff?r1=1.211&r2=1.212)
pgsql/src/backend/optimizer/prep:
prepjointree.c (r1.45 -> r1.46)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/optimizer/prep/prepjointree.c.diff?r1=1.45&r2=1.46)
prepunion.c (r1.135 -> r1.136)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/optimizer/prep/prepunion.c.diff?r1=1.135&r2=1.136)
pgsql/src/backend/optimizer/util:
joininfo.c (r1.46 -> r1.47)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/optimizer/util/joininfo.c.diff?r1=1.46&r2=1.47)
pathnode.c (r1.136 -> r1.137)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/optimizer/util/pathnode.c.diff?r1=1.136&r2=1.137)
relnode.c (r1.84 -> r1.85)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/optimizer/util/relnode.c.diff?r1=1.84&r2=1.85)
restrictinfo.c (r1.51 -> r1.52)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/optimizer/util/restrictinfo.c.diff?r1=1.51&r2=1.52)
pgsql/src/backend/parser:
parse_agg.c (r1.75 -> r1.76)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/parser/parse_agg.c.diff?r1=1.75&r2=1.76)
pgsql/src/backend/utils/adt:
selfuncs.c (r1.219 -> r1.220)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/utils/adt/selfuncs.c.diff?r1=1.219&r2=1.220)
pgsql/src/backend/utils/cache:
lsyscache.c (r1.143 -> r1.144)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/utils/cache/lsyscache.c.diff?r1=1.143&r2=1.144)
pgsql/src/include/nodes:
nodes.h (r1.191 -> r1.192)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/nodes/nodes.h.diff?r1=1.191&r2=1.192)
relation.h (r1.132 -> r1.133)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/nodes/relation.h.diff?r1=1.132&r2=1.133)
pgsql/src/include/optimizer:
joininfo.h (r1.33 -> r1.34)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/optimizer/joininfo.h.diff?r1=1.33&r2=1.34)
pathnode.h (r1.75 -> r1.76)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/optimizer/pathnode.h.diff?r1=1.75&r2=1.76)
paths.h (r1.94 -> r1.95)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/optimizer/paths.h.diff?r1=1.94&r2=1.95)
planmain.h (r1.97 -> r1.98)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/optimizer/planmain.h.diff?r1=1.97&r2=1.98)
restrictinfo.h (r1.39 -> r1.40)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/optimizer/restrictinfo.h.diff?r1=1.39&r2=1.40)
pgsql/src/include/utils:
lsyscache.h (r1.112 -> r1.113)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/utils/lsyscache.h.diff?r1=1.112&r2=1.113)

Added Files:
-----------
pgsql/src/backend/optimizer/path:
equivclass.c (r1.1)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/optimizer/path/equivclass.c?rev=1.1&content-type=text/x-cvsweb-markup)

Browse pgsql-committers by date

  From Date Subject
Next Message Neil Conway 2007-01-20 21:17:30 pgsql: List disabled triggers separately in psql's "\d <table>" output.
Previous Message Neil Conway 2007-01-20 18:43:35 pgsql: Refactor the index AM API slightly: move currentItemData and