diff options
Diffstat (limited to 'src/backend')
-rw-r--r-- | src/backend/commands/publicationcmds.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/src/backend/commands/publicationcmds.c b/src/backend/commands/publicationcmds.c index a5e29b5a827..879710143e1 100644 --- a/src/backend/commands/publicationcmds.c +++ b/src/backend/commands/publicationcmds.c @@ -236,6 +236,11 @@ CreatePublication(CreatePublicationStmt *stmt) PublicationAddTables(puboid, rels, true, NULL); CloseTableList(rels); } + else if (stmt->for_all_tables) + { + /* Invalidate relcache so that publication info is rebuilt. */ + CacheInvalidateRelcacheAll(); + } table_close(rel, RowExclusiveLock); @@ -469,13 +474,14 @@ AlterPublication(AlterPublicationStmt *stmt) } /* - * Drop publication by OID + * Remove the publication by mapping OID. */ void RemovePublicationById(Oid pubid) { Relation rel; HeapTuple tup; + Form_pg_publication pubform; rel = table_open(PublicationRelationId, RowExclusiveLock); @@ -484,6 +490,12 @@ RemovePublicationById(Oid pubid) if (!HeapTupleIsValid(tup)) elog(ERROR, "cache lookup failed for publication %u", pubid); + pubform = (Form_pg_publication) GETSTRUCT(tup); + + /* Invalidate relcache so that publication info is rebuilt. */ + if (pubform->puballtables) + CacheInvalidateRelcacheAll(); + CatalogTupleDelete(rel, &tup->t_self); ReleaseSysCache(tup); |