pgsql: Extend the logical decoding output plugin API with stream method

From: Amit Kapila <akapila(at)postgresql(dot)org>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: Extend the logical decoding output plugin API with stream method
Date: 2020-07-28 02:46:30
Message-ID: E1k0FdO-0005sH-Gk@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Extend the logical decoding output plugin API with stream methods.

This adds seven methods to the output plugin API, adding support for
streaming changes of large in-progress transactions.

* stream_start
* stream_stop
* stream_abort
* stream_commit
* stream_change
* stream_message
* stream_truncate

Most of this is a simple extension of the existing methods, with
the semantic difference that the transaction (or subtransaction)
is incomplete and may be aborted later (which is something the
regular API does not really need to deal with).

This also extends the 'test_decoding' plugin, implementing these
new stream methods.

The stream_start/start_stop are used to demarcate a chunk of changes
streamed for a particular toplevel transaction.

This commit simply adds these new APIs and the upcoming patch to "allow
the streaming mode in ReorderBuffer" will use these APIs.

Author: Tomas Vondra, Dilip Kumar, Amit Kapila
Reviewed-by: Amit Kapila
Tested-by: Neha Sharma and Mahendra Singh Thalor
Discussion: https://postgr.es/m/688b0b7f-2f6c-d827-c27b-216a8e3ea700@2ndquadrant.com

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/45fdc9738b36d1068d3ad8fdb06436d6fd14436b

Modified Files
--------------
contrib/test_decoding/test_decoding.c | 176 +++++++++++++++
doc/src/sgml/logicaldecoding.sgml | 218 +++++++++++++++++++
src/backend/replication/logical/logical.c | 351 ++++++++++++++++++++++++++++++
src/include/replication/logical.h | 5 +
src/include/replication/output_plugin.h | 69 ++++++
src/include/replication/reorderbuffer.h | 59 +++++
6 files changed, 878 insertions(+)

Browse pgsql-committers by date

  From Date Subject
Next Message David Rowley 2020-07-28 10:53:44 pgsql: Doc: Improve documentation for pg_jit_available()
Previous Message Fujii Masao 2020-07-28 02:23:42 pgsql: doc: Mention the rename of wal_keep_segments GUC in release note