From 01bde4fa4c24f4eea0a634d8fcad0b376efda6b1 Mon Sep 17 00:00:00 2001 From: Andrew Gierth Date: Tue, 19 Mar 2019 01:16:50 +0000 Subject: 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. --- src/backend/commands/aggregatecmds.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'src/backend/commands/aggregatecmds.c') diff --git a/src/backend/commands/aggregatecmds.c b/src/backend/commands/aggregatecmds.c index d00765fbc74..d569067dc4d 100644 --- a/src/backend/commands/aggregatecmds.c +++ b/src/backend/commands/aggregatecmds.c @@ -54,7 +54,12 @@ static char extractModify(DefElem *defel); * "parameters" is a list of DefElem representing the agg's definition clauses. */ ObjectAddress -DefineAggregate(ParseState *pstate, List *name, List *args, bool oldstyle, List *parameters) +DefineAggregate(ParseState *pstate, + List *name, + List *args, + bool oldstyle, + List *parameters, + bool replace) { char *aggName; Oid aggNamespace; @@ -436,6 +441,7 @@ DefineAggregate(ParseState *pstate, List *name, List *args, bool oldstyle, List */ return AggregateCreate(aggName, /* aggregate name */ aggNamespace, /* namespace */ + replace, aggKind, numArgs, numDirectArgs, -- cgit v1.2.3