On 21 July 2017 at 07:09, Josh Berkus <j...@berkus.org> wrote:

> All:
>
> The problem:
>
> postgres=# drop database bookdata;
> ERROR:  database "bookdata" is being accessed by other users
> DETAIL:  There is 1 other session using the database.
> postgres=# \c bookdata
> You are now connected to database "bookdata" as user "postgres".
> bookdata=# drop subscription wholedb;
> NOTICE:  dropped replication slot "wholedb" on publisher
> DROP SUBSCRIPTION
> bookdata=# \c postgres
> You are now connected to database "postgres" as user "postgres".
> postgres=# drop database bookdata;
> DROP DATABASE
>
> Is there any easy way for us to detect that the "user" accessing the
> target database is actually a logical replication subscription, and give
> the DBA a better error message (e.g. "database 'bookdata' still has open
> subscrptions")? <http://www.postgresql.org/mailpref/pgsql-hackers>



Good idea. Also, this affects any active logical (db-specific) replication
slot, not just built-in logical replication.

CountOtherDBBackends reports prepared xacts separately already, and
errdetail_busy_db uses that to report the two separately. Since we have
slot attachment data I expect reporting attached replication slots would
not be hard either; you might be able to prep a patch for that in a few
hours.

-- 
 Craig Ringer                   http://www.2ndQuadrant.com/
 PostgreSQL Development, 24x7 Support, Training & Services

Reply via email to