Re: Conflict detection for update_deleted in logical replication

Поиск
Список
Период
Сортировка
От Amit Kapila
Тема Re: Conflict detection for update_deleted in logical replication
Дата
Msg-id CAA4eK1L09u_A0HFRydA4xc=HpPkCh+7h-+_WRhKw1Cksp5_5zQ@mail.gmail.com
обсуждение исходный текст
Ответ на Re: Conflict detection for update_deleted in logical replication  (shveta malik <shveta.malik@gmail.com>)
Ответы Re: Conflict detection for update_deleted in logical replication
Re: Conflict detection for update_deleted in logical replication
Список pgsql-hackers
On Fri, Jul 25, 2025 at 12:37 PM shveta malik <shveta.malik@gmail.com> wrote:
>
> On Thu, Jul 24, 2025 at 9:12 AM shveta malik <shveta.malik@gmail.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.



В списке pgsql-hackers по дате отправления: