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 ().
This commit is contained in:
parent
52052f3a19
commit
9d1879388f
@ -7,7 +7,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $Header: /cvsroot/pgsql/src/backend/catalog/heap.c,v 1.11 1997/01/14 05:38:23 vadim Exp $
|
* $Header: /cvsroot/pgsql/src/backend/catalog/heap.c,v 1.12 1997/01/20 04:01:50 vadim Exp $
|
||||||
*
|
*
|
||||||
* INTERFACE ROUTINES
|
* INTERFACE ROUTINES
|
||||||
* heap_creatr() - Create an uncataloged heap relation
|
* heap_creatr() - Create an uncataloged heap relation
|
||||||
@ -303,14 +303,15 @@ heap_creatr(char *name,
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
rdesc->rd_istemp = isTemp;
|
rdesc->rd_istemp = isTemp;
|
||||||
rdesc->rd_tmpunlinked = TRUE; /* change once table is opened */
|
|
||||||
|
|
||||||
/* ----------------
|
/* ----------------
|
||||||
* have the storage manager create the relation.
|
* have the storage manager create the relation.
|
||||||
* ----------------
|
* ----------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
rdesc->rd_tmpunlinked = TRUE; /* change once table is created */
|
||||||
rdesc->rd_fd = (File)smgrcreate(smgr, rdesc);
|
rdesc->rd_fd = (File)smgrcreate(smgr, rdesc);
|
||||||
|
rdesc->rd_tmpunlinked = FALSE;
|
||||||
|
|
||||||
RelationRegisterRelation(rdesc);
|
RelationRegisterRelation(rdesc);
|
||||||
|
|
||||||
@ -1302,10 +1303,11 @@ heap_destroy(char *relname)
|
|||||||
* unlink the relation and finish up.
|
* unlink the relation and finish up.
|
||||||
* ----------------
|
* ----------------
|
||||||
*/
|
*/
|
||||||
(void) smgrunlink(rdesc->rd_rel->relsmgr, rdesc);
|
if ( !(rdesc->rd_istemp) || !(rdesc->rd_tmpunlinked) )
|
||||||
if(rdesc->rd_istemp) {
|
{
|
||||||
rdesc->rd_tmpunlinked = TRUE;
|
(void) smgrunlink(rdesc->rd_rel->relsmgr, rdesc);
|
||||||
}
|
}
|
||||||
|
rdesc->rd_tmpunlinked = TRUE;
|
||||||
|
|
||||||
RelationUnsetLockForWrite(rdesc);
|
RelationUnsetLockForWrite(rdesc);
|
||||||
|
|
||||||
@ -1322,10 +1324,11 @@ void
|
|||||||
heap_destroyr(Relation rdesc)
|
heap_destroyr(Relation rdesc)
|
||||||
{
|
{
|
||||||
ReleaseRelationBuffers(rdesc);
|
ReleaseRelationBuffers(rdesc);
|
||||||
(void) smgrunlink(rdesc->rd_rel->relsmgr, rdesc);
|
if ( !(rdesc->rd_istemp) || !(rdesc->rd_tmpunlinked) )
|
||||||
if(rdesc->rd_istemp) {
|
{
|
||||||
rdesc->rd_tmpunlinked = TRUE;
|
(void) smgrunlink(rdesc->rd_rel->relsmgr, rdesc);
|
||||||
}
|
}
|
||||||
|
rdesc->rd_tmpunlinked = TRUE;
|
||||||
heap_close(rdesc);
|
heap_close(rdesc);
|
||||||
RemoveFromTempRelList(rdesc);
|
RemoveFromTempRelList(rdesc);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user