diff --git a/src/backend/catalog/pg_publication.c b/src/backend/catalog/pg_publication.c index 0602398a54..067336d02c 100644 --- a/src/backend/catalog/pg_publication.c +++ b/src/backend/catalog/pg_publication.c @@ -32,6 +32,7 @@ #include "catalog/pg_type.h" #include "commands/publicationcmds.h" #include "funcapi.h" +#include "storage/lmgr.h" #include "utils/array.h" #include "utils/builtins.h" #include "utils/catcache.h" @@ -614,6 +615,7 @@ publication_add_schema(Oid pubid, Oid schemaid, bool if_not_exists) List *schemaRels = NIL; ObjectAddress myself, referenced; + ListCell* lc; rel = table_open(PublicationNamespaceRelationId, RowExclusiveLock); @@ -677,6 +679,9 @@ publication_add_schema(Oid pubid, Oid schemaid, bool if_not_exists) */ schemaRels = GetSchemaPublicationRelations(schemaid, PUBLICATION_PART_ALL); + foreach(lc, schemaRels) { + LockRelationOid(lfirst_oid(lc), ShareRowExclusiveLock); + } InvalidatePublicationRels(schemaRels); return myself;