On 2020-05-18 09:16, Michael Paquier wrote:
On Sat, May 16, 2020 at 09:38:46PM +0300, Marina Polyakova wrote:
I like if we can explain the situation in more detail. But IMO the phrase "same as default" sounds as if we will try to find the primary index and use it if the required index (with pg_index.indisreplident = true) does not
exist. What do you think of "(same as nothing if the index used got
dropped)"? It seems that in this case we have the same behaviour:
- we cannot update or delete rows from the table if the action is published
because this table does not have a "working" replica identity;
- we cannot apply updates or deletes on subscriber until we have a primary
key or the published relation has replica identity full.

Yeah.  I was testing that once again today and you are right.  The
publisher would just assume that there is nothing as there is in the
changes nothing about the old row for a relation using a replident
based on an index that got dropped, and this even if there is a
primary key on the relation.  So using "same as nothing" would be
fine.

Glad to hear this =)

Would you like to send an updated patch?  Note that as the release of
beta1 is planned for this week, we have a grace period until the
version is tagged on HEAD.

The patch is attached, changes to html such as they were discussed.

--
Marina Polyakova
Postgres Professional: http://www.postgrespro.com
The Russian Postgres Company
From c32085ed0be13da12ee588c075130987378b3446 Mon Sep 17 00:00:00 2001
From: Marina Polyakova <m.polyak...@postgrespro.ru>
Date: Mon, 18 May 2020 22:19:46 +0300
Subject: [PATCH] Fix the description of the field pg_class.relreplident

- Add a comma between "f = all columns" and "i = index with ...".
- Fix the description of replica identity index if the index used got dropped
  (in this case we cannot update or delete rows from the table if the action is
  published even if the table has a primary index).
---
 doc/src/sgml/catalogs.sgml | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/doc/src/sgml/catalogs.sgml b/doc/src/sgml/catalogs.sgml
index b1b077c97f..58a25e8e68 100644
--- a/doc/src/sgml/catalogs.sgml
+++ b/doc/src/sgml/catalogs.sgml
@@ -2141,8 +2141,10 @@ SCRAM-SHA-256$<replaceable>&lt;iteration count&gt;</replaceable>:<replaceable>&l
        Columns used to form <quote>replica identity</quote> for rows:
        <literal>d</literal> = default (primary key, if any),
        <literal>n</literal> = nothing,
-       <literal>f</literal> = all columns
-       <literal>i</literal> = index with <structfield>indisreplident</structfield> set, or default
+       <literal>f</literal> = all columns,
+       <literal>i</literal> = index with
+       <structfield>indisreplident</structfield> set (same as nothing if the
+       index used got dropped)
       </para></entry>
      </row>
 
-- 
2.17.1

Reply via email to