From: | Amit Kapila <akapila(at)postgresql(dot)org> |
---|---|
To: | pgsql-committers(at)lists(dot)postgresql(dot)org |
Subject: | pgsql: Add option to enable two_phase commits via pg_create_logical_rep |
Date: | 2021-03-03 02:12:56 |
Message-ID: | E1lHH0S-0001lo-Rx@gemulon.postgresql.org |
Views: | Whole Thread | Raw Message | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-committers |
Add option to enable two_phase commits via pg_create_logical_replication_slot.
Commit 0aa8a01d04 extends the output plugin API to allow decoding of
prepared xacts and allowed the user to enable/disable the two-phase option
via pg_logical_slot_get_changes(). This can lead to a problem such that
the first time when it gets changes via pg_logical_slot_get_changes()
without two_phase option enabled it will not get the prepared even though
prepare is after consistent snapshot. Now next time during getting changes,
if the two_phase option is enabled it can skip prepare because by that
time start decoding point has been moved. So the user will only get commit
prepared.
Allow to enable/disable this option at the create slot time and default
will be false. It will break the existing slots which is fine in a major
release.
Author: Ajin Cherian
Reviewed-by: Amit Kapila and Vignesh C
Discussion: https://postgr.es/m/d0f60d60-133d-bf8d-bd70-47784d8fabf3@enterprisedb.com
Branch
------
master
Details
-------
https://git.postgresql.org/pg/commitdiff/19890a064ebf53dedcefed0d8339ed3d449b06e6
Modified Files
--------------
contrib/test_decoding/expected/twophase.out | 34 +++++++++++-----------
.../test_decoding/expected/twophase_snapshot.out | 6 ++--
contrib/test_decoding/expected/twophase_stream.out | 10 +++----
contrib/test_decoding/specs/twophase_snapshot.spec | 4 +--
contrib/test_decoding/sql/twophase.sql | 34 +++++++++++-----------
contrib/test_decoding/sql/twophase_stream.sql | 10 +++----
contrib/test_decoding/test_decoding.c | 12 --------
doc/src/sgml/catalogs.sgml | 10 +++++++
doc/src/sgml/func.sgml | 10 ++++---
doc/src/sgml/logicaldecoding.sgml | 19 ++++++------
src/backend/catalog/system_views.sql | 4 ++-
src/backend/replication/logical/logical.c | 12 ++++++++
src/backend/replication/slot.c | 10 ++++++-
src/backend/replication/slotfuncs.c | 14 ++++++---
src/backend/replication/walsender.c | 6 ++--
src/include/catalog/catversion.h | 2 +-
src/include/catalog/pg_proc.dat | 14 ++++-----
src/include/nodes/replnodes.h | 1 +
src/include/replication/slot.h | 7 ++++-
src/test/regress/expected/rules.out | 5 ++--
20 files changed, 131 insertions(+), 93 deletions(-)
From | Date | Subject | |
---|---|---|---|
Next Message | Michael Paquier | 2021-03-03 03:54:15 | Re: pgsql: Extend the abilities of libpq's target_session_attrs parameter. |
Previous Message | Tom Lane | 2021-03-03 01:17:57 | pgsql: Extend the abilities of libpq's target_session_attrs parameter. |