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.