mirror of
				https://github.com/postgres/postgres.git
				synced 2025-11-04 00:02:52 -05: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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user