Запрос GRANTS, предоставленный последовательности в postgres - PullRequest
6 голосов
/ 07 сентября 2011

Чтобы запросить GRANTS, предоставленные для таблицы, я могу использовать запрос вроде:

SELECT grantee, privilege_type 
FROM information_schema.role_table_grants 
WHERE table_name='mytable'

(см. Мой старый вопрос здесь: Запрос грантов для таблицы в postgres )

Но как мне запросить GRANTS, тертый в последовательности?

1 Ответ

6 голосов
/ 08 сентября 2011

Я просмотрел исходный код и не могу найти места, где можно было бы получить ACL для последовательностей через таблицы information_schema. (Хотя я мог что-то пропустить.)

PostgreSQL предоставляет ACL для последовательностей в системном каталоге pg_class.

SELECT relname, relacl
FROM pg_class
WHERE relkind = 'S'
  AND relacl is not null
  AND relnamespace IN (
      SELECT oid
      FROM pg_namespace
      WHERE nspname NOT LIKE 'pg_%'
        AND nspname != 'information_schema'
);

Что касается информационных_схем ​​и стандартных последовательностей SQL, PostgreSQL их не поддерживает.

select feature_name, is_supported 
from information_schema.sql_features
where feature_name = 'Sequence generator support';

PostgreSQL является несоответствующим в этом отношении, потому что он предоставляет information_schema.sequence без возврата «YES» для «Поддержка генератора последовательности». (Это наблюдение, а не критика PostgreSQL.)

Но, сказав все это, я не смог найти ничего в стандарте SQL 2003, который также предоставил бы эти привилегии. Легко найти PRIVILEGE_TYPE в определении представления ROLE_TABLE_GRANTS, но, насколько я могу судить, ничего подобного для последовательностей в стандарте нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...