On 2020-05-15 05:16, Michael Paquier wrote:
On Thu, May 14, 2020 at 06:30:38PM +0300, Marina Polyakova wrote:
Perhaps it will be useful for some users to know that relreplident = i does
not mean that the required index exists (as in default case)?..

Yeah, that feels incomplete and I think that it would be good to close
the gap here, as the user has no way to guess how things work now just
by looking at the docs.  What about switching your suggestion of "(if
any)" to be "(same as default if the index used got dropped)"?

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.

P.S. Thank you for fixing the assertion failure [1] - I received it too yesterday :-)

[1] https://github.com/postgres/postgres/commit/7ccb2f54d9f3f3c5b4ac092d62c846b02a47f8d5

--
Marina Polyakova
Postgres Professional: http://www.postgrespro.com
The Russian Postgres Company


Reply via email to