aboutsummaryrefslogtreecommitdiff
path: root/src/backend/commands/aggregatecmds.c
diff options
context:
space:
mode:
authorAndrew Gierth <rhodiumtoad@postgresql.org>2019-03-19 01:16:50 +0000
committerAndrew Gierth <rhodiumtoad@postgresql.org>2019-03-19 01:16:50 +0000
commit01bde4fa4c24f4eea0a634d8fcad0b376efda6b1 (patch)
tree3891ad9efa650892c78e8d13f41c5eb151ff7a9e /src/backend/commands/aggregatecmds.c
parentf2004f19ed9c9228d3ea2b12379ccb4b9212641f (diff)
downloadpostgresql-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.c8
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,