mirror of
https://github.com/postgres/postgres.git
synced 2025-07-07 00:36:50 +03:00
Implement OR REPLACE option for CREATE AGGREGATE.
Aggregates have acquired a dozen or so optional attributes in recent years for things like parallel query and moving-aggregate mode; the lack of an OR REPLACE option to add or change these for an existing agg makes extension upgrades gratuitously hard. Rectify.
This commit is contained in:
@ -5618,25 +5618,27 @@ CreateAssertionStmt:
|
||||
*****************************************************************************/
|
||||
|
||||
DefineStmt:
|
||||
CREATE AGGREGATE func_name aggr_args definition
|
||||
CREATE opt_or_replace AGGREGATE func_name aggr_args definition
|
||||
{
|
||||
DefineStmt *n = makeNode(DefineStmt);
|
||||
n->kind = OBJECT_AGGREGATE;
|
||||
n->oldstyle = false;
|
||||
n->defnames = $3;
|
||||
n->args = $4;
|
||||
n->definition = $5;
|
||||
n->replace = $2;
|
||||
n->defnames = $4;
|
||||
n->args = $5;
|
||||
n->definition = $6;
|
||||
$$ = (Node *)n;
|
||||
}
|
||||
| CREATE AGGREGATE func_name old_aggr_definition
|
||||
| CREATE opt_or_replace AGGREGATE func_name old_aggr_definition
|
||||
{
|
||||
/* old-style (pre-8.2) syntax for CREATE AGGREGATE */
|
||||
DefineStmt *n = makeNode(DefineStmt);
|
||||
n->kind = OBJECT_AGGREGATE;
|
||||
n->oldstyle = true;
|
||||
n->defnames = $3;
|
||||
n->replace = $2;
|
||||
n->defnames = $4;
|
||||
n->args = NIL;
|
||||
n->definition = $4;
|
||||
n->definition = $5;
|
||||
$$ = (Node *)n;
|
||||
}
|
||||
| CREATE OPERATOR any_operator definition
|
||||
|
Reference in New Issue
Block a user