On Wednesday, July 14, 2021 9:30 PM Ajin Cherian <itsa...@gmail.com> wrote: > I've had to rebase the patch after a recent commit by Amit Kapila of > supporting > two-phase commits in pub-sub [1]. > Also I've modified the patch to also skip replicating empty prepared > transactions. Do let me know if you have any comments. Hi
I started to test this patch but will give you some really minor quick feedbacks. (1) pg_logical_slot_get_binary_changes() params. Technically, looks better to have proto_version 3 & two_phase option for the function to test empty prepare ? I felt proto_version 1 doesn't support 2PC. [1] says "The following messages (Begin Prepare, Prepare, Commit Prepared, Rollback Prepared) are available since protocol version 3." Then, if the test wants to skip empty *prepares*, I suggest to update the proto_version and set two_phase 'on'. +############################## +# Test empty prepares +############################## ... +# peek at the contents of the slot +$result = $node_publisher->safe_psql( + 'postgres', qq( + SELECT get_byte(data, 0) + FROM pg_logical_slot_get_binary_changes('tap_sub', NULL, NULL, + 'proto_version', '1', + 'publication_names', 'tap_pub') +)); (2) The following sentences may start with a lowercase letter. There are other similar codes for this. + elog(DEBUG1, "Skipping replication of an empty transaction"); [1] - https://www.postgresql.org/docs/devel/protocol-logicalrep-message-formats.html Best Regards, Takamichi Osumi