mirror of
https://github.com/postgres/postgres.git
synced 2025-10-25 13:17:41 +03:00
Revert "Logical decoding of sequences"
This reverts a sequence of commits, implementing features related to logical decoding and replication of sequences: -0da92dc530-80901b3291-b779d7d8fd-d5ed9da41d-a180c2b34d-75b1521dae-2d2232933b-002c9dd97a-05843b1aa4The implementation has issues, mostly due to combining transactional and non-transactional behavior of sequences. It's not clear how this could be fixed, but it'll require reworking significant part of the patch. Discussion: https://postgr.es/m/95345a19-d508-63d1-860a-f5c2f41e8d40@enterprisedb.com
This commit is contained in:
@@ -458,7 +458,6 @@ typedef struct OutputPluginCallbacks
|
||||
LogicalDecodeTruncateCB truncate_cb;
|
||||
LogicalDecodeCommitCB commit_cb;
|
||||
LogicalDecodeMessageCB message_cb;
|
||||
LogicalDecodeSequenceCB sequence_cb;
|
||||
LogicalDecodeFilterByOriginCB filter_by_origin_cb;
|
||||
LogicalDecodeShutdownCB shutdown_cb;
|
||||
LogicalDecodeFilterPrepareCB filter_prepare_cb;
|
||||
@@ -473,7 +472,6 @@ typedef struct OutputPluginCallbacks
|
||||
LogicalDecodeStreamCommitCB stream_commit_cb;
|
||||
LogicalDecodeStreamChangeCB stream_change_cb;
|
||||
LogicalDecodeStreamMessageCB stream_message_cb;
|
||||
LogicalDecodeStreamSequenceCB stream_sequence_cb;
|
||||
LogicalDecodeStreamTruncateCB stream_truncate_cb;
|
||||
} OutputPluginCallbacks;
|
||||
|
||||
@@ -483,11 +481,9 @@ typedef void (*LogicalOutputPluginInit) (struct OutputPluginCallbacks *cb);
|
||||
and <function>commit_cb</function> callbacks are required,
|
||||
while <function>startup_cb</function>,
|
||||
<function>filter_by_origin_cb</function>, <function>truncate_cb</function>,
|
||||
<function>sequence_cb</function>, and <function>shutdown_cb</function> are
|
||||
optional. If <function>truncate_cb</function> is not set but a
|
||||
and <function>shutdown_cb</function> are optional.
|
||||
If <function>truncate_cb</function> is not set but a
|
||||
<command>TRUNCATE</command> is to be decoded, the action will be ignored.
|
||||
Similarly, if <function>sequence_cb</function> is not set and a sequence
|
||||
change is to be decoded, the action will be ignored.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
@@ -496,8 +492,7 @@ typedef void (*LogicalOutputPluginInit) (struct OutputPluginCallbacks *cb);
|
||||
<function>stream_stop_cb</function>, <function>stream_abort_cb</function>,
|
||||
<function>stream_commit_cb</function>, <function>stream_change_cb</function>,
|
||||
and <function>stream_prepare_cb</function>
|
||||
are required, while <function>stream_message_cb</function>,
|
||||
<function>stream_sequence_cb</function>, and
|
||||
are required, while <function>stream_message_cb</function> and
|
||||
<function>stream_truncate_cb</function> are optional.
|
||||
</para>
|
||||
|
||||
@@ -813,35 +808,6 @@ typedef void (*LogicalDecodeMessageCB) (struct LogicalDecodingContext *ctx,
|
||||
</para>
|
||||
</sect3>
|
||||
|
||||
<sect3 id="logicaldecoding-output-plugin-sequence">
|
||||
<title>Sequence Callback</title>
|
||||
|
||||
<para>
|
||||
The optional <function>sequence_cb</function> callback is called for
|
||||
actions that update a sequence value.
|
||||
<programlisting>
|
||||
typedef void (*LogicalDecodeSequenceCB) (struct LogicalDecodingContext *ctx,
|
||||
ReorderBufferTXN *txn,
|
||||
XLogRecPtr sequence_lsn,
|
||||
Relation rel,
|
||||
bool transactional,
|
||||
int64 last_value,
|
||||
int64 log_cnt,
|
||||
bool is_called);
|
||||
</programlisting>
|
||||
The <parameter>txn</parameter> parameter contains meta information about
|
||||
the transaction the sequence change is part of. Note however that for
|
||||
non-transactional increments, the transaction may be either NULL or not
|
||||
NULL, depending on if the transaction already has an XID assigned.
|
||||
The <parameter>sequence_lsn</parameter> has the WAL location of the
|
||||
sequence update. <parameter>transactional</parameter> says if the
|
||||
sequence has to be replayed as part of the transaction or directly.
|
||||
|
||||
The <parameter>last_value</parameter>, <parameter>log_cnt</parameter> and
|
||||
<parameter>is_called</parameter> parameters describe the sequence change.
|
||||
</para>
|
||||
</sect3>
|
||||
|
||||
<sect3 id="logicaldecoding-output-plugin-filter-prepare">
|
||||
<title>Prepare Filter Callback</title>
|
||||
|
||||
@@ -1051,26 +1017,6 @@ typedef void (*LogicalDecodeStreamMessageCB) (struct LogicalDecodingContext *ctx
|
||||
</para>
|
||||
</sect3>
|
||||
|
||||
<sect3 id="logicaldecoding-output-plugin-stream-sequence">
|
||||
<title>Stream Sequence Callback</title>
|
||||
<para>
|
||||
The optional <function>stream_sequence_cb</function> callback is called
|
||||
for actions that change a sequence in a block of streamed changes
|
||||
(demarcated by <function>stream_start_cb</function> and
|
||||
<function>stream_stop_cb</function> calls).
|
||||
<programlisting>
|
||||
typedef void (*LogicalDecodeStreamSequenceCB) (struct LogicalDecodingContext *ctx,
|
||||
ReorderBufferTXN *txn,
|
||||
XLogRecPtr sequence_lsn,
|
||||
Relation rel,
|
||||
bool transactional,
|
||||
int64 last_value,
|
||||
int64 log_cnt,
|
||||
bool is_called);
|
||||
</programlisting>
|
||||
</para>
|
||||
</sect3>
|
||||
|
||||
<sect3 id="logicaldecoding-output-plugin-stream-truncate">
|
||||
<title>Stream Truncate Callback</title>
|
||||
<para>
|
||||
@@ -1251,9 +1197,8 @@ OutputPluginWrite(ctx, true);
|
||||
in-progress transactions. There are multiple required streaming callbacks
|
||||
(<function>stream_start_cb</function>, <function>stream_stop_cb</function>,
|
||||
<function>stream_abort_cb</function>, <function>stream_commit_cb</function>
|
||||
and <function>stream_change_cb</function>) and multiple optional callbacks
|
||||
(<function>stream_message_cb</function>, <function>stream_sequence_cb</function>,
|
||||
and <function>stream_truncate_cb</function>).
|
||||
and <function>stream_change_cb</function>) and two optional callbacks
|
||||
(<function>stream_message_cb</function> and <function>stream_truncate_cb</function>).
|
||||
Also, if streaming of two-phase commands is to be supported, then additional
|
||||
callbacks must be provided. (See <xref linkend="logicaldecoding-two-phase-commits"/>
|
||||
for details).
|
||||
|
||||
Reference in New Issue
Block a user