From: | Amit Kapila <amit(dot)kapila16(at)gmail(dot)com> |
---|---|
To: | shveta malik <shveta(dot)malik(at)gmail(dot)com> |
Cc: | "Zhijie Hou (Fujitsu)" <houzj(dot)fnst(at)fujitsu(dot)com>, "Hayato Kuroda (Fujitsu)" <kuroda(dot)hayato(at)fujitsu(dot)com>, pgsql-hackers <pgsql-hackers(at)postgresql(dot)org>, vignesh C <vignesh21(at)gmail(dot)com>, Nisha Moond <nisha(dot)moond412(at)gmail(dot)com>, Dilip Kumar <dilipbalaut(at)gmail(dot)com>, Masahiko Sawada <sawada(dot)mshk(at)gmail(dot)com> |
Subject: | Re: Conflict detection for update_deleted in logical replication |
Date: | 2025-07-25 09:00:54 |
Message-ID: | CAA4eK1L09u_A0HFRydA4xc=HpPkCh+7h-+_WRhKw1Cksp5_5zQ@mail.gmail.com |
Views: | Whole Thread | Raw Message | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Fri, Jul 25, 2025 at 12:37 PM shveta malik <shveta(dot)malik(at)gmail(dot)com> wrote:
>
> On Thu, Jul 24, 2025 at 9:12 AM shveta malik <shveta(dot)malik(at)gmail(dot)com> wrote:
> >
> >
> > 2)
> > + if (MySubscription->retaindeadtuples &&
> > + FindMostRecentlyDeletedTupleInfo(localrel, remoteslot,
> > +
> > &conflicttuple.xmin,
> > +
> > &conflicttuple.origin,
> > +
> > &conflicttuple.ts) &&
> > + conflicttuple.origin != replorigin_session_origin)
> > + type = CT_UPDATE_DELETED;
> > + else
> > + type = CT_UPDATE_MISSING;
> >
> > Shall the conflict be detected as update_deleted irrespective of origin?
> >
>
> On thinking more here, I think that we may have the possibility of
> UPDATE after DELETE from the same origin only when a publication
> selectively publishes certain operations.
>
> 1)
> Consider a publication that only publishes UPDATE and DELETE
> operations. On the publisher, we may perform operations like DELETE,
> INSERT, and UPDATE. On the subscriber, only DELETE and UPDATE events
> are received. In this case, should we treat the incoming UPDATE as
> update_deleted or update_missing?
>
If the user is doing subscription only for certain operations like
Update or Delete, she may not be interested in eventual consistency as
some of the data may not be replicated, so a conflict detection
followed by any resolution may not be helpful.
The other point is that if we report update_delete in such cases, it
won't be reliable, sometimes it can be update_missing as vacuum would
have removed the row, OTOH, if we report update_missing, it will
always be the same conflict, and we can document it.
--
With Regards,
Amit Kapila.
From | Date | Subject | |
---|---|---|---|
Next Message | Dave Cramer | 2025-07-25 09:39:40 | Re: More protocol.h replacements this time into walsender.c |
Previous Message | Bertrand Drouvot | 2025-07-25 08:57:29 | Re: Custom pgstat support performance regression for simple queries |