Skip to content

Commit 791e997

Browse files
committed
heap_destroy () releases dirty buffers of a relation to be
destroyed.
1 parent cbac986 commit 791e997

File tree

1 file changed

+12
-2
lines changed

1 file changed

+12
-2
lines changed

src/backend/catalog/heap.c

Lines changed: 12 additions & 2 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.10 1997/01/01 06:01:16 momjian Exp $
10+
* $Header: /cvsroot/pgsql/src/backend/catalog/heap.c,v 1.11 1997/01/14 05:38:23 vadim Exp $
1111
*
1212
* INTERFACE ROUTINES
1313
* heap_creatr() - Create an uncataloged heap relation
@@ -1233,6 +1233,8 @@ heap_destroy(char *relname)
12331233
rdesc = heap_openr(relname);
12341234
if (rdesc == NULL)
12351235
elog(WARN,"Relation %s Does Not Exist!", relname);
1236+
1237+
RelationSetLockForWrite(rdesc);
12361238

12371239
/* ----------------
12381240
* prevent deletion of system relations
@@ -1285,6 +1287,11 @@ heap_destroy(char *relname)
12851287
*/
12861288
DeletePgRelationTuple(rdesc);
12871289

1290+
/*
1291+
* release dirty buffers of this relation
1292+
*/
1293+
ReleaseRelationBuffers (rdesc);
1294+
12881295
/* ----------------
12891296
* flush the relation from the relcache
12901297
* ----------------
@@ -1299,6 +1306,9 @@ heap_destroy(char *relname)
12991306
if(rdesc->rd_istemp) {
13001307
rdesc->rd_tmpunlinked = TRUE;
13011308
}
1309+
1310+
RelationUnsetLockForWrite(rdesc);
1311+
13021312
heap_close(rdesc);
13031313
}
13041314

@@ -1311,7 +1321,7 @@ heap_destroy(char *relname)
13111321
void
13121322
heap_destroyr(Relation rdesc)
13131323
{
1314-
ReleaseTmpRelBuffers(rdesc);
1324+
ReleaseRelationBuffers(rdesc);
13151325
(void) smgrunlink(rdesc->rd_rel->relsmgr, rdesc);
13161326
if(rdesc->rd_istemp) {
13171327
rdesc->rd_tmpunlinked = TRUE;

0 commit comments

Comments
 (0)