The begin_cb, change_cb
and commit_cb callbacks are required,
- while startup_cb,
- filter_by_origin_cb, truncate_cb,
+ while startup_cb, truncate_cb,
+ message_cb, filter_by_origin_cb,
and shutdown_cb are optional.
If truncate_cb is not set but a
TRUNCATE is to be decoded, the action will be ignored.
An output plugin may also define functions to support streaming of large,
in-progress transactions. The stream_start_cb,
stream_stop_cb, stream_abort_cb,
- stream_commit_cb, stream_change_cb,
- and stream_prepare_cb
+ stream_commit_cb, and stream_change_cb
are required, while stream_message_cb and
- stream_truncate_cb are optional.
+ stream_truncate_cb are optional. The
+ stream_prepare_cb is also required if the output
+ plugin also support two-phase commits.
An output plugin may also define functions to support two-phase commits,
which allows actions to be decoded on the PREPARE TRANSACTION.
The begin_prepare_cb, prepare_cb,
- stream_prepare_cb,
commit_prepared_cb and rollback_prepared_cb
callbacks are required, while filter_prepare_cb is optional.
+ The stream_prepare_cb is also required if the output plugin
+ also supports the streaming of large in-progress transactions.
Truncate Callback
- The truncate_cb callback is called for a
+ The optional truncate_cb callback is called for a
TRUNCATE command.
typedef void (*LogicalDecodeTruncateCB) (struct LogicalDecodingContext *ctx,
Stream Start Callback
- The stream_start_cb callback is called when opening
- a block of streamed changes from an in-progress transaction.
+ The required stream_start_cb callback is called when
+ opening a block of streamed changes from an in-progress transaction.
typedef void (*LogicalDecodeStreamStartCB) (struct LogicalDecodingContext *ctx,
ReorderBufferTXN *txn);
Stream Stop Callback
- The stream_stop_cb callback is called when closing
- a block of streamed changes from an in-progress transaction.
+ The required stream_stop_cb callback is called when
+ closing a block of streamed changes from an in-progress transaction.
typedef void (*LogicalDecodeStreamStopCB) (struct LogicalDecodingContext *ctx,
ReorderBufferTXN *txn);
Stream Abort Callback
- The stream_abort_cb callback is called to abort
- a previously streamed transaction.
+ The required stream_abort_cb callback is called to
+ abort a previously streamed transaction.
typedef void (*LogicalDecodeStreamAbortCB) (struct LogicalDecodingContext *ctx,
ReorderBufferTXN *txn,
Stream Prepare Callback
The stream_prepare_cb callback is called to prepare
- a previously streamed transaction as part of a two-phase commit.
+ a previously streamed transaction as part of a two-phase commit. This
+ callback is required when the output plugin supports both the streaming
+ of large in-progress transactions and two-phase commits.
typedef void (*LogicalDecodeStreamPrepareCB) (struct LogicalDecodingContext *ctx,
ReorderBufferTXN *txn,
XLogRecPtr prepare_lsn);
Stream Commit Callback
- The stream_commit_cb callback is called to commit
- a previously streamed transaction.
+ The required stream_commit_cb callback is called to
+ commit a previously streamed transaction.
typedef void (*LogicalDecodeStreamCommitCB) (struct LogicalDecodingContext *ctx,
ReorderBufferTXN *txn,
Stream Change Callback
- The stream_change_cb callback is called when sending
- a change in a block of streamed changes (demarcated by
+ The required stream_change_cb callback is called
+ when sending a change in a block of streamed changes (demarcated by
stream_start_cb and stream_stop_cb calls).
The actual changes are not displayed as the transaction can abort at a later
point in time and we don't decode changes for aborted transactions.
Stream Message Callback
- The stream_message_cb callback is called when sending
- a generic message in a block of streamed changes (demarcated by
+ The optional stream_message_cb callback is called when
+ sending a generic message in a block of streamed changes (demarcated by
stream_start_cb and stream_stop_cb calls).
The message contents for transactional messages are not displayed as the transaction
can abort at a later point in time and we don't decode changes for aborted
Stream Truncate Callback
- The stream_truncate_cb callback is called for a
- TRUNCATE command in a block of streamed changes
+ The optional stream_truncate_cb callback is called
+ for a TRUNCATE command in a block of streamed changes
(demarcated by stream_start_cb and
stream_stop_cb calls).