> > > --- > > > PublicationAddTables > > > publication_add_relation > > > /* Invalidate relcache so that publication info is > > > rebuilt. */ > > > CacheInvalidateRelcache(targetrel); > > > --- > > > > > > In addition, this problem can happen in both ADD TABLE, DROP TABLE, > > > and SET TABLE cases, so we need to invalidate the leaf partitions' > > > recache in all these cases. > > > > > > > Few comments: > > ============= > > { > > @@ -664,7 +673,13 @@ PublicationDropTables(Oid pubid, List *rels, bool > > missing_ok) > > > > ObjectAddressSet(obj, PublicationRelRelationId, prid); > > performDeletion(&obj, DROP_CASCADE, 0); > > + > > + relids = GetPubPartitionOptionRelations(relids, PUBLICATION_PART_LEAF, > > + relid); > > } > > + > > + /* Invalidate relcache so that publication info is rebuilt. */ > > + InvalidatePublicationRels(relids); > > } > > > > We already register the invalidation for the main table in > > RemovePublicationRelById which is called via performDeletion. I think it is > > better to perform invalidation for partitions at that place. > > Similarly is there a reason for not doing invalidations of partitions in > > publication_add_relation()? > > Thanks for the comment. I originally intended to reduce the number of invalid > message when add/drop serval tables while each table has lots of partitions > which > could exceed the MAX_RELCACHE_INVAL_MSGS. But that seems a rare case, so , > I changed the code as suggested. > > Attach new version patches which addressed the comment.
Thanks for your patch. I confirmed that the problem I reported was fixed. Besides, Your v2 patch also fixed an existing a problem about "DROP PUBLICATION" on HEAD. (Publication was dropped but it still reported errors about replica identity when trying to update or delete a partition table.) Regards Tang