Thread: pgsql: Fix partition table's REPLICA IDENTITY checking on the subscribe
Fix partition table's REPLICA IDENTITY checking on the subscriber. In logical replication, we will check if the target table on the subscriber is updatable by comparing the replica identity of the table on the publisher with the table on the subscriber. When the target table is a partitioned table, we only check its replica identity but not for the partition tables. This leads to assertion failure while applying changes for update/delete as we expect those to succeed only when the corresponding partition table has a primary key or has a replica identity defined. Fix it by checking the replica identity of the partition table while applying changes. Reported-by: Shi Yu Author: Shi Yu, Hou Zhijie Reviewed-by: Amit Langote, Amit Kapila Backpatch-through: 13, where it was introduced Discussion: https://postgr.es/m/OSZPR01MB6310F46CD425A967E4AEF736FDA49@OSZPR01MB6310.jpnprd01.prod.outlook.com Branch ------ master Details ------- https://git.postgresql.org/pg/commitdiff/26b3455afaa968fb48d0e468528d79de56624559 Modified Files -------------- src/backend/replication/logical/relation.c | 115 +++++++++++++++++------------ src/backend/replication/logical/worker.c | 27 +++++-- src/test/subscription/t/013_partition.pl | 14 ++++ 3 files changed, 101 insertions(+), 55 deletions(-)
Amit Kapila <akapila@postgresql.org> writes: > Fix partition table's REPLICA IDENTITY checking on the subscriber. prion seems not too happy with this --- probably you could reproduce the failure with -DRELCACHE_FORCE_RELEASE -DCATCACHE_FORCE_RELEASE. regards, tom lane
On Tue, Jun 21, 2022 at 9:42 AM Tom Lane <tgl@sss.pgh.pa.us> wrote: > > Amit Kapila <akapila@postgresql.org> writes: > > Fix partition table's REPLICA IDENTITY checking on the subscriber. > > prion seems not too happy with this --- probably you could reproduce > the failure with -DRELCACHE_FORCE_RELEASE -DCATCACHE_FORCE_RELEASE. > Okay, I'll look into it. -- With Regards, Amit Kapila.
On Tue, Jun 21, 2022 at 9:57 AM Amit Kapila <amit.kapila16@gmail.com> wrote: > > On Tue, Jun 21, 2022 at 9:42 AM Tom Lane <tgl@sss.pgh.pa.us> wrote: > > > > Amit Kapila <akapila@postgresql.org> writes: > > > Fix partition table's REPLICA IDENTITY checking on the subscriber. > > > > prion seems not too happy with this --- probably you could reproduce > > the failure with -DRELCACHE_FORCE_RELEASE -DCATCACHE_FORCE_RELEASE. > > > > Okay, I'll look into it. > I have pushed a fix for this and prion has passed in its latest run. -- With Regards, Amit Kapila.