Fix off-by-one possibly leading to skipped XLOG_RUNNING_XACTS records. Since 6ef2eba3f57f1 ("Skip checkpoints, archiving on idle systems."), GetLastImportantRecPtr() is used to avoid performing superfluous checkpoints, xlog switches, running-xact records when the system is idle. Unfortunately the check concerning running-xact records had a off-by-one error, leading to such records being potentially skipped when only a single record has been inserted since the last running-xact record.
An alternative approach would have been to change GetLastImportantRecPtr()'s definition to point to the end of records, but that would make the checkpoint code more complicated. Author: Andres Freund Discussion: https://postgr.es/m/20170505012447.wsrympaxnfis6...@alap3.anarazel.de Backpatch: no, code only present in master Branch ------ master Details ------- https://git.postgresql.org/pg/commitdiff/e6c44eef55cda493c759e926cecceb92186159b8 Modified Files -------------- src/backend/postmaster/bgwriter.c | 7 +++++-- src/backend/postmaster/checkpointer.c | 3 ++- 2 files changed, 7 insertions(+), 3 deletions(-) -- Sent via pgsql-committers mailing list (pgsql-committers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-committers