postgres.git / summary / log / commit / refs

commit    a392b5247870da806e511ae2aadb0464509f7afe
Author:   Robert Haas <rhaas@postgresql.org>
Date:     Thu Jul 07 19:05:21 2011 +0000
First released in: 9.2.0, 9.1.0

    Adjust OLDSERXID_MAX_PAGE based on BLCKSZ.
    
    The value when BLCKSZ = 8192 is unchanged, but with larger-than-normal
    block sizes we might need to crank things back a bit, as we'll have
    more entries per page than normal in that case.
    
    Kevin Grittner


src/backend/storage/lmgr/predicate.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/backend/storage/lmgr/predicate.c b/src/backend/storage/lmgr/predicate.c index f0c8ee48c34..7f6dcbb6ca6 100644 --- a/src/backend/storage/lmgr/predicate.c +++ b/src/backend/storage/lmgr/predicate.c @@ -305,7 +305,13 @@ static SlruCtlData OldSerXidSlruCtlData; #define OLDSERXID_PAGESIZE BLCKSZ #define OLDSERXID_ENTRYSIZE sizeof(SerCommitSeqNo) #define OLDSERXID_ENTRIESPERPAGE (OLDSERXID_PAGESIZE / OLDSERXID_ENTRYSIZE) -#define OLDSERXID_MAX_PAGE (SLRU_PAGES_PER_SEGMENT * 0x10000 - 1) + +/* + * Set maximum pages based on the lesser of the number needed to track all + * transactions and the maximum that SLRU supports. + */ +#define OLDSERXID_MAX_PAGE Min(SLRU_PAGES_PER_SEGMENT * 0x10000 - 1, \ + (MaxTransactionId + 1) / OLDSERXID_ENTRIESPERPAGE - 1) #define OldSerXidNextPage(page) (((page) >= OLDSERXID_MAX_PAGE) ? 0 : (page) + 1) [parent: ec1339ea5cb5]