Support window functions a la SQL:2008.

Tom Lane <tgl@sss.pgh.pa.us>

Commit: 95b07bc7f5010233f52f9d11da74e2e5b653b0a7
Author: Tom Lane <tgl@sss.pgh.pa.us>
Date: 2008-12-28T18:54:01Z
Releases: 8.4.0
Support window functions a la SQL:2008.

Hitoshi Harada, with some kibitzing from Heikki and Tom.

Files

PathChange+/−
contrib/tsearch2/tsearch2.c modified +10 −2
doc/src/sgml/advanced.sgml modified +243 −7
doc/src/sgml/errcodes.sgml modified +19 −1
doc/src/sgml/func.sgml modified +273 −1
doc/src/sgml/queries.sgml modified +52 −1
doc/src/sgml/query.sgml modified +5 −5
doc/src/sgml/ref/select_into.sgml modified +2 −1
doc/src/sgml/ref/select.sgml modified +77 −2
doc/src/sgml/syntax.sgml modified +93 −4
doc/src/sgml/xaggr.sgml modified +6 −3
src/backend/catalog/dependency.c modified +10 −1
src/backend/catalog/heap.c modified +9 −1
src/backend/catalog/pg_proc.c modified +20 −6
src/backend/commands/explain.c modified +4 −1
src/backend/commands/functioncmds.c modified +9 −1
src/backend/commands/prepare.c modified +5 −1
src/backend/commands/tablecmds.c modified +5 −1
src/backend/commands/typecmds.c modified +5 −1
src/backend/executor/execAmi.c modified +7 −2
src/backend/executor/execProcnode.c modified +20 −2
src/backend/executor/execQual.c modified +70 −8
src/backend/executor/Makefile modified +2 −2
src/backend/executor/nodeWindowAgg.c added +1854 −0
src/backend/nodes/copyfuncs.c modified +91 −1
src/backend/nodes/equalfuncs.c modified +53 −1
src/backend/nodes/nodeFuncs.c modified +68 −1
src/backend/nodes/outfuncs.c modified +87 −1
src/backend/nodes/readfuncs.c modified +44 −1
src/backend/optimizer/path/allpaths.c modified +16 −3
src/backend/optimizer/path/costsize.c modified +40 −1
src/backend/optimizer/path/equivclass.c modified +6 −4
src/backend/optimizer/plan/createplan.c modified +52 −5
src/backend/optimizer/plan/planagg.c modified +5 −5
src/backend/optimizer/plan/planmain.c modified +13 −8
src/backend/optimizer/plan/planner.c modified +420 −37
src/backend/optimizer/plan/setrefs.c modified +7 −1
src/backend/optimizer/plan/subselect.c modified +10 −6
src/backend/optimizer/prep/prepjointree.c modified +6 −2
src/backend/optimizer/prep/prepunion.c modified +2 −1
src/backend/optimizer/util/clauses.c modified +122 −2
src/backend/optimizer/util/tlist.c modified +9 −9
src/backend/parser/analyze.c modified +53 −2
src/backend/parser/gram.y modified +142 −16
src/backend/parser/keywords.c modified +4 −1
src/backend/parser/parse_agg.c modified +194 −4
src/backend/parser/parse_clause.c modified +186 −17
src/backend/parser/parse_coerce.c modified +2 −1
src/backend/parser/parse_expr.c modified +7 −5
src/backend/parser/parse_func.c modified +73 −8
src/backend/parser/parse_type.c modified +2 −1
src/backend/parser/parse_utilcmd.c modified +6 −1
src/backend/rewrite/rewriteManip.c modified +91 −1
src/backend/utils/adt/arrayfuncs.c modified +7 −4
src/backend/utils/adt/array_userfuncs.c modified +29 −6
src/backend/utils/adt/float.c modified +10 −4
src/backend/utils/adt/int8.c modified +4 −2
src/backend/utils/adt/Makefile modified +2 −2
src/backend/utils/adt/numeric.c modified +13 −5
src/backend/utils/adt/ruleutils.c modified +245 −53
src/backend/utils/adt/windowfuncs.c added +475 −0
src/backend/utils/fmgr/fmgr.c modified +74 −1
src/backend/utils/sort/tuplestore.c modified +14 −1
src/include/catalog/catversion.h modified +2 −2
src/include/catalog/pg_proc.h modified +33 −1
src/include/executor/nodeWindowAgg.h added +25 −0
src/include/fmgr.h modified +3 −1
src/include/nodes/execnodes.h modified +65 −4
src/include/nodes/nodes.h modified +8 −1
src/include/nodes/parsenodes.h modified +48 −3
src/include/nodes/plannodes.h modified +16 −1
src/include/nodes/primnodes.h modified +16 −1
src/include/nodes/relation.h modified +2 −1
src/include/optimizer/clauses.h modified +12 −1
src/include/optimizer/cost.h modified +5 −1
src/include/optimizer/planmain.h modified +6 −1
src/include/optimizer/tlist.h modified +2 −2
src/include/parser/parse_agg.h modified +5 −2
src/include/parser/parse_clause.h modified +8 −2
src/include/parser/parse_func.h modified +3 −2
src/include/parser/parse_node.h modified +9 −1
src/include/rewrite/rewriteManip.h modified +3 −1
src/include/utils/array.h modified +2 −2
src/include/utils/builtins.h modified +18 −1
src/include/utils/errcodes.h modified +4 −1
src/include/utils/tuplestore.h modified +3 −1
src/include/windowapi.h added +64 −0
src/pl/plpgsql/src/plerrcodes.h modified +13 −1
src/test/regress/expected/window.out added +672 −0
src/test/regress/expected/with.out modified +2 −2
src/test/regress/parallel_schedule modified +2 −2
src/test/regress/serial_schedule modified +2 −1
src/test/regress/sql/window.sql added +179 −0