Ensure to send a prepare after we detect concurrent abort during decoding.
authorAmit Kapila <akapila@postgresql.org>
Thu, 1 Apr 2021 02:27:34 +0000 (07:57 +0530)
committerAmit Kapila <akapila@postgresql.org>
Thu, 1 Apr 2021 02:27:34 +0000 (07:57 +0530)
commit4778826532a62fd6e4d3fdeef9532c943604c730
treecf96646cc16b707fa40f6ca6046e12cdcaf5c7ce
parent0d1a33438d3a88938264e12e94c22818307d2f4d
Ensure to send a prepare after we detect concurrent abort during decoding.

It is possible that while decoding a prepared transaction, it gets aborted
concurrently via a ROLLBACK PREPARED command. In that case, we were
skipping all the changes and directly sending Rollback Prepared when we
find the same in WAL. However, the downstream has no idea of the GID of
such a transaction. So, ensure to send prepare even when a concurrent
abort is detected.

Author: Ajin Cherian
Reviewed-by: Markus Wanner, Amit Kapila
Discussion: https://postgr.es/m/f82133c6-6055-b400-7922-97dae9f2b50b@enterprisedb.com
doc/src/sgml/logicaldecoding.sgml
src/backend/replication/logical/reorderbuffer.c