From 9c6cdb4d7bc85ba60a7303e401c94a96276104e1 Mon Sep 17 00:00:00 2001
From: "Vadim B. Mikheev" <vadim4o@yahoo.com>
Date: Wed, 4 Jun 1997 08:59:22 +0000
Subject: [PATCH] heap_destroy() now calls RelationForgetRelation() to really
 flush the relation from the relcache.

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

diff --git a/src/backend/catalog/heap.c b/src/backend/catalog/heap.c
index 283f59b664..81d2e1127c 100644
--- a/src/backend/catalog/heap.c
+++ b/src/backend/catalog/heap.c
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *    $Header: /cvsroot/pgsql/src/backend/catalog/heap.c,v 1.13 1997/04/02 03:41:16 vadim Exp $
+ *    $Header: /cvsroot/pgsql/src/backend/catalog/heap.c,v 1.14 1997/06/04 08:59:22 vadim Exp $
  *
  * INTERFACE ROUTINES
  *	heap_creatr()		- Create an uncataloged heap relation
@@ -1229,6 +1229,7 @@ void
 heap_destroy(char *relname)
 {
     Relation	rdesc;
+    Oid rid;
     
     /* ----------------
      *	first open the relation.  if the relation does exist,
@@ -1236,10 +1237,11 @@ heap_destroy(char *relname)
      * ----------------
      */
     rdesc = heap_openr(relname);
-    if (rdesc == NULL)
-	elog(WARN,"Relation %s Does Not Exist!", relname);
+    if ( rdesc == NULL )
+	elog (WARN, "Relation %s Does Not Exist!", relname);
 
     RelationSetLockForWrite(rdesc);
+    rid = rdesc->rd_id;
     
     /* ----------------
      *	prevent deletion of system relations
@@ -1268,7 +1270,7 @@ heap_destroy(char *relname)
      * ----------------
      */
     if (rdesc->rd_rules != NULL) {
-	RelationRemoveRules(rdesc->rd_id);
+	RelationRemoveRules(rid);
     }
     
     /* ----------------
@@ -1300,8 +1302,9 @@ heap_destroy(char *relname)
     /* ----------------
      *	flush the relation from the relcache
      * ----------------
-     */
+     * Does nothing!!! Flushing moved below.	- vadim 06/04/97
     RelationIdInvalidateRelationCacheByRelationId(rdesc->rd_id);
+     */
 
     /* ----------------
      *	unlink the relation and finish up.
@@ -1316,6 +1319,9 @@ heap_destroy(char *relname)
     RelationUnsetLockForWrite(rdesc);
 
     heap_close(rdesc);
+
+    /* ok - flush the relation from the relcache */
+    RelationForgetRelation (rid);
 }
 
 /*
-- 
2.24.1