Skip to content

Commit 169df47

Browse files
committed
test
1 parent fb081f5 commit 169df47

File tree

1 file changed

+55
-24
lines changed
  • ansible/files/admin_api_scripts/pg_upgrade_scripts

1 file changed

+55
-24
lines changed

ansible/files/admin_api_scripts/pg_upgrade_scripts/initiate.sh

Lines changed: 55 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -538,25 +538,24 @@ begin
538538
if obj->>'owner' = 'postgres' then
539539
execute(format('alter schema %s owner to postgres;', (obj->>'oid')::regnamespace));
540540
end if;
541-
update pg_namespace set nspacl = (obj->>'acl')::aclitem[] where oid = (obj->>'oid')::regnamespace;
542-
-- for rec in
543-
-- select grantor, grantee, privilege_type, is_grantable
544-
-- from aclexplode((obj->>'acl')::aclitem[])
545-
-- where grantee::regrole in ('postgres', 'supabase_admin')
546-
-- loop
547-
-- execute(format('revoke %s on schema %s from %I', rec.privilege_type, (obj->>'oid')::regnamespace, case when rec.grantee = 'postgres'::regrole then 'supabase_admin' else 'postgres' end));
548-
-- end loop;
541+
for rec in
542+
select grantor, grantee, privilege_type, is_grantable
543+
from aclexplode((obj->>'acl')::aclitem[])
544+
where grantee::regrole in ('postgres', 'supabase_admin')
545+
loop
546+
execute(format('revoke %s on schema %s from %I', rec.privilege_type, (obj->>'oid')::regnamespace, case when rec.grantee = 'postgres'::regrole then 'supabase_admin' else 'postgres' end));
547+
end loop;
548+
end loop;
549+
foreach obj in array schemas
550+
loop
551+
for rec in
552+
select grantor, grantee, privilege_type, is_grantable
553+
from aclexplode((obj->>'acl')::aclitem[])
554+
where grantee::regrole in ('postgres', 'supabase_admin')
555+
loop
556+
execute(format('grant %s on schema %s to %I %s', rec.privilege_type, (obj->>'oid')::regnamespace, rec.grantee::regrole, case when rec.is_grantable then 'with grant option' else '' end));
557+
end loop;
549558
end loop;
550-
-- foreach obj in array schemas
551-
-- loop
552-
-- for rec in
553-
-- select grantor, grantee, privilege_type, is_grantable
554-
-- from aclexplode((obj->>'acl')::aclitem[])
555-
-- where grantee::regrole in ('postgres', 'supabase_admin')
556-
-- loop
557-
-- execute(format('grant %s on schema %s to %I', rec.privilege_type, (obj->>'oid')::regnamespace, rec.grantee::regrole));
558-
-- end loop;
559-
-- end loop;
560559
561560
-- types
562561
foreach obj in array types
@@ -567,9 +566,19 @@ begin
567566
for rec in
568567
select grantor, grantee, privilege_type, is_grantable
569568
from aclexplode((obj->>'acl')::aclitem[])
570-
where grantee = 'postgres'::regrole
569+
where grantee::regrole in ('postgres', 'supabase_admin')
571570
loop
572-
execute(format('grant %s on type %s to postgres %s', rec.privilege_type, (obj->>'oid')::regtype, case when rec.is_grantable then 'with grant option' else '' end));
571+
execute(format('revoke %s on type %s from %I', rec.privilege_type, (obj->>'oid')::regtype, case when rec.grantee = 'postgres'::regrole then 'supabase_admin' else 'postgres' end));
572+
end loop;
573+
end loop;
574+
foreach obj in array types
575+
loop
576+
for rec in
577+
select grantor, grantee, privilege_type, is_grantable
578+
from aclexplode((obj->>'acl')::aclitem[])
579+
where grantee::regrole in ('postgres', 'supabase_admin')
580+
loop
581+
execute(format('grant %s on type %s to %I %s', rec.privilege_type, (obj->>'oid')::regtype, rec.grantee::regrole, case when rec.is_grantable then 'with grant option' else '' end));
573582
end loop;
574583
end loop;
575584
@@ -582,9 +591,19 @@ begin
582591
for rec in
583592
select grantor, grantee, privilege_type, is_grantable
584593
from aclexplode((obj->>'acl')::aclitem[])
585-
where grantee = 'postgres'::regrole
594+
where grantee::regrole in ('postgres', 'supabase_admin')
595+
loop
596+
execute(format('revoke %s on function %s(%s) from %I', rec.privilege_type, (obj->>'oid')::regproc, pg_get_function_identity_arguments((obj->>'oid')::regproc), case when rec.grantee = 'postgres'::regrole then 'supabase_admin' else 'postgres' end));
597+
end loop;
598+
end loop;
599+
foreach obj in array functions
600+
loop
601+
for rec in
602+
select grantor, grantee, privilege_type, is_grantable
603+
from aclexplode((obj->>'acl')::aclitem[])
604+
where grantee::regrole in ('postgres', 'supabase_admin')
586605
loop
587-
execute(format('grant %s on function %s(%s) to postgres %s', rec.privilege_type, (obj->>'oid')::regproc, pg_get_function_identity_arguments((obj->>'oid')::regproc), case when rec.is_grantable then 'with grant option' else '' end));
606+
execute(format('grant %s on function %s(%s) to %I %s', rec.privilege_type, (obj->>'oid')::regproc, pg_get_function_identity_arguments((obj->>'oid')::regproc), rec.grantee::regrole, case when rec.is_grantable then 'with grant option' else '' end));
588607
end loop;
589608
end loop;
590609
@@ -599,9 +618,21 @@ begin
599618
for rec in
600619
select grantor, grantee, privilege_type, is_grantable
601620
from aclexplode((obj->>'acl')::aclitem[])
602-
where grantee = 'postgres'::regrole
621+
where grantee::regrole in ('postgres', 'supabase_admin')
622+
loop
623+
execute(format('revoke %s on table %s from %I', rec.privilege_type, (obj->>'oid')::oid::regclass, case when rec.grantee = 'postgres'::regrole then 'supabase_admin' else 'postgres' end));
624+
end loop;
625+
end loop;
626+
foreach obj in array relations
627+
loop
628+
-- obj->>'oid' (text) needs to be casted to oid first for some reason
629+
630+
for rec in
631+
select grantor, grantee, privilege_type, is_grantable
632+
from aclexplode((obj->>'acl')::aclitem[])
633+
where grantee::regrole in ('postgres', 'supabase_admin')
603634
loop
604-
execute(format('grant %s on table %s to postgres %s', rec.privilege_type, (obj->>'oid')::oid::regclass, case when rec.is_grantable then 'with grant option' else '' end));
635+
execute(format('grant %s on table %s to %I %s', rec.privilege_type, (obj->>'oid')::oid::regclass, rec.grantee::regrole, case when rec.is_grantable then 'with grant option' else '' end));
605636
end loop;
606637
end loop;
607638
end

0 commit comments

Comments
 (0)