मान लें कि मेरे पास दो Postgresql डेटाबेस समूह हैं, "लेखक" और "संपादक", और दो उपयोगकर्ता, "मैक्सवेल" और "इर्नस्ट"।
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[] ...
यह मैक्सवेल, लेखकों, और संपादकों (लेकिन नहीं ernest) के लिए oids को वापस करना चाहिए।
लेकिन मुझे यकीन नहीं है कि विरासत के समय यह कैसे करना है।
pg_has_role()
मेरी पुनरावर्ती क्वेरी की तुलना में शायद थोड़ा तेज है, भले ही वह शायद ही मायने रखता हो। हालांकि एक आखिरी बात: यह सुपरसुसर के लिए सभी भूमिकाएं लौटाता है, जो एक स्वागत योग्य दुष्प्रभाव हो सकता है या नहीं। यही कारण है कि परिणाम मेरी क्वेरी से अलग है।