mirror of
https://github.com/neondatabase/neon.git
synced 2026-01-10 23:12:54 +00:00
Before, compute_ctl didn't have a good registry for what command would run when, depending exclusively on sync code to apply changes. When users have many databases/roles to manage, this step can take a substantial amount of time, breaking assumptions about low (re)start times in other systems. This commit reduces the time compute_ctl takes to restart when changes must be applied, by making all commands more or less blind writes, and applying these commands in an asynchronous context, only waiting for completion once we know the commands have all been sent. Additionally, this reduces time spent by batching per-database operations where previously we would create a new SQL connection for every user-database operation we planned to execute.
23 lines
553 B
SQL
23 lines
553 B
SQL
DO
|
|
$$
|
|
DECLARE
|
|
schema_owner TEXT;
|
|
BEGIN
|
|
IF EXISTS(
|
|
SELECT nspname
|
|
FROM pg_catalog.pg_namespace
|
|
WHERE nspname = 'public'
|
|
)
|
|
THEN
|
|
SELECT nspowner::regrole::text
|
|
FROM pg_catalog.pg_namespace
|
|
WHERE nspname = 'public'
|
|
INTO schema_owner;
|
|
|
|
IF schema_owner = 'cloud_admin' OR schema_owner = 'zenith_admin'
|
|
THEN
|
|
ALTER SCHEMA public OWNER TO {db_owner};
|
|
END IF;
|
|
END IF;
|
|
END
|
|
$$; |