On Thu, Jun 3, 2021 at 4:48 AM Jeff Davis <pg...@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.