diff options
Diffstat (limited to 'doc/src')
-rw-r--r-- | doc/src/sgml/logicaldecoding.sgml | 23 | ||||
-rw-r--r-- | doc/src/sgml/protocol.sgml | 16 | ||||
-rw-r--r-- | doc/src/sgml/ref/pg_recvlogical.sgml | 16 |
3 files changed, 52 insertions, 3 deletions
diff --git a/doc/src/sgml/logicaldecoding.sgml b/doc/src/sgml/logicaldecoding.sgml index 5b8065901a4..985db5ca11e 100644 --- a/doc/src/sgml/logicaldecoding.sgml +++ b/doc/src/sgml/logicaldecoding.sgml @@ -144,16 +144,19 @@ postgres=# SELECT pg_drop_replication_slot('regression_slot'); </programlisting> <para> - The following example shows how logical decoding is controlled over the + The following examples shows how logical decoding is controlled over the streaming replication protocol, using the program <xref linkend="app-pgrecvlogical"/> included in the PostgreSQL distribution. This requires that client authentication is set up to allow replication connections (see <xref linkend="streaming-replication-authentication"/>) and that <varname>max_wal_senders</varname> is set sufficiently high to allow - an additional connection. + an additional connection. The second example shows how to stream two-phase + transactions. Before you use two-phase commands, you must set + <xref linkend="guc-max-prepared-transactions"/> to atleast 1. </para> <programlisting> +Example 1: $ pg_recvlogical -d postgres --slot=test --create-slot $ pg_recvlogical -d postgres --slot=test --start -f - <keycombo action="simul"><keycap>Control</keycap><keycap>Z</keycap></keycombo> @@ -164,6 +167,22 @@ table public.data: INSERT: id[integer]:4 data[text]:'4' COMMIT 693 <keycombo action="simul"><keycap>Control</keycap><keycap>C</keycap></keycombo> $ pg_recvlogical -d postgres --slot=test --drop-slot + +Example 2: +$ pg_recvlogical -d postgres --slot=test --create-slot --two-phase +$ pg_recvlogical -d postgres --slot=test --start -f - +<keycombo action="simul"><keycap>Control</keycap><keycap>Z</keycap></keycombo> +$ psql -d postgres -c "BEGIN;INSERT INTO data(data) VALUES('5');PREPARE TRANSACTION 'test';" +$ fg +BEGIN 694 +table public.data: INSERT: id[integer]:5 data[text]:'5' +PREPARE TRANSACTION 'test', txid 694 +<keycombo action="simul"><keycap>Control</keycap><keycap>Z</keycap></keycombo> +$ psql -d postgres -c "COMMIT PREPARED 'test';" +$ fg +COMMIT PREPARED 'test', txid 694 +<keycombo action="simul"><keycap>Control</keycap><keycap>C</keycap></keycombo> +$ pg_recvlogical -d postgres --slot=test --drop-slot </programlisting> <para> diff --git a/doc/src/sgml/protocol.sgml b/doc/src/sgml/protocol.sgml index 01e87617f40..a3562f3d089 100644 --- a/doc/src/sgml/protocol.sgml +++ b/doc/src/sgml/protocol.sgml @@ -1914,7 +1914,7 @@ The commands accepted in replication mode are: </varlistentry> <varlistentry id="protocol-replication-create-slot" xreflabel="CREATE_REPLICATION_SLOT"> - <term><literal>CREATE_REPLICATION_SLOT</literal> <replaceable class="parameter">slot_name</replaceable> [ <literal>TEMPORARY</literal> ] { <literal>PHYSICAL</literal> [ <literal>RESERVE_WAL</literal> ] | <literal>LOGICAL</literal> <replaceable class="parameter">output_plugin</replaceable> [ <literal>EXPORT_SNAPSHOT</literal> | <literal>NOEXPORT_SNAPSHOT</literal> | <literal>USE_SNAPSHOT</literal> ] } + <term><literal>CREATE_REPLICATION_SLOT</literal> <replaceable class="parameter">slot_name</replaceable> [ <literal>TEMPORARY</literal> ] { <literal>PHYSICAL</literal> [ <literal>RESERVE_WAL</literal> ] | <literal>LOGICAL</literal> <replaceable class="parameter">output_plugin</replaceable> [ <literal>EXPORT_SNAPSHOT</literal> | <literal>NOEXPORT_SNAPSHOT</literal> | <literal>USE_SNAPSHOT</literal> | <literal>TWO_PHASE</literal> ] } <indexterm><primary>CREATE_REPLICATION_SLOT</primary></indexterm> </term> <listitem> @@ -1956,6 +1956,20 @@ The commands accepted in replication mode are: </varlistentry> <varlistentry> + <term><literal>TWO_PHASE</literal></term> + <listitem> + <para> + Specify that this logical replication slot supports decoding of two-phase + transactions. With this option, two-phase commands like + <literal>PREPARE TRANSACTION</literal>, <literal>COMMIT PREPARED</literal> + and <literal>ROLLBACK PREPARED</literal> are decoded and transmitted. + The transaction will be decoded and transmitted at + <literal>PREPARE TRANSACTION</literal> time. + </para> + </listitem> + </varlistentry> + + <varlistentry> <term><literal>RESERVE_WAL</literal></term> <listitem> <para> diff --git a/doc/src/sgml/ref/pg_recvlogical.sgml b/doc/src/sgml/ref/pg_recvlogical.sgml index 6b1d98d06ef..1a882254095 100644 --- a/doc/src/sgml/ref/pg_recvlogical.sgml +++ b/doc/src/sgml/ref/pg_recvlogical.sgml @@ -65,6 +65,11 @@ PostgreSQL documentation <option>--plugin</option>, for the database specified by <option>--dbname</option>. </para> + + <para> + The <option>--two-phase</option> can be specified with + <option>--create-slot</option> to enable two-phase decoding. + </para> </listitem> </varlistentry> @@ -257,6 +262,17 @@ PostgreSQL documentation </varlistentry> <varlistentry> + <term><option>-t</option></term> + <term><option>--two-phase</option></term> + <listitem> + <para> + Enables two-phase decoding. This option should only be specified with + <option>--create-slot</option> + </para> + </listitem> + </varlistentry> + + <varlistentry> <term><option>-v</option></term> <term><option>--verbose</option></term> <listitem> |