mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-12-27 08:39:28 +08:00
Correct comment and some documentation about REPLICA_IDENTITY_INDEX
catalog/pg_class.h was stating that REPLICA_IDENTITY_INDEX with a
dropped index is equivalent to REPLICA_IDENTITY_DEFAULT. The code tells
a different story, as it is equivalent to REPLICA_IDENTITY_NOTHING.
The behavior exists since the introduction of replica identities, and
fe7fd4e
even added tests for this case but I somewhat forgot to fix this
comment.
While on it, this commit reorganizes the documentation about replica
identities on the ALTER TABLE page, and a note is added about the case
of dropped indexes with REPLICA_IDENTITY_INDEX.
Author: Michael Paquier, Wei Wang
Reviewed-by: Euler Taveira
Discussion: https://postgr.es/m/OS3PR01MB6275464AD0A681A0793F56879E759@OS3PR01MB6275.jpnprd01.prod.outlook.com
Backpatch-through: 10
This commit is contained in:
parent
962951be3c
commit
fc95d35b94
@ -872,16 +872,51 @@ WITH ( MODULUS <replaceable class="parameter">numeric_literal</replaceable>, REM
|
|||||||
<para>
|
<para>
|
||||||
This form changes the information which is written to the write-ahead log
|
This form changes the information which is written to the write-ahead log
|
||||||
to identify rows which are updated or deleted. This option has no effect
|
to identify rows which are updated or deleted. This option has no effect
|
||||||
except when logical replication is in use. <literal>DEFAULT</literal>
|
except when logical replication is in use.
|
||||||
(the default for non-system tables) records the
|
|
||||||
old values of the columns of the primary key, if any. <literal>USING INDEX</literal>
|
|
||||||
records the old values of the columns covered by the named index, which
|
|
||||||
must be unique, not partial, not deferrable, and include only columns marked
|
|
||||||
<literal>NOT NULL</literal>. <literal>FULL</literal> records the old values of all columns
|
|
||||||
in the row. <literal>NOTHING</literal> records no information about the old row.
|
|
||||||
(This is the default for system tables.)
|
|
||||||
In all cases, no old values are logged unless at least one of the columns
|
In all cases, no old values are logged unless at least one of the columns
|
||||||
that would be logged differs between the old and new versions of the row.
|
that would be logged differs between the old and new versions of the row.
|
||||||
|
<variablelist>
|
||||||
|
<varlistentry>
|
||||||
|
<term><literal>DEFAULT</literal></term>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
Records the old values of the columns of the primary key, if any.
|
||||||
|
This is the default for non-system tables.
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
|
||||||
|
<varlistentry>
|
||||||
|
<term><literal>USING INDEX <replaceable class="parameter">index_name</replaceable></literal></term>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
Records the old values of the columns covered by the named index,
|
||||||
|
that must be unique, not partial, not deferrable, and include only
|
||||||
|
columns marked <literal>NOT NULL</literal>. If this index is
|
||||||
|
dropped, the behavior is the same as <literal>NOTHING</literal>.
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
|
||||||
|
<varlistentry>
|
||||||
|
<term><literal>FULL</literal></term>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
Records the old values of all columns in the row.
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
|
||||||
|
<varlistentry>
|
||||||
|
<term><literal>NOTHING</literal></term>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
Records no information about the old row. This is the default for
|
||||||
|
system tables.
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
</variablelist>
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
@ -182,7 +182,7 @@ DECLARE_INDEX(pg_class_tblspc_relfilenode_index, 3455, ClassTblspcRelfilenodeInd
|
|||||||
/*
|
/*
|
||||||
* an explicitly chosen candidate key's columns are used as replica identity.
|
* an explicitly chosen candidate key's columns are used as replica identity.
|
||||||
* Note this will still be set if the index has been dropped; in that case it
|
* Note this will still be set if the index has been dropped; in that case it
|
||||||
* has the same meaning as 'd'.
|
* has the same meaning as 'n'.
|
||||||
*/
|
*/
|
||||||
#define REPLICA_IDENTITY_INDEX 'i'
|
#define REPLICA_IDENTITY_INDEX 'i'
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user