Skip to content

Commit 9d18793

Browse files
committed
1. Setting rdesc->rd_tmpunlinked to FALSE in heap_creatr () just after
smgrcreate (). 2. Checking rdesc->rd_tmpunlinked in heap_destroy () & heap_destroyr () before calling smgrunlink ().
1 parent 52052f3 commit 9d18793

File tree

1 file changed

+11
-8
lines changed

1 file changed

+11
-8
lines changed

src/backend/catalog/heap.c

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
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

305305
rdesc->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 */
313313
rdesc->rd_fd = (File)smgrcreate(smgr, rdesc);
314+
rdesc->rd_tmpunlinked = FALSE;
314315

315316
RelationRegisterRelation(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

13101312
RelationUnsetLockForWrite(rdesc);
13111313

@@ -1322,10 +1324,11 @@ void
13221324
heap_destroyr(Relation rdesc)
13231325
{
13241326
ReleaseRelationBuffers(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;
13291332
heap_close(rdesc);
13301333
RemoveFromTempRelList(rdesc);
13311334
}

0 commit comments

Comments
 (0)