pgsql: Support ORDER BY ... - Mailing list pgsql-committers

From tgl@postgresql.org (Tom Lane)
Subject pgsql: Support ORDER BY ...
Date
Msg-id 20070109021416.AFACD9FB1EE@postgresql.org
Whole thread Raw
List pgsql-committers
Log Message:
-----------
Support ORDER BY ... NULLS FIRST/LAST, and add ASC/DESC/NULLS FIRST/NULLS LAST
per-column options for btree indexes.  The planner's support for this is still
pretty rudimentary; it does not yet know how to plan mergejoins with
nondefault ordering options.  The documentation is pretty rudimentary, too.
I'll work on improving that stuff later.

Note incompatible change from prior behavior: ORDER BY ... USING will now be
rejected if the operator is not a less-than or greater-than member of some
btree opclass.  This prevents less-than-sane behavior if an operator that
doesn't actually define a proper sort ordering is selected.

Modified Files:
--------------
    pgsql/doc/src/sgml:
        catalogs.sgml (r2.140 -> r2.141)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/doc/src/sgml/catalogs.sgml.diff?r1=2.140&r2=2.141)
        queries.sgml (r1.39 -> r1.40)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/doc/src/sgml/queries.sgml.diff?r1=1.39&r2=1.40)
        sql.sgml (r1.42 -> r1.43)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/doc/src/sgml/sql.sgml.diff?r1=1.42&r2=1.43)
        xindex.sgml (r1.53 -> r1.54)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/doc/src/sgml/xindex.sgml.diff?r1=1.53&r2=1.54)
    pgsql/doc/src/sgml/ref:
        create_index.sgml (r1.58 -> r1.59)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/doc/src/sgml/ref/create_index.sgml.diff?r1=1.58&r2=1.59)
        select.sgml (r1.94 -> r1.95)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/doc/src/sgml/ref/select.sgml.diff?r1=1.94&r2=1.95)
        select_into.sgml (r1.38 -> r1.39)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/doc/src/sgml/ref/select_into.sgml.diff?r1=1.38&r2=1.39)
    pgsql/src/backend/access/nbtree:
        README (r1.15 -> r1.16)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/nbtree/README.diff?r1=1.15&r2=1.16)
        nbtcompare.c (r1.53 -> r1.54)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/nbtree/nbtcompare.c.diff?r1=1.53&r2=1.54)
        nbtsearch.c (r1.110 -> r1.111)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/nbtree/nbtsearch.c.diff?r1=1.110&r2=1.111)
        nbtsort.c (r1.109 -> r1.110)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/nbtree/nbtsort.c.diff?r1=1.109&r2=1.110)
        nbtutils.c (r1.81 -> r1.82)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/nbtree/nbtutils.c.diff?r1=1.81&r2=1.82)
    pgsql/src/backend/bootstrap:
        bootparse.y (r1.85 -> r1.86)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/bootstrap/bootparse.y.diff?r1=1.85&r2=1.86)
    pgsql/src/backend/catalog:
        index.c (r1.275 -> r1.276)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/catalog/index.c.diff?r1=1.275&r2=1.276)
        toasting.c (r1.4 -> r1.5)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/catalog/toasting.c.diff?r1=1.4&r2=1.5)
    pgsql/src/backend/commands:
        analyze.c (r1.102 -> r1.103)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/commands/analyze.c.diff?r1=1.102&r2=1.103)
        indexcmds.c (r1.151 -> r1.152)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/commands/indexcmds.c.diff?r1=1.151&r2=1.152)
    pgsql/src/backend/executor:
        nodeAgg.c (r1.147 -> r1.148)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/nodeAgg.c.diff?r1=1.147&r2=1.148)
        nodeSort.c (r1.59 -> r1.60)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/nodeSort.c.diff?r1=1.59&r2=1.60)
    pgsql/src/backend/nodes:
        copyfuncs.c (r1.359 -> r1.360)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/nodes/copyfuncs.c.diff?r1=1.359&r2=1.360)
        equalfuncs.c (r1.293 -> r1.294)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/nodes/equalfuncs.c.diff?r1=1.293&r2=1.294)
        outfuncs.c (r1.291 -> r1.292)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/nodes/outfuncs.c.diff?r1=1.291&r2=1.292)
        readfuncs.c (r1.200 -> r1.201)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/nodes/readfuncs.c.diff?r1=1.200&r2=1.201)
    pgsql/src/backend/optimizer/path:
        allpaths.c (r1.155 -> r1.156)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/optimizer/path/allpaths.c.diff?r1=1.155&r2=1.156)
        indxpath.c (r1.214 -> r1.215)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/optimizer/path/indxpath.c.diff?r1=1.214&r2=1.215)
        pathkeys.c (r1.80 -> r1.81)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/optimizer/path/pathkeys.c.diff?r1=1.80&r2=1.81)
    pgsql/src/backend/optimizer/plan:
        createplan.c (r1.219 -> r1.220)

(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/optimizer/plan/createplan.c.diff?r1=1.219&r2=1.220)
        planagg.c (r1.24 -> r1.25)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/optimizer/plan/planagg.c.diff?r1=1.24&r2=1.25)
    pgsql/src/backend/optimizer/util:
        clauses.c (r1.227 -> r1.228)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/optimizer/util/clauses.c.diff?r1=1.227&r2=1.228)
        plancat.c (r1.130 -> r1.131)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/optimizer/util/plancat.c.diff?r1=1.130&r2=1.131)
    pgsql/src/backend/parser:
        analyze.c (r1.354 -> r1.355)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/parser/analyze.c.diff?r1=1.354&r2=1.355)
        gram.y (r2.572 -> r2.573)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/parser/gram.y.diff?r1=2.572&r2=2.573)
        keywords.c (r1.180 -> r1.181)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/parser/keywords.c.diff?r1=1.180&r2=1.181)
        parse_clause.c (r1.161 -> r1.162)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/parser/parse_clause.c.diff?r1=1.161&r2=1.162)
        parser.c (r1.70 -> r1.71)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/parser/parser.c.diff?r1=1.70&r2=1.71)
    pgsql/src/backend/utils/adt:
        ruleutils.c (r1.240 -> r1.241)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/utils/adt/ruleutils.c.diff?r1=1.240&r2=1.241)
        selfuncs.c (r1.218 -> r1.219)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/utils/adt/selfuncs.c.diff?r1=1.218&r2=1.219)
    pgsql/src/backend/utils/cache:
        lsyscache.c (r1.141 -> r1.142)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/utils/cache/lsyscache.c.diff?r1=1.141&r2=1.142)
        relcache.c (r1.253 -> r1.254)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/utils/cache/relcache.c.diff?r1=1.253&r2=1.254)
    pgsql/src/backend/utils/sort:
        tuplesort.c (r1.72 -> r1.73)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/utils/sort/tuplesort.c.diff?r1=1.72&r2=1.73)
    pgsql/src/include/access:
        nbtree.h (r1.107 -> r1.108)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/access/nbtree.h.diff?r1=1.107&r2=1.108)
    pgsql/src/include/catalog:
        catversion.h (r1.370 -> r1.371)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/catalog/catversion.h.diff?r1=1.370&r2=1.371)
        index.h (r1.72 -> r1.73)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/catalog/index.h.diff?r1=1.72&r2=1.73)
        pg_am.h (r1.48 -> r1.49)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/catalog/pg_am.h.diff?r1=1.48&r2=1.49)
        pg_attribute.h (r1.128 -> r1.129)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/catalog/pg_attribute.h.diff?r1=1.128&r2=1.129)
        pg_index.h (r1.42 -> r1.43)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/catalog/pg_index.h.diff?r1=1.42&r2=1.43)
    pgsql/src/include/nodes:
        parsenodes.h (r1.337 -> r1.338)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/nodes/parsenodes.h.diff?r1=1.337&r2=1.338)
        plannodes.h (r1.87 -> r1.88)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/nodes/plannodes.h.diff?r1=1.87&r2=1.88)
        relation.h (r1.130 -> r1.131)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/nodes/relation.h.diff?r1=1.130&r2=1.131)
    pgsql/src/include/parser:
        parse_clause.h (r1.47 -> r1.48)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/parser/parse_clause.h.diff?r1=1.47&r2=1.48)
    pgsql/src/include/utils:
        lsyscache.h (r1.110 -> r1.111)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/utils/lsyscache.h.diff?r1=1.110&r2=1.111)
        rel.h (r1.94 -> r1.95)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/utils/rel.h.diff?r1=1.94&r2=1.95)
        tuplesort.h (r1.24 -> r1.25)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/utils/tuplesort.h.diff?r1=1.24&r2=1.25)
    pgsql/src/test/regress/expected:
        circle.out (r1.8 -> r1.9)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/test/regress/expected/circle.out.diff?r1=1.8&r2=1.9)
        create_index.out (r1.22 -> r1.23)

(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/test/regress/expected/create_index.out.diff?r1=1.22&r2=1.23)
        geometry.out (r1.23 -> r1.24)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/test/regress/expected/geometry.out.diff?r1=1.23&r2=1.24)
        geometry_1.out (r1.8 -> r1.9)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/test/regress/expected/geometry_1.out.diff?r1=1.8&r2=1.9)
        geometry_2.out (r1.5 -> r1.6)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/test/regress/expected/geometry_2.out.diff?r1=1.5&r2=1.6)
        point.out (r1.15 -> r1.16)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/test/regress/expected/point.out.diff?r1=1.15&r2=1.16)
        select.out (r1.15 -> r1.16)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/test/regress/expected/select.out.diff?r1=1.15&r2=1.16)
    pgsql/src/test/regress/sql:
        circle.sql (r1.5 -> r1.6)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/test/regress/sql/circle.sql.diff?r1=1.5&r2=1.6)
        create_index.sql (r1.21 -> r1.22)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/test/regress/sql/create_index.sql.diff?r1=1.21&r2=1.22)
        geometry.sql (r1.9 -> r1.10)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/test/regress/sql/geometry.sql.diff?r1=1.9&r2=1.10)
        point.sql (r1.11 -> r1.12)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/test/regress/sql/point.sql.diff?r1=1.11&r2=1.12)
        select.sql (r1.11 -> r1.12)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/test/regress/sql/select.sql.diff?r1=1.11&r2=1.12)

pgsql-committers by date:

Previous
From: petere@postgresql.org (Peter Eisentraut)
Date:
Subject: pgsql: Prevent duplicate attribute names in XMLELEMENT.
Next
From: tgl@postgresql.org (Tom Lane)
Date:
Subject: pgsql: pltcl regression test needs to actually create an opclass, not