diff options
author | Tom Lane | 2007-10-22 17:29:35 +0000 |
---|---|---|
committer | Tom Lane | 2007-10-22 17:29:35 +0000 |
commit | a3a714108b46fc5169f384abaa547cec44b7e070 (patch) | |
tree | 8dcb0fe8e1dab4621cdf1b223a6bed5692b8e8f2 | |
parent | 093e149761e95d6b594c158e1e9e64125875c764 (diff) |
Be careful to get share lock on each page before computing its free space.
ITAGAKI Takahiro
-rw-r--r-- | contrib/pgstattuple/pgstattuple.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/contrib/pgstattuple/pgstattuple.c b/contrib/pgstattuple/pgstattuple.c index 83546d57c3..176f517c52 100644 --- a/contrib/pgstattuple/pgstattuple.c +++ b/contrib/pgstattuple/pgstattuple.c @@ -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++; } |