From 7f8d244e954d1810982a727382c5ca4548f81837 Mon Sep 17 00:00:00 2001 From: Alvaro Herrera Date: Wed, 3 Nov 2010 18:13:20 -0300 Subject: [PATCH] Use getObjectDescription --- src/backend/catalog/dependency.c | 15 +++++++++++++++ src/backend/catalog/namespace.c | 12 ++++++------ src/backend/commands/conversioncmds.c | 3 +-- src/include/catalog/dependency.h | 2 ++ src/include/catalog/namespace.h | 4 ++-- 5 files changed, 26 insertions(+), 10 deletions(-) diff --git a/src/backend/catalog/dependency.c b/src/backend/catalog/dependency.c index bb14a43..f55d3f3 100644 --- a/src/backend/catalog/dependency.c +++ b/src/backend/catalog/dependency.c @@ -2706,6 +2706,21 @@ getObjectDescription(const ObjectAddress *object) } /* + * getObjectDescriptionOids: as above, except the object is specified by Oids + */ +char * +getObjectDescriptionOids(Oid classid, Oid objid) +{ + ObjectAddress address; + + address.classId = classid; + address.objectId = objid; + address.objectSubId = 0; + + return getObjectDescription(&address); +} + +/* * subroutine for getObjectDescription: describe a relation */ static void diff --git a/src/backend/catalog/namespace.c b/src/backend/catalog/namespace.c index 0a04f4d..b7b1198 100644 --- a/src/backend/catalog/namespace.c +++ b/src/backend/catalog/namespace.c @@ -2344,14 +2344,13 @@ LookupCreationNamespace(const char *nspname) * ereport(ERROR, ...) in case of any problem. */ void -CheckSetNamespace(Oid oldNspOid, Oid nspOid, - const char *name, const char *objtype) +CheckSetNamespace(Oid oldNspOid, Oid nspOid, Oid classid, Oid objid); { if (oldNspOid == nspOid) ereport(ERROR, (errcode(ERRCODE_DUPLICATE_OBJECT), - errmsg("%s \"%s\" already exists in schema \"%s\"", - objtype, name, get_namespace_name(nspOid)))); + errmsg("%s already exists in schema \"%s\"", + getObjectDescriptionOids(classid, objid), get_namespace_name(nspOid)))); /* disallow renaming into or out of temp schemas */ if (isAnyTempNamespace(nspOid) || isAnyTempNamespace(oldNspOid)) @@ -2371,8 +2370,9 @@ CheckSetNamespace(Oid oldNspOid, Oid nspOid, ObjectIdGetDatum(nspOid))) ereport(ERROR, (errcode(ERRCODE_DUPLICATE_OBJECT), - errmsg("%s \"%s\" already exists in schema \"%s\"", - objtype, name, get_namespace_name(nspOid)))); + errmsg("%s already exists in schema \"%s\"", + getObjectDescriptionOids(classid, objid), + get_namespace_name(nspOid)))); } /* diff --git a/src/backend/commands/conversioncmds.c b/src/backend/commands/conversioncmds.c index 75c06aa..7e29342 100644 --- a/src/backend/commands/conversioncmds.c +++ b/src/backend/commands/conversioncmds.c @@ -382,8 +382,7 @@ AlterConversionNamespace_internal(Relation rel, Oid conversionOid, Oid nspOid) convForm = (Form_pg_conversion) GETSTRUCT(tup); oldNspOid = convForm->connamespace; - CheckSetNamespace(oldNspOid, nspOid, - NameStr(convForm->conname), "conversion"); + CheckSetNamespace(oldNspOid, nspOid, ConversionRelationId, conversionOid); /* Superusers can always do it */ if (!superuser()) diff --git a/src/include/catalog/dependency.h b/src/include/catalog/dependency.h index ccde371..f56dd4a 100644 --- a/src/include/catalog/dependency.h +++ b/src/include/catalog/dependency.h @@ -166,6 +166,8 @@ extern ObjectClass getObjectClass(const ObjectAddress *object); extern char *getObjectDescription(const ObjectAddress *object); +extern char *getObjectDescriptionOids(Oid classid, Oid objid); + extern ObjectAddresses *new_object_addresses(void); extern void add_exact_object_address(const ObjectAddress *object, diff --git a/src/include/catalog/namespace.h b/src/include/catalog/namespace.h index 16d5763..29c9a5d 100644 --- a/src/include/catalog/namespace.h +++ b/src/include/catalog/namespace.h @@ -94,8 +94,8 @@ extern Oid LookupExplicitNamespace(const char *nspname); extern Oid get_namespace_oid(const char *nspname, bool missing_ok); extern Oid LookupCreationNamespace(const char *nspname); -extern void CheckSetNamespace(Oid oldNspOid, Oid nspOid, - const char *name, const char *objtype); +extern void CheckSetNamespace(Oid oldNspOid, Oid nspOid, Oid classid, + Oid objid); extern Oid QualifiedNameGetCreationNamespace(List *names, char **objname_p); extern RangeVar *makeRangeVarFromNameList(List *names); extern char *NameListToString(List *names); -- 1.7.1