diff --git a/src/backend/commands/alter.c b/src/backend/commands/alter.c index 178c979..47c8869 100644 --- a/src/backend/commands/alter.c +++ b/src/backend/commands/alter.c @@ -230,7 +230,7 @@ AlterObjectRename_internal(Relation rel, Oid objectId, const char *new_name) Form_pg_proc proc = (Form_pg_proc) GETSTRUCT(oldtup); IsThereFunctionInNamespace(new_name, proc->pronargs, - proc->proargtypes, proc->pronamespace); + &proc->proargtypes, proc->pronamespace); } else if (classId == CollationRelationId) { @@ -609,7 +609,7 @@ AlterObjectNamespace_internal(Relation rel, Oid objid, Oid nspOid) Form_pg_proc proc = (Form_pg_proc) GETSTRUCT(tup); IsThereFunctionInNamespace(NameStr(proc->proname), proc->pronargs, - proc->proargtypes, nspOid); + &proc->proargtypes, nspOid); } else if (classId == CollationRelationId) { diff --git a/src/backend/commands/functioncmds.c b/src/backend/commands/functioncmds.c index 38187a8..c776758 100644 --- a/src/backend/commands/functioncmds.c +++ b/src/backend/commands/functioncmds.c @@ -1626,18 +1626,18 @@ DropCastById(Oid castOid) */ void IsThereFunctionInNamespace(const char *proname, int pronargs, - oidvector proargtypes, Oid nspOid) + oidvector *proargtypes, Oid nspOid) { /* check for duplicate name (more friendly than unique-index failure) */ if (SearchSysCacheExists3(PROCNAMEARGSNSP, CStringGetDatum(proname), - PointerGetDatum(&proargtypes), + PointerGetDatum(proargtypes), ObjectIdGetDatum(nspOid))) ereport(ERROR, (errcode(ERRCODE_DUPLICATE_FUNCTION), errmsg("function %s already exists in schema \"%s\"", funcname_signature_string(proname, pronargs, - NIL, proargtypes.values), + NIL, proargtypes->values), get_namespace_name(nspOid)))); } diff --git a/src/include/commands/defrem.h b/src/include/commands/defrem.h index 01d165f..fa9f41f 100644 --- a/src/include/commands/defrem.h +++ b/src/include/commands/defrem.h @@ -50,7 +50,7 @@ extern Oid AlterFunction(AlterFunctionStmt *stmt); extern Oid CreateCast(CreateCastStmt *stmt); extern void DropCastById(Oid castOid); extern void IsThereFunctionInNamespace(const char *proname, int pronargs, - oidvector proargtypes, Oid nspOid); + oidvector *proargtypes, Oid nspOid); extern void ExecuteDoStmt(DoStmt *stmt); extern Oid get_cast_oid(Oid sourcetypeid, Oid targettypeid, bool missing_ok);