0001-Use-getObjectDescription.patch
application/octet-stream
Filename: 0001-Use-getObjectDescription.patch
Type: application/octet-stream
Part: 0
Patch
Same data as JSON:
GET /api/v1/attachments/:id/patch
the parsed metadata as JSON — format, series position, per-file stats; never the diff bytes.
API reference →
Format: format-patch
Series: patch 0001
Subject: Use getObjectDescription
| File | + | − |
|---|---|---|
| src/backend/catalog/dependency.c | 15 | 0 |
| src/backend/catalog/namespace.c | 6 | 6 |
| src/backend/commands/conversioncmds.c | 1 | 2 |
| src/include/catalog/dependency.h | 2 | 0 |
| src/include/catalog/namespace.h | 2 | 2 |
From 7f8d244e954d1810982a727382c5ca4548f81837 Mon Sep 17 00:00:00 2001
From: Alvaro Herrera <alvherre@alvh.no-ip.org>
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