OSDN Git Service

heap_destroy() now calls RelationForgetRelation() to really flush
authorVadim B. Mikheev <vadim4o@yahoo.com>
Wed, 4 Jun 1997 08:59:22 +0000 (08:59 +0000)
committerVadim B. Mikheev <vadim4o@yahoo.com>
Wed, 4 Jun 1997 08:59:22 +0000 (08:59 +0000)
the relation from the relcache.

src/backend/catalog/heap.c

index 283f59b..81d2e11 100644 (file)
@@ -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);
 }
 
 /*