Thread: [COMMITTERS] pgsql: Don't use on-disk snapshots for exported logical decodingsnapsh
[COMMITTERS] pgsql: Don't use on-disk snapshots for exported logical decodingsnapsh
From
Andres Freund
Date:
Don't use on-disk snapshots for exported logical decoding snapshot. 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. Branch ------ REL9_5_STABLE Details ------- https://git.postgresql.org/pg/commitdiff/54270d7ebcdc68a3dd995435e12ffd6596976b1e Modified Files -------------- src/backend/replication/logical/logical.c | 9 ++++++--- src/backend/replication/logical/snapbuild.c | 19 ++++++++++++++----- src/include/replication/snapbuild.h | 3 ++- 3 files changed, 22 insertions(+), 9 deletions(-)