diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2007-10-22 17:29:35 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2007-10-22 17:29:35 +0000 |
commit | 7ec280e1173c096dc7752c4633bcc11150d4c2af (patch) | |
tree | 741c2af27101383ab6b4e17c4582514dd7e7e63a /contrib/pgstattuple/pgstattuple.c | |
parent | 88ae1bd3f24d1c211be26a17e9ddef17f08c461d (diff) | |
download | postgresql-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.c | 8 |
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++; } |