Merge branch 'master' of github.com:kvesteri/sqlalchemy-utils

This commit is contained in:
Konsta Vesterinen
2014-10-29 14:19:50 +02:00

View File

@@ -399,12 +399,14 @@ def drop_database(url):
engine.raw_connection().set_isolation_level(ISOLATION_LEVEL_AUTOCOMMIT) engine.raw_connection().set_isolation_level(ISOLATION_LEVEL_AUTOCOMMIT)
# Disconnect all users from the database we are dropping. # Disconnect all users from the database we are dropping.
version = list(map(int, engine.execute('SHOW server_version;').first()[0].split('.')))
pid_column = 'pid' if (version[0] >= 9 and version[1] >= 2) else 'procpid'
text = ''' text = '''
SELECT pg_terminate_backend(pg_stat_activity.pid) SELECT pg_terminate_backend(pg_stat_activity.%(pid_column)s)
FROM pg_stat_activity FROM pg_stat_activity
WHERE pg_stat_activity.datname = '%s' WHERE pg_stat_activity.datname = '%(database)s'
AND pid <> pg_backend_pid() AND %(pid_column)s <> pg_backend_pid();
''' % database ''' % {'pid_column': pid_column, 'database': database}
engine.execute(text) engine.execute(text)
# Drop the database. # Drop the database.