Re: Logical Replication of sequences
vignesh C <vignesh21@gmail.com>
Commits
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Doc: Add documentation for sequence synchronization.
- 55cefadde874 19 (unreleased) landed
-
Remove unused assignment in CREATE PUBLICATION grammar.
- bfb7419b0bbe 19 (unreleased) landed
-
Add seq_sync_error_count to subscription statistics.
- f6a4c498dcf6 19 (unreleased) landed
-
Fix few issues in commit 5509055d69.
- 5a4eba558aa7 19 (unreleased) landed
-
Add sequence synchronization for logical replication.
- 5509055d6956 19 (unreleased) landed
-
Add worker type argument to logical replication worker functions.
- 3e8e05596a02 19 (unreleased) landed
-
Introduce "REFRESH SEQUENCES" for subscriptions.
- f0b3573c3aac 19 (unreleased) landed
-
Refactor logical worker synchronization code into a separate file.
- 41c674d2e31e 19 (unreleased) landed
-
Standardize use of REFRESH PUBLICATION in code and messages.
- 2436b8c047ff 19 (unreleased) landed
-
Add "ALL SEQUENCES" support to publications.
- 96b378497346 19 (unreleased) landed
-
Expose sequence page LSN via pg_get_sequence_data.
- b93172ca59f4 19 (unreleased) landed
-
Resume conflict-relevant data retention automatically.
- 0d48d393d465 19 (unreleased) cited
-
Post-commit review fixes for 228c370868.
- 1f7e9ba3ac4e 19 (unreleased) cited
-
Generate GUC tables from .dat file
- 63599896545c 19 (unreleased) cited
>
> Some review comments for patch 0001:
> 1. In src/backend/commands/sequence.c
> in pg_sequence_state()
> + /* open and lock sequence */
> + init_sequence(seq_relid, &elm, &seqrel);
> +
> + if (pg_class_aclcheck(elm->relid, GetUserId(),
> + ACL_SELECT | ACL_USAGE) != ACLCHECK_OK)
> + ereport(ERROR,
> + errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
> + errmsg("permission denied for sequence %s",
> + RelationGetRelationName(seqrel)));
> +
>
> How about using aclcheck_error for this, which also supports error messages for specific access errors. Most other objects seem to be using this.
> if (aclresult != ACLCHECK_OK)
> aclcheck_error(aclresult, get_relkind_objtype(seqrel->relkind),
> RelationGetRelationName(seqrel));
I felt this is ok in this case as it is used similarly in
nextval_internal, currval_oid, lastval, do_setval and
pg_sequence_parameters also
> 2. in function pg_sequence_state()
> +
> + UnlockReleaseBuffer(buf);
> + relation_close(seqrel, NoLock);
>
> Ideally the corresponding close for init_sequence is sequence_close() rather than relation_close()
Fixed
The comment for the same is handled in the v2025029 version patch
attached at [1].
[1] - https://www.postgresql.org/message-id/CALDaNm0ssEaHW8by5kd1%3DwE7LPMhhBiV6971JbFWsY6Qwp7NMw%40mail.gmail.com
Regards,
Vignesh