From 046848c2729ef81c25fe4f6fdc216e4f085da21d Mon Sep 17 00:00:00 2001
From: Tom Lane <tgl@sss.pgh.pa.us>
Date: Fri, 22 Dec 2000 19:21:37 +0000
Subject: [PATCH] Improve error message for case where DROP TABLE is rejected
 because table has a child table.

---
 src/backend/catalog/heap.c | 17 +++++++++++------
 1 file changed, 11 insertions(+), 6 deletions(-)

diff --git a/src/backend/catalog/heap.c b/src/backend/catalog/heap.c
index 3da6d82d4d0..b2d2566bf3f 100644
--- a/src/backend/catalog/heap.c
+++ b/src/backend/catalog/heap.c
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/catalog/heap.c,v 1.152 2000/11/16 22:30:17 tgl Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/catalog/heap.c,v 1.153 2000/12/22 19:21:37 tgl Exp $
  *
  *
  * INTERFACE ROUTINES
@@ -61,6 +61,7 @@
 #include "utils/builtins.h"
 #include "utils/catcache.h"
 #include "utils/fmgroids.h"
+#include "utils/lsyscache.h"
 #include "utils/relcache.h"
 #include "utils/syscache.h"
 #include "utils/temprel.h"
@@ -970,12 +971,16 @@ RelationRemoveInheritance(Relation relation)
 	if (HeapTupleIsValid(tuple))
 	{
 		Oid			subclass = ((Form_pg_inherits) GETSTRUCT(tuple))->inhrelid;
+		char	   *subclassname;
 
-		heap_endscan(scan);
-		heap_close(catalogRelation, RowExclusiveLock);
-
-		elog(ERROR, "Relation '%u' inherits '%s'",
-			 subclass, RelationGetRelationName(relation));
+		subclassname = get_rel_name(subclass);
+		/* Just in case get_rel_name fails... */
+		if (subclassname)
+			elog(ERROR, "Relation \"%s\" inherits from \"%s\"",
+				 subclassname, RelationGetRelationName(relation));
+		else
+			elog(ERROR, "Relation %u inherits from \"%s\"",
+				 subclass, RelationGetRelationName(relation));
 	}
 	heap_endscan(scan);
 
-- 
GitLab