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>
|
||||
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
|
||||
except when logical replication is in use. <literal>DEFAULT</literal>
|
||||
(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.)
|
||||
except when logical replication is in use.
|
||||
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.
|
||||
<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>
|
||||
</listitem>
|
||||
</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.
|
||||
* 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'
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user