diff options
author | Robert Haas <rhaas@postgresql.org> | 2011-07-07 15:05:21 -0400 |
---|---|---|
committer | Robert Haas <rhaas@postgresql.org> | 2011-07-07 15:09:17 -0400 |
commit | a392b5247870da806e511ae2aadb0464509f7afe (patch) | |
tree | 9e567dc378f17ed69899ad2f8c048d8f5b08cd37 | |
parent | ec1339ea5cb591da53ad7584ffc29e120f6bf74f (diff) | |
download | postgresql-a392b5247870da806e511ae2aadb0464509f7afe.tar.gz postgresql-a392b5247870da806e511ae2aadb0464509f7afe.zip |
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
-rw-r--r-- | src/backend/storage/lmgr/predicate.c | 8 |
1 files changed, 7 insertions, 1 deletions
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) |