diff options
author | Robert Haas <rhaas@postgresql.org> | 2015-05-07 11:00:47 -0400 |
---|---|---|
committer | Robert Haas <rhaas@postgresql.org> | 2015-05-07 11:13:55 -0400 |
commit | 32c50af4cf595b609878c160db67bef8ceaaa3c8 (patch) | |
tree | 5c1895a53c4e2f1a07b1da36e2a4172c49e6e8ba | |
parent | 43ed06816f8d9c591ca767a19d555044648cb8a2 (diff) | |
download | postgresql-32c50af4cf595b609878c160db67bef8ceaaa3c8.tar.gz postgresql-32c50af4cf595b609878c160db67bef8ceaaa3c8.zip |
Fix incorrect math in DetermineSafeOldestOffset.
The old formula didn't have enough parentheses, so it would do the wrong
thing, and it used / rather than % to find a remainder. The effect of
these oversights is that the stop point chosen by the logic introduced in
commit b69bf30b9bfacafc733a9ba77c9587cf54d06c0c might be rather
meaningless.
Thomas Munro, reviewed by Kevin Grittner, with a whitespace tweak by me.
-rw-r--r-- | src/backend/access/transam/multixact.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/backend/access/transam/multixact.c b/src/backend/access/transam/multixact.c index c32f61e2d99..e3a94144cc8 100644 --- a/src/backend/access/transam/multixact.c +++ b/src/backend/access/transam/multixact.c @@ -2514,7 +2514,8 @@ DetermineSafeOldestOffset(MultiXactId oldestMXact) */ oldestOffset = find_multixact_start(oldestMXact); /* move back to start of the corresponding segment */ - oldestOffset -= oldestOffset / MULTIXACT_MEMBERS_PER_PAGE * SLRU_PAGES_PER_SEGMENT; + oldestOffset -= oldestOffset % + (MULTIXACT_MEMBERS_PER_PAGE * SLRU_PAGES_PER_SEGMENT); LWLockAcquire(MultiXactGenLock, LW_EXCLUSIVE); /* always leave one segment before the wraparound point */ |