mirror of
https://github.com/postgres/postgres.git
synced 2025-05-17 06:41:24 +03:00
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.
This commit is contained in:
parent
ba3caee843
commit
83fbd9b599
@ -2514,7 +2514,8 @@ DetermineSafeOldestOffset(MultiXactId oldestMXact)
|
|||||||
*/
|
*/
|
||||||
oldestOffset = find_multixact_start(oldestMXact);
|
oldestOffset = find_multixact_start(oldestMXact);
|
||||||
/* move back to start of the corresponding segment */
|
/* 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);
|
LWLockAcquire(MultiXactGenLock, LW_EXCLUSIVE);
|
||||||
/* always leave one segment before the wraparound point */
|
/* always leave one segment before the wraparound point */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user