diff options
author | Amit Kapila <akapila@postgresql.org> | 2021-03-30 10:34:43 +0530 |
---|---|---|
committer | Amit Kapila <akapila@postgresql.org> | 2021-03-30 10:34:43 +0530 |
commit | f64ea6dc5c8ccaec9a3d3d39695ca261febb6883 (patch) | |
tree | 6fd006f6239df0b955d390f27189ffbd68b8df05 /doc/src | |
parent | bc2797ebb14bae663da1ee7845774dd98716c0d0 (diff) | |
download | postgresql-f64ea6dc5c8ccaec9a3d3d39695ca261febb6883.tar.gz postgresql-f64ea6dc5c8ccaec9a3d3d39695ca261febb6883.zip |
Add a xid argument to the filter_prepare callback for output plugins.
Along with gid, this provides a different way to identify the transaction.
The users that use xid in some way to prepare the transactions can use it
to filter prepare transactions. The later commands COMMIT PREPARED or
ROLLBACK PREPARED carries both identifiers, providing an output plugin the
choice of what to use.
Author: Markus Wanner
Reviewed-by: Vignesh C, Amit Kapila
Discussion: https://postgr.es/m/ee280000-7355-c4dc-e47b-2436e7be959c@enterprisedb.com
Diffstat (limited to 'doc/src')
-rw-r--r-- | doc/src/sgml/logicaldecoding.sgml | 29 |
1 files changed, 18 insertions, 11 deletions
diff --git a/doc/src/sgml/logicaldecoding.sgml b/doc/src/sgml/logicaldecoding.sgml index 80eb96d609a..da23f89ca32 100644 --- a/doc/src/sgml/logicaldecoding.sgml +++ b/doc/src/sgml/logicaldecoding.sgml @@ -794,20 +794,25 @@ typedef void (*LogicalDecodeMessageCB) (struct LogicalDecodingContext *ctx, <command>COMMIT PREPARED</command> time. To signal that decoding should be skipped, return <literal>true</literal>; <literal>false</literal> otherwise. When the callback is not - defined, <literal>false</literal> is assumed (i.e. nothing is - filtered). + defined, <literal>false</literal> is assumed (i.e. no filtering, all + transactions using two-phase commit are decoded in two phases as well). <programlisting> typedef bool (*LogicalDecodeFilterPrepareCB) (struct LogicalDecodingContext *ctx, + TransactionId xid, const char *gid); </programlisting> - The <parameter>ctx</parameter> parameter has the same contents as for the - other callbacks. The <parameter>gid</parameter> is the identifier that later - identifies this transaction for <command>COMMIT PREPARED</command> or - <command>ROLLBACK PREPARED</command>. + The <parameter>ctx</parameter> parameter has the same contents as for + the other callbacks. The parameters <parameter>xid</parameter> + and <parameter>gid</parameter> provide two different ways to identify + the transaction. The later <command>COMMIT PREPARED</command> or + <command>ROLLBACK PREPARED</command> carries both identifiers, + providing an output plugin the choice of what to use. </para> <para> - The callback has to provide the same static answer for a given - <parameter>gid</parameter> every time it is called. + The callback may be invoked multiple times per transaction to decode + and must provide the same static answer for a given pair of + <parameter>xid</parameter> and <parameter>gid</parameter> every time + it is called. </para> </sect3> @@ -1219,9 +1224,11 @@ stream_commit_cb(...); <-- commit of the streamed transaction </para> <para> - Optionally the output plugin can specify a name pattern in the - <function>filter_prepare_cb</function> and transactions with gid containing - that name pattern will not be decoded as a two-phase commit transaction. + Optionally the output plugin can define filtering rules via + <function>filter_prepare_cb</function> to decode only specific transaction + in two phases. This can be achieved by pattern matching on the + <parameter>gid</parameter> or via lookups using the + <parameter>xid</parameter>. </para> <para> |