Re: Decoding of two-phase xacts missing from CREATE_REPLICATION_SLOT command

Amit Kapila <amit.kapila16@gmail.com>

From: Amit Kapila <amit.kapila16@gmail.com>
To: Jeff Davis <pgsql@j-davis.com>
Cc: pgsql-hackers <pgsql-hackers@postgresql.org>, Amit Kapila <akapila@postgresql.org>, Ajin Cherian <itsajin@gmail.com>, vignesh C <vignesh21@gmail.com>, Peter Smith <smithpb2250@gmail.com>
Date: 2021-06-03T03:59:28Z
Lists: pgsql-hackers
On Thu, Jun 3, 2021 at 4:48 AM Jeff Davis <pgsql@j-davis.com> wrote:
>
> Commit 19890a064 changed pg_create_logical_replication_slot() to allow
> decoding of two-phase transactions, but did not extend the
> CREATE_REPLICATION_SLOT command to support it. Strangely, it does
> extend the CreateReplicationSlotCmd struct to add a "two_phase" field,
> but doesn't set it anywhere.
>
> There were patches[1] from around the time of the commit to support
> CREATE_REPLICATION_SLOT as well.
>
> Is there a reason to support two-phase decoding, but not with the
> replication protocol? If so, why change the CreateReplicationSlotCmd
> structure as though we will support it?
>

The idea is to support two_phase via protocol with a subscriber-side
work where we can test it as well. The code to support it via
replication protocol is present in the first patch of subscriber-side
work [1] which uses that code as well. Basically, we don't have a good
way to test it without subscriber-side work so decided to postpone it
till the corresponding work is done. I think we can remove the change
in CreateReplicationSlotCmd, that is a leftover. If we have to support
it via protocol, then at the minimum, we need to enhance
pg_recvlogical so that the same can be tested.

[1] - https://www.postgresql.org/message-id/CAHut%2BPt7wnctZpfhaLyuPA0mXDAtuw7DsMUfw3TePJLxqTArjA%40mail.gmail.com

-- 
With Regards,
Amit Kapila.



Commits

  1. Remove two_phase variable from CreateReplicationSlotCmd struct.

  2. Add option to enable two_phase commits via pg_create_logical_replication_slot.