Thread: Report replica identity in pg_publication_tables
Hi All, The commit message in the patch says it all, but let me repeat it here. When debugging issues with logical replication, replica identity property of tables in publication is often useful, for example, to determine the amount of data logged for an UPDATE or DELETE on a given table. Given a set of publications that a WAL sender is using, pg_publication_tables can be used to get the list of tables whose changes will be replicated including the columns of those tables and row filters. But the replica identity of those tables needs to be separately found out by querying pg_class or joining pg_class with pg_publication_tables on schemaname and relname. Adding the replica identity column to pg_publication_tables avoids this extra step. The replica identity of a given table is not a property of publication, per say, so it's arguable whether it should be included in pg_publication_tables or not. But the output seems to be useful. E.g. from the tests SELECT * FROM pg_publication_tables WHERE pubname = 'testpub6'; pubname | schemaname | tablename | attnames | rowfilter | replica_identity ----------+------------+---------------------+----------+-----------+------------------ testpub6 | public | rf_tbl_abcd_part_pk | {a,b} | (b > 99) | default (1 row) This line gives all the information related to logical replication of table rf_tbl_abcd_part_pk together. -- Best Wishes, Ashutosh Bapat
On Mon, Jun 30, 2025 at 3:44 PM Ashutosh Bapat <ashutosh.bapat.oss@gmail.com> wrote: > > Hi All, > > The commit message in the patch says it all, but let me repeat it here. > You forgot to attach the patch. > When debugging issues with logical replication, replica identity > property of tables in publication is often useful, for example, to > determine the amount of data logged for an UPDATE or DELETE on a given > table. > I think it can help to determine what is logged for the DELETE or UPDATE operation, but not the exact amount of data. Can you please explain with an example how such information can help with debugging? > Given a set of publications that a WAL sender is using, > pg_publication_tables can be used to get the list of tables whose > changes will be replicated including the columns of those tables and > row > filters. But the replica identity of those tables needs to be > separately found out by querying pg_class or joining pg_class with > pg_publication_tables on schemaname and relname. Adding the replica > identity column to pg_publication_tables avoids this extra step. > > The replica identity of a given table is not a property of > publication, per say, so it's arguable whether it should be included > in pg_publication_tables or not. > Right, discussing the use case a bit more might help us to find if this is the right place to add 'replica identity' information. -- With Regards, Amit Kapila.