On Tue, 11 Nov 2025 at 16:41, vignesh C <[email protected]> wrote:
>
> On Tue, 11 Nov 2025 at 11:23, Chao Li <[email protected]> wrote:
> >
> > Hi Vignesh,
> >
> > A few more comments:
> >
> > > On Nov 7, 2025, at 22:47, vignesh C <[email protected]> wrote:
> > >
> > > The attached v20251107_2 version patch has the changes for the same.
> > >
> > > Regards,
> > > Vignesh
> > > <v20251107_2-0001-Documentation-for-sequence-synchronizati.patch>
> >
> > 1
> > ```
> > - Currently, there can be only one synchronization worker per table.
> > + Currently, there can be only one table synchronization worker per
> > table
> > + and one sequence synchronization worker to synchronize all
> > sequences.
> > ```
> >
> > Feels like this statement is not accurate and leaves an impression that a
> > table has a fixed work to serve it. So I think we can enhance this
> > statement a little bit as:
> >
> > ```
> > Currently, only one table synchronization worker runs per table, and
> > only one sequence synchronization worker runs per subscription at a time.
> > ```
>
> Changed it slightly.
>
> > 2
> > ```
> > +<programlisting>
> > +/* sub # */ CREATE SEQUENCE s1 START WITH 10 INCREMENT BY 1
> > +/* sub # */ CREATE SEQUENCE s2 START WITH 100 INCREMENT BY 10;
> > +</programlisting></para>
> > ```
> >
> > Missed semi-colon for the first SQL statement.
>
> Modified
>
> > 3
> > ```
> > +<programlisting>
> > +/* sub # */ SELECT srrelid::regclass, srsublsn FROM pg_subscription_rel ;
> > ```
> >
> > Unneeded white-space before the semi-colon.
>
> Modified
>
> > 4
> > ```
> > +/* sub # */ SELECT * FROM s2
> > + last_value | log_cnt | is_called
> > +------------+---------+-----------
> > + 610 | 0 | t
> > +(1 row)
> > ```
> >
> > Again, missed semi-colon.
>
> Modified
>
> The attached v20251111 version patch has the changes for the same.
Hi Team,
While working on another thread, I noticed a bug introduced by commit
as part of this thread.
In function pg_get_publication_tables, We have code:
```
if (pub_elem->alltables)
pub_elem_tables = GetAllPublicationRelations(RELKIND_RELATION,
pub_elem->pubviaroot);
else
{
List *relids,
*schemarelids;
relids = GetPublicationRelations(pub_elem->oid,
pub_elem->pubviaroot ?
PUBLICATION_PART_ROOT :
PUBLICATION_PART_LEAF);
schemarelids = GetAllSchemaPublicationRelations(pub_elem->oid,
pub_elem->pubviaroot ?
PUBLICATION_PART_ROOT :
PUBLICATION_PART_LEAF);
pub_elem_tables = list_concat_unique_oid(relids, schemarelids);
}
```
So, when we create an 'ALL SEQUENCE publication' and we execute
'SELECT * from pg_publication_tables'
We will enter the else condition in the above code, which does not
seem correct to me.
It will call functions which are not required to be called. It will
also call the function 'GetPublicationRelations' which contradicts the
comment above this function.
Similar issue is present for functions "InvalidatePubRelSyncCache" and
"AlterPublicationOptions".
Thanks,
Shlok Kyal