From: | tgl(at)postgresql(dot)org (Tom Lane) |
---|---|
To: | pgsql-committers(at)postgresql(dot)org |
Subject: | pgsql: Restructure operator classes to allow improved handling of |
Date: | 2006-12-23 00:43:14 |
Message-ID: | 20061223004314.099A99FA173@postgresql.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-committers |
Log Message:
-----------
Restructure operator classes to allow improved handling of cross-data-type
cases. Operator classes now exist within "operator families". While most
families are equivalent to a single class, related classes can be grouped
into one family to represent the fact that they are semantically compatible.
Cross-type operators are now naturally adjunct parts of a family, without
having to wedge them into a particular opclass as we had done originally.
This commit restructures the catalogs and cleans up enough of the fallout so
that everything still works at least as well as before, but most of the work
needed to actually improve the planner's behavior will come later. Also,
there are not yet CREATE/DROP/ALTER OPERATOR FAMILY commands; the only way
to create a new family right now is to allow CREATE OPERATOR CLASS to make
one by default. I owe some more documentation work, too. But that can all
be done in smaller pieces once this infrastructure is in place.
Modified Files:
--------------
pgsql/contrib/intarray:
_int.sql.in (r1.22 -> r1.23)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/contrib/intarray/_int.sql.in.diff?r1=1.22&r2=1.23)
uninstall__int.sql (r1.4 -> r1.5)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/contrib/intarray/uninstall__int.sql.diff?r1=1.4&r2=1.5)
pgsql/doc/src/sgml:
catalogs.sgml (r2.138 -> r2.139)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/doc/src/sgml/catalogs.sgml.diff?r1=2.138&r2=2.139)
indexam.sgml (r2.18 -> r2.19)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/doc/src/sgml/indexam.sgml.diff?r1=2.18&r2=2.19)
indices.sgml (r1.66 -> r1.67)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/doc/src/sgml/indices.sgml.diff?r1=1.66&r2=1.67)
xoper.sgml (r1.36 -> r1.37)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/doc/src/sgml/xoper.sgml.diff?r1=1.36&r2=1.37)
pgsql/doc/src/sgml/ref:
create_operator.sgml (r1.45 -> r1.46)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/doc/src/sgml/ref/create_operator.sgml.diff?r1=1.45&r2=1.46)
pgsql/src/backend/access/hash:
hashfunc.c (r1.48 -> r1.49)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/hash/hashfunc.c.diff?r1=1.48&r2=1.49)
pgsql/src/backend/access/index:
indexam.c (r1.95 -> r1.96)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/index/indexam.c.diff?r1=1.95&r2=1.96)
pgsql/src/backend/access/nbtree:
nbtsearch.c (r1.107 -> r1.108)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/nbtree/nbtsearch.c.diff?r1=1.107&r2=1.108)
pgsql/src/backend/catalog:
Makefile (r1.60 -> r1.61)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/catalog/Makefile.diff?r1=1.60&r2=1.61)
dependency.c (r1.60 -> r1.61)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/catalog/dependency.c.diff?r1=1.60&r2=1.61)
namespace.c (r1.88 -> r1.89)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/catalog/namespace.c.diff?r1=1.88&r2=1.89)
pg_operator.c (r1.98 -> r1.99)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/catalog/pg_operator.c.diff?r1=1.98&r2=1.99)
pgsql/src/backend/commands:
indexcmds.c (r1.149 -> r1.150)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/commands/indexcmds.c.diff?r1=1.149&r2=1.150)
opclasscmds.c (r1.50 -> r1.51)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/commands/opclasscmds.c.diff?r1=1.50&r2=1.51)
operatorcmds.c (r1.33 -> r1.34)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/commands/operatorcmds.c.diff?r1=1.33&r2=1.34)
tablecmds.c (r1.206 -> r1.207)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/commands/tablecmds.c.diff?r1=1.206&r2=1.207)
pgsql/src/backend/executor:
execQual.c (r1.200 -> r1.201)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/execQual.c.diff?r1=1.200&r2=1.201)
nodeIndexscan.c (r1.117 -> r1.118)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/nodeIndexscan.c.diff?r1=1.117&r2=1.118)
nodeMergejoin.c (r1.82 -> r1.83)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/nodeMergejoin.c.diff?r1=1.82&r2=1.83)
pgsql/src/backend/nodes:
copyfuncs.c (r1.355 -> r1.356)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/nodes/copyfuncs.c.diff?r1=1.355&r2=1.356)
equalfuncs.c (r1.289 -> r1.290)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/nodes/equalfuncs.c.diff?r1=1.289&r2=1.290)
outfuncs.c (r1.287 -> r1.288)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/nodes/outfuncs.c.diff?r1=1.287&r2=1.288)
readfuncs.c (r1.197 -> r1.198)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/nodes/readfuncs.c.diff?r1=1.197&r2=1.198)
pgsql/src/backend/optimizer/path:
costsize.c (r1.170 -> r1.171)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/optimizer/path/costsize.c.diff?r1=1.170&r2=1.171)
indxpath.c (r1.212 -> r1.213)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/optimizer/path/indxpath.c.diff?r1=1.212&r2=1.213)
joinpath.c (r1.107 -> r1.108)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/optimizer/path/joinpath.c.diff?r1=1.107&r2=1.108)
pgsql/src/backend/optimizer/plan:
createplan.c (r1.217 -> r1.218)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/optimizer/plan/createplan.c.diff?r1=1.217&r2=1.218)
initsplan.c (r1.124 -> r1.125)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/optimizer/plan/initsplan.c.diff?r1=1.124&r2=1.125)
planagg.c (r1.22 -> r1.23)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/optimizer/plan/planagg.c.diff?r1=1.22&r2=1.23)
subselect.c (r1.114 -> r1.115)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/optimizer/plan/subselect.c.diff?r1=1.114&r2=1.115)
pgsql/src/backend/optimizer/util:
clauses.c (r1.224 -> r1.225)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/optimizer/util/clauses.c.diff?r1=1.224&r2=1.225)
pathnode.c (r1.133 -> r1.134)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/optimizer/util/pathnode.c.diff?r1=1.133&r2=1.134)
plancat.c (r1.128 -> r1.129)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/optimizer/util/plancat.c.diff?r1=1.128&r2=1.129)
predtest.c (r1.10 -> r1.11)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/optimizer/util/predtest.c.diff?r1=1.10&r2=1.11)
restrictinfo.c (r1.49 -> r1.50)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/optimizer/util/restrictinfo.c.diff?r1=1.49&r2=1.50)
pgsql/src/backend/parser:
parse_expr.c (r1.200 -> r1.201)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/parser/parse_expr.c.diff?r1=1.200&r2=1.201)
pgsql/src/backend/utils/adt:
ruleutils.c (r1.236 -> r1.237)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/utils/adt/ruleutils.c.diff?r1=1.236&r2=1.237)
selfuncs.c (r1.215 -> r1.216)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/utils/adt/selfuncs.c.diff?r1=1.215&r2=1.216)
pgsql/src/backend/utils/cache:
catcache.c (r1.134 -> r1.135)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/utils/cache/catcache.c.diff?r1=1.134&r2=1.135)
lsyscache.c (r1.138 -> r1.139)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/utils/cache/lsyscache.c.diff?r1=1.138&r2=1.139)
relcache.c (r1.250 -> r1.251)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/utils/cache/relcache.c.diff?r1=1.250&r2=1.251)
syscache.c (r1.108 -> r1.109)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/utils/cache/syscache.c.diff?r1=1.108&r2=1.109)
typcache.c (r1.22 -> r1.23)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/utils/cache/typcache.c.diff?r1=1.22&r2=1.23)
pgsql/src/backend/utils/sort:
tuplesort.c (r1.70 -> r1.71)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/utils/sort/tuplesort.c.diff?r1=1.70&r2=1.71)
pgsql/src/bin/initdb:
initdb.c (r1.125 -> r1.126)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/bin/initdb/initdb.c.diff?r1=1.125&r2=1.126)
pgsql/src/bin/pg_dump:
pg_dump.c (r1.453 -> r1.454)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/bin/pg_dump/pg_dump.c.diff?r1=1.453&r2=1.454)
pgsql/src/include/catalog:
catversion.h (r1.364 -> r1.365)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/catalog/catversion.h.diff?r1=1.364&r2=1.365)
dependency.h (r1.27 -> r1.28)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/catalog/dependency.h.diff?r1=1.27&r2=1.28)
indexing.h (r1.95 -> r1.96)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/catalog/indexing.h.diff?r1=1.95&r2=1.96)
namespace.h (r1.42 -> r1.43)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/catalog/namespace.h.diff?r1=1.42&r2=1.43)
pg_amop.h (r1.75 -> r1.76)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/catalog/pg_amop.h.diff?r1=1.75&r2=1.76)
pg_amproc.h (r1.60 -> r1.61)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/catalog/pg_amproc.h.diff?r1=1.60&r2=1.61)
pg_opclass.h (r1.71 -> r1.72)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/catalog/pg_opclass.h.diff?r1=1.71&r2=1.72)
pg_operator.h (r1.146 -> r1.147)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/catalog/pg_operator.h.diff?r1=1.146&r2=1.147)
pgsql/src/include/commands:
defrem.h (r1.77 -> r1.78)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/commands/defrem.h.diff?r1=1.77&r2=1.78)
pgsql/src/include/nodes:
parsenodes.h (r1.334 -> r1.335)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/nodes/parsenodes.h.diff?r1=1.334&r2=1.335)
plannodes.h (r1.85 -> r1.86)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/nodes/plannodes.h.diff?r1=1.85&r2=1.86)
primnodes.h (r1.119 -> r1.120)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/nodes/primnodes.h.diff?r1=1.119&r2=1.120)
relation.h (r1.128 -> r1.129)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/nodes/relation.h.diff?r1=1.128&r2=1.129)
pgsql/src/include/optimizer:
pathnode.h (r1.72 -> r1.73)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/optimizer/pathnode.h.diff?r1=1.72&r2=1.73)
pgsql/src/include/utils:
lsyscache.h (r1.107 -> r1.108)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/utils/lsyscache.h.diff?r1=1.107&r2=1.108)
rel.h (r1.92 -> r1.93)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/utils/rel.h.diff?r1=1.92&r2=1.93)
selfuncs.h (r1.36 -> r1.37)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/utils/selfuncs.h.diff?r1=1.36&r2=1.37)
syscache.h (r1.65 -> r1.66)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/utils/syscache.h.diff?r1=1.65&r2=1.66)
typcache.h (r1.12 -> r1.13)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/utils/typcache.h.diff?r1=1.12&r2=1.13)
pgsql/src/test/regress/expected:
oidjoins.out (r1.17 -> r1.18)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/test/regress/expected/oidjoins.out.diff?r1=1.17&r2=1.18)
opr_sanity.out (r1.69 -> r1.70)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/test/regress/expected/opr_sanity.out.diff?r1=1.69&r2=1.70)
rowtypes.out (r1.7 -> r1.8)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/test/regress/expected/rowtypes.out.diff?r1=1.7&r2=1.8)
sanity_check.out (r1.33 -> r1.34)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/test/regress/expected/sanity_check.out.diff?r1=1.33&r2=1.34)
pgsql/src/test/regress/sql:
oidjoins.sql (r1.17 -> r1.18)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/test/regress/sql/oidjoins.sql.diff?r1=1.17&r2=1.18)
opr_sanity.sql (r1.55 -> r1.56)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/test/regress/sql/opr_sanity.sql.diff?r1=1.55&r2=1.56)
pgsql/src/tools/findoidjoins:
README (r1.1 -> r1.2)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/tools/findoidjoins/README.diff?r1=1.1&r2=1.2)
pgsql/src/tutorial:
syscat.source (r1.16 -> r1.17)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/tutorial/syscat.source.diff?r1=1.16&r2=1.17)
Added Files:
-----------
pgsql/src/include/catalog:
pg_opfamily.h (r1.1)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/catalog/pg_opfamily.h?rev=1.1&content-type=text/x-cvsweb-markup)
From | Date | Subject | |
---|---|---|---|
Next Message | Bruce Momjian | 2006-12-23 00:52:41 | pgsql: For GUC values, check for partial string matches on 'on' and |
Previous Message | Bruce Momjian | 2006-12-22 22:42:37 | pgsql: Add a link to the developer's FAQ for my article about how |