diff options
author | Teodor Sigaev <teodor@sigaev.ru> | 2008-04-22 17:52:43 +0000 |
---|---|---|
committer | Teodor Sigaev <teodor@sigaev.ru> | 2008-04-22 17:52:43 +0000 |
commit | cf23b75b4dce75151df7164ed72263e66b758ae9 (patch) | |
tree | 9ff8aeaf4a1838b8f5fa7c82ee0efadd310f3598 /src/include/access/gin.h | |
parent | fc507eb0b655e40b7d8a891c920a8a1ef8a2a8b1 (diff) | |
download | postgresql-cf23b75b4dce75151df7164ed72263e66b758ae9.tar.gz postgresql-cf23b75b4dce75151df7164ed72263e66b758ae9.zip |
Fix using too many LWLocks bug, reported by Craig Ringer
<craig@postnewspapers.com.au>.
It was my mistake, I missed limitation of number of held locks, now GIN doesn't
use continiuous locks, but still hold buffers pinned to prevent interference
with vacuum's deletion algorithm.
Backpatch is needed.
Diffstat (limited to 'src/include/access/gin.h')
-rw-r--r-- | src/include/access/gin.h | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/src/include/access/gin.h b/src/include/access/gin.h index 7a343c62c49..614e8566b90 100644 --- a/src/include/access/gin.h +++ b/src/include/access/gin.h @@ -4,7 +4,7 @@ * * Copyright (c) 2006-2008, PostgreSQL Global Development Group * - * $PostgreSQL: pgsql/src/include/access/gin.h,v 1.17 2008/04/10 22:25:25 tgl Exp $ + * $PostgreSQL: pgsql/src/include/access/gin.h,v 1.18 2008/04/22 17:52:43 teodor Exp $ *-------------------------------------------------------------------------- */ @@ -356,14 +356,16 @@ typedef struct GinScanEntryData /* entry, got from extractQueryFn */ Datum entry; - /* current ItemPointer to heap, its offset in buffer and buffer */ - ItemPointerData curItem; - OffsetNumber offset; + /* Current page in posting tree */ Buffer buffer; - /* in case of Posing list */ + /* current ItemPointer to heap */ + ItemPointerData curItem; + + /* used for Posting list and one page in Posting tree */ ItemPointerData *list; - uint32 nlist; + uint32 nlist; + OffsetNumber offset; bool isFinished; bool reduceResult; |