log.
</para>
+ <para>
+ The log format for logical replication conflicts is as follows:
+<synopsis>
+LOG: conflict detected on relation "<replaceable>schemaname</replaceable>.<replaceable>tablename</replaceable>": conflict=<replaceable>conflict_type</replaceable>
+DETAIL: <replaceable class="parameter">detailed_explanation</replaceable>.
+{<replaceable class="parameter">detail_values</replaceable> [; ... ]}.
+
+<phrase>where <replaceable class="parameter">detail_values</replaceable> is one of:</phrase>
+
+ <literal>Key</literal> (<replaceable>column_name</replaceable> <optional>, ...</optional>)=(<replaceable>column_value</replaceable> <optional>, ...</optional>)
+ <literal>existing local tuple</literal> <optional>(<replaceable>column_name</replaceable> <optional>, ...</optional>)=</optional>(<replaceable>column_value</replaceable> <optional>, ...</optional>)
+ <literal>remote tuple</literal> <optional>(<replaceable>column_name</replaceable> <optional>, ...</optional>)=</optional>(<replaceable>column_value</replaceable> <optional>, ...</optional>)
+ <literal>replica identity</literal> {(<replaceable>column_name</replaceable> <optional>, ...</optional>)=(<replaceable>column_value</replaceable> <optional>, ...</optional>) | full <optional>(<replaceable>column_name</replaceable> <optional>, ...</optional>)=</optional>(<replaceable>column_value</replaceable> <optional>, ...</optional>)}
+</synopsis>
+
+ The log provides the following information:
+ <variablelist>
+ <varlistentry>
+ <term><literal>LOG</literal></term>
+ <listitem>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <replaceable>schemaname</replaceable>.<replaceable>tablename</replaceable>
+ identifies the local relation involved in the conflict.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <replaceable>conflict_type</replaceable> is the type of conflict that occurred
+ (e.g., <literal>insert_exists</literal>, <literal>update_exists</literal>).
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><literal>DETAIL</literal></term>
+ <listitem>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <replaceable class="parameter">detailed_explanation</replaceable> includes
+ the origin, transaction ID, and commit timestamp of the transaction that
+ modified the existing local tuple, if available.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The <literal>Key</literal> section includes the key values of the local
+ tuple that violated a unique constraint for
+ <literal>insert_exists</literal> or <literal>update_exists</literal>
+ conflicts.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The <literal>existing local tuple</literal> section includes the local
+ tuple if its origin differs from the remote tuple for
+ <literal>update_differ</literal> or <literal>delete_differ</literal>
+ conflicts, or if the key value conflicts with the remote tuple for
+ <literal>insert_exists</literal> or <literal>update_exists</literal>
+ conflicts.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The <literal>remote tuple</literal> section includes the new tuple from
+ the remote insert or update operation that caused the conflict. Note that
+ for an update operation, the column value of the new tuple will be null
+ if the value is unchanged and toasted.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The <literal>replica identity</literal> section includes the replica
+ identity key values that were used to search for the existing local
+ tuple to be updated or deleted. This may include the full tuple value
+ if the local relation is marked with
+ <link linkend="sql-altertable-replica-identity-full"><literal>REPLICA IDENTITY FULL</literal></link>.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <replaceable class="parameter">column_name</replaceable> is the column name.
+ For <literal>existing local tuple</literal>, <literal>remote tuple</literal>,
+ and <literal>replica identity full</literal> cases, column names are
+ logged only if the user lacks the privilege to access all columns of
+ the table. If column names are present, they appear in the same order
+ as the corresponding column values.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <replaceable class="parameter">column_value</replaceable> is the column value.
+ The large column values are truncated to 64 bytes.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </para>
+
<para>
Logical replication operations are performed with the privileges of the role
which owns the subscription. Permissions failures on target tables will