Каков рекомендуемый способ выяснить, получил ли пользователь определенное право (например, выбрать или выполнить) в определенном классе (например, таблице или функции) в PostgreSQL?
В данный момент я получил что-то вроде
aclcontains(
someColumnWithAclitemArray,
makeaclitem(userOid,grantorOid,someRight,false))
но это ужасно, так как я должен проверять каждый grantorOid
, который возможен, и для каждого userOid
пользователь может принадлежать.
Относительно примечания: какие возможные права вы можете проверить? Я не нашел никакой документации, но, читая исходный код, я думаю:
INSERT
SELECT
UPDATE
DELETE
TRUNCATE
REFERENCES
TRIGGER
EXECUTE
USAGE
CREATE
CONNECT
Также существует правая сторона CREATE TEMP
, но я не могу найти правильный текст для использования в makeaclitem
-функции.