Re: Logical replication can be broken by domain constraint with NOT VALID option

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Andrey Lepikhov <a(dot)lepikhov(at)postgrespro(dot)ru>
Cc: pgsql-bugs(at)lists(dot)postgresql(dot)org
Subject: Re: Logical replication can be broken by domain constraint with NOT VALID option
Date: 2019-11-03 15:42:13
Message-ID: 29155.1572795733@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

Andrey Lepikhov <a(dot)lepikhov(at)postgrespro(dot)ru> writes:
> During patch development I ran into a small problem (see attachment,
> fail_replication.sh):
> 1. We have a table with logical replication to another node.
> 2. On the master and replica add such "NOT VALID" domain constraint on
> the table that some tuples violates the constraint.
> 3. UPDATE the table: set value of the tuple that violates constraint to
> correct value.
> 4. That's all!

> The reason for this problem is that on UPDATE walsender sends old tuple
> value (that violates the constraint) with new version (satisfied the
> constraint).
> Replication worker at replica node restores slot from transfer
> representation. During this process domain checking constraint and
> returns an ERROR.

I'm not sure this is something we should attempt to fix. There are
an infinite number of ways you can break logical replication by
presenting it with inconsistent data, and that's really what you've
done here.

> This problem can be solved by many ways and approaches. I wrote the
> patch to solve this problem (see in attachment) by the shortest way.

That patch is certainly utterly unacceptable. It'd allow the
receipient to accept data that violates the domain constraint.

The situation you're describing would probably best be handled by
not adding the constraint on the replica side until all the
bad data has been corrected (and replicated).

regards, tom lane

In response to

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Tom Lane 2019-11-03 22:40:00 Re: BUG #16059: Tab-completion of filenames in COPY commands removes required quotes
Previous Message Manuel Rigger 2019-11-03 11:55:11 Re: ALTER TABLE results in "ERROR: could not open relation with OID 43707388"