mirror of
https://github.com/postgres/postgres.git
synced 2025-06-16 06:01:02 +03:00
Logical replication
- Add PUBLICATION catalogs and DDL - Add SUBSCRIPTION catalog and DDL - Define logical replication protocol and output plugin - Add logical replication workers From: Petr Jelinek <petr@2ndquadrant.com> Reviewed-by: Steve Singer <steve@ssinger.info> Reviewed-by: Andres Freund <andres@anarazel.de> Reviewed-by: Erik Rijkers <er@xs4all.nl> Reviewed-by: Peter Eisentraut <peter.eisentraut@2ndquadrant.com>
This commit is contained in:
@ -37,6 +37,7 @@
|
||||
#include "catalog/pg_authid.h"
|
||||
#include "catalog/pg_database.h"
|
||||
#include "catalog/pg_db_role_setting.h"
|
||||
#include "catalog/pg_subscription.h"
|
||||
#include "catalog/pg_tablespace.h"
|
||||
#include "commands/comment.h"
|
||||
#include "commands/dbcommands.h"
|
||||
@ -790,6 +791,7 @@ dropdb(const char *dbname, bool missing_ok)
|
||||
int npreparedxacts;
|
||||
int nslots,
|
||||
nslots_active;
|
||||
int nsubscriptions;
|
||||
|
||||
/*
|
||||
* Look up the target database's OID, and get exclusive lock on it. We
|
||||
@ -874,6 +876,21 @@ dropdb(const char *dbname, bool missing_ok)
|
||||
dbname),
|
||||
errdetail_busy_db(notherbackends, npreparedxacts)));
|
||||
|
||||
/*
|
||||
* Check if there are subscriptions defined in the target database.
|
||||
*
|
||||
* We can't drop them automatically because they might be holding
|
||||
* resources in other databases/instances.
|
||||
*/
|
||||
if ((nsubscriptions = CountDBSubscriptions(db_id)) > 0)
|
||||
ereport(ERROR,
|
||||
(errcode(ERRCODE_OBJECT_IN_USE),
|
||||
errmsg("database \"%s\" is being used by logical replication subscription",
|
||||
dbname),
|
||||
errdetail_plural("There is %d subscription.",
|
||||
"There are %d subscriptions.",
|
||||
nsubscriptions, nsubscriptions)));
|
||||
|
||||
/*
|
||||
* Remove the database's tuple from pg_database.
|
||||
*/
|
||||
|
Reference in New Issue
Block a user