Diyelim ki iki Postgresql veritabanı grubum var, "yazarlar" ve "editörler" ve iki kullanıcı "maxwell" ve "ernest".
create role authors;
create role editors;
create user maxwell;
create user ernest;
grant authors to editors; --editors can do what authors can do
grant editors to maxwell; --maxwell is an editor
grant authors to ernest; --ernest is an author
Maxwell'in sahip olduğu rollerin (tercihen onların hizmetlerinin) bir listesini döndüren bir performans işlevi yazmak istiyorum.
create or replace function get_all_roles() returns oid[] ...
Maxwell, yazarlar ve editörler için oidleri iade etmelidir (en iyisi değil).
Miras olduğunda nasıl yapılacağından emin değilim.
pg_has_role()
, muhtemelen önemli olmasa da özyinelemeli sorgudan biraz daha hızlı. Yine de son bir şey: hoş bir yan etki olabilen ya da olmayabilen, süpermarketler için tüm rolleri döndürür . Sonuç benim sorgundan farklı.