aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorNoah Misch <noah@leadboat.com>2013-06-12 19:50:37 -0400
committerNoah Misch <noah@leadboat.com>2013-06-12 19:50:37 -0400
commit813895e4acfa646c6c0405a0a8c5d05637f42865 (patch)
tree435a5ec48158d85c58f357c516e59e777632e466 /src
parentfb435f40d5e34f85076a0af56b2f3bf7b86122b8 (diff)
downloadpostgresql-813895e4acfa646c6c0405a0a8c5d05637f42865.tar.gz
postgresql-813895e4acfa646c6c0405a0a8c5d05637f42865.zip
Don't pass oidvector by value.
Since the structure ends with a flexible array, doing so truncates any vector having more than one element. New in 9.3, so no back-patch.
Diffstat (limited to 'src')
-rw-r--r--src/backend/commands/alter.c4
-rw-r--r--src/backend/commands/functioncmds.c6
-rw-r--r--src/include/commands/defrem.h2
3 files changed, 6 insertions, 6 deletions
diff --git a/src/backend/commands/alter.c b/src/backend/commands/alter.c
index bb6c1a46606..b62ec70e20f 100644
--- a/src/backend/commands/alter.c
+++ b/src/backend/commands/alter.c
@@ -231,7 +231,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)
{
@@ -611,7 +611,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 38187a837c6..c776758b51f 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 01d165fb794..fa9f41f88f0 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);