ধরা যাক আমার দুটি পোস্টগ্র্যাস্কল ডাটাবেস গ্রুপ, "লেখক" এবং "সম্পাদক" এবং দুটি ব্যবহারকারী "ম্যাক্সওয়েল" এবং "আর্নেস্ট" রয়েছে।
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
আমি এমন একটি পারফরম্যান্ট ফাংশন লিখতে চাই যা ম্যাক্সওয়েলের অন্তর্ভুক্ত ভূমিকার (সাধারণত তাদের মঞ্জুরীর) একটি তালিকা ফেরত দেয়:
create or replace function get_all_roles() returns oid[] ...
এটি ম্যাক্সওয়েল, লেখক এবং সম্পাদকদের (তবে আর্জেস্ট নয়) এর জন্য মেশিনগুলি ফিরিয়ে আনতে হবে।
তবে উত্তরাধিকার থাকলে কীভাবে এটি করা যায় তা আমি নিশ্চিত নই।
pg_has_role()
সম্ভবত আমার পুনরাবৃত্ত ক্যোয়ারির চেয়ে কিছুটা দ্রুত, এমনকি যদি এটি খুব কমই গুরুত্বপূর্ণ। যদিও একটি শেষ জিনিস: এটি সুপারসুসারদের জন্য সমস্ত ভূমিকা ফেরত দেয়, যা স্বাগত পার্শ্ব প্রতিক্রিয়া হতে পারে বা নাও পারে। ফলাফলটি আমার প্রশ্নের থেকে পৃথক from