mirror of
https://github.com/postgres/postgres.git
synced 2025-10-27 00:12:01 +03:00
Add prepare API support for streaming transactions in logical replication.
Commit a8fd13cab0 added support for prepared transactions to built-in
logical replication via a new option "two_phase" for a subscription. The
"two_phase" option was not allowed with the existing streaming option.
This commit permits the combination of "streaming" and "two_phase"
subscription options. It extends the pgoutput plugin and the subscriber
side code to add the prepare API for streaming transactions which will
apply the changes accumulated in the spool-file at prepare time.
Author: Peter Smith and Ajin Cherian
Reviewed-by: Vignesh C, Amit Kapila, Greg Nancarrow
Tested-By: Haiying Tang
Discussion: https://postgr.es/m/02DA5F5E-CECE-4D9C-8B4B-418077E2C010@postgrespro.ru
Discussion: https://postgr.es/m/CAMGcDxeqEpWj3fTXwqhSwBdXd2RS9jzwWscO-XbeCfso6ts3+Q@mail.gmail.com
This commit is contained in:
@@ -67,7 +67,8 @@ typedef enum LogicalRepMsgType
|
||||
LOGICAL_REP_MSG_STREAM_START = 'S',
|
||||
LOGICAL_REP_MSG_STREAM_END = 'E',
|
||||
LOGICAL_REP_MSG_STREAM_COMMIT = 'c',
|
||||
LOGICAL_REP_MSG_STREAM_ABORT = 'A'
|
||||
LOGICAL_REP_MSG_STREAM_ABORT = 'A',
|
||||
LOGICAL_REP_MSG_STREAM_PREPARE = 'p'
|
||||
} LogicalRepMsgType;
|
||||
|
||||
/*
|
||||
@@ -196,7 +197,10 @@ extern void logicalrep_write_rollback_prepared(StringInfo out, ReorderBufferTXN
|
||||
TimestampTz prepare_time);
|
||||
extern void logicalrep_read_rollback_prepared(StringInfo in,
|
||||
LogicalRepRollbackPreparedTxnData *rollback_data);
|
||||
|
||||
extern void logicalrep_write_stream_prepare(StringInfo out, ReorderBufferTXN *txn,
|
||||
XLogRecPtr prepare_lsn);
|
||||
extern void logicalrep_read_stream_prepare(StringInfo in,
|
||||
LogicalRepPreparedTxnData *prepare_data);
|
||||
|
||||
extern void logicalrep_write_origin(StringInfo out, const char *origin,
|
||||
XLogRecPtr origin_lsn);
|
||||
|
||||
Reference in New Issue
Block a user