Thread: pgsql: Fix off-by-one error in calculating subtrans/multixact truncatio

pgsql: Fix off-by-one error in calculating subtrans/multixact truncatio

From
Heikki Linnakangas
Date:
Fix off-by-one error in calculating subtrans/multixact truncation point.

If there were no subtransactions (or multixacts) active, we would calculate
the oldestxid == next xid. That's correct, but if next XID happens to be
on the next pg_subtrans (pg_multixact) page, the page does not exist yet,
and SimpleLruTruncate will produce an "apparent wraparound" warning. The
warning is harmless in this case, but looks very alarming to users.

Backpatch to all supported versions. Patch and analysis by Thomas Munro.

Branch
------
REL9_1_STABLE

Details
-------
http://git.postgresql.org/pg/commitdiff/e54e17aca2f57b4f0ccad3af9d85c3ab12efe668

Modified Files
--------------
src/backend/access/transam/multixact.c |   14 ++++++++++----
src/backend/access/transam/subtrans.c  |    7 ++++++-
src/include/access/multixact.h         |    1 +
3 files changed, 17 insertions(+), 5 deletions(-)