mirror of
https://github.com/postgres/postgres.git
synced 2025-11-06 07:49:08 +03:00
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.
This commit is contained in:
@@ -283,8 +283,8 @@ typedef struct CollateClause
|
||||
* agg_star indicates we saw a 'foo(*)' construct, while agg_distinct
|
||||
* indicates we saw 'foo(DISTINCT ...)'. In any of these cases, the
|
||||
* construct *must* be an aggregate call. Otherwise, it might be either an
|
||||
* aggregate or some other kind of function. However, if OVER is present
|
||||
* it had better be an aggregate or window function.
|
||||
* aggregate or some other kind of function. However, if FILTER or OVER is
|
||||
* present it had better be an aggregate or window function.
|
||||
*
|
||||
* Normally, you'd initialize this via makeFuncCall() and then only
|
||||
* change the parts of the struct its defaults don't match afterwards
|
||||
@@ -297,6 +297,7 @@ typedef struct FuncCall
|
||||
List *funcname; /* qualified name of function */
|
||||
List *args; /* the arguments (list of exprs) */
|
||||
List *agg_order; /* ORDER BY (list of SortBy) */
|
||||
Node *agg_filter; /* FILTER clause, if any */
|
||||
bool agg_star; /* argument was really '*' */
|
||||
bool agg_distinct; /* arguments were labeled DISTINCT */
|
||||
bool func_variadic; /* last argument was labeled VARIADIC */
|
||||
|
||||
Reference in New Issue
Block a user