Here are some review comments for v14-0001.

This is a WIP, but here are my comments for all the SGML parts.

(There will be some overlap here with comments already posted by Shveta)

======
1. file modes after applying the patch

 mode change 100644 => 100755 doc/src/sgml/ref/alter_subscription.sgml
 mode change 100644 => 100755 doc/src/sgml/ref/create_subscription.sgml

What's going on here? Why are those SGMLs changed to executable?

======
Commit message

2.
nit - a missing period in the first sentence
nit - typo /reseting/resetting/

======
doc/src/sgml/logical-replication.sgml

3.
-  <title>Conflicts</title>
+  <title>Conflicts and conflict resolution</title>

nit - change the capitalisation to "and Conflict Resolution" to match
other titles.

~~~

4.
+   Additional logging is triggered in various conflict scenarios,
each identified as a
+   conflict type, and the conflict statistics are collected (displayed in the
+   <link 
linkend="monitoring-pg-stat-subscription-stats"><structname>pg_stat_subscription_stats</structname></link>
view).
+   Users have the option to configure a
<literal>conflict_resolver</literal> for each
+   <literal>conflict_type</literal> when creating a subscription.
+   For more information on the supported
<literal>conflict_types</literal> detected and
+   <literal>conflict_resolvers</literal>, refer to section
+   <link 
linkend="sql-createsubscription-params-with-conflict-resolver"><literal>CONFLICT
RESOLVERS</literal></link>.
+

nit - "Additional logging is triggered" sounds strange. I reworded
this in the nits attachment. Please see if you approve.
nit - The "conflict_type" and "conflict_resolver" you are referring to
here are syntax elements of the CREATE SUBSCRIPTION, so here I think
they should just be called (without the underscores) "conflict type"
and "conflict resolver".
nit - IMO this would be better split into multiple paragraphs.
nit - There is no such section called "CONFLICT RESOLVERS". I reworded
this link text.

======
doc/src/sgml/monitoring.sgml

5.
The changes here all render with the link including the type "(enum)"
displayed, which I thought it unnecessary/strange.

For example:
See insert_exists (enum) for details about this conflict.

IIUC there is no problem here, but maybe the other end of the link
needed to define xreflabels. I have made the necessary modifications
in the create_subscription.sgml.

======
doc/src/sgml/ref/alter_subscription.sgml

6.
+ALTER SUBSCRIPTION <replaceable class="parameter">name</replaceable>
CONFLICT RESOLVER ( <replaceable
class="parameter">conflict_type</replaceable> [= <replaceable
class="parameter">conflict_resolver</replaceable>] [, ...] )

This syntax seems wrong to me.

Currently, it says:
ALTER SUBSCRIPTION name CONFLICT RESOLVER ( conflict_type [=
conflict_resolver] [, ...] )

But, shouldn't that say:
ALTER SUBSCRIPTION name CONFLICT RESOLVER ( conflict_type =
conflict_resolver [, ...] )

~~~
7.
+ALTER SUBSCRIPTION <replaceable class="parameter">name</replaceable>
RESET CONFLICT RESOLVER FOR (<replaceable
class="parameter">conflict_type</replaceable>)

I can see that this matches the implementation, but I was wondering
why don't you permit resetting multiple conflict_types at the same
time. e.g. what if I want to reset some but not ALL?

~~~

nit - there are some minor whitespace indent problems in the SGML

~~~

8.
+   <varlistentry id="sql-altersubscription-params-conflict-resolver">
+    <term><literal>CONFLICT RESOLVER ( <replaceable
class="parameter">conflict_type</replaceable> [= <replaceable
class="parameter">conflict_resolver</replaceable>] [, ... ]
)</literal></term>
+    <listitem>
+     <para>
+      This clause alters either the default conflict resolvers or
those set by <xref linkend="sql-createsubscription"/>.
+      Refer to section <link
linkend="sql-createsubscription-params-with-conflict-resolver"><literal>CONFLICT
RESOLVERS</literal></link>
+      for the details on supported <literal>conflict_types</literal>
and <literal>conflict_resolvers</literal>.
+     </para>
+    </listitem>
+   </varlistentry>
+
+ <varlistentry id="sql-altersubscription-params-conflict-type">
+  <term><replaceable class="parameter">conflict_type</replaceable></term>
+   <listitem>
+    <para>
+    The conflict type being reset to its default resolver setting.
+    For details on conflict types and their default resolvers, refer
to section <link
linkend="sql-createsubscription-params-with-conflict-resolver"><literal>CONFLICT
RESOLVERS</literal></link>
+    </para>
+   </listitem>
+  </varlistentry>
+ </variablelist>

This section seems problematic:
e.g the syntax seems wrong same as before.

~
There are other nits.
(I've given a rough fix in the nits attachment. Please see it and make
it better).

nit - why do you care if it is "either the default conflict resolvers
or those set...". Why not just say "current resolver"
nit - it does not mention 'conflict_resolver' type in the normal way
nit - there is no actual section called "CONFLICT RESOLVERS"
nit - the part that says "The conflict type being reset to its default
resolver setting." is bogus for this form of the ALTER statement.

~~~

9.
There is no description for the "RESET CONFLICT RESOLVER ALL"

~~~

10.
There is no description for the "RESET CONFLICT RESOLVER FOR (conflict_type)"

======
doc/src/sgml/ref/create_subscription.sgml

11. General - Order

+   <varlistentry id="sql-createsubscription-params-with-conflict-resolver">
+    <term><literal>CONFLICT RESOLVER ( <replaceable
class="parameter">conflict_type</replaceable> = <replaceable

nit - IMO this entire new entry about "CONFLICT RESOLVER" should
appear on the page *above* the "WITH" section, because that is the
order that it is defined in the CREATE SUBSCRIPTION syntax.

~~~

12. General - whitespace

nit - Much of this new section seems to have a slightly wrong
indentation in the SGML. Mostly it is out by 1 or 2 spaces.

~~~

13. General - ordering of conflict_type.

nit - Instead of just some apparent random order, let's put each
insert/update/delete conflict type in alphabetical order, so at least
users can find them where they would expect to find them.

~~~

14.
99. General - ordering of conflict_resolver

nit - ditto. Let's name these in alphabetical order. IMO it makes more
sense than the current random ordering.

~~~

15.
+     <para>
+      This optional clause specifies options for conflict resolvers
for different conflict_types.
+     </para>

nit - IMO we don't need the words "options for" here.

~~~

16.
+     <para>
+      The <replaceable class="parameter">conflict_type</replaceable>
and their default behaviour are listed below.

nit - sounded strange to me. reworded it slightly.

~~~

17.
+       <varlistentry
id="sql-createsubscription-params-with-conflict_type-insert-exists">

nit - Here, and for all other conflict types, add "xreflabel". See my
review comment #5 for the reason why.

~~~

18.
+     <para>
+      The <replaceable
class="parameter">conflict_resolver</replaceable> and their behaviour
+      are listed below. Users can use any of the following resolvers
for automatic conflict
+      resolution.
+      <variablelist>

nit - reworded this too, to be like the previous review comment.

~~~

19. General - readability.

19a.
IMO the information about what are the default resolvers for each
conflict type, and what resolvers are allowed for each conflict type
should ideally be documented in a tabular form.

Maybe all information is already present in the current document, but
it is certainly hard to easily see it.

As an example, I have added a table in this section. Maybe it is the
best placement for this table, but I gave it mostly how you can
present the same information so it is easier to read.

~
19b.
Bug. In doing this exercise I discovered there are 2 resolvers
("error" and "apply_remote") that both claim to be defaults for the
same conflict types.

They both say:

+           It is the default resolver for <literal>insert_exists</literal> and
+           <literal>update_exists</literal>.

Anyway, this demonstrates that the current information was hard to read.

I can tell from the code implementation what the document was supposed
to say, but I will leave it to the patch authors to fix this one.
(e.g. "apply_remote" says the wrong defaults)

======
Kind Regards,
Peter Smith.
Fujitsu Australia
diff --git a/doc/src/sgml/logical-replication.sgml 
b/doc/src/sgml/logical-replication.sgml
index f82adfc..2077c6a 100644
--- a/doc/src/sgml/logical-replication.sgml
+++ b/doc/src/sgml/logical-replication.sgml
@@ -1568,7 +1568,7 @@ test_sub=# SELECT * FROM t1 ORDER BY id;
  </sect1>
 
  <sect1 id="logical-replication-conflicts">
-  <title>Conflicts and conflict resolution</title>
+  <title>Conflicts and Conflict Resolution</title>
 
   <para>
    Logical replication behaves similarly to normal DML operations in that
@@ -1582,18 +1582,19 @@ test_sub=# SELECT * FROM t1 ORDER BY id;
   </para>
 
   <para>
-   Additional logging is triggered in various conflict scenarios, each 
identified as a
-   conflict type, and the conflict statistics are collected (displayed in the
-   <link 
linkend="monitoring-pg-stat-subscription-stats"><structname>pg_stat_subscription_stats</structname></link>
 view).
-   Users have the option to configure a <literal>conflict_resolver</literal> 
for each
-   <literal>conflict_type</literal> when creating a subscription.
-   For more information on the supported <literal>conflict_types</literal> 
detected and
-   <literal>conflict_resolvers</literal>, refer to section
-   <link 
linkend="sql-createsubscription-params-with-conflict-resolver"><literal>CONFLICT
 RESOLVERS</literal></link>.
-
-    Note that there are other conflict scenarios, such as exclusion constraint
-    violations. Currently, we do not provide additional details for them in the
-    log.
+   There are various conflict scenarios, each identified as a 
<firstterm>conflict type</firstterm>.
+   Users can configure a <firstterm>conflict resolver</firstterm> for each
+   conflict type when creating a subscription. For more information, refer to
+   <link linkend="sql-createsubscription-params-with-conflict-resolver">
+   <command>CREATE SUBSCRIPTION ... CONFLICT RESOLVER</command></link>.
+  </para>
+  <para>
+   When a conflict occurs the details about it are logged, and the conflict
+   statistics are recorded in the <link 
linkend="monitoring-pg-stat-subscription-stats">
+   <structname>pg_stat_subscription_stats</structname></link> view.
+   Note that there are other conflict scenarios, such as exclusion constraint
+   violations. Currently, we do not provide additional details for them in the
+   log.
   </para>
 
   <para>
diff --git a/doc/src/sgml/ref/alter_subscription.sgml 
b/doc/src/sgml/ref/alter_subscription.sgml
index 55eae8b..1982130 100755
--- a/doc/src/sgml/ref/alter_subscription.sgml
+++ b/doc/src/sgml/ref/alter_subscription.sgml
@@ -353,22 +353,32 @@ ALTER SUBSCRIPTION <replaceable 
class="parameter">name</replaceable> RESET CONFL
     <term><literal>CONFLICT RESOLVER ( <replaceable 
class="parameter">conflict_type</replaceable> [= <replaceable 
class="parameter">conflict_resolver</replaceable>] [, ... ] )</literal></term>
     <listitem>
      <para>
-      This clause alters either the default conflict resolvers or those set by 
<xref linkend="sql-createsubscription"/>.
-      Refer to section <link 
linkend="sql-createsubscription-params-with-conflict-resolver"><literal>CONFLICT
 RESOLVERS</literal></link>
-      for the details on supported <literal>conflict_types</literal> and 
<literal>conflict_resolvers</literal>.
+      This clause alters the current conflict resolver for the specified 
conflict types.
+      Refer to <link 
linkend="sql-createsubscription-params-with-conflict-resolver">
+      <command>CREATE SUBSCRIBER ... CONFLICT RESOLVER</command></link>
+      for details about different <literal>conflict_type</literal> and what
+      kind of <literal>conflict_resolver</literal> can be assigned to them.
      </para>
+     <variablelist>
+      <varlistentry id="sql-altersubscription-params-conflict-resolver-type">
+       <term><replaceable class="parameter">conflict_type</replaceable></term>
+       <listitem>
+        <para>
+         The conflict type.
+        </para>
+       </listitem>
+      </varlistentry>
+      <varlistentry 
id="sql-altersubscription-params-conflict-resolver-resolver">
+       <term><replaceable 
class="parameter">conflict_resolver</replaceable></term>
+       <listitem>
+        <para>
+         The conflict resolver to use for this conflict type.
+        </para>
+       </listitem>
+      </varlistentry>
+     </variablelist>
     </listitem>
    </varlistentry>
-
- <varlistentry id="sql-altersubscription-params-conflict-type">
-  <term><replaceable class="parameter">conflict_type</replaceable></term>
-   <listitem>
-    <para>
-    The conflict type being reset to its default resolver setting.
-    For details on conflict types and their default resolvers, refer to 
section <link 
linkend="sql-createsubscription-params-with-conflict-resolver"><literal>CONFLICT
 RESOLVERS</literal></link>
-    </para>
-   </listitem>
-  </varlistentry>
  </variablelist>
 
   <para>
diff --git a/doc/src/sgml/ref/create_subscription.sgml 
b/doc/src/sgml/ref/create_subscription.sgml
index 25d4c0b..e3d435a 100755
--- a/doc/src/sgml/ref/create_subscription.sgml
+++ b/doc/src/sgml/ref/create_subscription.sgml
@@ -98,6 +98,202 @@ CREATE SUBSCRIPTION <replaceable 
class="parameter">subscription_name</replaceabl
     </listitem>
    </varlistentry>
 
+   <varlistentry id="sql-createsubscription-params-with-conflict-resolver">
+    <term><literal>CONFLICT RESOLVER ( <replaceable 
class="parameter">conflict_type</replaceable> = <replaceable 
class="parameter">conflict_resolver</replaceable> [, ... ] )</literal></term>
+    <listitem>
+     <para>
+      This optional clause specifies conflict resolvers for different 
conflict_types.
+     </para>
+
+     <para>
+      The default behavior for each <replaceable 
class="parameter">conflict_type</replaceable> is listed below.
+      <variablelist>
+       <varlistentry 
id="sql-createsubscription-params-with-conflict_type-insert-exists" 
xreflabel="insert_exists">
+        <term><literal>insert_exists</literal> (<type>enum</type>)</term>
+        <listitem>
+         <para>
+          This conflict occurs when inserting a row that violates a
+          <literal>NOT DEFERRABLE</literal> unique constraint.
+          To log the origin and commit timestamp details of the conflicting 
key,
+          <link 
linkend="guc-track-commit-timestamp"><varname>track_commit_timestamp</varname></link>
+          should be enabled on the subscriber. In this case, an error will be
+          raised until the conflict is resolved manually or the resolver is 
configured to a
+          non-default value that can automatically resolve the conflict.
+         </para>
+        </listitem>
+       </varlistentry>
+
+      <varlistentry 
id="sql-createsubscription-params-with-conflict_type-update-exists" 
xreflabel="update_exists">
+       <term><literal>update_exists</literal> (<type>enum</type>)</term>
+       <listitem>
+        <para>
+         This conflict occurs when the updated value of a row violates
+         a <literal>NOT DEFERRABLE</literal>
+         unique constraint. To log the origin and commit
+         timestamp details of the conflicting key,
+         <link 
linkend="guc-track-commit-timestamp"><varname>track_commit_timestamp</varname></link>
+         should be enabled on the subscriber. In this case, an error will be
+         raised until the conflict is resolved manually or the resolver is 
configured to a
+         non-default value that can automatically resolve the conflict.
+         Note that when updating a partitioned table, if the updated row
+         value satisfies another partition constraint resulting in the
+         row being inserted into a new partition, the 
<literal>insert_exists</literal>
+         conflict may arise if the new row violates a <literal>NOT 
DEFERRABLE</literal>
+         unique constraint.
+        </para>
+       </listitem>
+      </varlistentry>
+
+      <varlistentry 
id="sql-createsubscription-params-with-conflict_type-update-missing" 
xreflabel="update_missing">
+       <term><literal>update_missing</literal> (<type>enum</type>)</term>
+       <listitem>
+        <para>
+         This conflict occurs when the tuple to be updated was not found.
+         The update will simply be skipped in this scenario.
+        </para>
+       </listitem>
+      </varlistentry>
+
+       <varlistentry 
id="sql-createsubscription-params-with-conflict_type-update-origin-differs" 
xreflabel="update_origin_differs">
+        <term><literal>update_origin_differs</literal> 
(<type>enum</type>)</term>
+        <listitem>
+         <para>
+          This conflict occurs when updating a row that was previously
+          modified by another origin.
+          Note that this conflict can only be detected when
+          <link 
linkend="guc-track-commit-timestamp"><varname>track_commit_timestamp</varname></link>
+          is enabled on the subscriber. Currently, the update is always applied
+          regardless of the origin of the local row.
+         </para>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry 
id="sql-createsubscription-params-with-conflict_type-delete-missing" 
xreflabel="delete_missing">
+       <term><literal>delete_missing</literal> (<type>enum</type>)</term>
+       <listitem>
+        <para>
+         This conflict occurs when the tuple to be deleted was not found.
+         The delete will simply be skipped in this scenario.
+        </para>
+       </listitem>
+      </varlistentry>
+
+      <varlistentry 
id="sql-createsubscription-params-with-conflict_type-delete-origin-differs" 
xreflabel="delete_origin_differs">
+       <term><literal>delete_origin_differs</literal> 
(<type>enum</type>)</term>
+       <listitem>
+        <para>
+         This conflict occurs when deleting a row that was previously modified
+         by another origin. Note that this conflict can only be detected when
+         <link 
linkend="guc-track-commit-timestamp"><varname>track_commit_timestamp</varname></link>
+         is enabled on the subscriber. Currently, the delete is always applied
+         regardless of the origin of the local row.
+        </para>
+       </listitem>
+      </varlistentry>
+
+     </variablelist>
+    </para>
+
+    <para>
+     The behavior of each <replaceable 
class="parameter">conflict_resolver</replaceable>
+     is described below. Users can choose from the following resolvers for 
automatic conflict
+     resolution.
+     <variablelist>
+
+      <varlistentry 
id="sql-createsubscription-params-with-conflict_resolver-apply-or-error">
+       <term><literal>apply_or_error</literal> (<type>enum</type>)</term>
+       <listitem>
+        <para>
+         This resolver is only used for <literal>update_missing</literal>.
+         An attempt is made to convert the update into an insert; if this 
cannot
+         be done due to missing information, then an error is thrown, and 
replication
+         is stopped.
+        </para>
+       </listitem>
+      </varlistentry>
+
+      <varlistentry 
id="sql-createsubscription-params-with-conflict_resolver-apply-or-skip">
+       <term><literal>apply_or_skip</literal> (<type>enum</type>)</term>
+       <listitem>
+        <para>
+         This resolver is only used for <literal>update_missing</literal>.
+         An attempt is made to convert the update into an insert; if this
+         cannot be done due to missing information, then the change is skipped.
+        </para>
+       </listitem>
+      </varlistentry>
+
+      <varlistentry 
id="sql-createsubscription-params-with-conflict_resolver-apply-remote">
+       <term><literal>apply_remote</literal> (<type>enum</type>)</term>
+       <listitem>
+        <para>
+         This resolver applies the remote change. It can be used for
+         <literal>insert_exists</literal>, <literal>update_exists</literal>,
+         <literal>update_origin_differs</literal> and 
<literal>delete_origin_differs</literal>.
+         It is the default resolver for <literal>insert_exists</literal> and
+         <literal>update_exists</literal>.
+        </para>
+       </listitem>
+      </varlistentry>
+
+      <varlistentry 
id="sql-createsubscription-params-with-conflict_resolver-error">
+       <term><literal>error</literal> (<type>enum</type>)</term>
+       <listitem>
+        <para>
+         This resolver throws an error and stops replication. It can be used 
for
+         any conflict type.
+         It is the default resolver for <literal>insert_exists</literal> and
+         <literal>update_exists</literal>.
+        </para>
+       </listitem>
+      </varlistentry>
+
+      <varlistentry 
id="sql-createsubscription-params-with-conflict_resolver-keep-local">
+       <term><literal>keep_local</literal> (<type>enum</type>)</term>
+        <listitem>
+         <para>
+          With this resolver, the remote change is not applied and the local 
tuple is maintained.
+          It can be used for <literal>insert_exists</literal>, 
<literal>update_exists</literal>,
+          <literal>update_origin_differs</literal> and 
<literal>delete_origin_differs</literal>.
+         </para>
+        </listitem>
+       </varlistentry>
+
+      <varlistentry 
id="sql-createsubscription-params-with-conflict_resolver-skip">
+       <term><literal>skip</literal> (<type>enum</type>)</term>
+       <listitem>
+        <para>
+         This resolver skips processing the remote change and continue 
replication
+         with the next change.
+         It can be used for <literal>update_missing</literal> and
+         <literal>delete_missing</literal> and is the default resolver for 
these types.
+        </para>
+       </listitem>
+      </varlistentry>
+
+      </variablelist>
+     </para>
+
+     <table id="sql-createsubscription-params-conflict-type-resolver-summary">
+      <title>Conflict type/resolver Summary</title>
+      <tgroup cols="3">
+       <thead>
+        <row><entry>Conflict type</entry>        <entry>Default 
resolver</entry>  <entry>Possible resolvers</entry></row>
+       </thead>
+       <tbody>
+        <row><entry>insert_exists</entry>        <entry>error</entry>          
   <entry>apply_remote, error, keep_local</entry></row>
+        <row><entry>update_exists</entry>        <entry>error</entry>          
   <entry>apply_remote, error, keep_local</entry></row>
+        <row><entry>update_missing</entry>       <entry>skip</entry>           
   <entry>apply_or_error, apply_or_skip, error, skip</entry></row>
+        <row><entry>update_origin_differs</entry><entry>apply_remote</entry>   
   <entry>apply_remote, error, keep_local</entry></row>
+        <row><entry>delete_missing</entry>       <entry>skip</entry>           
   <entry>error, skip</entry></row>
+        <row><entry>delete_origin_differs</entry><entry>apply_remote</entry>   
   <entry>apply_remote, error, keep_local</entry></row>
+       </tbody>
+      </tgroup>
+     </table>
+
+    </listitem>
+   </varlistentry>
+
    <varlistentry id="sql-createsubscription-params-with">
     <term><literal>WITH ( <replaceable 
class="parameter">subscription_parameter</replaceable> [= <replaceable 
class="parameter">value</replaceable>] [, ... ] )</literal></term>
     <listitem>
@@ -433,183 +629,6 @@ CREATE SUBSCRIPTION <replaceable 
class="parameter">subscription_name</replaceabl
 
     </listitem>
    </varlistentry>
-
-   <varlistentry id="sql-createsubscription-params-with-conflict-resolver">
-    <term><literal>CONFLICT RESOLVER ( <replaceable 
class="parameter">conflict_type</replaceable> = <replaceable 
class="parameter">conflict_resolver</replaceable> [, ... ] )</literal></term>
-    <listitem>
-     <para>
-      This optional clause specifies options for conflict resolvers for 
different conflict_types.
-     </para>
-
-     <para>
-      The <replaceable class="parameter">conflict_type</replaceable> and their 
default behaviour are listed below.
-      <variablelist>
-       <varlistentry 
id="sql-createsubscription-params-with-conflict_type-insert-exists">
-        <term><literal>insert_exists</literal> (<type>enum</type>)</term>
-         <listitem>
-          <para>
-           This conflict occurs when inserting a row that violates a
-           <literal>NOT DEFERRABLE</literal> unique constraint.
-           To log the origin and commit timestamp details of the conflicting 
key,
-           <link 
linkend="guc-track-commit-timestamp"><varname>track_commit_timestamp</varname></link>
-           should be enabled on the subscriber. In this case, an error will be
-           raised until the conflict is resolved manually or the resolver is 
configured to a
-           non-default value that can automatically resolve the conflict.
-          </para>
-         </listitem>
-       </varlistentry>
-
-       <varlistentry 
id="sql-createsubscription-params-with-conflict_type-update-origin-differs">
-        <term><literal>update_origin_differs</literal> 
(<type>enum</type>)</term>
-         <listitem>
-          <para>
-           This conflict occurs when updating a row that was previously
-           modified by another origin.
-           Note that this conflict can only be detected when
-           <link 
linkend="guc-track-commit-timestamp"><varname>track_commit_timestamp</varname></link>
-           is enabled on the subscriber. Currently, the update is always 
applied
-           regardless of the origin of the local row.
-          </para>
-         </listitem>
-       </varlistentry>
-
-       <varlistentry 
id="sql-createsubscription-params-with-conflict_type-update-exists">
-        <term><literal>update_exists</literal> (<type>enum</type>)</term>
-         <listitem>
-          <para>
-           This conflict occurs when the updated value of a row violates
-           a <literal>NOT DEFERRABLE</literal>
-           unique constraint. To log the origin and commit
-           timestamp details of the conflicting key,
-           <link 
linkend="guc-track-commit-timestamp"><varname>track_commit_timestamp</varname></link>
-           should be enabled on the subscriber. In this case, an error will be
-           raised until the conflict is resolved manually or the resolver is 
configured to a
-           non-default value that can automatically resolve the conflict.
-           Note that when updating a partitioned table, if the updated row
-           value satisfies another partition constraint resulting in the
-           row being inserted into a new partition, the 
<literal>insert_exists</literal>
-           conflict may arise if the new row violates a <literal>NOT 
DEFERRABLE</literal>
-           unique constraint.
-          </para>
-         </listitem>
-       </varlistentry>
-
-      <varlistentry 
id="sql-createsubscription-params-with-conflict_type-update-missing">
-       <term><literal>update_missing</literal> (<type>enum</type>)</term>
-        <listitem>
-         <para>
-          This conflict occurs when the tuple to be updated was not found.
-          The update will simply be skipped in this scenario.
-         </para>
-        </listitem>
-       </varlistentry>
-
-       <varlistentry 
id="sql-createsubscription-params-with-conflict_type-delete-origin-differs">
-        <term><literal>delete_origin_differs</literal> 
(<type>enum</type>)</term>
-         <listitem>
-          <para>
-           This conflict occurs when deleting a row that was previously 
modified
-           by another origin. Note that this conflict can only be detected when
-           <link 
linkend="guc-track-commit-timestamp"><varname>track_commit_timestamp</varname></link>
-           is enabled on the subscriber. Currently, the delete is always 
applied
-           regardless of the origin of the local row.
-          </para>
-         </listitem>
-       </varlistentry>
-
-       <varlistentry 
id="sql-createsubscription-params-with-conflict_type-delete-missing">
-        <term><literal>delete_missing</literal> (<type>enum</type>)</term>
-         <listitem>
-          <para>
-           This conflict occurs when the tuple to be deleted was not found.
-           The delete will simply be skipped in this scenario.
-          </para>
-         </listitem>
-       </varlistentry>
-
-      </variablelist></para>
-
-     <para>
-      The <replaceable class="parameter">conflict_resolver</replaceable> and 
their behaviour
-      are listed below. Users can use any of the following resolvers for 
automatic conflict
-      resolution.
-      <variablelist>
-
-       <varlistentry 
id="sql-createsubscription-params-with-conflict_resolver-error">
-        <term><literal>error</literal> (<type>enum</type>)</term>
-         <listitem>
-          <para>
-           This resolver throws an error and stops replication. It can be used 
for
-           any conflict type.
-           It is the default resolver for <literal>insert_exists</literal> and
-           <literal>update_exists</literal>.
-          </para>
-         </listitem>
-       </varlistentry>
-
-       <varlistentry 
id="sql-createsubscription-params-with-conflict_resolver-skip">
-        <term><literal>skip</literal> (<type>enum</type>)</term>
-         <listitem>
-          <para>
-           This resolver skips processing the remote change and continue 
replication
-           with the next change.
-           It can be used for <literal>update_missing</literal> and
-           <literal>delete_missing</literal> and is the default resolver for 
these types.
-          </para>
-         </listitem>
-       </varlistentry>
-
-       <varlistentry 
id="sql-createsubscription-params-with-conflict_resolver-apply-remote">
-        <term><literal>apply_remote</literal> (<type>enum</type>)</term>
-         <listitem>
-          <para>
-           This resolver applies the remote change. It can be used for
-           <literal>insert_exists</literal>, <literal>update_exists</literal>,
-           <literal>update_origin_differs</literal> and 
<literal>delete_origin_differs</literal>.
-
-           It is the default resolver for <literal>insert_exists</literal> and
-           <literal>update_exists</literal>.
-          </para>
-         </listitem>
-       </varlistentry>
-
-       <varlistentry 
id="sql-createsubscription-params-with-conflict_resolver-keep-local">
-        <term><literal>keep_local</literal> (<type>enum</type>)</term>
-         <listitem>
-          <para>
-           With this resolver, the remote change is not applied and the local 
tuple is maintained.
-           It can be used for <literal>insert_exists</literal>, 
<literal>update_exists</literal>,
-           <literal>update_origin_differs</literal> and 
<literal>delete_origin_differs</literal>.
-          </para>
-         </listitem>
-       </varlistentry>
-
-       <varlistentry 
id="sql-createsubscription-params-with-conflict_resolver-apply-or-skip">
-        <term><literal>apply_or_skip</literal> (<type>enum</type>)</term>
-         <listitem>
-          <para>
-           This resolver is only used for <literal>update_missing</literal>.
-           An attempt is made to convert the update into an insert; if this
-           cannot be done due to missing information, then the change is 
skipped.
-          </para>
-         </listitem>
-       </varlistentry>
-
-       <varlistentry 
id="sql-createsubscription-params-with-conflict_resolver-apply-or-error">
-        <term><literal>apply_or_error</literal> (<type>enum</type>)</term>
-         <listitem>
-          <para>
-           This resolver is only used for <literal>update_missing</literal>.
-           An attempt is made to convert the update into an insert; if this 
cannot
-           be done due to missing information, then an error is thrown, and 
replication
-           is stopped.
-          </para>
-         </listitem>
-       </varlistentry>
-       </variablelist></para>
-
-     </listitem>
-    </varlistentry>
   </variablelist>
 
   <para>

Reply via email to