pgsql: Restructure operator classes to allow improved handling of - Mailing list pgsql-committers
From | tgl@postgresql.org (Tom Lane) |
---|---|
Subject | pgsql: Restructure operator classes to allow improved handling of |
Date | |
Msg-id | 20061223004314.099A99FA173@postgresql.org Whole thread Raw |
List | 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)
pgsql-committers by date: