diff options
author | Andrew Gierth <rhodiumtoad@postgresql.org> | 2019-03-19 01:16:50 +0000 |
---|---|---|
committer | Andrew Gierth <rhodiumtoad@postgresql.org> | 2019-03-19 01:16:50 +0000 |
commit | 01bde4fa4c24f4eea0a634d8fcad0b376efda6b1 (patch) | |
tree | 3891ad9efa650892c78e8d13f41c5eb151ff7a9e /src/backend/commands/aggregatecmds.c | |
parent | f2004f19ed9c9228d3ea2b12379ccb4b9212641f (diff) | |
download | postgresql-01bde4fa4c24f4eea0a634d8fcad0b376efda6b1.tar.gz postgresql-01bde4fa4c24f4eea0a634d8fcad0b376efda6b1.zip |
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.
Diffstat (limited to 'src/backend/commands/aggregatecmds.c')
-rw-r--r-- | src/backend/commands/aggregatecmds.c | 8 |
1 files changed, 7 insertions, 1 deletions
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, |