rel = heap_open(ProcedureRelationId, RowExclusiveLock);
- funcOid = LookupFuncNameTypeNames(stmt->func->funcname,
- stmt->func->funcargs,
+ funcOid = LookupFuncNameTypeNames(stmt->func->objname,
+ stmt->func->objargs,
false);
tup = SearchSysCacheCopy1(PROCOID, ObjectIdGetDatum(funcOid));
/* Permission check: must own function */
if (!pg_proc_ownercheck(funcOid, GetUserId()))
aclcheck_error(ACLCHECK_NOT_OWNER, ACL_KIND_PROC,
- NameListToString(stmt->func->funcname));
+ NameListToString(stmt->func->objname));
if (procForm->proisagg)
ereport(ERROR,
(errcode(ERRCODE_WRONG_OBJECT_TYPE),
errmsg("\"%s\" is an aggregate function",
- NameListToString(stmt->func->funcname))));
+ NameListToString(stmt->func->objname))));
/* Examine requested actions. */
foreach(l, stmt->actions)
{
Form_pg_proc procstruct;
- funcid = LookupFuncNameTypeNames(stmt->func->funcname,
- stmt->func->funcargs,
+ funcid = LookupFuncNameTypeNames(stmt->func->objname,
+ stmt->func->objargs,
false);
tuple = SearchSysCache1(PROCOID, ObjectIdGetDatum(funcid));
*/
if (stmt->fromsql)
{
- fromsqlfuncid = LookupFuncNameTypeNames(stmt->fromsql->funcname, stmt->fromsql->funcargs, false);
+ fromsqlfuncid = LookupFuncNameTypeNames(stmt->fromsql->objname, stmt->fromsql->objargs, false);
if (!pg_proc_ownercheck(fromsqlfuncid, GetUserId()))
- aclcheck_error(ACLCHECK_NOT_OWNER, ACL_KIND_PROC, NameListToString(stmt->fromsql->funcname));
+ aclcheck_error(ACLCHECK_NOT_OWNER, ACL_KIND_PROC, NameListToString(stmt->fromsql->objname));
aclresult = pg_proc_aclcheck(fromsqlfuncid, GetUserId(), ACL_EXECUTE);
if (aclresult != ACLCHECK_OK)
- aclcheck_error(aclresult, ACL_KIND_PROC, NameListToString(stmt->fromsql->funcname));
+ aclcheck_error(aclresult, ACL_KIND_PROC, NameListToString(stmt->fromsql->objname));
tuple = SearchSysCache1(PROCOID, ObjectIdGetDatum(fromsqlfuncid));
if (!HeapTupleIsValid(tuple))
if (stmt->tosql)
{
- tosqlfuncid = LookupFuncNameTypeNames(stmt->tosql->funcname, stmt->tosql->funcargs, false);
+ tosqlfuncid = LookupFuncNameTypeNames(stmt->tosql->objname, stmt->tosql->objargs, false);
if (!pg_proc_ownercheck(tosqlfuncid, GetUserId()))
- aclcheck_error(ACLCHECK_NOT_OWNER, ACL_KIND_PROC, NameListToString(stmt->tosql->funcname));
+ aclcheck_error(ACLCHECK_NOT_OWNER, ACL_KIND_PROC, NameListToString(stmt->tosql->objname));
aclresult = pg_proc_aclcheck(tosqlfuncid, GetUserId(), ACL_EXECUTE);
if (aclresult != ACLCHECK_OK)
- aclcheck_error(aclresult, ACL_KIND_PROC, NameListToString(stmt->tosql->funcname));
+ aclcheck_error(aclresult, ACL_KIND_PROC, NameListToString(stmt->tosql->objname));
tuple = SearchSysCache1(PROCOID, ObjectIdGetDatum(tosqlfuncid));
if (!HeapTupleIsValid(tuple))
TypeName *typnam;
FunctionParameter *fun_param;
FunctionParameterMode fun_param_mode;
- FuncWithArgs *funwithargs;
+ ObjectWithArgs *objwithargs;
DefElem *defelt;
SortBy *sortby;
WindowDef *windef;
%type <accesspriv> privilege
%type <list> privileges privilege_list
%type <privtarget> privilege_target
-%type <funwithargs> function_with_argtypes aggregate_with_argtypes
+%type <objwithargs> function_with_argtypes aggregate_with_argtypes operator_with_argtypes
%type <list> function_with_argtypes_list
%type <ival> defacl_privilege_target
%type <defelt> DefACLOption
n->extname = $3;
n->action = $4;
n->objtype = OBJECT_AGGREGATE;
- n->objname = $6->funcname;
- n->objargs = $6->funcargs;
+ n->objname = $6->objname;
+ n->objargs = $6->objargs;
$$ = (Node *)n;
}
| ALTER EXTENSION name add_drop CAST '(' Typename AS Typename ')'
n->extname = $3;
n->action = $4;
n->objtype = OBJECT_FUNCTION;
- n->objname = $6->funcname;
- n->objargs = $6->funcargs;
+ n->objname = $6->objname;
+ n->objargs = $6->objargs;
$$ = (Node *)n;
}
| ALTER EXTENSION name add_drop opt_procedural LANGUAGE name
n->objname = list_make1(makeString($7));
$$ = (Node *)n;
}
- | ALTER EXTENSION name add_drop OPERATOR any_operator oper_argtypes
+ | ALTER EXTENSION name add_drop OPERATOR operator_with_argtypes
{
AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt);
n->extname = $3;
n->action = $4;
n->objtype = OBJECT_OPERATOR;
- n->objname = $6;
- n->objargs = $7;
+ n->objname = $6->objname;
+ n->objargs = $6->objargs;
$$ = (Node *)n;
}
| ALTER EXTENSION name add_drop OPERATOR CLASS any_name USING access_method
n->order_family = $4;
$$ = (Node *) n;
}
- | OPERATOR Iconst any_operator oper_argtypes opclass_purpose
+ | OPERATOR Iconst operator_with_argtypes opclass_purpose
opt_recheck
{
CreateOpClassItem *n = makeNode(CreateOpClassItem);
n->itemtype = OPCLASS_ITEM_OPERATOR;
- n->name = $3;
- n->args = $4;
+ n->name = $3->objname;
+ n->args = $3->objargs;
n->number = $2;
- n->order_family = $5;
+ n->order_family = $4;
$$ = (Node *) n;
}
| FUNCTION Iconst function_with_argtypes
{
CreateOpClassItem *n = makeNode(CreateOpClassItem);
n->itemtype = OPCLASS_ITEM_FUNCTION;
- n->name = $3->funcname;
- n->args = $3->funcargs;
+ n->name = $3->objname;
+ n->args = $3->objargs;
n->number = $2;
$$ = (Node *) n;
}
{
CreateOpClassItem *n = makeNode(CreateOpClassItem);
n->itemtype = OPCLASS_ITEM_FUNCTION;
- n->name = $6->funcname;
- n->args = $6->funcargs;
+ n->name = $6->objname;
+ n->args = $6->objargs;
n->number = $2;
n->class_args = $4;
$$ = (Node *) n;
{
CommentStmt *n = makeNode(CommentStmt);
n->objtype = OBJECT_AGGREGATE;
- n->objname = $4->funcname;
- n->objargs = $4->funcargs;
+ n->objname = $4->objname;
+ n->objargs = $4->objargs;
n->comment = $6;
$$ = (Node *) n;
}
{
CommentStmt *n = makeNode(CommentStmt);
n->objtype = OBJECT_FUNCTION;
- n->objname = $4->funcname;
- n->objargs = $4->funcargs;
+ n->objname = $4->objname;
+ n->objargs = $4->objargs;
n->comment = $6;
$$ = (Node *) n;
}
- | COMMENT ON OPERATOR any_operator oper_argtypes IS comment_text
+ | COMMENT ON OPERATOR operator_with_argtypes IS comment_text
{
CommentStmt *n = makeNode(CommentStmt);
n->objtype = OBJECT_OPERATOR;
- n->objname = $4;
- n->objargs = $5;
- n->comment = $7;
+ n->objname = $4->objname;
+ n->objargs = $4->objargs;
+ n->comment = $6;
$$ = (Node *) n;
}
| COMMENT ON CONSTRAINT name ON any_name IS comment_text
SecLabelStmt *n = makeNode(SecLabelStmt);
n->provider = $3;
n->objtype = OBJECT_AGGREGATE;
- n->objname = $6->funcname;
- n->objargs = $6->funcargs;
+ n->objname = $6->objname;
+ n->objargs = $6->objargs;
n->label = $8;
$$ = (Node *) n;
}
SecLabelStmt *n = makeNode(SecLabelStmt);
n->provider = $3;
n->objtype = OBJECT_FUNCTION;
- n->objname = $6->funcname;
- n->objargs = $6->funcargs;
+ n->objname = $6->objname;
+ n->objargs = $6->objargs;
n->label = $8;
$$ = (Node *) n;
}
function_with_argtypes:
func_name func_args
{
- FuncWithArgs *n = makeNode(FuncWithArgs);
- n->funcname = $1;
- n->funcargs = extractArgTypes($2);
+ ObjectWithArgs *n = makeNode(ObjectWithArgs);
+ n->objname = $1;
+ n->objargs = extractArgTypes($2);
$$ = n;
}
;
aggregate_with_argtypes:
func_name aggr_args
{
- FuncWithArgs *n = makeNode(FuncWithArgs);
- n->funcname = $1;
- n->funcargs = extractAggrArgTypes($2);
+ ObjectWithArgs *n = makeNode(ObjectWithArgs);
+ n->objname = $1;
+ n->objargs = extractAggrArgTypes($2);
$$ = n;
}
;
{
DropStmt *n = makeNode(DropStmt);
n->removeType = OBJECT_FUNCTION;
- n->objects = list_make1($3->funcname);
- n->arguments = list_make1($3->funcargs);
+ n->objects = list_make1($3->objname);
+ n->arguments = list_make1($3->objargs);
n->behavior = $4;
n->missing_ok = false;
n->concurrent = false;
{
DropStmt *n = makeNode(DropStmt);
n->removeType = OBJECT_FUNCTION;
- n->objects = list_make1($5->funcname);
- n->arguments = list_make1($5->funcargs);
+ n->objects = list_make1($5->objname);
+ n->arguments = list_make1($5->objargs);
n->behavior = $6;
n->missing_ok = true;
n->concurrent = false;
{
DropStmt *n = makeNode(DropStmt);
n->removeType = OBJECT_AGGREGATE;
- n->objects = list_make1($3->funcname);
- n->arguments = list_make1($3->funcargs);
+ n->objects = list_make1($3->objname);
+ n->arguments = list_make1($3->objargs);
n->behavior = $4;
n->missing_ok = false;
n->concurrent = false;
{
DropStmt *n = makeNode(DropStmt);
n->removeType = OBJECT_AGGREGATE;
- n->objects = list_make1($5->funcname);
- n->arguments = list_make1($5->funcargs);
+ n->objects = list_make1($5->objname);
+ n->arguments = list_make1($5->objargs);
n->behavior = $6;
n->missing_ok = true;
n->concurrent = false;
;
RemoveOperStmt:
- DROP OPERATOR any_operator oper_argtypes opt_drop_behavior
+ DROP OPERATOR operator_with_argtypes opt_drop_behavior
{
DropStmt *n = makeNode(DropStmt);
n->removeType = OBJECT_OPERATOR;
- n->objects = list_make1($3);
- n->arguments = list_make1($4);
- n->behavior = $5;
+ n->objects = list_make1($3->objname);
+ n->arguments = list_make1($3->objargs);
+ n->behavior = $4;
n->missing_ok = false;
n->concurrent = false;
$$ = (Node *)n;
}
- | DROP OPERATOR IF_P EXISTS any_operator oper_argtypes opt_drop_behavior
+ | DROP OPERATOR IF_P EXISTS operator_with_argtypes opt_drop_behavior
{
DropStmt *n = makeNode(DropStmt);
n->removeType = OBJECT_OPERATOR;
- n->objects = list_make1($5);
- n->arguments = list_make1($6);
- n->behavior = $7;
+ n->objects = list_make1($5->objname);
+ n->arguments = list_make1($5->objargs);
+ n->behavior = $6;
n->missing_ok = true;
n->concurrent = false;
$$ = (Node *)n;
{ $$ = lcons(makeString($1), $3); }
;
+operator_with_argtypes:
+ any_operator oper_argtypes
+ {
+ ObjectWithArgs *n = makeNode(ObjectWithArgs);
+ n->objname = $1;
+ n->objargs = $2;
+ $$ = n;
+ }
+ ;
+
/*****************************************************************************
*
* DO <anonymous code block> [ LANGUAGE language ]
{
RenameStmt *n = makeNode(RenameStmt);
n->renameType = OBJECT_AGGREGATE;
- n->object = $3->funcname;
- n->objarg = $3->funcargs;
+ n->object = $3->objname;
+ n->objarg = $3->objargs;
n->newname = $6;
n->missing_ok = false;
$$ = (Node *)n;
{
RenameStmt *n = makeNode(RenameStmt);
n->renameType = OBJECT_FUNCTION;
- n->object = $3->funcname;
- n->objarg = $3->funcargs;
+ n->object = $3->objname;
+ n->objarg = $3->objargs;
n->newname = $6;
n->missing_ok = false;
$$ = (Node *)n;
AlterObjectDependsStmt *n = makeNode(AlterObjectDependsStmt);
n->objectType = OBJECT_FUNCTION;
n->relation = NULL;
- n->objname = $3->funcname;
- n->objargs = $3->funcargs;
+ n->objname = $3->objname;
+ n->objargs = $3->objargs;
n->extname = makeString($7);
$$ = (Node *)n;
}
{
AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt);
n->objectType = OBJECT_AGGREGATE;
- n->object = $3->funcname;
- n->objarg = $3->funcargs;
+ n->object = $3->objname;
+ n->objarg = $3->objargs;
n->newschema = $6;
n->missing_ok = false;
$$ = (Node *)n;
{
AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt);
n->objectType = OBJECT_FUNCTION;
- n->object = $3->funcname;
- n->objarg = $3->funcargs;
+ n->object = $3->objname;
+ n->objarg = $3->objargs;
n->newschema = $6;
n->missing_ok = false;
$$ = (Node *)n;
}
- | ALTER OPERATOR any_operator oper_argtypes SET SCHEMA name
+ | ALTER OPERATOR operator_with_argtypes SET SCHEMA name
{
AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt);
n->objectType = OBJECT_OPERATOR;
- n->object = $3;
- n->objarg = $4;
- n->newschema = $7;
+ n->object = $3->objname;
+ n->objarg = $3->objargs;
+ n->newschema = $6;
n->missing_ok = false;
$$ = (Node *)n;
}
*****************************************************************************/
AlterOperatorStmt:
- ALTER OPERATOR any_operator oper_argtypes SET '(' operator_def_list ')'
+ ALTER OPERATOR operator_with_argtypes SET '(' operator_def_list ')'
{
AlterOperatorStmt *n = makeNode(AlterOperatorStmt);
- n->opername = $3;
- n->operargs = $4;
- n->options = $7;
+ n->opername = $3->objname;
+ n->operargs = $3->objargs;
+ n->options = $6;
$$ = (Node *)n;
}
;
{
AlterOwnerStmt *n = makeNode(AlterOwnerStmt);
n->objectType = OBJECT_AGGREGATE;
- n->object = $3->funcname;
- n->objarg = $3->funcargs;
+ n->object = $3->objname;
+ n->objarg = $3->objargs;
n->newowner = $6;
$$ = (Node *)n;
}
{
AlterOwnerStmt *n = makeNode(AlterOwnerStmt);
n->objectType = OBJECT_FUNCTION;
- n->object = $3->funcname;
- n->objarg = $3->funcargs;
+ n->object = $3->objname;
+ n->objarg = $3->objargs;
n->newowner = $6;
$$ = (Node *)n;
}
n->newowner = $7;
$$ = (Node *)n;
}
- | ALTER OPERATOR any_operator oper_argtypes OWNER TO RoleSpec
+ | ALTER OPERATOR operator_with_argtypes OWNER TO RoleSpec
{
AlterOwnerStmt *n = makeNode(AlterOwnerStmt);
n->objectType = OBJECT_OPERATOR;
- n->object = $3;
- n->objarg = $4;
- n->newowner = $7;
+ n->object = $3->objname;
+ n->objarg = $3->objargs;
+ n->newowner = $6;
$$ = (Node *)n;
}
| ALTER OPERATOR CLASS any_name USING access_method OWNER TO RoleSpec