pgsql: Refactor planner's pathkeys data structure to create a separate, - Mailing list pgsql-committers

From tgl@postgresql.org (Tom Lane)
Subject pgsql: Refactor planner's pathkeys data structure to create a separate,
Date
Msg-id 20070120204541.39F8C9FB579@postgresql.org
Whole thread Raw
List 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)

pgsql-committers by date:

Previous
From: neilc@postgresql.org (Neil Conway)
Date:
Subject: pgsql: Refactor the index AM API slightly: move currentItemData and
Next
From: neilc@postgresql.org (Neil Conway)
Date:
Subject: pgsql: List disabled triggers separately in psql's "\d " output.