Re: Skipping logical replication transactions on subscriber side

From: Amit Kapila <amit(dot)kapila16(at)gmail(dot)com>
To: Greg Nancarrow <gregn4422(at)gmail(dot)com>
Cc: Masahiko Sawada <sawada(dot)mshk(at)gmail(dot)com>, Peter Eisentraut <peter(dot)eisentraut(at)enterprisedb(dot)com>, "houzj(dot)fnst(at)fujitsu(dot)com" <houzj(dot)fnst(at)fujitsu(dot)com>, "tanghy(dot)fnst(at)fujitsu(dot)com" <tanghy(dot)fnst(at)fujitsu(dot)com>, "osumi(dot)takamichi(at)fujitsu(dot)com" <osumi(dot)takamichi(at)fujitsu(dot)com>, Alexey Lesovsky <lesovsky(at)gmail(dot)com>, PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Skipping logical replication transactions on subscriber side
Date: 2021-10-26 10:29:27
Message-ID: CAA4eK1LwmYLOvA2ghuvJqncw9grfzHUwYhJDs490C51AKX1vYg@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Tue, Oct 26, 2021 at 2:27 PM Greg Nancarrow <gregn4422(at)gmail(dot)com> wrote:
>
> On Tue, Oct 26, 2021 at 5:16 PM Amit Kapila <amit(dot)kapila16(at)gmail(dot)com> wrote:
> >
> > I agree that we will need a separate syntax for conflict resolution
> > but there is some similarity in what I proposed above (On
> > Error/Conflict [1]) with the existing syntax of Insert ... On
> > Conflict. I understand that here the context is different and we are
> > storing this information in the catalog but still there is some syntax
> > similarity and it will avoid adding new syntax variants.
> >
>
> The problem I see with the suggested syntax:
>
> Alter Subscription <sub_name> On Error ( subscription_parameter [=
> value] [, ... ] );
> OR
> Alter Subscription <sub_name> On Conflict ( subscription_parameter [=
> value] [, ... ] );
>
> is that "On Error ..." and "On Conflict" imply an action to be done on
> a future condition (Error/Conflict), whereas at least in this case
> (skip_xid) it's only AFTER the problem condition has occurred that we
> know the XID of the failed transaction that we want to skip. So that
> syntax looks a little confusing to me. Unless you had something else
> in mind on how it would work?
>

You have a point. The other alternatives on this line could be:

Alter Subscription <sub_name> SKIP ( subscription_parameter [=value] [, ... ] );

where subscription_parameter can be one of:
xid = <xid_val>
lsn = <lsn_val>
...

Instead of using Skip, we can use WITH as used in Alter Database
syntax but we are already using WITH in Create Subscription for a
different purpose, so that may not be a very good idea.

The basic idea is that I am trying to use options here rather than a
keyword-based syntax as there can be multiple such options.

--
With Regards,
Amit Kapila.

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Amul Sul 2021-10-26 10:59:55 Re: [Patch] ALTER SYSTEM READ ONLY
Previous Message Yura Sokolov 2021-10-26 09:33:47 Re: XTS cipher mode for cluster file encryption