Re: Skipping logical replication transactions on subscriber side

Peter Eisentraut <peter.eisentraut@enterprisedb.com>

From: Peter Eisentraut <peter.eisentraut@enterprisedb.com>
To: Amit Kapila <amit.kapila16@gmail.com>, Masahiko Sawada <sawada.mshk@gmail.com>
Cc: "David G. Johnston" <david.g.johnston@gmail.com>, "tanghy.fnst@fujitsu.com" <tanghy.fnst@fujitsu.com>, vignesh C <vignesh21@gmail.com>, Greg Nancarrow <gregn4422@gmail.com>, "houzj.fnst@fujitsu.com" <houzj.fnst@fujitsu.com>, "osumi.takamichi@fujitsu.com" <osumi.takamichi@fujitsu.com>, Alexey Lesovsky <lesovsky@gmail.com>, PostgreSQL-development <pgsql-hackers@postgresql.org>
Date: 2022-02-15T10:35:15Z
Lists: pgsql-hackers
On 14.02.22 10:16, Amit Kapila wrote:
> I think exposing LSN is a better approach as it doesn't have the
> dangers of wraparound. And, I think users can use it with the existing
> function pg_replication_origin_advance() which will save us from
> adding additional code for this feature. We can explain/expand in docs
> how users can use the error information from view/error_logs and use
> the existing function to skip conflicting transactions. We might want
> to even expose error_origin to make it a bit easier for users but not
> sure. I feel the need for the new syntax (and then added code
> complexity due to that) isn't warranted if we expose error_LSN and let
> users use it with the existing functions.

Well, the whole point of this feature is to provide a higher-level 
interface instead of pg_replication_origin_advance().  Replication 
origins are currently not something the users have to deal with 
directly.  We already document that you can use 
pg_replication_origin_advance() to skip erroring transactions.  But that 
seems unsatisfactory.  It'd be like using pg_surgery to fix unique 
constraint violations.



Commits

  1. Test ALIGNOF_DOUBLE==4 compatibility under ALIGNOF_DOUBLE==8.

  2. Reorder subskiplsn in pg_subscription to avoid alignment issues.

  3. Add ALTER SUBSCRIPTION ... SKIP.

  4. Optionally disable subscriptions on error.

  5. Update docs of logical replication for commit 8d74fc96db.

  6. Respect permissions within logical replication.

  7. Fix regression test failure caused by commit 8d74fc96db.

  8. Add a view to show the stats of subscription workers.

  9. Add logical change details to logical replication worker errcontext.

  10. Rename LOGICAL_REP_MSG_STREAM_END to LOGICAL_REP_MSG_STREAM_STOP.

  11. Fix typo in protocol.sgml.

  12. Remove unused argument in apply_handle_commit_internal().

  13. Fix replication of in-progress transactions in tablesync worker.

  14. Reorder pg_sequence columns to avoid alignment issue