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:

Previous
From: momjian@postgresql.org (Bruce Momjian)
Date:
Subject: pgsql: Add a link to the developer's FAQ for my article about how
Next
From: momjian@postgresql.org (Bruce Momjian)
Date:
Subject: pgsql: For GUC values, check for partial string matches on 'on' and