@@ -341,7 +341,7 @@ static Node *makeRecursiveViewSelect(char *relname, List *aliases, Node *query);
341
341
%type <accesspriv> privilege
342
342
%type <list> privileges privilege_list
343
343
%type <privtarget> privilege_target
344
- %type <funwithargs> function_with_argtypes
344
+ %type <funwithargs> function_with_argtypes aggregate_with_argtypes
345
345
%type <list> function_with_argtypes_list
346
346
%type <ival> defacl_privilege_target
347
347
%type <defelt> DefACLOption
@@ -3943,14 +3943,14 @@ AlterExtensionContentsStmt:
3943
3943
n->objname = list_make1(makeString($7 ));
3944
3944
$$ = (Node *)n;
3945
3945
}
3946
- | ALTER EXTENSION name add_drop AGGREGATE func_name aggr_args
3946
+ | ALTER EXTENSION name add_drop AGGREGATE aggregate_with_argtypes
3947
3947
{
3948
3948
AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt);
3949
3949
n->extname = $3 ;
3950
3950
n->action = $4 ;
3951
3951
n->objtype = OBJECT_AGGREGATE;
3952
- n->objname = $6 ;
3953
- n->objargs = extractAggrArgTypes( $7 ) ;
3952
+ n->objname = $6 ->funcname ;
3953
+ n->objargs = $6 ->funcargs ;
3954
3954
$$ = (Node *)n;
3955
3955
}
3956
3956
| ALTER EXTENSION name add_drop CAST ' (' Typename AS Typename ' )'
@@ -5819,13 +5819,13 @@ CommentStmt:
5819
5819
n->comment = $6 ;
5820
5820
$$ = (Node *) n;
5821
5821
}
5822
- | COMMENT ON AGGREGATE func_name aggr_args IS comment_text
5822
+ | COMMENT ON AGGREGATE aggregate_with_argtypes IS comment_text
5823
5823
{
5824
5824
CommentStmt *n = makeNode(CommentStmt);
5825
5825
n->objtype = OBJECT_AGGREGATE;
5826
- n->objname = $4 ;
5827
- n->objargs = extractAggrArgTypes( $5 ) ;
5828
- n->comment = $7 ;
5826
+ n->objname = $4 ->funcname ;
5827
+ n->objargs = $4 ->funcargs ;
5828
+ n->comment = $6 ;
5829
5829
$$ = (Node *) n;
5830
5830
}
5831
5831
| COMMENT ON FUNCTION function_with_argtypes IS comment_text
@@ -6035,15 +6035,15 @@ SecLabelStmt:
6035
6035
n->label = $8 ;
6036
6036
$$ = (Node *) n;
6037
6037
}
6038
- | SECURITY LABEL opt_provider ON AGGREGATE func_name aggr_args
6038
+ | SECURITY LABEL opt_provider ON AGGREGATE aggregate_with_argtypes
6039
6039
IS security_label
6040
6040
{
6041
6041
SecLabelStmt *n = makeNode(SecLabelStmt);
6042
6042
n->provider = $3 ;
6043
6043
n->objtype = OBJECT_AGGREGATE;
6044
- n->objname = $6 ;
6045
- n->objargs = extractAggrArgTypes( $7 ) ;
6046
- n->label = $9 ;
6044
+ n->objname = $6 ->funcname ;
6045
+ n->objargs = $6 ->funcargs ;
6046
+ n->label = $8 ;
6047
6047
$$ = (Node *) n;
6048
6048
}
6049
6049
| SECURITY LABEL opt_provider ON FUNCTION function_with_argtypes
@@ -7103,6 +7103,16 @@ aggr_args_list:
7103
7103
| aggr_args_list ' ,' aggr_arg { $$ = lappend($1 , $3 ); }
7104
7104
;
7105
7105
7106
+ aggregate_with_argtypes :
7107
+ func_name aggr_args
7108
+ {
7109
+ FuncWithArgs *n = makeNode(FuncWithArgs);
7110
+ n->funcname = $1 ;
7111
+ n->funcargs = extractAggrArgTypes($2 );
7112
+ $$ = n;
7113
+ }
7114
+ ;
7115
+
7106
7116
createfunc_opt_list :
7107
7117
/* Must be at least one to prevent conflict */
7108
7118
createfunc_opt_item { $$ = list_make1($1 ); }
@@ -7309,24 +7319,24 @@ RemoveFuncStmt:
7309
7319
;
7310
7320
7311
7321
RemoveAggrStmt :
7312
- DROP AGGREGATE func_name aggr_args opt_drop_behavior
7322
+ DROP AGGREGATE aggregate_with_argtypes opt_drop_behavior
7313
7323
{
7314
7324
DropStmt *n = makeNode(DropStmt);
7315
7325
n->removeType = OBJECT_AGGREGATE;
7316
- n->objects = list_make1($3 );
7317
- n->arguments = list_make1(extractAggrArgTypes( $4 ) );
7318
- n->behavior = $5 ;
7326
+ n->objects = list_make1($3 ->funcname );
7327
+ n->arguments = list_make1($3 ->funcargs );
7328
+ n->behavior = $4 ;
7319
7329
n->missing_ok = false ;
7320
7330
n->concurrent = false ;
7321
7331
$$ = (Node *)n;
7322
7332
}
7323
- | DROP AGGREGATE IF_P EXISTS func_name aggr_args opt_drop_behavior
7333
+ | DROP AGGREGATE IF_P EXISTS aggregate_with_argtypes opt_drop_behavior
7324
7334
{
7325
7335
DropStmt *n = makeNode(DropStmt);
7326
7336
n->removeType = OBJECT_AGGREGATE;
7327
- n->objects = list_make1($5 );
7328
- n->arguments = list_make1(extractAggrArgTypes( $6 ) );
7329
- n->behavior = $7 ;
7337
+ n->objects = list_make1($5 ->funcname );
7338
+ n->arguments = list_make1($5 ->funcargs );
7339
+ n->behavior = $6 ;
7330
7340
n->missing_ok = true ;
7331
7341
n->concurrent = false ;
7332
7342
$$ = (Node *)n;
@@ -7625,13 +7635,13 @@ AlterTblSpcStmt:
7625
7635
*
7626
7636
*****************************************************************************/
7627
7637
7628
- RenameStmt : ALTER AGGREGATE func_name aggr_args RENAME TO name
7638
+ RenameStmt : ALTER AGGREGATE aggregate_with_argtypes RENAME TO name
7629
7639
{
7630
7640
RenameStmt *n = makeNode(RenameStmt);
7631
7641
n->renameType = OBJECT_AGGREGATE;
7632
- n->object = $3 ;
7633
- n->objarg = extractAggrArgTypes( $4 ) ;
7634
- n->newname = $7 ;
7642
+ n->object = $3 ->funcname ;
7643
+ n->objarg = $3 ->funcargs ;
7644
+ n->newname = $6 ;
7635
7645
n->missing_ok = false ;
7636
7646
$$ = (Node *)n;
7637
7647
}
@@ -8157,13 +8167,13 @@ AlterObjectDependsStmt:
8157
8167
*****************************************************************************/
8158
8168
8159
8169
AlterObjectSchemaStmt :
8160
- ALTER AGGREGATE func_name aggr_args SET SCHEMA name
8170
+ ALTER AGGREGATE aggregate_with_argtypes SET SCHEMA name
8161
8171
{
8162
8172
AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt);
8163
8173
n->objectType = OBJECT_AGGREGATE;
8164
- n->object = $3 ;
8165
- n->objarg = extractAggrArgTypes( $4 ) ;
8166
- n->newschema = $7 ;
8174
+ n->object = $3 ->funcname ;
8175
+ n->objarg = $3 ->funcargs ;
8176
+ n->newschema = $6 ;
8167
8177
n->missing_ok = false ;
8168
8178
$$ = (Node *)n;
8169
8179
}
@@ -8411,13 +8421,13 @@ operator_def_elem: ColLabel '=' NONE
8411
8421
*
8412
8422
*****************************************************************************/
8413
8423
8414
- AlterOwnerStmt : ALTER AGGREGATE func_name aggr_args OWNER TO RoleSpec
8424
+ AlterOwnerStmt : ALTER AGGREGATE aggregate_with_argtypes OWNER TO RoleSpec
8415
8425
{
8416
8426
AlterOwnerStmt *n = makeNode(AlterOwnerStmt);
8417
8427
n->objectType = OBJECT_AGGREGATE;
8418
- n->object = $3 ;
8419
- n->objarg = extractAggrArgTypes( $4 ) ;
8420
- n->newowner = $7 ;
8428
+ n->object = $3 ->funcname ;
8429
+ n->objarg = $3 ->funcargs ;
8430
+ n->newowner = $6 ;
8421
8431
$$ = (Node *)n;
8422
8432
}
8423
8433
| ALTER COLLATION any_name OWNER TO RoleSpec
0 commit comments