Re: Logical Replication of sequences
От | vignesh C |
---|---|
Тема | Re: Logical Replication of sequences |
Дата | |
Msg-id | CALDaNm04S4xW_5G9hLcFKCQ4eKnu2XfqOEovZC15nWcM+Tr81w@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: Logical Replication of sequences (Peter Smith <smithpb2250@gmail.com>) |
Список | pgsql-hackers |
On Mon, 14 Apr 2025 at 08:26, Peter Smith <smithpb2250@gmail.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
Вложения
- v20250414-0001-Introduce-pg_sequence_state-function-for-e.patch
- v20250414-0005-Documentation-for-sequence-synchronization.patch
- v20250414-0002-Introduce-ALL-SEQUENCES-support-for-Postgr.patch
- v20250414-0003-Reorganize-tablesync-Code-and-Introduce-sy.patch
- v20250414-0004-Enhance-sequence-synchronization-during.patch
В списке pgsql-hackers по дате отправления: