mirror of
https://github.com/postgres/postgres.git
synced 2025-06-14 18:42:34 +03:00
Flexible options for CREATE_REPLICATION_SLOT.
Like BASE_BACKUP, CREATE_REPLICATION_SLOT has historically used a hard-coded syntax. To improve future extensibility, adopt a flexible options syntax here, too. In the new syntax, instead of three mutually exclusive options EXPORT_SNAPSHOT, USE_SNAPSHOT, and NOEXPORT_SNAPSHOT, there is now a single SNAPSHOT option with three possible values: 'export', 'use', and 'nothing'. This commit does not remove support for the old syntax. It just adds the new one as an additional option, makes pg_receivewal, pg_recvlogical, and walreceiver processes use it. Patch by me, reviewed by Fabien Coelho, Sergei Kornilov, and Fujii Masao. Discussion: http://postgr.es/m/CA+TgmobAczXDRO_Gr2euo_TxgzaH1JxbNxvFx=HYvBinefNH8Q@mail.gmail.com Discussion: http://postgr.es/m/CA+TgmoZGwR=ZVWFeecncubEyPdwghnvfkkdBe9BLccLSiqdf9Q@mail.gmail.com
This commit is contained in:
@ -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> | <literal>TWO_PHASE</literal> ] }
|
||||
<term><literal>CREATE_REPLICATION_SLOT</literal> <replaceable class="parameter">slot_name</replaceable> [ <literal>TEMPORARY</literal> ] { <literal>PHYSICAL</literal> | <literal>LOGICAL</literal> } [ ( <replaceable class="parameter">option</replaceable> [, ...] ) ]
|
||||
<indexterm><primary>CREATE_REPLICATION_SLOT</primary></indexterm>
|
||||
</term>
|
||||
<listitem>
|
||||
@ -1954,46 +1954,50 @@ The commands accepted in replication mode are:
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
|
||||
<para>The following options are supported:</para>
|
||||
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term><literal>TWO_PHASE</literal></term>
|
||||
<term><literal>TWO_PHASE [ <replaceable class="parameter">boolean</replaceable> ]</literal></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Specify that this logical replication slot supports decoding of two-phase
|
||||
If true, 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.
|
||||
The default is false.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><literal>RESERVE_WAL</literal></term>
|
||||
<term><literal>RESERVE_WAL [ <replaceable class="parameter">boolean</replaceable> ]</literal></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Specify that this physical replication slot reserves <acronym>WAL</acronym>
|
||||
If true, this physical replication slot reserves <acronym>WAL</acronym>
|
||||
immediately. Otherwise, <acronym>WAL</acronym> is only reserved upon
|
||||
connection from a streaming replication client.
|
||||
The default is false.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><literal>EXPORT_SNAPSHOT</literal></term>
|
||||
<term><literal>NOEXPORT_SNAPSHOT</literal></term>
|
||||
<term><literal>USE_SNAPSHOT</literal></term>
|
||||
<term><literal>SNAPSHOT { 'export' | 'use' | 'nothing' }</literal></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Decides what to do with the snapshot created during logical slot
|
||||
initialization. <literal>EXPORT_SNAPSHOT</literal>, which is the default,
|
||||
initialization. <literal>'export'</literal>, which is the default,
|
||||
will export the snapshot for use in other sessions. This option can't
|
||||
be used inside a transaction. <literal>USE_SNAPSHOT</literal> will use the
|
||||
be used inside a transaction. <literal>'use'</literal> will use the
|
||||
snapshot for the current transaction executing the command. This
|
||||
option must be used in a transaction, and
|
||||
<literal>CREATE_REPLICATION_SLOT</literal> must be the first command
|
||||
run in that transaction. Finally, <literal>NOEXPORT_SNAPSHOT</literal> will
|
||||
run in that transaction. Finally, <literal>'nothing'</literal> will
|
||||
just use the snapshot for logical decoding as normal but won't do
|
||||
anything else with it.
|
||||
</para>
|
||||
@ -2052,6 +2056,17 @@ The commands accepted in replication mode are:
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<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> ] }
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
For compatibility with older releases, this alternative syntax for
|
||||
the <literal>CREATE_REPLICATION_SLOT</literal> command is still supported.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><literal>START_REPLICATION</literal> [ <literal>SLOT</literal> <replaceable class="parameter">slot_name</replaceable> ] [ <literal>PHYSICAL</literal> ] <replaceable class="parameter">XXX/XXX</replaceable> [ <literal>TIMELINE</literal> <replaceable class="parameter">tli</replaceable> ]
|
||||
<indexterm><primary>START_REPLICATION</primary></indexterm>
|
||||
|
Reference in New Issue
Block a user