mirror of
https://github.com/timescale/timescaledb.git
synced 2025-05-15 18:13:18 +08:00
Stop background worker on rename database
When background workers are running RENAME DATABASE will not work because there are still active sessions to that database open. This stops background workers on RENAME DATABASE so databases can be renamed without manually stopping background workers.
This commit is contained in:
parent
c7803730d8
commit
7973b4a753
@ -351,7 +351,6 @@ stop_workers_on_db_drop(DropdbStmt *drop_db_statement)
|
||||
static void
|
||||
post_analyze_hook(ParseState *pstate, Query *query)
|
||||
{
|
||||
|
||||
if (query->commandType == CMD_UTILITY)
|
||||
{
|
||||
/*
|
||||
@ -378,6 +377,16 @@ post_analyze_hook(ParseState *pstate, Query *query)
|
||||
if (drop_owned_statement_drops_extension((DropOwnedStmt *) query->utilityStmt))
|
||||
ts_bgw_message_send_and_wait(RESTART, MyDatabaseId);
|
||||
break;
|
||||
case T_RenameStmt:
|
||||
if (((RenameStmt *) query->utilityStmt)->renameType == OBJECT_DATABASE)
|
||||
{
|
||||
RenameStmt *stmt = (RenameStmt *) query->utilityStmt;
|
||||
Oid db_oid = get_database_oid(stmt->subname, stmt->missing_ok);
|
||||
|
||||
if (OidIsValid(db_oid))
|
||||
ts_bgw_message_send_and_wait(STOP, db_oid);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
|
||||
break;
|
||||
|
@ -438,3 +438,11 @@ SELECT wait_worker_counts(1,1,0,0);
|
||||
-- clean up additional database
|
||||
\c :TEST_DBNAME :ROLE_SUPERUSER
|
||||
DROP DATABASE :TEST_DBNAME_2;
|
||||
-- test rename database
|
||||
CREATE DATABASE db_rename_test;
|
||||
\c db_rename_test :ROLE_SUPERUSER
|
||||
SET client_min_messages=error;
|
||||
CREATE EXTENSION timescaledb;
|
||||
\c :TEST_DBNAME :ROLE_SUPERUSER
|
||||
ALTER DATABASE db_rename_test RENAME TO db_rename_test2;
|
||||
DROP DATABASE db_rename_test2;
|
||||
|
@ -214,3 +214,13 @@ SELECT wait_worker_counts(1,1,0,0);
|
||||
\c :TEST_DBNAME :ROLE_SUPERUSER
|
||||
DROP DATABASE :TEST_DBNAME_2;
|
||||
|
||||
-- test rename database
|
||||
CREATE DATABASE db_rename_test;
|
||||
|
||||
\c db_rename_test :ROLE_SUPERUSER
|
||||
SET client_min_messages=error;
|
||||
CREATE EXTENSION timescaledb;
|
||||
\c :TEST_DBNAME :ROLE_SUPERUSER
|
||||
ALTER DATABASE db_rename_test RENAME TO db_rename_test2;
|
||||
DROP DATABASE db_rename_test2;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user