From: | vignesh C <vignesh21(at)gmail(dot)com> |
---|---|
To: | Peter Smith <smithpb2250(at)gmail(dot)com> |
Cc: | "Hayato Kuroda (Fujitsu)" <kuroda(dot)hayato(at)fujitsu(dot)com>, Masahiko Sawada <sawada(dot)mshk(at)gmail(dot)com>, shveta malik <shveta(dot)malik(at)gmail(dot)com>, Shlok Kyal <shlok(dot)kyal(dot)oss(at)gmail(dot)com>, Amit Kapila <amit(dot)kapila16(at)gmail(dot)com>, Peter Eisentraut <peter(at)eisentraut(dot)org>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>, Euler Taveira <euler(at)eulerto(dot)com>, Michael Paquier <michael(at)paquier(dot)xyz>, "Zhijie Hou (Fujitsu)" <houzj(dot)fnst(at)fujitsu(dot)com>, "Jonathan S(dot) Katz" <jkatz(at)postgresql(dot)org> |
Subject: | Re: Logical Replication of sequences |
Date: | 2025-04-14 09:34:57 |
Message-ID: | CALDaNm04S4xW_5G9hLcFKCQ4eKnu2XfqOEovZC15nWcM+Tr81w@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Mon, 14 Apr 2025 at 08:26, Peter Smith <smithpb2250(at)gmail(dot)com> wrote:
>
> Hi Vignesh,
>
> Some review comments for patch v20250325-0002
>
> ======
> Commit message
>
> 1.
> Furthermore, enhancements to psql commands (\d and \dRp) now allow for better
> display of publications containing specific sequences or sequences included
> in a publication.
>
> ~
>
> That doesn't seem as clear as it might be. Also, IIUC the "sequences
> included in a publication" is not actually implemented yet -- there is
> only the "all sequences" flag.
>
> SUGGESTION
> Furthermore, enhancements to psql commands now display which
> publications contain the specified sequence (\d command), and if a
> specified publication includes all sequences (\dRp command)
Modified
> ======
> doc/src/sgml/ref/create_publication.sgml
>
> 2.
> <para>
> To add a table to a publication, the invoking user must have ownership
> - rights on the table. The <command>FOR ALL TABLES</command> and
> - <command>FOR TABLES IN SCHEMA</command> clauses require the invoking
> + rights on the table. The <command>FOR TABLES IN SCHEMA</command>,
> + <command>FOR ALL TABLES</command> and
> + <command>FOR ALL SEQUENCES</command> clauses require the invoking
> user to be a superuser.
>
> IMO these should all be using <literal> SGML markup same as elsewhere
> on this page, not <command> markup.
Modified
> ======
> src/backend/commands/publicationcmds.c
>
> 3.
> if (!superuser_arg(newOwnerId))
> {
> if (form->puballtables)
> ereport(ERROR,
> errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
> errmsg("permission denied to change owner of publication \"%s\"",
> NameStr(form->pubname)),
> errhint("The owner of a FOR ALL TABLES publication must be
> a superuser."));
> if (form->puballsequences)
> ereport(ERROR,
> errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
> errmsg("permission denied to change owner of publication \"%s\"",
> NameStr(form->pubname)),
> errhint("The owner of a FOR ALL SEQUENCES publication must
> be a superuser."));
> if (is_schema_publication(form->oid))
> ereport(ERROR,
> errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
> errmsg("permission denied to change owner of publication \"%s\"",
> NameStr(form->pubname)),
> errhint("The owner of a FOR TABLES IN SCHEMA publication
> must be a superuser."));
> }
>
> I wondered if there's too much duplicated code here. Maybe it's better
> to share a common ereport?
>
> SUGGESTION
>
> if (!superuser_arg(newOwnerId))
> {
> char *hint_msg = NULL;
>
> if (form->puballtables)
> hint_msg = _("The owner of a FOR ALL TABLES publication must be a
> superuser.");
> else if (form->puballsequences)
> hint_msg = _("The owner of a FOR ALL SEQUENCES publication must be
> a superuser.");
> else if (is_schema_publication(form->oid))
> hint_msg = _("The owner of a FOR TABLES IN SCHEMA publication must
> be a superuser.");
> if (hint_msg)
> ereport(ERROR,
> errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
> errmsg("permission denied to change owner of publication \"%s\"",
> NameStr(form->pubname)),
> errhint(hint_msg));
> }
I felt the existing code is ok in this case. It will be easier to
review if the error hint is along with ereport in this case.
> ======
> src/bin/psql/describe.c
>
> describeOneTableDetails:
>
> 4.
> + res = PSQLexec(buf.data);
> + if (!res)
> + goto error_return;
> +
> + numrows = PQntuples(res);
> +
>
> Isn't this same code already done a few lines above in the same
> function? Maybe I misread something.
Modified
> ======
> src/test/regress/sql/publication.sql
>
> 5.
> +-- check that describe sequence lists all publications the sequence belongs to
>
> Might be clearer to say: "lists both" instead of "lists all"
Modified
Regarding comment at [1]. On further thinking I have removed that test
as one test is enough for that change, so the comment handling is no
more required.
Regarding comment at [2]. The attached patch has the rebased changes too.
The attached v20250414 version patch has the changes for the same.
[1] - https://www.postgresql.org/message-id/CAHut%2BPsgZkEegDzhJ2%3DDwDkrks6g6aQ6LX1-M%2BXBBt4PP-MX3g%40mail.gmail.com
[2] - https://www.postgresql.org/message-id/CAHut%2BPv5XMnX%2BQSSDhL5eqXV%3Dkp22jyYOgFx_u7kSMhwvktvrg%40mail.gmail.com
Regards,
Vignesh
Attachment | Content-Type | Size |
---|---|---|
v20250414-0001-Introduce-pg_sequence_state-function-for-e.patch | text/x-patch | 6.6 KB |
v20250414-0005-Documentation-for-sequence-synchronization.patch | text/x-patch | 24.3 KB |
v20250414-0002-Introduce-ALL-SEQUENCES-support-for-Postgr.patch | text/x-patch | 106.5 KB |
v20250414-0003-Reorganize-tablesync-Code-and-Introduce-sy.patch | text/x-patch | 23.5 KB |
v20250414-0004-Enhance-sequence-synchronization-during.patch | text/x-patch | 97.6 KB |
From | Date | Subject | |
---|---|---|---|
Next Message | Andrey Borodin | 2025-04-14 10:17:50 | Re: rounding_up |
Previous Message | Pavel Luzanov | 2025-04-14 09:27:53 | Re: Adding error messages to a few slash commands |