• Andres Freund's avatar
    Don't use on-disk snapshots for exported logical decoding snapshot. · 56e19d93
    Andres Freund authored
    Logical decoding stores historical snapshots on disk, so that logical
    decoding can restart without having to reconstruct a snapshot from
    scratch (for which the resources are not guaranteed to be present
    anymore).  These serialized snapshots were also used when creating a
    new slot via the walsender interface, which can export a "full"
    snapshot (i.e. one that can read all tables, not just catalog ones).
    
    The problem is that the serialized snapshots are only useful for
    catalogs and not for normal user tables.  Thus the use of such a
    serialized snapshot could result in an inconsistent snapshot being
    exported, which could lead to queries returning wrong data.  This
    would only happen if logical slots are created while another logical
    slot already exists.
    
    Author: Petr Jelinek
    Reviewed-By: Andres Freund
    Discussion: https://postgr.es/m/f37e975c-908f-858e-707f-058d3b1eb214@2ndquadrant.com
    Backport: 9.4, where logical decoding was introduced.
    56e19d93
snapbuild.h 2.79 KB