Skip to content

Commit 8293e28

Browse files
committed
fix: run reassign owned for all dbs in bootstrap user switch script
1 parent 4c61cbc commit 8293e28

File tree

1 file changed

+52
-3
lines changed
  • ansible/files/admin_api_scripts/pg_upgrade_scripts

1 file changed

+52
-3
lines changed

ansible/files/admin_api_scripts/pg_upgrade_scripts/common.sh

Lines changed: 52 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,17 @@ CI_start_postgres() {
8888

8989
swap_postgres_and_supabase_admin() {
9090
run_sql <<'EOSQL'
91-
alter database postgres connection limit 0;
91+
do $$
92+
declare
93+
rec record;
94+
begin
95+
for rec in
96+
select * from pg_database
97+
loop
98+
execute(format('alter database %I connection limit 0', datname));
99+
end loop;
100+
end
101+
$$;
92102
select pg_terminate_backend(pid) from pg_stat_activity where backend_type = 'client backend' and pid != pg_backend_pid();
93103
EOSQL
94104

@@ -203,8 +213,11 @@ begin
203213
end
204214
$$;
205215
206-
-- Swap postgres & supabase_admin on in-database objects (schemas, tables, functions, etc.).
207216
do $$
217+
declare
218+
swap_postgres_supabase_admin_on_in_database_objects_script text := $script$
219+
-- Swap postgres & supabase_admin on in-database objects (schemas, tables, functions, etc.).
220+
do $script_do$
208221
declare
209222
event_triggers jsonb[] := (select coalesce(array_agg(jsonb_build_object('name', evtname)), '{}') from pg_event_trigger where evtowner = 'supabase_admin'::regrole);
210223
user_mappings jsonb[] := (
@@ -561,9 +574,45 @@ begin
561574
alter event trigger pgsodium_trg_mask_update enable;
562575
end if;
563576
end
577+
$script_do$;
578+
$script$;
579+
dblink_schema text := (select extnamespace::regnamespace from pg_extension where extname = 'dblink');
580+
rec record;
581+
begin
582+
execute swap_postgres_supabase_admin_on_in_database_objects_script;
583+
584+
create schema _supabase_dblink;
585+
if dblink_schema is null then
586+
create extension dblink schema _supabase_dblink;
587+
else
588+
alter extension dblink set schema _supabase_dblink;
589+
end if;
590+
591+
-- Don't touch template0
592+
for rec in
593+
select * from pg_database where datname not in ('postgres', 'template0')
594+
loop
595+
perform _supabase_dblink.dblink_exec('dbname=' || quote_ident(rec.datname), swap_postgres_supabase_admin_on_in_database_objects_script)
596+
end loop;
597+
598+
if dblink_schema is not null then
599+
execute(format('alter extension dblink set schema %s', dblink_schema));
600+
end if;
601+
drop schema _supabase_dblink cascade;
602+
end
564603
$$;
565604
566-
alter database postgres connection limit -1;
605+
do $$
606+
declare
607+
rec record;
608+
begin
609+
for rec in
610+
select * from pg_database
611+
loop
612+
execute(format('alter database %I connection limit -1', datname));
613+
end loop;
614+
end
615+
$$;
567616
568617
set session authorization supabase_admin;
569618
drop role supabase_tmp;

0 commit comments

Comments
 (0)