77 *
88 *
99 * IDENTIFICATION
10- * $Header: /cvsroot/pgsql/src/backend/catalog/heap.c,v 1.11 1997/01/14 05:38:23 vadim Exp $
10+ * $Header: /cvsroot/pgsql/src/backend/catalog/heap.c,v 1.12 1997/01/20 04:01:50 vadim Exp $
1111 *
1212 * INTERFACE ROUTINES
1313 *heap_creatr()- Create an uncataloged heap relation
@@ -303,14 +303,15 @@ heap_creatr(char *name,
303303 */
304304
305305rdesc -> rd_istemp = isTemp ;
306- rdesc -> rd_tmpunlinked = TRUE;/* change once table is opened */
307306
308307/* ----------------
309308 *have the storage manager create the relation.
310309 * ----------------
311310 */
312311
312+ rdesc -> rd_tmpunlinked = TRUE;/* change once table is created */
313313rdesc -> rd_fd = (File )smgrcreate (smgr ,rdesc );
314+ rdesc -> rd_tmpunlinked = FALSE;
314315
315316RelationRegisterRelation (rdesc );
316317
@@ -1302,10 +1303,11 @@ heap_destroy(char *relname)
13021303 *unlink the relation and finish up.
13031304 * ----------------
13041305 */
1305- ( void ) smgrunlink (rdesc -> rd_rel -> relsmgr , rdesc );
1306- if ( rdesc -> rd_istemp ) {
1307- rdesc -> rd_tmpunlinked = TRUE ;
1306+ if ( ! (rdesc -> rd_istemp ) || !( rdesc -> rd_tmpunlinked ) )
1307+ {
1308+ ( void ) smgrunlink ( rdesc -> rd_rel -> relsmgr , rdesc ) ;
13081309 }
1310+ rdesc -> rd_tmpunlinked = TRUE;
13091311
13101312RelationUnsetLockForWrite (rdesc );
13111313
@@ -1322,10 +1324,11 @@ void
13221324heap_destroyr (Relation rdesc )
13231325{
13241326ReleaseRelationBuffers (rdesc );
1325- ( void ) smgrunlink (rdesc -> rd_rel -> relsmgr , rdesc );
1326- if ( rdesc -> rd_istemp ) {
1327- rdesc -> rd_tmpunlinked = TRUE ;
1327+ if ( ! (rdesc -> rd_istemp ) || !( rdesc -> rd_tmpunlinked ) )
1328+ {
1329+ ( void ) smgrunlink ( rdesc -> rd_rel -> relsmgr , rdesc ) ;
13281330 }
1331+ rdesc -> rd_tmpunlinked = TRUE;
13291332heap_close (rdesc );
13301333RemoveFromTempRelList (rdesc );
13311334}