51.48. pg_shdepend#
51.48. pg_shdepend
Каталог pg_shdepend
записывает отношения зависимости между объектами базы данных и общими объектами, такими как роли. Эта информация позволяет Tantor SE гарантировать, что эти объекты не будут использоваться перед их удалением.
См. также pg_depend
,
который выполняет аналогичную функцию для зависимостей, связанных с объектами
в пределах одной базы данных.
В отличие от большинства системных каталогов, pg_shdepend
является общим для всех баз данных кластера: в кластере существует только одна копия pg_shdepend
, а не по одной на каждую базу данных.
Таблица 51.48. pg_shdepend
Колонки
Тип столбца Описание |
---|
OID базы данных, в которой находится зависимый объект, или ноль для общего объекта |
OID системного каталога, в котором находится зависимый объект |
OID конкретного зависимого объекта |
Для столбца таблицы это номер столбца (поля |
OID системного каталога, в котором находится ссылочный объект (должен быть общим каталогом) |
OID указанного объекта |
Код, определяющий конкретную семантику этой зависимостной связи; см. текст |
Во всех случаях запись pg_shdepend
указывает на то, что ссылочный объект не может быть удален без удаления зависимого объекта. Однако существует несколько подтипов, определенных полем deptype
:
SHARED_DEPENDENCY_OWNER
(o
)Указанный объект (который должен быть ролью) является владельцем зависимого объекта.
SHARED_DEPENDENCY_ACL
(a
)Упоминаемый объект (который должен быть ролью) упоминается в списке контроля доступа (ACL, то есть список привилегий) зависимого объекта. (Запись
SHARED_DEPENDENCY_ACL
не создается для владельца объекта, так как у владельца все равно будет записьSHARED_DEPENDENCY_OWNER
).SHARED_DEPENDENCY_POLICY
(r
)Упоминаемый объект (который должен быть ролью) упоминается как цель зависимого объекта политики.
SHARED_DEPENDENCY_TABLESPACE
(t
)Упоминается ссылочный объект (который должен быть табличным пространством) в качестве табличного пространства для отношения, у которого нет хранилища.
В будущем могут потребоваться и другие варианты зависимостей. Особенно следует отметить, что текущее определение поддерживает только роли и таблицы в качестве ссылочных объектов.
Как и в каталоге pg_depend
, большинство объектов, созданных во время initdb, считаются “pinned”. В pg_shdepend
не делаются записи, которые имели бы закрепленный объект как ссылочный или зависимый объект.