Implement the FILTER clause for aggregate function calls.

Noah Misch <noah@leadboat.com>

Commit: b560ec1b0d7b910ce13edc51ffaafaca72136e3b
Author: Noah Misch <noah@leadboat.com>
Date: 2013-07-17T00:15:36Z
Releases: 9.4.0
Implement the FILTER clause for aggregate function calls.

This is SQL-standard with a few extensions, namely support for
subqueries and outer references in clause expressions.

catversion bump due to change in Aggref and WindowFunc.

David Fetter, reviewed by Dean Rasheed.

Files

PathChange+/−
contrib/pg_stat_statements/pg_stat_statements.c modified +2 −0
doc/src/sgml/keywords.sgml modified +1 −1
doc/src/sgml/ref/select.sgml modified +5 −0
doc/src/sgml/syntax.sgml modified +35 −13
src/backend/executor/execQual.c modified +4 −0
src/backend/executor/execUtils.c modified +3 −3
src/backend/executor/functions.c modified +1 −1
src/backend/executor/nodeAgg.c modified +13 −0
src/backend/executor/nodeWindowAgg.c modified +14 −0
src/backend/nodes/copyfuncs.c modified +3 −0
src/backend/nodes/equalfuncs.c modified +3 −0
src/backend/nodes/makefuncs.c modified +1 −0
src/backend/nodes/nodeFuncs.c modified +8 −0
src/backend/nodes/outfuncs.c modified +3 −0
src/backend/nodes/readfuncs.c modified +2 −0
src/backend/optimizer/path/costsize.c modified +8 −0
src/backend/optimizer/plan/planagg.c modified +6 −0
src/backend/optimizer/util/clauses.c modified +13 −2
src/backend/parser/gram.y modified +12 −4
src/backend/parser/parse_agg.c modified +19 −10
src/backend/parser/parse_collate.c modified +22 −0
src/backend/parser/parse_expr.c modified +20 −4
src/backend/parser/parse_func.c modified +24 −6
src/backend/utils/adt/ruleutils.c modified +14 −0
src/include/catalog/catversion.h modified +1 −1
src/include/nodes/execnodes.h modified +2 −0
src/include/nodes/parsenodes.h modified +3 −2
src/include/nodes/primnodes.h modified +2 −0
src/include/parser/kwlist.h modified +1 −0
src/include/parser/parse_func.h modified +3 −4
src/include/parser/parse_node.h modified +1 −0
src/test/regress/expected/aggregates.out modified +95 −0
src/test/regress/expected/window.out modified +13 −0
src/test/regress/sql/aggregates.sql modified +38 −0
src/test/regress/sql/window.sql modified +8 −0