• Andres Freund's avatar
    Fix off-by-one possibly leading to skipped XLOG_RUNNING_XACTS records. · e6c44eef
    Andres Freund authored
    Since 6ef2eba3 ("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.wsrympaxnfis6ojt@alap3.anarazel.de
    Backpatch: no, code only present in master
    e6c44eef
bgwriter.c 14 KB