Системные каталоги

Системные каталоги — это место, где система управления реляционными базами данных хранит метаданные схемы, например сведения о таблицах и столбцах, а также внутреннюю служебную информацию. Системные каталоги QHB — это обычные таблицы. Их можно удалить и пересоздать, добавить столбцы, вставить и изменить значения — и тем самым сильно испортить свою систему. В большинстве случаев не следует изменять системные каталоги вручную, для этого обычно существуют команды SQL. (Например, команда CREATE DATABASE добавляет строку в каталог pg_database — и действительно создает базу данных на диске.) Есть некоторые исключения для особенно сложных операций, но многие из них с течением времени становятся доступны в виде команд SQL, и поэтому необходимость в прямом манипулировании системными каталогами постоянно уменьшается.



Обзор

В Таблице 1 перечислены системные каталоги. Более подробная документация по каждому каталогу приводится ниже.

Большинство системных каталогов копируются из шаблона базы данных во время ее создания и затем зависят от конкретной базы данных. Несколько каталогов физически совместно используются во всех базах данных в кластере; они отмечаются в описаниях отдельных каталогов.

Таблица 1. Системные каталоги

Имя каталогаНазначение
pg_aggregateагрегатные функции
pg_amметоды доступа отношений
pg_amopоператоры метода доступа
pg_amprocвспомогательные функции метода доступа
pg_attrdefзначения столбцов по умолчанию
pg_attributeстолбцы таблицы («атрибуты»)
pg_authidидентификаторы авторизации (роли)
pg_auth_membersотношения членства идентификаторов авторизации
pg_castприведения (преобразования типов данных)
pg_classтаблицы, индексы, последовательности, представления («отношения»)
pg_collationправила сортировки (сведения о локали)
pg_constraintпроверочные ограничения, ограничения уникальности, ограничения первичного ключа, ограничения внешнего ключа
pg_conversionинформация о перекодировках
pg_databaseбазы данных в этом кластере
pg_db_role_settingпараметры на уровне ролей и баз данных
pg_default_aclправа доступа по умолчанию для типов объектов
pg_dependзависимости между объектами базы данных
pg_descriptionописания или комментарии для объектов базы данных
pg_enumопределения перечислимых меток и значений
pg_event_triggerтриггеры событий
pg_extensionустановленные расширения
pg_foreign_data_wrapperопределения оберток сторонних данных
pg_foreign_serverопределения сторонних серверов
pg_foreign_tableдополнительная информация по сторонним таблицам
pg_indexдополнительная информация по индексам
pg_inheritsиерархия наследования таблиц
pg_init_privsначальные права для объектов
pg_languageязыки для написания функций
pg_largeobjectстраницы данных для больших объектов
pg_largeobject_metadataметаданные для больших объектов
pg_namespaceсхемы
pg_opclassклассы операторов методов доступа
pg_operatorоператоры
pg_opfamilyсемейства операторов методов доступа
pg_parameter_aclпараметры конфигурации, для которых были предоставлены права
pg_partitioned_tableинформация о ключе разбиения таблиц
pg_policyполитики защиты на уровне строк
pg_procфункции и процедуры
pg_publicationпубликации для логической репликации
pg_publication_namespaceсопоставление схем с публикациями
pg_publication_relсопоставление отношений с публикациями
pg_rangeинформация о типах диапазонов
pg_replication_originзарегистрированные источники репликации
pg_rewriteправила переписывания запросов
pg_seclabelметки безопасности для объектов базы данных
pg_sequenceинформация о последовательностях
pg_shdependзависимости для разделяемых объектов
pg_shdescriptionкомментарии к разделяемым объектам
pg_shseclabelметки безопасности для разделяемых объектов базы данных
pg_statisticстатистика планировщика
pg_statistic_extрасширенная статистика планировщика (определение)
pg_statistic_ext_dataрасширенная статистика планировщика (собранная статистика)
pg_subscriptionподписки на логическую репликацию
pg_subscription_relсостояние отношений для подписок
pg_tablespaceтабличные пространства в этом кластере баз данных
pg_transformтрансформации (преобразования типов данных для процедурных языков)
pg_triggerтриггеры
pg_ts_configконфигурации текстового поиска
pg_ts_config_mapсопоставления синтаксических единиц конфигураций текстового поиска
pg_ts_dictсловари текстового поиска
pg_ts_parserсинтаксические анализаторы текстового поиска
pg_ts_templateшаблоны текстового поиска
pg_typeтипы данных
pg_user_mappingсопоставления пользователей для сторонних серверов


pg_aggregate

В каталоге pg_aggregate хранится информация об агрегатных функциях. Агрегатная функция — это функция, которая работает с набором значений (как правило, с одним столбцом из каждой строки, которая соответствует условию запроса) и возвращает одно значение, вычисленное из всех этих значений. Типичными агрегатными функциями являются sum, count и max. Каждая запись в pg_aggregate представляет собой дополнение записи в pg_proc. Запись в pg_proc содержит имя агрегата, типы входных и выходных данных и другую информацию, аналогичную имеющейся у обычных функций.

Таблица 2. Столбцы pg_aggregate

Столбец Тип
Описание
aggfnoid regproc (ссылается на pg_proc.oid)
OID агрегатной функции в каталоге pg_proc
aggkind char
Вид агрегата: n для обычного (normal), o для сортирующего (ordered-set) или h для гипотезирующего (hypothetical-set)
aggnumdirectargs int2
Количество непосредственных (неагрегированных) аргументов сортирующего или гипотезирующего агрегата, считая переменный массив аргументов за один аргумент. Если равняется pronargs, агрегат должен принимать переменный массив, и этот массив описывает как агрегированные аргументы, так и конечные непосредственные аргументы. Всегда равно нулю для обычных агрегатов.
aggtransfn regproc (ссылается на pg_proc.oid)
Функция перехода
aggfinalfn regproc (ссылается на pg_proc.oid)
Функция завершения (ноль, если ее нет)
aggcombinefn regproc (ссылается на pg_proc.oid)
Функция совмещения (ноль, если ее нет)
aggserialfn regproc (ссылается на pg_proc.oid)
Функция сериализации (ноль, если ее нет)
aggdeserialfn regproc (ссылается на pg_proc.oid)
Функция десериализации (ноль, если ее нет)
aggmtransfn regproc (ссылается на pg_proc.oid)
Функция прямого перехода для режима движущегося агрегата (ноль, если ее нет)
agminvtransfn regproc (ссылается на pg_proc.oid)
Функция обратного перехода для режима движущегося агрегата (ноль, если ее нет)
aggmfinalfn regproc (ссылается на pg_proc.oid)
Функция завершения для режима движущегося агрегата (ноль, если ее нет)
aggfinalextra bool
При значении true в aggfinalfn передаются дополнительные фиктивные аргументы
aggmfinalextra bool
При значении true в aggmfinalfn передаются дополнительные фиктивные аргументы
aggfinalmodify char
Изменяет ли функция aggfinalfn значение состояния перехода: r, если состояние доступно только для чтения (read), s, если aggtransfn нельзя применять после aggfinalfn, или w, если состояние перезаписывается (write).
aggmfinalmodify char
Схоже с aggfinalmodify, но для самого aggmfinalfn
aggsortop oid (ссылается на pg_operator.oid)
Связанный оператор сортировки (ноль, если его нет)
aggtranstype oid (ссылается на pg_type.oid)
Тип данных внутреннего перехода (состояния) агрегатной функции
aggtransspace int4
Приблизительный средний размер (в байтах) данных о состоянии перехода или 0 для использования расчетного значения по умолчанию
aggmtranstype oid (ссылается на pg_type.oid)
Тип данных внутреннего перехода (состояния) агрегатной функции для режима движущегося агрегата (ноль, если его нет)
aggmtransspace int4
Приблизительный средний размер (в байтах) данных о состоянии перехода для режима движущегося агрегата или 0 для использования расчетного значения по умолчанию
agginitval text
Начальное значение состояния перехода. Это текстовое поле, содержащее начальное значение во внешнем строковом представлении. Если это поле равно NULL, то значение состояния перехода начинается с NULL.
aggminitval text
Начальное значение состояния перехода для режима движущегося агрегата. Это текстовое поле, содержащее начальное значение во внешнем строковом представлении. Если это поле равно NULL, то значение состояния перехода начинается с NULL.

Новые агрегатные функции регистрируются с помощью команды CREATE AGGREGATE. Дополнительную информацию о написании агрегатных функций и значении функций перехода см. в разделе Пользовательские агрегаты.



pg_am

В каталоге pg_am хранится информация о методах доступа к отношениям. Для каждого метода доступа, поддерживаемого системой, существует одна строка. В настоящее время только таблицы и индексы имеют методы доступа. Требования к табличным и индексным методам доступа подробно рассматриваются в главах Определение интерфейса табличных методов доступа и Определение интерфейса индексных методов доступа соответственно.

Таблица 3. Столбцы pg_am

Столбец Тип
Описание
oid oid
Идентификатор строки
amname name
Имя метода доступа
amhandler regproc (ссылается на pg_proc.oid)
OID функции обработки, ответственной за предоставление информации о методе доступа
amtype char
t = таблица (включая материализованные представления), i = индекс.

Примечание
Данные о свойствах индексных методов доступа напрямую видны только на уровне кода С. Тем не менее запросы SQL могут проверять эти свойства с помощью функции pg_index_column_has_property() и связанных функций; см. таблицу Функции для получения информации из системных каталогов.



pg_amop

В каталоге pg_amop хранится информация об операторах, связанных с семействами операторов метода доступа. Для каждого оператора, который является членом семейства операторов, существует одна строка. Членом семейства может быть либо оператор поиска, либо оператор упорядочивания. Оператор может принадлежать нескольким семействам, но в пределах одного семейства не может находиться более чем в одной позиции поиска или позиции упорядочивания. (Допустимо, хотя и маловероятно, что оператор будет использоваться как для поиска, так и для сравнения.)

Таблица 4. Столбцы pg_amop

Столбец Тип
Описание
oid oid
Идентификатор строки
amopfamily oid (ссылается на pg_opfamily.oid)
Семейство операторов, для которого сделана эта запись
amoplefttype oid (ссылается на pg_type.oid)
Тип входных данных левого операнда оператора
amoprighttype oid (ссылается на pg_type.oid)
Тип входных данных правого операнда оператора
amopstrategy int2
Номер стратегии оператора
amoppurpose char
Назначение оператора: s для поиска, о для упорядочивания
amopopr oid (ссылается на pg_operator.oid)
OID оператора
amopmethod oid (ссылается на pg_am.oid)
Индексный метод доступа, для которого предназначено семейство операторов
amopsortfamily oid (ссылается на pg_opfamily.oid)
Семейство операторов B-дерева, в соответствии с которым данный оператор сортирует, если это оператор упорядочивания; 0, если это оператор поиска

Запись оператора «поиска» указывает, что индекс этого семейства операторов можно использовать для поиска всех строк, удовлетворяющих условию WHERE столбец_индекса оператор константа. Очевидно, что такой оператор должен возвращать тип boolean, а тип его левого операнда должен соответствовать типу данных столбца индекса.

Запись оператора «упорядочивания» указывает, что индекс этого семейства операторов можно отсканировать для возврата строк в порядке, представленном в предложении ORDER BY столбец_индекса оператор константа. Такой оператор может возвращать любой сортируемый тип данных, хотя, опять же, тип его левого операнда должен соответствовать типу данных столбца индекса. Точная семантика ORDER BY определяется по столбцу amopsortfamily, который должен ссылаться на семейство операторов B-дерева для типа результата оператора.

Примечание
В настоящее время предполагается, что порядок сортировки для оператора упорядочивания является значением по умолчанию для указанного семейства операторов, т. е. ASC NULLS LAST. Возможно, когда-нибудь для придания большей гибкости будут добавлены дополнительные столбцы, чтобы явно указать параметры сортировки.

Поле amopmethod в записи оператора должно соответствовать полю opfmethod содержащего его семейства операторов (включение сюда amopmethod является преднамеренной денормализацией структуры каталога из соображений производительности). Кроме того, поля amoplefttype и amoprighttype должны соответствовать полям oprleft и oprright ссылочной записи в каталоге pg_operator.



pg_amproc

В каталоге pg_amproc хранится информация о вспомогательных функциях, связанных с семействами операторов метода доступа. Для каждой вспомогательной функции, принадлежащей семейству операторов, существует одна строка.

Таблица 5. Столбцы pg_amproc

Столбец Тип
Описание
oid oid
Идентификатор строки
amprocfamily oid (ссылается на pg_opfamily.oid)
Семейство операторов, для которого сделана эта запись
amproclefttype oid (ссылается на pg_type.oid)
Тип входных данных левого операнда связанного оператора
amprocrighttype oid (ссылается на pg_type.oid)
Тип входных данных правого операнда связанного оператора
amprocnum int2
Номер вспомогательной функции
amproc regproc (ссылается на pg_proc.oid)
OID этой функции

Обычная интерпретация полей amproclefttype и amprocrighttype состоит в том, что они определяют типы входных данных левого и правого операнда оператора (или операторов), который поддерживает определенная вспомогательная функция. Для некоторых методов доступа они соответствуют типу(ам) входных данных самой вспомогательной функции, для других — нет. Существует такое понятие, как «стандартные» вспомогательные функции для индекса, то есть функции, у которых поля amproclefttype и amprocrighttype равны полю opcintype класса операторов индекса.



pg_attrdef

В каталоге pg_attrdef хранятся значения столбцов по умолчанию. Основная информация о столбцах находится в каталоге pg_attribute. Здесь же содержатся записи только о тех столбцах, для которых было явно установлено значение по умолчанию.

Таблица 6. Столбцы pg_attrdef

Столбец Тип
Описание
oid oid
Идентификатор строки
adrelid oid (ссылается на pg_class.oid)
Таблица, которой принадлежит этот столбец
adnum int2 (ссылается на pg_attribute.attnum)
Номер столбца
adbin pg_node_tree
Значение столбца по умолчанию в представлении nodeToString(). Чтобы преобразовать его в выражение SQL, воспользуйтесь функцией pg_get_expr(adbin, adrelid).


pg_attribute

В каталоге pg_attribute хранится информация о столбцах таблицы. Для каждого столбца в каждой таблице базы данных будет храниться ровно одна строка pg_attribute. (Также здесь будут храниться записи атрибутов для индексов и вообще всех объектов, которые имеют записи в каталоге pg_class.)

Термин «атрибут» равнозначен столбцу и используется по историческим причинам.

Таблица 7. Столбцы pg_attribute

Столбец Тип
Описание
attrelid oid (ссылается на pg_class.oid)
Таблица, которой принадлежит этот столбец
attname name
Имя столбца
atttypid oid (ссылается на pg_type.oid)
Тип данных этого столбца (ноль для удаленного столбца)
attstattarget int4
Столбец attstattarget управляет уровнем детализации статистики, собираемой для данного столбца при помощи команды ANALYZE. Нулевое значение указывает на то, что статистика не должна собираться. Отрицательное значение указывает использовать системный целевой показатель статистики по умолчанию. Точное значение положительных значений зависит от типа данных. Для скалярных типов данных значение attstattarget является как целевым числом собираемых «наиболее распространенных значений», так и целевым числом создаваемых интервалов гистограммы.
attlen int2
Копия поля pg_type.typlen из записи типа этого столбца
attnum int2
Номер столбца. Обычные столбцы нумеруются по возрастанию, начиная с 1. Системные столбцы, такие как ctid, имеют отрицательные номера (произвольные).
attndims int4
Количество размерностей, если столбец имеет тип массива; в противном случае ноль. (В настоящее время количество размерностей массива не регулируется, поэтому любое ненулевое значение в сущности означает «это массив».)
attcacheof int4
Всегда -1 в хранилище, но при загрузке в дескриптор строки в памяти это поле может измениться, чтобы кэшировать смещение атрибута в строке
atttypmod int4
В поле atttypmod записываются специфичные для определенного типа данные, предоставляемые при создании таблицы (например максимальная длина столбца varchar). Эти данные передаются специфичным для типа функциям ввода и функциям ограничения длины. Для типов, которые не нуждаются в atttypmod, значение обычно будет равняться -1.
attbyval bool
Копия поля pg_type.typbyval из записи типа этого столбца
attalign char
Копия поля pg_type.typalign из записи типа этого столбца
attstorage char
Обычно это копия поля pg_type.typstorage из записи типа этого столбца. Для типов данных, поддерживающих TOAST, после создания столбца этот атрибут можно изменить в целях управления политикой хранения.
attcompression char
Текущий метод сжатия столбца. Обычно это '\0', указывающий использовать метод, установленный по умолчанию на данный момент (см. default_toast_compression). В ином случае при значении 'p' выбирается алгоритм сжатия pglz, тогда как при 'l' выбирается алгоритм LZ4. Однако если attstorage не допускает сжатие, это поле игнорируется.
attnotnull bool
Это поле представляет ограничение NOT NULL.
atthasdef bool
Этот столбец содержит выражение по умолчанию или генерирующее выражение; в этом случае в каталоге pg_attrdef, который фактически определяет данное выражение, появится соответствующая запись. (Определить, какое это выражение: по умолчанию или генерирующее, можно, проверив столбец attgenerated.)
atthasmissing bool
Этот столбец содержит значение, которое используется, когда столбец полностью отсутствует в строке (это происходит, когда столбец добавляется с неизменяющимся значением DEFAULT после создания строки). Используемое фактическое значение хранится в столбце attmissingval.
attidentity char
Пустой символ ('') указывает, что это не столбец идентификации. В ином случае a = значение генерируется всегда (always), d = значение генерируется по умолчанию (by default).
attgenerated char
Пустой символ ('') указывает, что это не генерируемый столбец. В ином случае s = генерируемое значение хранится (stored). (В будущем могут быть добавлены и другие значения.)
attisdropped bool
Этот столбец был удален и стал нерабочим. Удаленный столбец все еще физически присутствует в таблице, но игнорируется синтаксическим анализатором, и поэтому к нему нельзя обратиться через SQL.
attislocal bool
Этот столбец определяется локально в отношении. Обратите внимание, что столбец может одновременно быть локально определен и унаследован.
attinhcount int4
Число прямых предков этого столбца. Столбец с ненулевым числом предков нельзя удалить или переименовать.
attcollation oid (ссылается на pg_collation.oid)
Определенные для столбца правила сортировки или ноль, если столбец имеет несортируемый тип данных.
attacl aclitem[]
Права доступа на уровне столбца, если они были предоставлены специально для этого столбца
attoptions text[]
Параметры уровня атрибута в виде строк «ключ=значение»
attfdwoptions text[]
Параметры уровня атрибута для обертки сторонних данных в виде строк «ключ=значение»
attmissingval anyarray
Этот столбец включает массив из одного элемента, содержащий значение, используемое, когда столбец полностью отсутствует в строке (это происходит, когда столбец добавляется с неизменяющимся значением DEFAULT после создания строки). Это значение используется, только если поле atthasmissing содержит true. Если значение отсутствует, данный столбец содержит NULL.

В записи удаленного столбца в каталоге pg_attribute поле atttypid сбрасывается до нуля, но поле attlen и остальные поля, копируемые из pg_type, все еще действительны. Это необходимо, чтобы справиться с ситуацией, когда после удаления столбца удаляется и его тип данных, и поэтому соответствующей строки в каталоге pg_type тоже больше нет. Тогда для интерпретации содержимого строки таблицы можно использовать поле attlen и остальные поля.



pg_authid

В каталоге pg_authid содержится информация об идентификаторах авторизации (ролях) базы данных. Роль включает в себя понятия «пользователи» и «группы». Пользователь — это просто роль с установленным флагом rolcanlogin. Любая роль (с rolcanlogin или без него) может иметь в качестве членов другие роли; см. pg_auth_members.

Поскольку этот каталог содержит пароли, он не должен быть общедоступным. Общедоступным представлением на базе pg_authid является pg_roles, в котором прикрыто поле пароля.

В главе Роли в базе данных содержатся подробные сведения об управлении пользователями и их правами.

Поскольку идентификационные характеристики пользователей являются кластерными, каталог pg_authid совместно используется всеми базами данных кластера: существует только одна копия pg_authid на кластер, а не отдельная для каждой базы данных.

Таблица 8. Столбцы pg_authid

Столбец Тип
Описание
oid oid
Идентификатор строки
rolname name
Имя роли
rolsuper bool
Роль обладает правами суперпользователя
rolinherit bool
Роль автоматически наследует права ролей, членом которых является
rolcreaterole bool
Роль может создавать другие роли
rolcreatedb bool
Роль может создавать базы данных
rolcanlogin bool
Роль может начинать сеанс. То есть эту роль можно задать в качестве начального идентификатора авторизации сеанса
rolreplication bool
Роль является ролью репликации. Роль репликации может инициировать подключения репликации и создавать и удалять слоты репликации.
rolbypassrls bool
Роль обходит политику защиты на уровне строк; подробную информацию см. в разделе Политики защиты строк.
rolconnlimit int4
Для ролей, которые могут начинать сеанс, этот столбец устанавливает максимальное число одновременных подключений, которые может создать эта роль. -1 означает отсутствие ограничений.
rolpassword text
Пароль (возможно зашифрованный); NULL, если его нет. Формат зависит от используемой формы шифрования.
rolvaliduntil timestamptz
Срок действия пароля (используется только для аутентификации по паролю); NULL, если срок действия не ограничен

Для пароля, зашифрованного MD5, столбец rolpassword будет начинаться со строки md5, за которой следует 32-символьный шестнадцатеричный хеш MD5. Хеш MD5 будет содержать пароль пользователя, конкатенированный с его именем. Например, если у пользователя joe пароль xyzzy, QHB будет хранить хеш md5 строки xyzzyjoe.

Если пароль зашифрован с помощью SCRAM-SHA-256, он имеет следующий формат:

SCRAM-SHA-256$<число итераций>:<соль>$<Сохраненный_Ключ>:<Ключ_Сервера>

где соль, Сохраненный_Ключ и Ключ_Сервера кодируются в формате Base64. Этот формат совпадает с форматом, указанным в стандарте RFC 5803.

Пароль, который не соответствует ни одному из этих форматов, считается незашифрованным.



pg_auth_members

В каталоге pg_auth_members показаны отношения членства между ролями. Допускается любой нециклический набор отношений.

Поскольку идентификационные характеристики пользователей являются кластерными, каталог pg_auth_members совместно используется всеми базами данных кластера: существует только одна копия pg_auth_members на кластер, а не отдельная для каждой базы данных.

Таблица 9. Столбцы pg_auth_members

Столбец Тип
Описание
roleid oid (ссылается на pg_authid.oid)
Идентификатор роли, имеющей члена
member oid (ссылается на pg_authid.oid)
Идентификатор роли, являющейся членом роли из roleid
grantor oid (ссылается на pg_authid.oid)
Идентификатор роли, предоставившей это членство
admin_option bool
True, если member может предоставлять членство в roleid другим ролям


pg_cast

В каталоге pg_cast хранятся как встроенные, так и пользовательские пути преобразования типов данных.

Следует отметить, что pg_cast содержит не все преобразования типов, которые умеет выполнять система, а только те, которые нельзя вывести из некоторого общего правила. Например, приведение между доменом и его базовым типом в pg_cast явно не представлено. Еще одним важным исключением является то, что в каталоге pg_cast явно не представлены «автоматические приведения ввода/вывода», которые выполняются, используя для преобразования в/из типа text или других строковых типов собственные функции ввода/вывода типа данных.

Таблица 10. Столбцы pg_cast

Столбец Тип
Описание
oid oid
Идентификатор строки
castsource oid (ссылается на pg_type.oid)
OID исходного типа данных
casttarget oid (ссылается на pg_type.oid)
OID целевого типа данных
castfunc oid (ссылается на pg_proc.oid)
OID функции, используемой для выполнения этого приведения. Ноль, если для данного метода приведения функция не требуется.
castcontext char
Указывает, в каких контекстах можно вызвать приведение. e означает только явное приведение (explicit) с использованием синтаксиса CAST или ::. а означает неявное присваивание целевому столбцу (assignment), а также явное приведение. i означает неявное приведение в выражениях (implicitly), а также все остальные случаи.
castmethod char
Указывает, как выполняется приведение. f означает, что используется функция (function), указанная в поле castfunc. i означает, что используются функции ввода/вывода (input/output). b означает, что типы являются двоично-совместимыми (binary-coercible), поэтому преобразование не требуется.

Функции приведения, перечисленные в каталоге pg_cast, должны всегда принимать исходный тип приведения в качестве типа первого аргумента и возвращать результат, имеющий целевой тип приведения. Функция приведения может иметь до трех аргументов. Второй аргумент, если он присутствует, должен иметь тип integer; он получает модификатор типа, связанный с целевым типом, или -1, если модификатора нет. Третий аргумент, если он присутствует, должен иметь тип boolean; он получает значение true, если приведение является явным, в противном случае — false.

Есть возможность создать в pg_cast запись, в которой исходные и целевые типы совпадают, если связанная функция принимает более одного аргумента. Такие записи представляют «функции приведения длины», которые преобразуют значения типа так, чтобы они подходили определенному значению модификатора типа.

Когда запись в pg_cast имеет различные исходный и целевой типы, а функция принимает более одного аргумента, эта запись представляет преобразование из одного типа в другой и применение приведения длины за один шаг. Если такая запись отсутствует, приведение к типу, использующему модификатор типа, включает два шага: один для преобразования между типами данных и второй для применения модификатора.



pg_class

В каталог pg_class вносятся таблицы и почти все объекты, которые имеют столбцы или иным образом похожи на таблицу. Сюда входят индексы (см. также pg_index), последовательности (см. также pg_sequence), представления, материализованные представления, составные типы и таблицы TOAST; см. описание столбца relkind. Ниже, говоря об «отношениях», мы подразумеваем все эти виды объектов. Не все столбцы в каталоге значимы для всех типов отношений.

Таблица 11. Столбцы pg_class

Столбец Тип
Описание
oid oid
Идентификатор строки
relname name
Имя таблицы, индекса, представления и т. д.
relnamespace oid (ссылается на pg_namespace.oid)
OID пространства имен, содержащего это отношение
reltype oid (ссылается на pg_type.oid)
OID типа данных, который соответствует типу строки этой таблицы, если таковой имеется; ноль для индексов, у которых нет записи в каталоге pg_type
reloftype oid (ссылается на pg_type.oid)
OID нижележащего составного типа для типизированных таблиц; ноль для всех остальных отношений
relowner oid (ссылается на pg_authid.oid)
Владелец отношения
relam oid (ссылается на pg_am.oid)
Если это таблица или индекс, то используемый метод доступа (куча, B-дерево, хеш и т. д.); иначе ноль (ноль проставляется для последовательностей, а также для нехранимых отношений, например представлений)
relfilenode oid
Имя файла на диске для этого отношения; ноль означает, что это «сопоставленное» отношение, для которого имя файла на диске определяется состоянием на нижнем уровне
reltablespace oid (ссылается на pg_tablespace.oid)
Табличное пространство, в котором хранится это отношение. При нулевом значении подразумевается табличное пространство базы данных по умолчанию. (Не имеет смысла, если отношение не имеет файла на диске.)
relpages int4
Размер представления этой таблицы на диске в страницах (в размере BLCKSZ). Это только расчетная оценка, используемая планировщиком. Она обновляется с помощью команд VACUUM, ANALYZE и нескольких команд DDL, таких как CREATE INDEX.
reltuples float4
Количество активных строк в таблице. Это только расчетная оценка, используемая планировщиком. Она обновляется с помощью команд VACUUM, ANALYZE и нескольких команд DDL, таких как CREATE INDEX. Если таблица никогда не подвергалась очистке или анализу, поле reltuples содержит -1, указывая, что количество строк неизвестно.
relallvisible int4
Количество страниц, отмеченных как полностью видимые на карте видимости таблицы. Это только расчетная оценка, используемая планировщиком. Она обновляется с помощью команд VACUUM, ANALYZE и нескольких команд DDL, таких как CREATE INDEX.
reltoastrelid oid (ссылается на pg_class.oid)
OID таблицы TOAST, связанной с этой таблицей; ноль, если такой таблицы нет. Таблица TOAST хранит большие атрибуты «вынесенными» во вторичную таблицу.
relhasindex bool
True, если это таблица и она имеет (или недавно имела) какие-либо индексы
relisshared bool
True, если эта таблица совместно используется всеми базами данных в кластере. Совместно используются только определенные системные каталоги (например pg_database).
relpersistence char
p = постоянная таблица (permanent), u = незарегистрированная таблица (unlogged), t = временная таблица (temporary)
relkind char
r = Обычная таблица (regular), i = индекс (index), s = последовательность (sequence), t = таблица TOAST, v = представление (view), m = материализованное представление (materialized), c = составной тип (composite), f = сторонняя таблица (foreign), p = партиционированная таблица (partitioned), I = партиционированный индекс (index)
relnatts int2
Количество пользовательских столбцов в отношении (системные столбцы не учитываются). В каталоге pg_attribute должно быть такое же количество соответствующих записей. См. также описание столбца pg_attribute.attnum.
relchecks int2
Количество проверочных ограничений (CHECK) у таблицы; см. каталог pg_constraint
relhasrules bool
True, если таблица имеет (или когда-то имела) правила; см. каталог pg_rewrite
relhastriggers bool
True, если таблица имеет (или когда-то имела) триггеры; см. каталог pg_trigger
relhassubclass bool
True, если таблица или индекс имеют (или когда-то имели) потомков в иерархии наследования либо партиции
relrowsecurity bool
True, если в таблице включена защита на уровне строк; см. каталог pg_policy
relforcerowsecurity bool
True, если защита уровня строк (если она включена) будет также применяться и к владельцу таблицы; см. каталог pg_policy
relispopulated bool
True, если отношение заполнено (это справедливо для всех отношений, кроме некоторых материализованных представлений)
relreplident char
Столбцы, используемые для формирования «идентификатора реплики» для строк: d = по умолчанию (default) (первичный ключ, если таковой имеется), n = ничего (nothing), f = все столбцы, i = индекс со свойством indisreplident (если ранее использовавшийся индекс был удален, действует так же, как n)
relispartition bool
True, если таблица или индекс является партицией
relrewrite oid (ссылается на pg_class.oid)
Для новых отношений, записываемых во время операции DDL, которая требует перезаписи таблицы, это поле содержит OID исходного отношения; в противном случае ноль. Это состояние видимо только внутри; данное поле всегда должно содержать 0 для видимого пользователю отношения.
relfrozenxid xid
В этой таблице все идентификаторы транзакций, предшествующие данному, были заменены на постоянный («замороженный») идентификатор транзакции. Это используется для отслеживания того, нужно ли очистить таблицу для предотвращения зацикливания идентификаторов транзакций или уменьшения размера pg_xact. Ноль (InvalidTransactionId), если данное отношение не является таблицей.
relminmxid xid
В этой таблице все идентификаторы мультитранзакций, предшествующие данному, были заменены на постоянный («замороженный») идентификатор транзакции. Это используется для отслеживания того, нужно ли очистить таблицу для предотвращения зацикливания идентификаторов мультитранзакций или уменьшения размера pg_multixact. Ноль (InvalidMultiXactId), если данное отношение не является таблицей.
relacl aclitem[]
Права доступа; подробную информацию см. в разделе Права
reloptions text[]
Параметры, специфичные для методов доступа, в виде строк «ключ=значение»
relpartbound pg_node_tree
Если таблица является партицией (см. relispartition), внутреннее представление границ партиции

Несколько логических флагов в каталоге pg_class поддерживаются не строго: они гарантированно будут установлены в true, если это правильное состояние, но не сбрасываются на false сразу же, как только условие поменяется. Например, флаг relhasindex устанавливается с помощью команды CREATE INDEX, но никогда не сбрасывается с помощью DROP INDEX. Вместо этого relhasindex сбрасывает команда VACUUM, если обнаруживает, что таблица не имеет индексов. Этот механизм позволяет избежать состояния гонки и улучшает параллельное использование.



pg_collation

В каталоге pg_collation описываются доступные правила сортировки, которые в сущности представляют собой сопоставления между именем SQL и категориями локалей операционной системы. Дополнительную информацию см. в разделе Поддержка правил сортировки.

Таблица 12. Столбцы pg_collation

Столбец Тип
Описание
oid oid
Идентификатор строки
collname name
Имя правила сортировки (уникальное для каждого пространства имен и кодировки)
collnamespace oid (ссылается на pg_namespace.oid)
OID пространства имен, содержащего это правило сортировки
collowner oid (ссылается на pg_authid.oid)
Владелец правила сортировки
collprovider char
Поставщик правила сортировки: d = установленный в базе данных по умолчанию (default), c = libc, i = icu
collisdeterministic bool
Является ли правило сортировки детерминированным?
collencoding int4
Кодировка, в которой применимо правило сортировки, или -1, если оно работает для любой кодировки
collcollate text
LC_COLLATE для этого объекта правила сортировки
collctype text
LC_CTYPE для этого объекта правила сортировки
colliculocale text
Идентификатор локали ICU для этого объекта правила сортировки
collversion text
Версия правила сортировки, специфическая для поставщика данных. Записывается при создании правила сортировки, а затем проверяется при его использовании для обнаружения изменений в его определении, которые могут привести к повреждению данных.

Обратите внимание, что уникальными ключами в этом каталоге являются (collname, collencoding, collnamespace), а не только (collname, collnamespace). QHB обычно игнорирует все правила сортировки, у которых поле collencoding не равно либо кодировке текущей базы данных, либо -1; кроме того, создание новых записей с тем же именем, что и запись с collencoding = -1, запрещено. Поэтому для обозначения правила сортировки достаточно использовать полное имя SQL (схема.имя), даже если оно не является уникальным согласно определению каталога. Такое определение каталога обусловлено тем, что во время инициализации кластера qhb_bootstrap (или initdb) заполняет его записями для всех доступных в системе локалей, поэтому каталог должен иметь возможность хранить записи для всех кодировок, которые могут когда-либо использоваться в кластере.

В базе данных template0 может быть полезно создать правила сортировки, кодировка которых не соответствует кодировке базы данных, так как они могут соответствовать кодировкам баз данных, впоследствии клонированных из template0. В настоящее время это придется сделать вручную.



pg_constraint

В каталоге pg_constraint хранятся проверочные и исключающие ограничения, ограничения уникальности, первичного и внешнего ключей для таблиц. (Ограничения столбцов не обрабатываются отдельно. Каждое ограничение столбца эквивалентно некоторому ограничению таблицы.) Ограничения NOT NULL представлены не здесь, а в каталоге pg_attribute.

Определяемые пользователем триггеры ограничений (созданные с помощью команды CREATE CONSTRAINT TRIGGER) тоже приводят к появлению записи в этой таблице.

Также здесь хранятся проверочные ограничения для доменов.

Таблица 13. Столбцы pg_constraint

Столбец Тип
Описание
oid oid
Идентификатор строки
conname name
Имя ограничения (необязательно уникальное!)
connamespace oid (ссылается на pg_namespace.oid)
OID пространства имен, содержащего это ограничение
contype char
c = проверочное ограничение (check), f = ограничение внешнего ключа (foreign), p = ограничение первичного ключа (primary), u = ограничение уникальности (unique), t = триггер ограничения (trigger), x = исключающее ограничение (exclusion)
condeferrable bool
Является ли ограничение откладываемым?
condeferred bool
Является ли ограничение отложенным по умолчанию?
convalidated bool
Было ли это ограничение проверено? В настоящее время может иметь значение false только для внешних ключей и проверочных ограничений (CHECK)
conrelid oid (ссылается на pg_class.oid)
Таблица, на которую наложено это ограничение; ноль, если это не ограничение таблицы
contypid oid (ссылается на pg_type.oid)
Домен, на который наложено это ограничение; ноль, если это не ограничение домена
conindid oid (ссылается на pg_class.oid)
Индекс, поддерживающий это ограничение, если это ограничение уникальности, первичного ключа, внешнего ключа или исключающее ограничение; в остальных случаях ноль
conparentid oid (ссылается на pg_constraint.oid)
Соответствующее ограничение в родительской партиционированной таблице, если это ограничение для партиции; в остальных случаях ноль
confrelid oid (ссылается на pg_class.oid)
Если это внешний ключ, то его ссылочная таблица; в остальных случаях ноль
confupdtype char
Код действия при обновлении внешнего ключа: a = нет действия (no action), r = ограничить (restrict), c = каскадное действие (cascade), n = установить NULL, d = поведение по умолчанию (default)
confdeltype char
Код действия при удалении внешнего ключа: a = нет действия, r = ограничить, c = каскадное действие, n = установить NULL, d = поведение по умолчанию
confmatchtype char
Тип сопоставления для внешнего ключа: f = полное (full), p = частичное (partial), s = простое (simple)
conislocal bool
Это ограничение определяется локально для данного отношения. Обратите внимание, что ограничение может одновременно быть локально определено и унаследовано.
coninhcount int4
Количество предков прямого наследования от ограничения. Ограничение с ненулевым количеством предков нельзя удалить или переименовать.
connoinherit bool
Это ограничение определено локально для данного отношения и является ненаследуемым.
conkey int2[] (ссылается на pg_attribute.attnum)
Для ограничения таблицы (включая внешние ключи, но не триггеры ограничений) — список столбцов с ограничением
confkey int2[] (ссылается на pg_attribute.attnum)
Для внешнего ключа — список ссылочных столбцов
conpfeqop oid[] (ссылается на pg_operator.oid)
Для внешнего ключа — список операторов равенства для сравнений PK (первичный ключ) = FK (внешний ключ)
conppeqop oid[] (ссылается на pg_operator.oid)
Для внешнего ключа — список операторов равенства для сравнений PK = PK
conffeqop oid[] (ссылается на pg_operator.oid)
Для внешнего ключа — список операторов равенства для сравнений FK = FK
confdelsetcols int2[] (ссылается на pg_attribute.attnum)
Для внешнего ключа с указанием действия SET NULL или SET DEFAULT при удалении — столбцы, которые будут изменены. При значении NULL будут изменены все столбцы, на которые ссылается ключ.
conexclop oid[] (ссылается на pg_operator.oid)
Для исключающего ограничения — список операторов исключения по столбцам
conbin pg_node_tree
Для проверочного ограничения — внутреннее представление выражения. (Чтобы извлечь определение проверочного ограничения, рекомендуется использовать функцию pg_get_constraintdef().)

В случае исключающего ограничения поле conkey полезно только для элементов ограничения, которые являются простыми ссылками на столбец. Для других случаев в conkey находится ноль, и чтобы обнаружить выражение, определяющее ограничение, необходимо просмотреть связанный индекс. (Следовательно, поле conkey имеет то же содержимое, что и поле pg_index.indkey для индекса.)

Примечание
Поле pg_class.relchecks необходимо согласовать с количеством записей проверочного ограничения, имеющихся в этой таблице для каждого отношения.



pg_conversion

В каталоге pg_conversion описываются функции преобразования кодировки. Подробную информацию см. на справочной странице команды CREATE CONVERSION.

Таблица 14. Столбцы pg_conversion

Столбец Тип
Описание
oid oid
Идентификатор строки
conname name
Имя преобразования (уникальное в пределах пространства имен)
connamespace oid (ссылается на pg_namespace.oid)
OID пространства имен, содержащего это преобразование
conowner oid (ссылается на pg_authid.oid)
Владелец преобразования
conforencoding int4
Идентификатор исходной кодировки (функция pg_encoding_to_char() может преобразовать этот номер в имя кодировки)
contoencoding int4
Идентификатор целевой кодировки (функция pg_encoding_to_char() может преобразовать этот номер в имя кодировки)
conproc regproc (ссылается на pg_proc.oid)
Функция преобразования
condefault bool
True, если это преобразование по умолчанию


pg_database

В каталоге pg_database хранится информация о доступных базах данных. Базы данных создаются с помощью команды CREATE DATABASE. Подробную информацию о значении некоторых параметров см. в главе Управление базами данных.

В отличие от большинства системных каталогов, pg_database совместно используется всеми базами данных кластера: существует только одна копия pg_database на кластер, а не отдельная для каждой базы данных.

Таблица 15. Столбцы pg_database

Столбец Тип
Описание
oid oid
Идентификатор строки
datname name
Имя базы данных
datdba oid (ссылается на pg_authid.oid)
Владелец базы данных (как правило, пользователь, который ее создал)
encoding int4
Кодировка символов для этой базы данных (функция pg_encoding_to_char() может преобразовать этот номер в имя кодировки)
datlocprovider char
Провайдер локали для этой базы данных: c = libc, i = icu
datistemplate bool
Если true, то эту базу данных может клонировать любой пользователь, обладающий правом CREATEDB; если false, то клонировать ее могут только суперпользователи или владелец этой базы данных.
datallowconn bool
Если false, то никто не может подключиться к этой базе данных. Используется для защиты базы-шаблона template0 от изменений.
datconnlimit int4
Устанавливает максимальное число одновременных подключений, которые могут быть выполнены к этой базе данных. -1 означает отсутствие ограничений.
datfrozenxid xid
В этой базе данных все идентификаторы транзакций, предшествующие данному, были заменены на постоянный («замороженный») идентификатор транзакции. Это используется для отслеживания того, нужно ли очистить таблицу для предотвращения зацикливания идентификаторов транзакций или уменьшения размера pg_xact. Это минимальные значения поля pg_class.relfrozenxid для всех таблиц.
datminmxid xid
В этой базе данных все идентификаторы мультитранзакций, предшествующие данному, были заменены на другой идентификатор транзакции. Это используется для отслеживания того, нужно ли очистить таблицу для предотвращения зацикливания идентификаторов мультитранзакций или уменьшения размера pg_multixact. Это минимальные значения поля pg_class.relminmxid для всех таблиц.
dattablespace oid (ссылается на pg_tablespace.oid)
Табличное пространство по умолчанию для этой базы данных. В пределах этой базы данных все таблицы, у которых поле pg_class.reltablespace равно нулю, будут храниться в этом табличном пространстве (в частности, там будут находиться все системные каталоги, кроме разделяемых).
datcollate text
LC_COLLATE для этой базы данных
datctype text
LC_CTYPE для этой базы данных
daticulocale text
Идентификатор локали ICU для этой базы данных
datcollversion text
Версия правила сортировки, специфическая для поставщика данных. Записывается при создании правила сортировки, а затем проверяется при его использовании для обнаружения изменений в его определении, которые могут привести к повреждению данных.
datacl aclitem[]
Права доступа; подробную информацию см. в разделе Права


pg_db_role_setting

В каталоге pg_db_role_setting для каждой комбинации роли и базы данных записываются значения по умолчанию, заданные для переменных конфигурации времени выполнения.

В отличие от большинства системных каталогов, pg_db_role_setting совместно используется всеми базами данных кластера: существует только одна копия pg_db_role_setting на кластер, а не отдельная для каждой базы данных.

Таблица 16. Столбцы pg_db_role_setting

Столбец Тип
Описание
setdatabase oid (ссылается на pg_database.oid)
OID базы данных, к которой применяется эта настройка переменных, или ноль, если она не специфична для конкретной базы данных
setrole oid (ссылается на pg_authid.oid)
OID роли, к которой применяется эта настройка переменных, или ноль, если она не специфична для конкретной роли
setconfig text[]
Значения по умолчанию для переменных конфигурации времени выполнения


pg_default_acl

В каталоге pg_default_acl хранятся права, изначально присваиваемые только что созданным объектам.

Таблица 17. Столбцы pg_default_acl

Столбец Тип
Описание
oid oid
Идентификатор строки
defaclrole oid (ссылается на pg_authid.oid)
OID роли, связанной с этой записью
defaclnamespace oid (ссылается на pg_namespace.oid)
OID пространства имен, связанного с этой записью, или ноль, если такового нет
defaclobjtype char
Тип объекта, для которого эта запись предназначена: r = отношение (relation) (таблица, представление), S = последовательность (sequence), f = функция (function), T = тип (type), n = схема
defaclacl aclitem[]
Права доступа, которые этот тип объекта должен иметь при создании

Запись в pg_default_acl отображает начальные права, которые будут присвоены объекту, принадлежащему указанному пользователю. В настоящее время существует два типа записей: «глобальные» записи с defaclnamespace = нулю и записи «схемы», ссылающиеся на конкретную схему. Если глобальная запись присутствует, то она переопределяет обычные фиксированные права по умолчанию для типа объекта. Посхемная запись, если она присутствует, представляет права, которые будут добавлены к глобальным или фиксированным правам по умолчанию.

Обратите внимание, что если запись ACL в другом каталоге имеет значение NULL, то она используется для представления фиксированных прав по умолчанию для ее объекта, а не тех, что могут находиться в pg_default_acl в данный момент. Каталог pg_default_acl учитывается только при создании объекта.



pg_depend

В каталоге pg_depend записываются отношения зависимости между объектами базы данных. Эта информация позволяет командам DROP находить, какие другие объекты должны быть удалены с помощью DROP CASCADE, или предотвращать удаление в случае DROP RESTRICT.

См. также описание каталога pg_shdepend, который выполняет аналогичную функцию для зависимостей, включающих разделяемые объекты в кластере баз данных.

Таблица 18. Столбцы pg_depend

Столбец Тип
Описание
classid oid (ссылается на pg_class.oid)
OID системного каталога, в котором находится зависимый объект
objid oid (ссылается на какой-либо столбец OID)
OID конкретного зависимого объекта
objsubid int4
Для столбца таблицы это номер столбца (поля objid и classid ссылаются на саму таблицу). Для всех остальных типов объектов этот столбец содержит ноль.
refclassid oid (ссылается на pg_class.oid)
OID системного каталога, в котором находится ссылочный объект
refobjid oid (ссылается на какой-либо столбец OID)
OID конкретного ссылочного объекта
refobjsubid int4
Для столбца таблицы это номер столбца (поля refobjid и refclassid ссылаются на саму таблицу). Для всех остальных типов объектов этот столбец содержит ноль.
deptype char
Код, определяющий конкретную семантику этого отношения зависимости; см. текст ниже

Во всех случаях запись в pg_depend указывает, что ссылочный объект нельзя удалить, не удалив зависимый объект. Тем не менее есть несколько подвидов зависимостей, задаваемых в поле deptype:

DEPENDENCY_NORMAL (n)
Обычное отношение между раздельно созданными объектами. Зависимый объект можно удалить, не затрагивая ссылочный объект. Последний можно удалить только путем указания CASCADE, и в этом случае зависимый объект также удаляется. Пример: столбец таблицы имеет нормальную зависимость от своего типа данных.

DEPENDENCY_AUTO (a)
Зависимый объект можно быть удален отдельно от ссылочного и должен быть автоматически удален (вне зависимости от режима RESTRICT или CASCADE) при удалении ссылочного объекта. Пример: именованное ограничение для таблицы становится автоматически зависимым от таблицы, поэтому если таблица будет удалена, оно исчезнет.

DEPENDENCY_INTERNAL (i)
Зависимый объект был создан как часть ссылочного и на самом деле является только частью его внутренней реализации. Удаление такого зависимого объекта напрямую при помощи DROP будет сразу же запрещено (вместо этого пользователю будет выдано сообщение о необходимости вызвать DROP для ссылочного объекта). Удаление ссылочного объекта приведет к автоматическому удалению зависимого объекта вне зависимости от наличия указания CASCADE. Если зависимый объект нужно удалить из-за зависимости от какого-либо другого удаляемого объекта, его удаление преобразуется в удаление ссылочного объекта, поэтому зависимости NORMAL и AUTO зависимого объекта ведут себя так же, как и зависимости ссылочного объекта. Пример: правило ON SELECT для представления становится внутренне зависимым от этого представления, что предотвращает удаление правила, пока существует представление. Зависимости для этого правила (например таблицы, на которые оно ссылается) действуют так, как если бы они были зависимостями представления.

DEPENDENCY_PARTITION_PRI (P)
DEPENDENCY_PARTITION_SEC (S)
Зависимый объект был создан как часть ссылочного и на самом деле является только частью его внутренней реализации; однако, в отличие от INTERNAL, существует более одного такого ссылочного объекта. Зависимый объект не должен удаляться, пока не будет удален хотя бы один из этих объектов; если какой-либо из них удаляется, зависимый объект должен удаляться вне зависимости от наличия указания CASCADE. Также, в отличие от INTERNAL, удаление некоторого другого объекта, от которого зависит объект, не приводит к автоматическому удалению какого-либо партиционно- ссылочного объекта. Следовательно, если удаление каскадно не доходит хотя бы до одного из этих объектов по какому-то другому пути, оно не произойдет. (В большинстве случаев зависимый объект совместно использует все свои непартиционированные зависимости, по крайней мере, с одним партиционно-ссылочным объектом, так что это ограничение не приведет к блокированию каскадного удаления.) Первичные (PRI) и вторичные (SEC) партиционные зависимости ведут себя одинаково, за исключением того, что первичная зависимость предпочтительна для использования в сообщениях об ошибках — следовательно, партиционно-зависимый объект должен иметь одну первичную партиционную зависимость и одну или несколько вторичных. Обратите внимание, что партиционные зависимости создаются в дополнение к любым зависимостям, которые обычно имеются у объекта, а не вместо них. Это упрощает операции ATTACH/DETACH PARTITION: необходимо только добавить или удалить партиционные зависимости. Пример: дочерний партиционированный индекс становится партиционно-зависимым как от своей партиционированной таблицы, так и от родительского партиционированного индекса, поэтому он будет удален при удалении любого из этих объектов, но не в других случаях. Зависимость от родительского индекса является первичной, так что если пользователь попытается удалить дочерний партиционированный индекс, в сообщении об ошибке будет предложено вместо этого удалить родительский индекс (а не таблицу).

DEPENDENCY_EXTENSION (е)
Зависимый объект является элементом расширения, которое является его ссылочным объектом (см. pg_extension). Зависимый объект можно удалить только с помощью команды DROP EXTENSION для ссылочного объекта. Функционально этот тип зависимости действует так же, как и зависимость INTERNAL, но он хранится отдельно для ясности и упрощения qhb_dump.

DEPENDENCY_AUTO_EXTENSION (x)
Зависимый объект не является элементом расширения, которое является его ссылочным объектом (и поэтому не должен игнорироваться qhb_dump), но он не может функционировать без расширения и должен автоматически удаляться при удалении расширения. Кроме того, зависимый объект можно удалить сам по себе. Функционально этот тип зависимости действует так же, как и зависимость AUTO, но он хранится отдельно для ясности и упрощения qhb_dump.

В будущем могут понадобиться другие разновидности зависимости.

Обратите внимание, что два объекта вполне могут быть связаны более чем одной записью в pg_depend. Например, дочерний партиционированный индекс будет иметь зависимость партиционного типа от связанной партиционированной таблицы и автозависимость от каждого столбца той таблицы, которую он индексирует. Такая ситуация выражает объединение семантики множественной зависимости. Зависимый объект можно удалить без указания CASCADE, если какая-либо из его зависимостей удовлетворяет его условию автоматического удаления. И наоборот, должны быть выполнены все ограничения зависимостей, определяющие, какие объекты должны быть удалены вместе.

Большинство объектов, созданных во время qhb_bootstrap (или initdb), считаются «закрепленными», что означает, что сама система зависит от них. Поэтому их ни в коем случае нельзя удалять. Кроме того, зная, что закрепленные объекты не будут удалены, механизм зависимостей не утруждается созданием в pg_depend записей, показывающих зависимости от этих объектов. Таким образом, например, столб таблицы типа numeric номинально имеет зависимость NORMAL от типа данных numeric, но фактически такая запись в pg_depend не появляется.



pg_description

В каталоге pg_description хранятся дополнительные описания (комментарии) для каждого объекта базы данных. Описания можно обрабатывать с помощью команды COMMENT и просматривать с помощью команд psql \d. В начальном содержимом pg_description представлены описания многих встроенных системных объектов.

См. также описание каталога pg_shdescription, который выполняет аналогичную функцию в отношении описаний разделяемых объектов в кластере баз данных.

Таблица 19. Столбцы pg_description

Столбец Тип
Описание
objoid oid (ссылается на какой-либо столбец OID)
OID объекта, к которому относится данное описание
classoid oid (ссылается на pg_class.oid)
OID системного каталога, в котором находится этот объект
objsubid int4
Для комментария к столбцу таблицы это номер столбца (поля objoid и classoid ссылаются на саму таблицу). Для всех остальных типов объектов этот столбец содержит ноль.
description text
Произвольный текст, который служит описанием данного объекта


pg_enum

В каталоге pg_enum содержатся записи, показывающие значения и метки для всех перечислимых типов. Внутренним представлением заданного значения перечисления в действительности является OID соответствующей ему строки в pg_enum.

Таблица 20. Столбцы pg_enum

Столбец Тип
Описание
oid oid
Идентификатор строки
enumtypid oid (ссылается на pg_type.oid)
OID записи в каталоге pg_type, содержащей это перечислимое значение
enumsortorder float4
Позиция этого перечислимого значения по порядку сортировки внутри его перечислимого типа
enumlabel name
Текстовая метка для этого перечислимого значения

OID для строк в pg_enum следуют специальному правилу: четные OID гарантированно упорядочиваются аналогично порядку сортировки их перечислимого типа. То есть если два четных OID принадлежат к одному и тому же перечислимому типу, меньший OID должен иметь меньшее значение enumsortorder. Нечетные значения OID могут быть никак не связаны с порядком сортировки. Это правило во многих случаях позволяет подпрограммам сравнения перечислений обходиться без поиска в каталоге. Подпрограммы, которые создают и изменяют перечислимые типы, по возможности пытаются назначать значениям перечислений четные OID.

При создании перечислимого типа его членам присваиваются позиции по порядку сортировки 1..n. Но членам, добавляемым позже, могут присваиваться отрицательные или дробные значения enumsortorder. Единственное требование к этим значениям в том, чтобы они были правильно упорядочены и уникальны в каждом перечислимом типе.



pg_event_trigger

В каталоге pg_event_trigger хранятся триггеры событий. Подробную информацию см. в главе Триггеры событий.

Таблица 21. Столбцы pg_event_trigger

Столбец Тип
Описание
oid oid
Идентификатор строки
evtname name
Имя триггера (должно быть уникальным)
evtevent name
Характеризует событие, для которого срабатывает этот триггер
evtowner oid (ссылается на pg_authid.oid)
Владелец триггера события
evtfoid oid (ссылается на pg_proc.oid)
Вызываемая функция
evtenabled char
Задает режимы session_replication_role, в которых срабатывает триггер события. О = триггер срабатывает в режимах «origin» (источник) и «local» (локально), D = триггер выключен (disabled), R = триггер срабатывает в режиме «replica» (реплика), A = триггер срабатывает всегда (always).
evttags text[]
Теги команд, для которых этот триггер будет срабатывать. Если NULL, то срабатывание этого триггера не ограничено на основании тега команды.


pg_extension

В каталоге pg_extension хранится информация об установленных расширениях. Подробную информацию о расширениях см. в разделе Упаковка связанных объектов в расширение.

Таблица 22. Столбцы pg_extension

Столбец Тип
Описание
oid oid
Идентификатор строки
extname name
Имя расширения
extowner oid (ссылается на pg_authid.oid)
Владелец расширения
extnamespace oid (ссылается на pg_namespace.oid)
Схема, содержащая экспортируемые объекты расширения
extrelocatable bool
True, если расширение можно переместить в другую схему
extversion text
Имя версии расширения
extconfig oid[] (ссылается на pg_class.oid)
Массив с OID regclass для таблиц(ы) конфигурации расширения или NULL, если у расширения нет таких таблиц
extcondition text[]
Массив с условиями фильтра предложения WHERE для таблиц(ы) конфигурации расширения или NULL, если условий нет

Обратите внимание, что, в отличие от большинства каталогов со столбцом «namespace», столбец extnamespace не подразумевает, что расширение принадлежит этой схеме. Имена расширений никогда не дополняются схемой. Скорее, extnamespace указывает схему, содержащую большинство или все объекты расширения. Если поле extrelocatable имеет значение true, то эта схема фактически должна содержать все дополненные схемой объекты, принадлежащие данному расширению.



pg_foreign_data_wrapper

В каталоге pg_foreign_data_wrapper хранятся определения оберток сторонних данных. Обертка сторонних данных — это механизм, с помощью которого осуществляется доступ к внешним данным, находящимся на сторонних серверах.

Таблица 23. Столбцы pg_foreign_data_wrapper

Столбец Тип
Описание
oid oid
Идентификатор строки
fdwname name
Имя обертки сторонних данных
fdwowner oid (ссылается на pg_authid.oid)
Владелец обертки сторонних данных
fdwhandler oid (ссылается на pg_proc.oid)
Ссылается на функцию обработки, которая отвечает за предоставление исполняемых подпрограмм для этой обертки сторонних данных. Ноль, если обработчик отсутствует
fdwvalidator oid (ссылается на pg_proc.oid)
Ссылается на функцию-валидатор, которая отвечает за проверку допустимости параметров, заданных обертке сторонних данных, а также параметров для сторонних серверов и сопоставлений пользователей, использующих эту обертку. Ноль, если валидатор отсутствует
fdwacl aclitem[]
Права доступа; подробную информацию см. в разделе Права
fdwoptions text[]
Параметры, специфичные для обертки сторонних данных, в виде строк «ключ=значение»


pg_foreign_server

В каталоге pg_foreign_server хранятся определения сторонних серверов. Сторонний сервер описывает источник внешних данных, например удаленный сервер. Доступ к сторонним серверам осуществляется через обертки сторонних данных.

Таблица 24. Столбцы pg_foreign_server

Столбец Тип
Описание
oid oid
Идентификатор строки
srvname name
Имя стороннего сервера
srvowner oid (ссылается на pg_authid.oid)
Владелец стороннего сервера
srvfdw oid (ссылается на pg_foreign_data_wrapper.oid)
OID обертки сторонних данных этого стороннего сервера
srvtype text
Тип сервера (необязательно)
srvversion text
Версия сервера (необязательно)
srvacl aclitem[]
Права доступа; подробную информацию см. в разделе Права
srvoptions text[]
Параметры, специфичные для стороннего сервера, в виде строк «ключ=значение»


pg_foreign_table

В каталоге pg_foreign_table содержится дополнительная информация о сторонних таблицах. Сторонняя таблица в основном представляется записью в каталоге pg_class аналогично обычной таблице. Запись о ней в pg_foreign_table содержит информацию, относящуюся только к сторонним таблицам, а не к какому-либо другому виду отношений.

Таблица 25. Столбцы pg_foreign_table

Столбец Тип
Описание
ftrelid oid (ссылается на pg_class.oid)
OID записи в каталоге pg_class для этой сторонней таблицы
ftserver oid (ссылается на pg_foreign_server.oid)
OID стороннего сервера для этой сторонней таблицы
ftoptions text[]
Параметры сторонней таблицы в виде строк «ключ=значение»


pg_index

В каталоге pg_index содержится часть информации об индексах. Остальное находится по большей части в каталоге pg_class.

Таблица 26. Столбцы pg_index

Столбец Тип
Описание
indexrelid oid (ссылается на pg_class.oid)
OID записи в каталоге pg_class для этого индекса
indrelid oid (ссылается на pg_class.oid)
OID записи в каталоге pg_class для таблицы, к которой относится этот индекс
indnatts int2
Общее количество столбцов в индексе (повторяет поле pg_class.relnatts); это число включает в себя как ключевые, так и включенные атрибуты
indnkeyatts int2
Количество ключевых столбцов в индексе, не считая каких-либо включенных столбцов, которые просто хранятся и не участвуют в семантике индекса
indisunique bool
Если true, то это уникальный индекс
indnullsnotdistinct bool
Это значение используется только для уникальных индексов. Если false, то этот уникальный индекс будет считать значения NULL различными (поэтому индекс сможет содержать в столбце несколько значений NULL; это поведение QHB по умолчанию). Если true, то уникальный индекс будет считать значения NULL одинаковыми (поэтому индекс сможет содержать в столбце только одно значение NULL).
indisprimary bool
Если true, то этот индекс представляет первичный ключ таблицы (в этом случае поле indisunique всегда должно иметь значение true)
indisexclusion bool
Если true, то этот индекс поддерживает исключающее ограничение
indimmediate bool
Если true, то проверка уникальности применяется сразу после вставки (неприменимо, если поле indisunique имеет значение false)
indisclustered bool
Если true, то последний раз данная таблица кластеризовалась по этому индексу
indisvalid bool
Если true, то индекс в настоящее время является допустимым для запросов. False означает, что индекс может быть неполным: он по-прежнему должен изменяться с помощью операций INSERT/UPDATE, но безопасно использовать его для запросов нельзя. Если индекс уникальный, свойство уникальности также не гарантируется.
indcheckxmin bool
Если true, запросы не должны использовать индекс до тех пор, пока поле xmin этой строки pg_index находится ниже их горизонта событий TransactionXmin, поскольку таблица может содержать разорванные цепочки HOT с видимыми для этих запросов несовместимыми строками
indisready bool
Если true, то индекс в настоящее время готов к вставкам. False означает, что индекс должен игнорироваться операциями INSERT/UPDATE.
indislive bool
Если false, индекс находится в процессе удаления и должен игнорироваться при любой попытке использования (включая решения о безопасности HOT)
indisreplident bool
Если true, то этот индекс был выбран в качестве «идентификатора реплики» с помощью команды ALTER TABLE ... REPLICA IDENTITY USING INDEX ...
indkey int2vector (ссылается на pg_attribute.attnum)
Это массив из значений indnatts, указывающий на столбцы таблицы, которые этот индекс обрабатывает. Например, значение 1 3 будет означать, что первый и третий столбцы таблицы составляют записи индекса. Ключевые столбцы предшествуют неключевым (включенным) столбцам. Ноль в этом массиве указывает, что соответствующий атрибут индекса является выражением по столбцам таблицы, а не просто ссылкой на столбец.
indcollation oidvector (ссылается на pg_collation.oid)
Для каждого столбца в ключе индекса (значения indnkeyatts) это поле содержит OID правила сортировки, используемого для индекса, или ноль, если столбец имеет несортируемый тип данных.
indclass oidvector (ссылается на pg_opclass.oid)
Для каждого столбца в ключе индекса (значения indnkeyatts) это поле содержит OID используемого класса операторов. Дополнительную информацию см. в описании каталога pg_opclass
indoption int2vector
Это массив из значений indnkeyatts, хранящих биты флагов для каждого столбца. Значение этих битов определяется индексным методом доступа.
indexprs pg_node_tree
Деревья выражений (в представлении nodeToString()) для атрибутов индекса, которые не являются простыми ссылками на столбец. Это список с одним элементом для каждой нулевой записи в поле indkey. NULL, если все атрибуты индекса являются простыми ссылками.
indpred pg_node_tree
Дерево выражений (в представлении nodeToString()) для предиката частичного индекса. NULL, если это не частичный индекс.


pg_inherits

В каталог pg_inherits записывается информация об иерархиях наследования таблицы и индекса. Для каждой прямой связи «родитель-потомок» таблицы или индекса в базе данных существует одна запись. (Косвенное наследование можно определить, проследив цепочки записей.)

Таблица 27. Столбцы pg_inherits

Столбец Тип
Описание
inhrelid oid (ссылается на pg_class.oid)
OID дочерней таблицы или индекса
inparent oid (ссылается на pg_class.oid)
OID родительской таблицы или индекса
inhseqno int4
Если у дочерней таблицы существует более одного прямого родителя (множественное наследование), это число указывает порядок, в котором должны располагаться наследуемые столбцы. Отсчет начинается с 1.
У индексов не может быть множественного наследования, так как они могут наследоваться только при декларативном партиционировании.
inhdetachpending bool
true для партиции, находящейся в процессе отсоединения; иначе — false.


pg_init_privs

В каталог pg_init_privs записывается информация об изначальных правах объектов в системе. Для каждого объекта в базе данных, имеющего нестандартный (отличный от NULL) начальный набор прав, существует одна запись.

Начальные права объектов могут задаваться либо при инициализации системы (с помощью qhb_bootstrap), либо при создании объекта во время выполнения команды CREATE EXTENSION, а скрипт расширения устанавливает начальные права с помощью системы GRANT. Обратите внимание, что эта система автоматически записывает права во время выполнения скрипта расширения, поэтому для записи прав авторам расширения достаточно использовать в своем скрипте только команды GRANT и REVOKE. Столбец privtype показывает, было ли начальное право установлено qhb_bootstrap или в процессе выполнения команды CREATE EXTENSION.

Объекты с начальными правами, установленными qhb_bootstrap, будут иметь записи, где privtype содержит 'i', тогда как у объектов с начальными правами, установленными CREATE EXTENSION, privtype будет иметь значение 'e'.

Таблица 28. Столбцы pg_init_privs

Столбец Тип
Описание
objoid oid (ссылается на какой-либо столбец OID)
OID конкретного объекта
classoid oid (ссылается на pg_class.oid)
OID системного каталога, в котором находится этот объект
objsubid int4
Для столбца таблицы это номер столбца (поля objoid и classoid ссылаются на саму таблицу). Для всех остальных типов объектов этот столбец содержит ноль.
privtype char
Код, определяющий тип начального права этого объекта; см. текст выше
initprivs aclitem[]
Начальные права доступа; подробную информацию см. в разделе Права


pg_language

В каталоге pg_language регистрируются языки, на которых можно писать функции или хранимые процедуры. Более подробную информацию об обработчиках языка см. на справочной странице команды CREATE LANGUAGE и в главе Процедурные языки.

Таблица 29. Столбцы pg_language

Столбец Тип
Описание
oid oid
Идентификатор строки
lanname name
Имя языка
lanowner oid (ссылается на pg_authid.oid)
Владелец языка
lanispl bool
Для внутренних языков (таких как SQL) имеет значение false, для пользовательских — true. В настоящее время qhb_dump все еще использует это, чтобы определить, какие языки нужно выгружать в дамп, но в будущем этот механизм может быть заменен на другой.
lanplusted bool
True, если это доверенный язык (это означает, что он предположительно не предоставляет доступ к чему-либо за пределами обычной среды выполнения SQL). Только суперпользователи могут создавать функции на недоверенных языках.
lanplcallfoid oid (ссылается на pg_proc.oid)
Для не внутренних языков это ссылка на обработчик языка, то есть специальную функцию, отвечающую за выполнение всех функций, написанных конкретно на этом языке. Ноль для внутренних языков.
laninline oid (ссылается на pg_proc.oid)
Ссылка на функцию, отвечающую за выполнение «подставляемых» анонимных блоков кода (блоков DO). Ноль, если подставляемые блоки не поддерживаются.
lanvalidator oid (ссылается на pg_proc.oid)
Ссылка на функцию-валидатор языка, отвечающую за проверку синтаксиса и допустимости новых функций при их создании. Ноль, если валидатор отсутствует.
lanacl aclitem[]
Права доступа; подробную информацию см. в разделе Права


pg_largeobject

В каталоге pg_largeobject содержатся данные, составляющие «большие объекты». Большой объект идентифицируется OID, назначенным при его создании. Каждый большой объект разбивается на сегменты или «страницы», достаточно маленькие для удобного хранения в виде строк в pg_largeobject. Количество данных на странице определяется как LOBLKSIZE (который в настоящее время равен BLCKSZ/4, т. е. обычно 2 Кб).

Для получения списка OID больших объектов следует обратиться к каталогу pg_largeobject_metadata.

Таблица 30. Столбцы pg_largeobject

Столбец Тип
Описание
loid oid (ссылается на pg_largeobject_metadata.oid)
Идентификатор большого объекта, включающего эту страницу
pageno int4
Номер этой страницы в большом объекте (начиная с нуля)
data bytea
Непосредственно данные, хранящиеся в большом объекте. Их объем никогда не будет превышать LOBLKSIZE байт, но может быть меньше.

В каждой строке каталога pg_largeobject содержатся данные для одной страницы большого объекта, начиная со смещения (pageno * LOBLKSIZE) внутри него в байтах. Эта реализация допускает разреженное хранилище: страницы могут отсутствовать и быть короче LOBLKSIZE байт, даже если это не последние страницы объекта. Отсутствующие области внутри большого объекта считываются как нули.



pg_largeobject_metadata

В каталоге pg_largeobject_metadata содержатся метаданные, связанные с большими объектами. Фактические данные больших объектов хранятся в каталоге pg_largeobject.

Таблица 31. Столбцы pg_largeobject_metadata

Столбец Тип
Описание
oid oid
Идентификатор строки
lomowner oid (ссылается на pg_authid.oid)
Владелец большого объекта
lomacl aclitem[]
Права доступа; подробную информацию см. в разделе Права


pg_namespace

В каталоге pg_namespace хранятся пространства имен. Пространство имен — это структура, лежащая в основе схем SQL: каждое пространство имен может содержать отдельный набор отношений, типов и т. д. без конфликтов имен.

Таблица 32. Столбцы pg_namespace

Столбец Тип
Описание
oid oid
Идентификатор строки
nspname name
Имя пространства имен
nspowner oid (ссылается на pg_authid.oid)
Владелец пространства имен
nspacl aclitem[]
Права доступа; подробную информацию см. в разделе Права


pg_opclass

В каталоге pg_opclass определяются классы операторов для индексных методов доступа. Каждый класс операторов определяет семантику для индексных столбцов определенного типа данных и конкретного индексного метода доступа. Класс операторов по существу показывает, что конкретное семейство операторов применимо к конкретному индексируемому типу данных столбца. Набор операторов из семейства, который на самом деле можно использовать с индексированным столбцом, составляют операторы, принимающие в качестве левого операнда тип данных столбца.

Классы операторов подробно описываются в разделе Интерфейсные расширения для индексов.

Таблица 33. Столбцы pg_opclass

Столбец Тип
Описание
oid oid
Идентификатор строки
opcmethod oid (ссылается на pg_am.oid)
Индексный метод доступа, для которого предназначен этот класс операторов
opcname name
Имя класса операторов
opcnamespace oid (ссылается на pg_namespace.oid)
Пространство имен этого класса операторов
opcowner oid (ссылается на pg_authid.oid)
Владелец класса операторов
opcfamily oid (ссылается на pg_opfamily.oid)
Семейство операторов, содержащее этот класс операторов
opcintype oid (ссылается на pg_type.oid)
Тип данных, который индексируется этим классом операторов
opcdefault bool
True, если этот класс операторов используется по умолчанию для opcintype
opckeytype oid (ссылается на pg_type.oid)
Тип данных, хранящихся в индексе, или ноль, если он совпадает с opcintype

Значение поля opfmethod класса операторов должно совпадать с таковым у содержащего его семейства операторов. Кроме того, в каталоге pg_opclass должно быть не более одной строки, в которой opcdefault равно true для любой заданной комбинации opcmethod и opcintype.



pg_operator

В каталоге pg_operator хранится информация об операторах. Подробную информацию см. на справочной странице команды CREATE OPERATOR и в разделе Пользовательские операторы.

Таблица 34. Столбцы pg_operator

Столбец Тип
Описание
oid oid
Идентификатор строки
oprname name
Имя оператора
oprnamespace oid (ссылается на pg_namespace.oid)
OID пространства имен, содержащего этот оператор
oprowner oid (ссылается на pg_authid.oid)
Владелец оператора
oprkind char
b = инфиксный оператор («both») или l = префиксный оператор («left»)
oprcanmerge bool
Этот оператор поддерживает соединения слиянием
oprcanhash bool
Этот оператор поддерживает хеш-соединения
oprleft oid (ссылается на pg_type.oid)
Тип левого операнда (ноль для префиксного оператора)
oprright oid (ссылается на pg_type.oid)
Тип правого операнда
oprresult oid (ссылается на pg_type.oid)
Тип результата (ноль для еще не определенного «пустого» оператора)
oprcom oid (ссылается на pg_operator.oid)
Коммутатор этого оператора (ноль, если такового нет)
oprnegate oid (ссылается на pg_operator.oid)
Инвертор этого оператора (ноль, если такового нет)
oprcode regproc (ссылается на pg_proc.oid)
Функция, реализующая этот оператор (ноль для еще не определенного «пустого» оператора)
oprrest regproc (ссылается на pg_proc.oid)
Функция оценки избирательности ограничения для этого оператора (ноль, если таковой нет)
oprjoin regproc (ссылается на pg_proc.oid)
Функция оценки избирательности соединения для этого оператора (ноль, если таковой нет)


pg_opfamily

В каталоге pg_opfamily определяются семейства операторов. Каждое семейство операторов представляет собой набор операторов и связанных с ними вспомогательных процедур, реализующих семантику, специфичную для конкретного индексного метода доступа. Более того, все операторы в семействе «совместимы» в том смысле, который определяется методом доступа. Концепция семейства операторов позволяет применять с индексами операторы разного типа и рассуждать о них, используя знания о семантике метода доступа.

Семейства операторов подробно описаны в разделе Интерфейсные расширения для индексов.

Таблица 35. Столбцы pg_opfamily

Столбец Тип
Описание
oid oid
Идентификатор строки
opfmethod oid (ссылается на pg_am.oid)
Индексный метод доступа, для которого предназначено это семейство операторов
opfname name
Имя семейства операторов
opfnamespace oid (ссылается на pg_namespace.oid)
Пространство имен этого семейства операторов
opfowner oid (ссылается на pg_authid.oid)
Владелец семейства операторов

Большая часть информации, определяющей семейство операторов, находится не в строке каталога pg_opfamily, а в связанных строках каталогов pg_amop, pg_amproc и pg_opclass.



pg_parameter_acl

В каталоге pg_parameter_acl записываются параметры конфигурации, для которых предоставлены права одной или нескольким ролям. Для параметров, для которых имеются права по умолчанию, записей не делается.

В отличие от большинства системных каталогов, pg_parameter_acl совместно используется всеми базами данных кластера: существует только одна копия pg_parameter_acl на кластер, а не отдельная для каждой базы данных.

Таблица 36. Столбцы pg_parameter_acl

Столбец Тип
Описание
oid oid
Идентификатор строки
parname text
Имя параметра конфигурации, для которого были предоставлены права
paracl aclitem[]
Права доступа; подробную информацию см. в разделе Права


pg_partitioned_table

В каталоге pg_partitioned_table хранится информация о том, как партиционируются таблицы.

Таблица 37. Столбцы pg_partitioned_table

Столбец Тип
Описание
partrelid oid (ссылается на pg_class.oid)
OID записи в каталоге pg_class для этой партиционированной таблицы
partstrat char
Стратегия партиционирования: h = по хешу (hash), l = по списку (list), r = по диапазону (range)
partnatts int2
Количество столбцов в ключе разбиения
partdefid oid (ссылается на pg_class.oid)
OID записи в каталоге pg_class для партиции по умолчанию этой партиционированной таблицы или ноль, если эта партиционированная таблица не имеет партиции по умолчанию.
partattrs int2vector (ссылается на pg_attribute.attnum)
Это массив из значений поля partnatts, обозначающих, какие столбцы таблицы являются частью ключа разбиения. Например, значение 1 3 будет означать, что первый и третий столбцы таблицы составляют ключ разбиения. Ноль в этом массиве означает, что соответствующий столбец ключа разбиения является выражением, а не простой ссылкой на столбец.
partclass oidvector (ссылается на pg_opclass.oid)
Для каждого столбца в ключе разбиения это поле содержит OID используемых классов операторов. Подробную информацию см. в описании каталога pg_opclass.
partcollation oidvector (ссылается на pg_opclass.oid)
Для каждого столбца в ключе разбиения это поле содержит OID правила сортировки, используемого для партиционирования, или ноль, если столбец не относится к сортируемому типу данных.
partexprs pg_node_tree
Деревья выражений (в представлении nodeToString()) для столбцов ключа разбиения, которые не являются простыми ссылками на столбцы. Это список с одним элементом для каждой нулевой записи в поле partattrs. NULL, если все столбцы ключа разбиения являются простыми ссылками.


pg_policy

В каталоге pg_policy хранятся политики защиты на уровне строк для таблиц. Политика включает тип команды, к которой она применяется (возможно, это все команды), роли, к которым она применяется, выражение, вводимое в качестве требования барьера безопасности в запросы, включающие данную таблицу, и выражение, вводимое в качестве параметра WITH CHECK для запросов, которые пытаются добавить в таблицу новые записи.

Таблица 38. Столбцы pg_policy

Столбец Тип
Описание
oid oid
Идентификатор строки
polname name
Имя политики
polrelid oid (ссылается на pg_class.oid)
Таблица, к которой применяется политика
polcmd char
Тип команды, к которой применяется политика: r для SELECT, a для INSERT, w для UPDATE, d для DELETE или * для всех
polpermissive bool
Является ли эта политика разрешительной или ограничительной?
polroles oid[] (ссылается на pg_authid.oid)
Роли, к которым применяется политика; ноль означает PUBLIC (которая обычно является единственным элементом массива)
polqual pg_node_tree
Дерево выражений, добавляемое к требованиям барьеров безопасности для запросов, использующих данную таблицу
polwithcheck pg_node_tree
Дерево выражений, добавляемое к требованиям WITH CHECK для запросов, пытающихся добавить строки в таблицу

Примечание
Политики, хранящиеся в каталоге pg_policy, применяются, только когда для их таблицы установлен признак pg_class.relrowsecurity.



pg_proc

В каталоге pg_proc хранится информация о простых функциях, процедурах, агрегатных и оконных функциях (в совокупности также известных как подпрограммы). Более подробную информацию см. на справочных страницах команд CREATE FUNCTION и CREATE PROCEDURE и в разделе Пользовательские функции.

Если prokind указывает, что эта запись предназначена для агрегатной функции, в каталоге pg_aggregate должна иметься соответствующая строка.

Таблица 39. Столбцы pg_proc

Столбец Тип
Описание
oid oid
Идентификатор строки
proname name
Имя функции
pronamespace oid (ссылается на pg_namespace.oid)
OID пространства имен, содержащего эту функцию
proowner oid (ссылается на pg_authid.oid)
Владелец функции
prolang oid (ссылается на pg_language.oid)
Язык реализации или интерфейс вызова этой функции
procost float4
Предполагаемая стоимость исполнения (в единицах cpu_operator_cost); если установлен признак proretset, это стоимость одной возвращенной строки
prorows float4
Предполагаемое количество возвращаемых строк (ноль, если не установлен признак proretset)
provariadic oid (ссылается на pg_type.oid)
Тип данных элементов переменного массива параметров или ноль, если функция не принимает переменное количество параметров
prosupport regproc (ссылается на pg_proc.oid)
Вспомогательная функция планировщика для этой функции (см. раздел Информация по оптимизации функций) или ноль, если таковой нет
prokind char
f для обычной функции (function), p для процедуры (procedure), a для агрегатной функции (aggregate) или w для оконной функции (window)
prosecdef bool
Функция является определителем контекста безопасности (т. е. функцией «setuid»)
proleakproof bool
Функция не имеет побочных эффектов. Никакая информация о ее аргументах не передается иначе, чем через возвращаемое значение. Любая функция, которая может вызвать ошибку, в зависимости от значений ее аргументов, не является герметичной.
proisstrict bool
Функция возвращает NULL, если любой аргумент вызова имеет значение NULL. В этом случае функция по факту не будет вызвана вообще. Функции, которые не являются «строгими», должны быть подготовлены для обработки входных значений NULL.
proretset bool
Функция возвращает множество (т. е. несколько значений указанного типа данных)
provolatile char
Поле provolatile показывает, зависит ли результат функции только от ее входных аргументов, или на него влияют внешние факторы. Для «неизменяемых» функций, которые всегда дают один и тот же результат для одних и тех же входных данных, устанавливается значение i (immutable). Для «стабильных» функций, результаты которых (для фиксированных входных аргументов) не изменяются в пределах сканирования, устанавливается значение s (stable). Для «изменчивых» функций, результаты которых могут измениться в любое время, устанавливается значение v (volatile). (Также v используется для функций с побочными эффектами, чтобы их вызовы нельзя было оптимизировать.)
proparallel char
Поле proparallel показывает, можно ли безопасно запускать функцию в параллельном режиме. Для функций, которые безопасно запускать в параллельном режиме без ограничений, устанавливается значение s (safe). Для функций, которые могут выполняться в параллельном режиме, но их выполнение ограничено ведущим процессом группы (параллельные рабочие процессы не могут вызывать эти функции), устанавливается значение r (restricted). Для функций, которые небезопасны в параллельном режиме (наличие такой функции заставляет оптимизатор строить план последовательного выполнения запроса), устанавливается значение u (unsafe).
pronargs int2
Количество входных аргументов
pronargdefaults int2
Количество аргументов, имеющих значения по умолчанию
prorettype oid (ссылается на pg_type.oid)
Тип данных возвращаемого значения
proargtypes oidvector (ссылается на pg_type.oid)
Массив с типами данных аргументов функции. Включает только входные аргументы (в том числе аргументы INOUT и VARIADIC) и тем самым представляет сигнатуру вызова функции.
proallargtypes oid[] (ссылается на pg_type.oid)
Массив с типами данных аргументов функции. Включает в себя все аргументы (в том числе аргументы OUT и INOUT), однако если все аргументы являются IN, это поле будет иметь значение NULL. Обратите внимание, что индексы массивов обычно начинаются с 1, тогда как по историческим причинам proargtypes индексируются, начиная с 0.
proargmodes char[]
Массив с режимами аргументов функции, закодированными как i для аргументов IN, о для аргументов OUT, b для аргументов INOUT, v для аргументов VARIADIC, t для аргументов TABLE. Если все аргументы являются IN, это поле будет иметь значение NULL. Обратите внимание, что индексы соответствуют позициям в proallargtypes, а не в proargtypes.
proargnames text[]
Массив с именами аргументов функции. Аргументы без имени устанавливаются в массиве как пустые строки. Если ни один из аргументов не имеет имени, это поле будет иметь значение NULL. Обратите внимание, что индексы соответствуют позициям в proallargtypes, а не в proargtypes.
proargdefaults pg_node_tree
Деревья выражений (в представлении nodeToString()) для значений по умолчанию. Это список, содержащий pronargdefaults элементов, соответствующих последним N входным аргументам (т. е. последним N позициям в поле proargtypes). Если ни один из аргументов не имеет значения по умолчанию, это поле будет иметь значение NULL.
protrftypes oid[] (ссылается на pg_type.oid)
Массив типов данных аргументов/результатов, к которым необходимо применить преобразования (из предложения TRANSFORM объявления функции). NULL, если таковых нет.
prosrc text
Это значение говорит обработчику функции, как ее вызвать. Это может быть фактический исходный код функции для интерпретируемых языков, символ ссылки, имя файла или что-нибудь еще, в зависимости от языка реализации/соглашения о вызовах.
probin text
Дополнительная информация о том, как вызвать эту функцию. Интерпретация этого значения тоже зависит от языка.
prosqlbody pg_node_tree
Предварительно проанализированное тело функции SQL. Используется для функций на языке SQL, когда тело функции задается в виде стандартной нотации SQL, а не строкового литерала. В остальных случаях — NULL.
proconfig text[]
Локальные настройки переменных конфигурации времени выполнения, действующие для функции
proacl aclitem[]
Права доступа; подробную информацию см. в разделе Права

Для скомпилированных функций, как встроенных, так и динамически загружаемых, поле prosrc содержит имя функции на языке C/RUST (символ ссылки). Для функции на языке SQL prosrc содержит исходный текст функции, если та задана в виде строкового литерала, но если тело функции записано в стиле стандарта SQL, поле prosrc не используется (обычно это пустая строка), а поле prosqlbody содержит предварительно проанализированное определение. Для всех остальных известных на данный момент типов языков поле prosrc содержит исходный текст функции. Поле probin всегда имеет значение NULL, за исключением динамически загружаемых функций на языке C/RUST, для которых оно задает имя файла разделяемой библиотеки, содержащей эти функции.



pg_publication

В каталоге pg_publication содержатся все публикации, созданные в базе данных. Подробнее о публикациях можно узнать в разделе Публикация.

Таблица 40. Столбцы pg_publication

Столбец Тип
Описание
oid oid
Идентификатор строки
pubname name
Имя публикации
pubname oid (ссылается на pg_authid.oid)
Владелец публикации
puballtables bool
Если true, эта публикация автоматически включает все таблицы в базе данных, в том числе те, что будут созданы в будущем.
pubinsert bool
Если true, операции INSERT реплицируются для таблиц в публикации.
pubupdate bool
Если true, операции UPDATE реплицируются для таблиц в публикации.
pubdelete bool
Если true, операции DELETE реплицируются для таблиц в публикации.
pubtruncate bool
Если true, операции TRUNCATE реплицируются для таблиц в публикации.
pubviaroot bool
Если true, операции с листовой партицией реплицируются с использованием идентификатора и схемы включенной в данную публикацию партиционированной таблицы-родителя самого верхнего уровня, а не ее собственных.


pg_publication_namespace

В каталоге pg_publication_namespace содержатся сопоставления между схемами и публикациями в базе данных. Это сопоставления вида многие-ко-многим.

Таблица 41.Столбцы pg_publication_namespace

Столбец Тип
Описание
oid oid
Идентификатор строки
pnpubid oid (ссылается на pg_publication.oid)
Ссылка на публикацию
pnnspid oid (ссылается на pg_namespace.oid)
Ссылка на схему


pg_publication_rel

В каталоге pg_publication_rel содержатся сопоставления между отношениями и публикациями в базе данных. Это сопоставления вида многие-ко-многим. В более понятном пользователю виде эта информация выводится в представлении pg_publication_tables.

Таблица 42. Столбцы pg_publication_rel

Столбец Тип
Описание
oid oid
Идентификатор строки
prpubid oid (ссылается на pg_publication.oid)
Ссылка на публикацию
prrelid oid (ссылается на pg_class.oid)
Ссылка на отношение
prqual pg_node_tree
Дерево выражений (в представлении nodeToString()) для квалифицирующего условия публикации отношения. NULL, если у публикации нет такого условия.
prattrs int2vector (ссылается на pg_attribute.attnum)
Это массив значений, показывающих, какие столбцы таблицы являются частью публикации. Например, значение 1 3 будет означать, что публикуются первый и третий столбцы таблицы. Значение NULL показывает, что публикуются все столбцы.


pg_range

В каталоге pg_range хранится информация о диапазонных типах. Это дополнительная информация к записям типов в каталоге pg_type.

Таблица 43. Столбцы pg_range

Столбец Тип
Описание
rngtypid oid (ссылается на pg_type.oid)
OID диапазонного типа
rngsubtype oid (ссылается на pg_type.oid)
OID типа элемента (подтипа) этого диапазонного типа
rngmultitypid oid (ссылается на pg_type.oid)
OID мультидиапазонного типа для этого диапазонного типа
rngcollation oid (ссылается на pg_collation.oid)
OID правила сортировки, используемого для сравнения диапазонов, или ноль, если такового нет
rngsubopc oid (ссылается на pg_opclass.oid)
OID класса операторов подтипа, используемого для сравнения диапазонов
rngcanonic regproc (ссылается на pg_proc.oid)
OID функции, преобразующей значение диапазона в каноничную форму, или ноль, если таковой нет
rngsubdiff regproc (ссылается на pg_proc.oid)
OID функции, возвращающей разницу между значениями двух элементов в виде значения double precision, или ноль, если таковой нет

Значение поля rngsubopc (плюс rngcollation, если тип элемента является сортируемым) определяет правило сортировки, используемое диапазонным типом. Значение поля rngcanonic используется, когда тип элемента является дискретным. Значение поля rngsubdiff является необязательным, но его стоит задавать для повышения производительности индексов GiST с диапазонным типом.



pg_replication_origin

В каталоге pg_replication_origin содержатся все созданные источники репликации. Подробную информацию об источниках репликации см. в главе Отслеживание прогресса репликации.

В отличие от большинства системных каталогов, pg_replication_origin совместно используется всеми базами данных кластера: существует только одна копия pg_replication_origin на кластер, а не отдельная для каждой базы данных.

Таблица 44. Столбцы pg_replication_origin

Столбец Тип
Описание
roident oid
Уникальный в пределах кластера идентификатор источника репликации. Никогда не должен выходить за границы системы.
roname text
Определяемое пользователем внешнее имя источника репликации.


pg_rewrite

В каталоге pg_rewrite хранятся правила перезаписи для таблиц и представлений.

Таблица 45. Столбцы pg_rewrite

Столбец Тип
Описание
oid oid
Идентификатор строки
rulename name
Имя правила
ev_class oid (ссылается на pg_class.oid)
Таблица, для которой предназначено это правило
ev_type char
Тип события, для которого используется это правило: 1 = SELECT, 2 = UPDATE, 3 = INSERT, 4 = DELETE
ev_enabled char
Задает режимы session_replication_role, при которых срабатывает это правило. О = правило срабатывает в режимах «origin» (источник) и «local» (локально), D = правило выключено (disabled), R = правило срабатывает в режиме «replica» (реплика), A = правило срабатывает всегда (always).
is_instead bool
True, если это правило INSTEAD
ev_qual pg_node_tree
Дерево выражений (в представлении nodeToString()) для условия применения правила
ev_action pg_node_tree
Дерево запросов (в форме представления nodeToString()) для действия правила

Примечание
Если таблица имеет какие-либо правила в этом каталоге, поле pg_class. relhasrules должно содержать true.



pg_seclabel

В каталоге pg_seclabel хранятся метки безопасности для объектов базы данных. Метками безопасности можно управлять с помощью команды SECURITY LABEL. Более простой способ просмотра меток безопасности см. в описании представления pg_seclabels.

См. также описание каталога pg_shseclabel, который выполняет ту же функцию для меток безопасности разделяемых объектов в кластере баз данных.

Таблица 46. Столбцы pg_seclabel

Столбец Тип
Описание
objoid oid (ссылается на какой-либо столбец OID)
OID объекта, к которому относится эта метка безопасности
classoid oid (ссылается на pg_class.oid)
OID системного каталога, в котором находится этот объект
objsubid int4
Для метки безопасности по столбцу таблицы это номер столбца (поля objoid и classoid ссылаются на саму таблицу). Для всех остальных типов объектов этот столбец содержит ноль.
provider text
Поставщик меток безопасности, связанный с этой меткой.
label text
Метка безопасности, применяемая к этому объекту.


pg_sequence

В каталоге pg_sequence содержится информация о последовательностях. Некоторые сведения о последовательностях, такие как имя и схема, находятся в каталоге pg_class.

Таблица 47. Столбцы pg_sequence

Столбец Тип
Описание
seqrelid oid (ссылается на pg_class.oid)
OID записи в каталоге pg_class для этой последовательности
seqtypid oid (ссылается на pg_type.oid)
Тип данных последовательности
seqstart int8
Начальное значение последовательности
seqincrement int8
Значение приращения последовательности
seqmax int8
Максимальное значение последовательности
seqmin int8
Минимальное значение последовательности
seqcache int8
Размер кэша последовательности
seqcycle bool
Зацикливается ли последовательность


pg_shdepend

В каталог pg_shdepend записываются отношения зависимости между объектами базы данных и разделяемыми объектами, например ролями. Эта информация позволяет QHB перед попыткой удаления этих объектов убедиться в том, что они не используются.

См. также описание каталога pg_depend, который выполняет ту же функцию для зависимостей объектов в пределах одной базы данных.

В отличие от большинства системных каталогов, pg_shdepend совместно используется всеми базами данных кластера: существует только одна копия pg_shdepend на кластер, а не отдельная для каждой базы данных.

Таблица 48. Столбцы pg_shdepend

Столбец Тип
Описание
dbid oid (ссылается на pg_database.oid)
OID базы данных, в которой находится зависимый объект, или ноль для разделяемого объекта
classid oid (ссылается на pg_class.oid)
OID системного каталога, в котором находится зависимый объект
objid oid (ссылается на какой-либо столбец OID)
OID конкретного зависимого объекта
objsubid int4
Для столбца таблицы это номер столбца (поля objid и classid ссылаются на саму таблицу). Для всех остальных типов объектов этот столбец содержит ноль.
refclassid oid (ссылается на pg_class.oid)
OID системного каталога, в котором находится ссылочный объект (это должен быть разделяемый каталог)
refobjid oid (ссылается на какой-либо столбец OID)
OID конкретного ссылочного объекта
deptype char
Код, определяющий конкретную семантику этого отношения зависимости; см. текст ниже

Во всех случаях запись в pg_shdepend показывает, что ссылочный объект нельзя удалить, не удалив также зависимый объект. Однако есть несколько подвидов зависимостей, которые задаются в поле deptype:

SHARED_DEPENDENCY_OWNER (о)
Ссылочный объект (который должен быть ролью) является владельцем зависимого объекта.

SHARED_DEPENDENCY_ACL (a)
Ссылочный объект (который должен быть ролью) упоминается в списке ACL (список управления доступом (access control list), т. е. список прав) зависимого объекта. (Запись SHARED_DEPENDENCY_ACL не создается для владельца объекта, так как у того в любом случае будет запись SHARED_DEPENDENCY_OWNER.)

SHARED_DEPENDENCY_POLICY (r)
Ссылочный объект (который должен быть ролью) является целью для объекта зависимой политики.

SHARED_DEPENDENCY_TABLESPACE (t)
Ссылочный объект (который должен быть табличным пространством) является табличным пространством для отношения, у которого нет хранилища.

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

Как и в каталоге pg_depend, большинство объектов, созданных во время qhb_bootstrap (или initdb) считаются «закрепленными». В pg_shdepend не создаются никакие записи, в которых закрепленный объект мог бы быть ссылочным или зависимым.



pg_shdescription

В каталоге pg_shdescription хранятся необязательные описания (комментарии) для разделяемых объектов базы данных. Описаниями можно манипулировать с помощью команды COMMENT и просматривать с помощью команд psql \d.

См. также описание каталога pg_description, который выполняет ту же функцию для описаний объектов в пределах одной базы данных.

В отличие от большинства системных каталогов, pg_shdescription совместно используется всеми базами данных кластера: существует только одна копия pg_shdescription на кластер, а не отдельная для каждой базы данных.

Таблица 49. Столбцы pg_shdescription

Столбец Тип
Описание
objoid oid (ссылается на какой-либо столбец OID)
OID объекта, к которому относится это описание
classoid oid (ссылается на pg_class.oid)
OID системного каталога, в котором находится этот объект
description text
Произвольный текст, который служит описанием этого объекта


pg_shseclabel

В каталоге pg_shseclabel хранятся метки безопасности по разделяемым объектам базы данных. Метками безопасности можно управлять с помощью команды SECURITY LABEL. Более простой способ просмотра меток безопасности см. в описании представления pg_seclabels.

См. также описание каталога pg_seclabel, который выполняет ту же функцию для меток безопасности объектов в пределах одной базы данных.

В отличие от большинства системных каталогов, pg_shseclabel совместно используется всеми базами данных кластера: существует только одна копия pg_shseclabel на кластер, а не отдельная для каждой базы данных.

Таблица 50. Столбцы pg_shseclabel

Столбец Тип
Описание
objoid oid (ссылается на какой-либо столбец OID)
OID объекта, к которому относится эта метка безопасности
classoid oid (ссылается на pg_class.oid)
OID системного каталога, в котором находится этот объект
provider text
Поставщик меток безопасности, связанный с этой меткой
label text
Метка безопасности, применяемая к этому объекту


pg_statistic

В каталоге pg_statistic хранятся статистические данные о содержимом базы данных. Записи создаются при помощи команды ANALYZE и впоследствии используются планировщиком запросов. Обратите внимание, что все статистические данные по своей сути приблизительны, даже если предполагается, что они актуальны.

Обычно для каждого столбца таблицы, который был проанализирован, есть одна запись со значением stainherit = false. Если таблица имеет потомков в иерархии наследования, то создается также вторая запись со значением stainherit = true. Эта строка представляет статистику по столбцу по всему дереву наследования, т. е. статистику по данным, которые выводятся с помощью команды SELECT столбец FROM таблица*, в то время как строка stainherit = false представляет результаты выполнения команды SELECT столбец FROM ONLY таблица.

Также в каталоге pg_statistic хранятся статистические данные о значениях индексных выражений. Они описываются так, как если бы они были реальными столбцами данных; в частности, starelid ссылается на индекс. Однако для обычного столбца индекса, не содержащего выражения, запись не производится, поскольку она дублировала бы запись для нижележащего столбца таблицы. В настоящее время записи для индексных выражений всегда имеют значение stainherit = false.

Поскольку различные виды статистики подходят для различных видов данных, pg_statistic предназначен не для того, чтобы строить конкретные предположения о том, какая статистика в нем хранится. В отдельных столбцах pg_statistic приводятся только самые общие статистические данные (например процент значений NULL). Все остальное хранится в «слотах», представляющих собой группы связанных столбцов, содержимое которых определяется кодовым номером в одном из слотов.

Каталог pg_statistic не должен быть доступен для чтения всеми, поскольку даже статистическая информация о содержимом таблицы может считаться конфиденциальной. (Например, могут представлять интерес минимальные и максимальные значения столбца зарплаты.) Доступным для чтения всеми представлением каталога pg_statistic является pg_stats, которое выводит информацию только о тех таблицах, которые может читать текущий пользователь.

Таблица 51. Столбцы pg_statistic

Столбец Тип
Описание
starelid oid (ссылается на pg_class.oid)
Таблица или индекс, которому принадлежит описываемый столбец
staattnum int2 (ссылается на pg_attribute.attnum)
Номер описываемого столбца
stainherit bool
Если true, то в статистику включаются значения из дочерних таблиц иерархии наследования, а не только значения в указанном отношении
stanullfrac float4
Доля записей столбца, которые содержат NULL
stawidth int4
Средняя хранимая ширина записей, отличных от NULL, в байтах
stadistinct float4
Количество уникальных значений данных, отличных от NULL, в столбце. Значение больше нуля — это фактическое количество уникальных значений. Значение меньше нуля — это множитель для количества строк в таблице, взятый с отрицательным знаком; например, столбец, в котором около 80% значений отличны от NULL и каждое такое значение появляется в среднем примерно два раза, может быть представлен как stadistinct = -0.4. Нулевое значение означает, что количество уникальных значений неизвестно.
stakindN int2
Кодовый номер, указывающий вид статистики, хранящейся в N-м «слоте» строки каталога pg_statistic.
staopN oid (ссылается на pg_operator.oid)
Оператор, используемый для получения статистики, хранящейся в N-м «слоте». Например, для слота гистограммы это будет оператор <, определяющий порядок сортировки данных. Ноль, если для этого вида статистики не требуется оператор.
stacollN oid (ссылается на pg_collation.oid)
Правило сортировки, используемое для получения статистики, хранящейся в N-м «слоте». Например, для слота гистограммы для сортируемого столбца это будет правило сортировки, определяющее порядок сортировки данных. Ноль для несортируемых данных.
stanumbersN float4[]
Числовая статистика соответствующего вида для N-го «слота» или NULL, если этот вид слота не содержит числовых значений
stavaluesN anyarray
Значения данных столбца соответствующего вида для N-го «слота» или NULL, если этот вид слота не хранит никаких значений данных. Значения каждого элемента массива фактически относятся к определенному типу данных столбца или связанному типу, например типу элемента массива, поэтому нет способа определить тип этих столбцов более конкретно, чем anyarray.


pg_statistic_ext

В каталоге pg_statistic_ext содержатся определения расширенной статистики планировщика. Каждая строка в этом каталоге соответствует объекту статистики, созданному с помощью команды CREATE STATISTICS.

Таблица 52. Столбцы pg_statistic_ext

Столбец Тип
Описание
oid oid
Идентификатор строки
stxrelid oid (ссылается на pg_class.oid)
Таблица, содержащая столбцы, описываемые этим объектом
stxname name
Имя объекта статистики
stxnamespace oid (ссылается на pg_namespace.oid)
OID пространства имен, содержащего этот объект статистики
stxowner oid (ссылается на pg_authid.oid)
Владелец объекта статистики
stxstattarget int4
Поле stxstattarget определяет уровень детализации статистики, собранной для данного объекта статистики командой ANALYZE. Нулевое значение показывает, что статистику собирать не нужно. Отрицательное значение указывает использовать максимум из ориентиров статистики для целевых столбцов, если таковые установлены, или системный ориентир статистики по умолчанию. Положительные значения stxstattarget определяют ориентировочное количество «наиболее распространенных значений», которое нужно собрать.
stxkeys int2vector (ссылается на pg_attribute.attnum)
Массив номеров атрибутов, показывающий, какие столбцы таблицы охвачены этим объектом статистики; например, значение 1 3 будет означать, что охвачены первый и третий столбцы таблицы
stxkind char[]
Массив, содержащий коды для включенных типов статистики; допустимыми значениями являются: d для статистики по количеству уникальных значений (n-distinct), f для статистики функциональной зависимости (functional dependency), m для статистики списка наиболее распространенных значений (most common values, MCV) и e для статистики выражений (expression)
stxexprs pg_node_tree
Деревья выражений (в представлении nodeToString()) для атрибутов объекта статистики, которые не являются простыми ссылками на столбец. Это список с одним элементом для каждого выражения. NULL, если все атрибуты объекта статистики являются простыми ссылками.

Запись в каталоге pg_statistic_ext полностью заполняется во время выполнения команды CREATE STATISTICS, но фактические статистические значения при этом не вычисляются. Последующие команды ANALYZE вычисляют требуемые значения и заполняют запись в каталоге pg_statistic_ext_data.



pg_statistic_ext_data

В каталоге pg_statistic_ext_data хранятся данные для расширенной статистики планировщика, определенной в каталоге pg_statistic_ext. Каждая строка в этом каталоге соответствует объекту статистики, созданному с помощью команды CREATE STATISTICS.

Обычно для каждого проанализированного объекта статистики здесь имеется одна запись со значением stxdinherit = false. Если у таблицы есть потомки в иерархии наследования или партиции, также создается вторая запись со значением stxdinherit = true. Эта строка представляет объект статистики по дереву наследования, т. е. статистику для данных, которые можно увидеть, выполнив запрос SELECT * FROM таблица*, тогда как строка stxdinherit = false представляет результаты запроса SELECT * FROM ONLY таблица.

Как и каталог pg_statistic, pg_statistic_ext_data не должен быть доступен для чтения всем, поскольку его содержимое может считаться конфиденциальным. (Пример: определенный интерес могут предоставлять наиболее распространенных комбинации значений в столбцах базы данных.) Доступным для всех представлением каталога pg_statistic_ext_data является pg_stats_ext (после соединения с каталогом pg_statistic_ext), которое предоставляет информацию только о тех таблицах и столбцах, которые может прочитать текущий пользователь.

Таблица 53. Столбцы pg_statistic_ext_data

Столбец Тип
Описание
stxoid oid (ссылается на pg_statistic_ext.oid)
Объект расширенной статистики, содержащий определение для этих данных
stxdinherit bool
Если true, то в статистику включаются значения из дочерних таблиц иерархии наследования, а не только значения в указанном отношении
stxdndistinct pg_ndistinct
Количество уникальных значений, сериализованное в виде типа pg_ndistinct
stxddependencies pg_dependencies
Статистика функциональных зависимостей, сериализованная в виде типа pg_dependencies
stxdmcv pg_mcv_list
Статистика списка MCV (most-common values, наиболее распространенных значений), сериализованная в виде типа pg_mcv_list
stxdexpr pg_statistic[]
Статистика по каждому выражению, сериализованная в виде массива типа pg_statistic


pg_subscription

В каталоге pg_subscription содержатся все существующие подписки на логическую репликацию. Подробную информацию о логической репликации см. в главе Логическая репликация.

В отличие от большинства системных каталогов, pg_subscription совместно используется всеми базами данных кластера: существует только одна копия pg_subscription на кластер, а не отдельная для каждой базы данных.

Обычным пользователям запрещен доступ к столбцу subconninfo, поскольку он может содержать пароли в открытом виде.

Таблица 54. Столбцы pg_subscription

Столбец Тип
Описание
oid oid
Идентификатор строки
subdbid oid (ссылается на pg_database.oid)
OID базы данных, в которой находится подписка
subskiplsn pg_lsn
LSN конца транзакции, изменения которой должны быть пропущены, если это правильный LSN; в противном случае 0/0.
subname name
Имя подписки
subowner oid (ссылается на pg_authid.oid)
Владелец подписки
subenabled bool
Если true, то подписка включена и должна реплицироваться.
subbinary bool
Если true, то подписка будет запрашивать данные у публикующего сервера в двоичном формате
substream bool
Если true, то для подписки будет разрешена потоковая передача данных еще выполняющихся транзакций
subtwophasestate char
Коды состояния для двухфазного режима: d = выключен (disabled), p = ожидается включение (pending), e = включен (enabled)
subdisableonerr bool
Если true, подписка будет выключена, если один из ее рабочих процессов обнаружит ошибку
subconninfo text
Строка подключения к вышестоящей базе данных
subslotname name
Имя слота репликации в вышестоящей базе данных (также используется в качестве локального имени источника репликации); NULL представляет NONE.
subsynccommit text
Значение параметра synchronous_commit для рабочих процессов подписки
subpublications text[]
Массив имен публикаций, на которые оформлена подписка. Эти имена представляют публикации, определенные в вышестоящей базе данных. Подробнее публикации описаны в разделе Публикация.


pg_subscription_rel

В каталоге pg_subscription_rel содержится состояние для каждого реплицируемого отношения в каждой подписке. Это сопоставление вида многие-ко-многим.

Этот каталог содержит только таблицы, известные подписке после выполнения команды CREATE SUBSCRIPTION или ALTER SUBSCRIPTION ... REFRESH PUBLICATION.

Таблица 55. Столбцы pg_subscription_rel

Столбец Тип
Описание
srsubid oid (ссылается на pg_subscription.oid)
Ссылка на подписку
srrelid oid (ссылается на pg_class.oid)
Ссылка на отношение
srsubstate char
Код состояния: i = инициализация (initialize), d = копирование данных (data), f = копирование таблицы завершено (finished), s = синхронизация выполнена (synchronized), r = готовность (ready) (нормальная репликация)
srsublsn pg_lsn
LSN изменения состояния на удаленной стороне, используемый для координации синхронизации при состояниях s или r; в иных случаях NULL


pg_tablespace

В каталоге pg_tablespace хранится информация о доступных табличных пространствах. Таблицы можно размещать в конкретных табличных пространствах с целью управления структурой диска.

В отличие от большинства системных каталогов, pg_tablespace совместно используется всеми базами данных кластера: существует только одна копия pg_tablespace на кластер, а не отдельная для каждой базы данных.

Таблица 56. Столбцы pg_tablespace

Столбец Тип
Описание
oid oid
Идентификатор строки
spcname name
Имя табличного пространства
spcowner oid (ссылается на pg_authid.oid)
Владелец табличного пространства (обычно это пользователь, который его создал)
spcacl aclitem[]
Права доступа; подробную информацию см. в разделе Права
spcoptions text[]
Параметры уровня табличного пространства в виде строк «ключ=значение»


pg_transform

В каталоге pg_transform хранится информация о преобразованиях, которые являются механизмом адаптации типов данных к процедурным языкам. Подробную информацию см. на справочной странице команды CREATE TRANSFORM.

Таблица 57. Столбцы pg_transform

Столбец Тип
Описание
oid oid
Идентификатор строки
trftype oid (ссылается на pg_type.oid)
OID типа данных, для которого предназначено это преобразование
trflang oid (ссылается на pg_language.oid)
OID языка, для которого предназначено это преобразование
trffromsql regproc (ссылается на pg_proc.oid)
OID функции, используемой при преобразовании типа данных для передачи в процедурный язык (например, параметры функции). Содержит ноль, если должно применяться поведение по умолчанию.
trftosql regproc (ссылается на pg_proc.oid)
OID функции, используемой при преобразовании значений, полученных из процедурного языка (например, возвращаемых значений), в тип данных. Содержит ноль, если должно применяться поведение по умолчанию.


pg_trigger

В каталоге pg_trigger хранится информация о триггерах в таблицах и представлениях. Дополнительную информацию см. на справочной странице команды CREATE TRIGGER.

Таблица 58. Столбцы pg_trigger

Столбец Тип
Описание
oid oid
Идентификатор строки
tgrelid oid (ссылается на pg_class.oid)
Таблица, на которую действует этот триггер
tgparentid oid (ссылается на pg_trigger.oid)
Родительский триггер, из которого клонируется данный (это происходит при создании партиций или присоединении их к партиционированной таблице); ноль, если данный триггер — не клон
tgname name
Имя триггера (должно быть уникальным среди триггеров одной таблицы)
tgfoid oid (ссылается на pg_proc.oid)
Вызываемая функция
tgtype int2
Битовая маска, определяющая условия срабатывания триггера
tgenabled char
Задает режимы session_replication_role, при которых срабатывает триггер. О = триггер срабатывает в режимах «origin» (источник) и «local» (локально), D = триггер выключен (disabled), R = триггер срабатывает в режиме «replica» (реплика), A = триггер срабатывает всегда (always).
tgisinternal bool
True, если триггер генерируется внутренне (обычно для принудительного применения ограничения, определенного в поле tgconstraint)
tgconstrrelid oid (ссылается на pg_class.oid)
Таблица, на которую ссылается ограничение ссылочной целостности (ноль, если триггер предназначен не для реализации ограничения ссылочной целостности)
tgconstrindid oid (ссылается на pg_class.oid)
Индекс, поддерживающий ограничение уникальности, первичного ключа, ссылочной целостности или исключения (ноль, если триггер предназначен не для реализации этих типов ограничений)
tgconstraint oid (ссылается на pg_constraint.oid)
Связанная с триггером запись в каталоге pg_constraint (ноль, если триггер предназначен не для ограничения)
tgdeferrable bool
True, если триггер ограничения является откладываемым
tginitdeferred bool
True, если триггер ограничения изначально отложен
tgnargs int2
Количество строк аргументов, переданных в триггерную функцию
tgattr int2vector (ссылается на pg_attribute.attnum)
Номера столбцов, если триггер является специфичным для столбцов; в противном случае пустой массив
tgargs bytea
Строки аргументов для передачи триггеру, каждая завершается NULL
tgqual pg_node_tree
Дерево выражений (в представлении nodeToString()) для условия триггера WHEN или NULL, если такового нет
tgoldtable name
Имя предложения REFERENCING для OLD TABLE или NULL, если такового нет
tgnewtable name
Имя предложения REFERENCING для NEW TABLE или NULL, если такового нет

В настоящее время триггеры, специфичные для столбцов, поддерживаются только для событий UPDATE, поэтому поле tgattr актуально только для этого типа событий. Поле tgtype может также содержать биты для других типов событий, но считается, что они распространяются только на таблицы, независимо от значения поля tgattr.

Примечание
Когда поле tgconstraint имеет отличное от нуля значение, поля tgconstrrelid, tgconstrindid, tgdeferrable и tginitdeferred в основном дублируют ссылочную запись в каталоге pg_constraint. Тем не менее неоткладываемый триггер может быть связан с откладываемым ограничением: ограничения внешнего ключа могут иметь как откладываемые, так и неоткладываемые триггеры.

Примечание
Если отношение имеет какие-либо триггеры в этом каталоге, поле pg_class. relhastriggers должно содержать true.



pg_ts_config

В каталоге pg_ts_config содержатся записи, представляющие конфигурации текстового поиска. Конфигурация задает определенный синтаксический анализатор текстового поиска и список словарей, которые будут использоваться для каждого из типов выходных синтаксических единиц синтаксического анализатора. Анализатор отображается в записи каталога pg_ts_config, но сопоставление синтаксическая единица-словарь определяется подчиненными записями в каталоге pg_ts_config_map.

Возможности текстового поиска QHB подробно описаны в главе Полнотекстовый поиск.

Таблица 59. Столбцы pg_ts_config

Столбец Тип
Описание
oid oid
Идентификатор строки
cfgname name
Имя конфигурации текстового поиска
cfgnamespace oid (ссылается на pg_namespace.oid)
OID пространства имен, содержащего эту конфигурацию
cfgowner oid (ссылается на pg_authid.oid)
Владелец конфигурации
cfgparser oid (ссылается на pg_ts_parser.oid)
OID синтаксического анализатора текстового поиска для этой конфигурации


pg_ts_config_map

В каталоге pg_ts_config_map содержатся записи, показывающие, к каким словарям текстового поиска следует обращаться и в каком порядке, для каждого типа синтаксических единиц, выдаваемого каждым синтаксическим анализатором конфигурации текстового поиска.

Возможности текстового поиска QHB подробно описаны в главе Полнотекстовый поиск.

Таблица 60. Столбцы pg_ts_config_map

Столбец Тип
Описание
mapcfg oid (ссылается на pg_ts_config.oid)
OID записи в каталоге pg_ts_config, которой принадлежит эта запись сопоставления
maptokentype int4
Тип синтаксических единиц, генерируемых синтаксическим анализатором конфигурации
mapseqno int4
Порядок, в котором следует обращаться к этой записи (сначала меньшие mapseqno)
mapdict oid (ссылается на pg_ts_dict.oid)
OID словаря текстового поиска, к которому нужно обращаться


pg_ts_dict

В каталоге pg_ts_dict содержатся записи, определяющие словари текстового поиска. Словарь зависит от шаблона текстового поиска, который задает все необходимые функции реализации; сам словарь предоставляет значения для настраиваемых пользователем параметров, поддерживаемых шаблоном. Такое разделение позволяет создавать словари пользователям без прав. Параметры задаются текстовой строкой dictinitoption, формат и значение которой различаются в зависимости от шаблона.

Возможности текстового поиска QHB подробно описаны в главе Полнотекстовый поиск.

Таблица 61. Столбцы pg_ts_dict

Столбец Тип
Описание
oid oid
Идентификатор строки
dictname name
Имя словаря текстового поиска
dictnamespace oid (ссылается на pg_namespace.oid)
OID пространства имен, содержащего этот словарь
dictowner oid (ссылается на pg_authid.oid)
Владелец словаря
dicttemplate oid (ссылается на pg_ts_template.oid)
OID шаблона текстового поиска для этого словаря
dictinitoption text
Строка параметров инициализации для этого шаблона


pg_ts_parser

В каталоге pg_ts_parser содержатся записи, определяющие синтаксические анализаторы текстового поиска. Синтаксический анализатор отвечает за разбиение входного текста на лексемы и присвоение каждой лексеме типа синтаксической единицы. Поскольку синтаксический анализатор должен быть реализован с помощью функций на языке уровня C/RUST, создавать новые синтаксические анализаторы могут только суперпользователи базы данных.

Возможности текстового поиска QHB подробно описаны в главе Полнотекстовый поиск.

Таблица 62. Столбцы pg_ts_parser

Столбец Тип
Описание
oid oid
Идентификатор строки
prsname name
Имя синтаксического анализатора текстового поиска
prsnamespace oid (ссылается на pg_namespace.oid)
OID пространства имен, содержащего этот синтаксический анализатор
prsstart regproc (ссылается на pg_proc.oid)
OID функции запуска этого синтаксического анализатора
prstoken regproc (ссылается на pg_proc.oid)
OID функции этого синтаксического анализатора, выдающей следующую синтаксическую единицу
prsend regproc (ссылается на pg_proc.oid)
OID функции этого синтаксического анализатора, завершающей анализ
prsheadline regproc (ссылается на pg_proc.oid)
OID функции этого синтаксического анализатора, выдающей заголовки (ноль, если таковой нет)
prslextype regproc (ссылается на pg_proc.oid)
OID функции лексических типов этого синтаксического анализатора


pg_ts_template

В каталоге pg_ts_template содержатся записи, определяющие шаблоны текстового поиска. Шаблон — это основа реализации для класса словарей текстового поиска. Поскольку шаблон должен быть реализован с помощью функций на языке уровня C/RUST, создавать новые шаблоны могут только суперпользователи базы данных.

Возможности текстового поиска QHB подробно описаны в главе Полнотекстовый поиск.

Таблица 63. Столбцы pg_ts_template

Столбец Тип
Описание
oid oid
Идентификатор строки
tmplname name
Имя шаблона текстового поиска
tmplnamespace oid (ссылается на pg_namespace.oid)
OID пространства имен, содержащего этот шаблон
tmplinit regproc (ссылается на pg_proc.oid)
OID функции инициализации этого шаблона (ноль, если таковой нет)
tmpllexize regproc (ссылается на pg_proc.oid)
OID функции выделения лексем этого шаблона


pg_type

В каталоге pg_type хранится информация о типах данных. Базовые и перечислимые (скалярные) типы создаются с помощью команды CREATE TYPE, а домены — с помощью CREATE DOMAIN. Составной тип автоматически создается для каждой таблицы в базе данных, чтобы представлять структуру строк таблицы. Кроме того, составные типы можно создать с помощью команды CREATE TYPE AS.

Таблица 64. Столбцы pg_type

Столбец Тип
Описание
oid oid
Идентификатор строки
typname name
Имя типа данных
typnamespace oid (ссылается на pg_namespace.oid)
OID пространства имен, содержащего этот тип
typowner oid (ссылается на pg_authid.oid)
Владелец типа
typlen int2
Для типа фиксированного размера поле typlen содержит число байтов во внутреннем представлении типа. Но для типа переменной длины typlen будет отрицательным. -1 обозначает тип «varlena» (он содержит машинное слово, указывающее длину), -2 обозначает строку в стиле C/RUST, завершающуюся значением NULL.
typbyval bool
Поле typbyval определяет, будут ли внутренние подпрограммы передавать значение этого типа по значению или по ссылке. typbyval предпочтительно иметь значение false, если typlen не равен 1, 2 или 4 (или 8 на 64-битных машинах). Типы переменной длины всегда передаются по ссылке. Обратите внимание, что typbyval может иметь значение false, даже если длина типа позволила бы передачу по значению.
typtype char
Поле typtype имеет значение b для базового типа (base), c для составного типа (composite) (например, типа строки таблицы), d для домена (domain), e для перечислимого типа (enum), p для псевдотипа (pseudo), r для диапазонного типа (range) или m для мультидиапазонного типа. См. также описания столбцов typrelid и typbasetype.
typcategory char
В поле typcategory задается произвольная классификация типов данных, которая используется синтаксическим анализатором для определения того, какие неявные приведения должны быть «предпочтительными». См. Таблицу 65.
typispreferred bool
True, если тип является предпочтительной целью приведения внутри своей категории (typcategory)
typisdefined bool
True, если тип определен, false, если это запись-«заглушка» для еще не определенного типа. Когда поле typisdefined имеет значение false, ни на что, кроме имени типа, пространства имен и OID, полагаться нельзя.
typdelim char
Символ, который разделяет два значения этого типа при синтаксическом анализе вводимого массива. Обратите внимание, что разделитель связан с типом данных элемента массива, а не с типом самого массива.
typrelid oid (ссылается на pg_class.oid)
Если это составной тип (см. typtype), то данный столбец указывает на запись в каталоге pg_class, которая определяет соответствующую таблицу. (Для отдельно стоящего составного типа запись в pg_class на самом деле не представляет таблицу, но она все равно необходима для записей типа в каталоге pg_attribute, чтобы сослаться на них.) Для несоставных типов столбец содержит ноль.
typsubscript regproc (ссылается на pg_proc.oid)
OID функции обработки индексации или ноль, если этот тип не поддерживает индексацию. Для «настоящих» типов массивов typsubscript = array_subscript_handler, но у других типов могут быть и другие функции обработки для реализации особого способа индексации.
typelem oid (ссылается на pg_type.oid)
Если поле typelem не содержит ноль, то оно указывает на другую строку в каталоге pg_type, определяя тип, возвращаемый при индексации. Если поле typsubscript содержит ноль, то и в этом столбце должен быть ноль. Однако typelem может содержать ноль и когда значение typsubscript ненулевое, если при определении типа результата индексации обработчику не нужен typelem. Обратите внимание, что зависимость typelem подразумевает физическое включение типа элемента в этот тип, поэтому изменения DDL типа элемента могут быть ограничены присутствием этого типа.
typarray oid (ссылается на pg_type.oid)
Если поле typarray не содержит 0, то оно ссылается на другую строку в каталоге pg_type, описывающую «настоящий» тип массива, где этот тип является элементом
typinput regproc (ссылается на pg_proc.oid)
Функция преобразования ввода (из текстового формата)
typoutput regproc (ссылается на pg_proc.oid)
Функция преобразования вывода (в текстовый формат)
typreceive regproc (ссылается на pg_proc.oid)
Функция преобразования ввода (из двоичного формата) или 0, если такой функции нет
typsend regproc (ссылается на pg_proc.oid)
Функция преобразования вывода (в двоичный формат) или 0, если такой функции нет
typmodin regproc (ссылается на pg_proc.oid)
Функция ввода модификатора типа или 0, если тип не поддерживает модификаторы
typmodout regproc (ссылается на pg_proc.oid)
Функция вывода модификатора типа или 0 для использования стандартного формата
typanalyze regproc (ссылается на pg_proc.oid)
Пользовательская функция ANALYZE или 0 для использования стандартной функции
typalign char
Поле typalign определяет выравнивание, необходимое при хранении значения этого типа. Это относится к хранилищу на диске, а также к большинству представлений значения внутри QHB. Когда несколько значений хранятся последовательно, например, в представлении полной строки данных на диске, заполнение дополнительными байтами происходит перед значением этого типа, чтобы тот начинался на указанной границе. Ссылка на выравнивание является началом первого значения в последовательности.
Возможные значения:
  • c = выравнивание по символам (char), т. е. выравнивание не требуется.
  • s = выравнивание по границе слова (short) (2 байта на большинстве процессоров).
  • i = выравнивание по границе целого (int) (4 байта на большинстве процессоров).
  • d = выравнивание по границе двойного слова (double) (8 байт на многих процессорах, но далеко не на всех).
typstorage char
Значение поля typstorage для типов varlena (т. е. с typlen = -1) сообщает, подготовлен ли тип для помещения в TOAST и какова должна быть стратегия по умолчанию для атрибутов этого типа.
Возможные значения:
  • p (plain, простое): Значения всегда должны храниться простым образом (этот вариант используется для всех типов постоянной длины).
  • e (external, внешнее): Значения могут храниться во вторичном отношении «TOAST» (если в отношении это значение есть, см. pg_class.reltoastrelid).
  • m (main, основное): Значения могут быть сжаты и храниться внутристрочно.
  • x (extended, расширенное): Значения могут быть сжаты и/или перемещены во вторичное отношение.
Для типов, которые могут быть помещены в TOAST, обычно применяется стратегия x. Обратите внимание, что значения m также можно переместить во вторичное хранилище, но только в крайнем случае (значения e и x перемещаются первыми).
typnotnull bool
Поле typnotnull представляет собой ограничение NOT NULL для типа. Используется только для доменов.
typbasetype oid (ссылается на pg_type.oid)
Если это домен (см. typtype), то поле typbasetype определяет тип, на котором он основан. Ноль, если этот тип не является доменом.
typtypmod int4
Домены используют поле typtypmod, чтобы записать модификатор typmod, применяемый к их базовому типу (-1, если базовый тип не использует typtypmod). -1, если этот тип не является доменом.
typndims int4
Значение поля typndims представляет собой число размерностей массива для домена, определенного поверх массива (т. е. когда typbasetype является типом массива). Ноль для типов, отличных от доменов поверх типов массивов.
typcollation oid (ссылается на pg_collation.oid)
Поле typcollation задает правило сортировки типа. Если тип не поддерживает правила сортировки, столбец содержит ноль. Базовый тип, который поддерживает правила сортировки, здесь будет иметь ненулевое значение, как правило, DEFAULT_COLLATION_OID. Домен поверх сортируемого типа может иметь OID правила сортировки, отличающийся от такового его базового типа, если он был указан для домена.
typdefaultbin pg_node_tree
Если поле typdefaultbin содержит не NULL, то это представление nodeToString() выражения по умолчанию для данного типа. Используется только для доменов.
typdefault text
Поле typdefault содержит NULL, если с типом не связано значение по умолчанию. Если поле typdefaultbin содержит не NULL, то поле typdefault должно содержать понятную человеку версию выражения по умолчанию, представленного в typdefaultbin. Если поле typdefaultbin содержит NULL, а typdefault — нет, значит, в typdefault находится внешнее представление значения по умолчанию этого типа, которое можно передать в принадлежащую типу функцию преобразования ввода для получения константы.
typacl aclitem[]
Права доступа; подробную информацию см. в разделе Права

Примечание
Для типов фиксированного размера, используемых в системных таблицах, крайне важно, чтобы размер и выравнивание, определенные в каталоге pg_type, были согласованы с тем, как компилятор расположит этот столбец в структуре, представляющей строку таблицы.

В Таблице 65 перечислены определяемые системой значения typcategory. Любые будущие дополнения к этому списку также будут записаны прописными буквами ASCII. Все остальные символы ASCII зарезервированы для пользовательских категорий.

Таблица 65. Коды typcategory

КодКатегория
AТипы массивов
BЛогические типы
CСоставные типы
DТипы даты/времени
EПеречислимые типы
GГеометрические типы
IТипы сетевых адресов
NЧисловые типы
PПсевдотипы
RДиапазонные типы
SСтроковые типы
TИнтервальные типы
UПользовательские типы
VТипы битовых строк
XНеизвестный тип (unknown)
ZТипы для внутреннего использования


pg_user_mapping

В каталоге pg_user_mapping хранятся сопоставления локальных пользователей с удаленными. Обычные пользователи не имеют доступа к этому каталогу, вместо этого им следует использовать представление pg_user_mappings.

Таблица 66. Столбцы pg_user_mapping

Столбец Тип
Описание
oid oid
Идентификатор строки
umuser oid (ссылается на pg_authid.oid)
OID сопоставляемой локальной роли или ноль, если пользовательское сопоставление является общедоступным
umserver oid (ссылается на pg_foreign_server.oid)
OID стороннего сервера, содержащего это сопоставление
umoptions text[]
Специальные параметры сопоставления пользователей в виде строк «ключ=значение»