aboutsummaryrefslogtreecommitdiff
path: root/contrib/pgstattuple/pgstattuple.c
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2007-10-22 17:29:35 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2007-10-22 17:29:35 +0000
commit7ec280e1173c096dc7752c4633bcc11150d4c2af (patch)
tree741c2af27101383ab6b4e17c4582514dd7e7e63a /contrib/pgstattuple/pgstattuple.c
parent88ae1bd3f24d1c211be26a17e9ddef17f08c461d (diff)
downloadpostgresql-7ec280e1173c096dc7752c4633bcc11150d4c2af.tar.gz
postgresql-7ec280e1173c096dc7752c4633bcc11150d4c2af.zip
Be careful to get share lock on each page before computing its free space.
ITAGAKI Takahiro
Diffstat (limited to 'contrib/pgstattuple/pgstattuple.c')
-rw-r--r--contrib/pgstattuple/pgstattuple.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/contrib/pgstattuple/pgstattuple.c b/contrib/pgstattuple/pgstattuple.c
index e3dae875932..48194e3a6e8 100644
--- a/contrib/pgstattuple/pgstattuple.c
+++ b/contrib/pgstattuple/pgstattuple.c
@@ -1,5 +1,5 @@
/*
- * $PostgreSQL: pgsql/contrib/pgstattuple/pgstattuple.c,v 1.30 2007/09/20 17:56:30 tgl Exp $
+ * $PostgreSQL: pgsql/contrib/pgstattuple/pgstattuple.c,v 1.31 2007/10/22 17:29:35 tgl Exp $
*
* Copyright (c) 2001,2002 Tatsuo Ishii
*
@@ -291,8 +291,7 @@ pgstat_heap(Relation rel, FunctionCallInfo fcinfo)
buffer = ReadBuffer(rel, block);
LockBuffer(buffer, BUFFER_LOCK_SHARE);
stat.free_space += PageGetHeapFreeSpace((Page) BufferGetPage(buffer));
- LockBuffer(buffer, BUFFER_LOCK_UNLOCK);
- ReleaseBuffer(buffer);
+ UnlockReleaseBuffer(buffer);
block++;
}
}
@@ -301,8 +300,9 @@ pgstat_heap(Relation rel, FunctionCallInfo fcinfo)
while (block < nblocks)
{
buffer = ReadBuffer(rel, block);
+ LockBuffer(buffer, BUFFER_LOCK_SHARE);
stat.free_space += PageGetHeapFreeSpace((Page) BufferGetPage(buffer));
- ReleaseBuffer(buffer);
+ UnlockReleaseBuffer(buffer);
block++;
}