Extend the output plugin API to allow decoding of prepared xacts. This adds six methods to the output plugin API, adding support for streaming changes of two-phase transactions at prepare time.
* begin_prepare * filter_prepare * prepare * commit_prepared * rollback_prepared * stream_prepare Most of this is a simple extension of the existing methods, with the semantic difference that the transaction is not yet committed and maybe aborted later. Until now two-phase transactions were translated into regular transactions on the subscriber, and the GID was not forwarded to it. None of the two-phase commands were communicated to the subscriber. This patch provides the infrastructure for logical decoding plugins to be informed of two-phase commands Like PREPARE TRANSACTION, COMMIT PREPARED and ROLLBACK PREPARED commands with the corresponding GID. This also extends the 'test_decoding' plugin, implementing these new methods. This commit simply adds these new APIs and the upcoming patch to "allow the decoding at prepare time in ReorderBuffer" will use these APIs. Author: Ajin Cherian and Amit Kapila based on previous work by Nikhil Sontakke and Stas Kelvich Reviewed-by: Amit Kapila, Peter Smith, Sawada Masahiko, and Dilip Kumar Discussion: https://postgr.es/m/[email protected] https://postgr.es/m/camgcdxeqepwj3ftxwqhswbdxd2rs9jzwwsco-xbecfso6ts...@mail.gmail.com Branch ------ master Details ------- https://git.postgresql.org/pg/commitdiff/0aa8a01d04c8fe200b7a106878eebc3d0af9105c Modified Files -------------- contrib/test_decoding/test_decoding.c | 167 +++++++++++++++++ doc/src/sgml/logicaldecoding.sgml | 172 ++++++++++++++++- src/backend/replication/logical/logical.c | 297 ++++++++++++++++++++++++++++++ src/include/replication/logical.h | 6 + src/include/replication/output_plugin.h | 56 ++++++ src/include/replication/reorderbuffer.h | 41 +++++ src/tools/pgindent/typedefs.list | 12 ++ 7 files changed, 744 insertions(+), 7 deletions(-)
