• Amit Kapila's avatar
    Avoid repeated decoding of prepared transactions after a restart. · 8bdb1332
    Amit Kapila authored
    In commit a271a1b5, we allowed decoding at prepare time and the prepare
    was decoded again if there is a restart after decoding it. It was done
    that way because we can't distinguish between the cases where we have not
    decoded the prepare because it was prior to consistent snapshot or we have
    decoded it earlier but restarted. To distinguish between these two cases,
    we have introduced an initial_consistent_point at the slot level which is
    an LSN at which we found a consistent point at the time of slot creation.
    This is also the point where we have exported a snapshot for the initial
    copy. So, prepare transaction prior to this point are sent along with
    commit prepared.
    
    This commit bumps SNAPBUILD_VERSION because of change in SnapBuild. It
    will break existing slots which is fine in a major release.
    
    Author: Ajin Cherian, based on idea by Andres Freund
    Reviewed-by: Amit Kapila and Vignesh C
    Discussion: https://postgr.es/m/d0f60d60-133d-bf8d-bd70-47784d8fabf3@enterprisedb.com
    8bdb1332
twophase.out 8.96 KB