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

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

Обзор

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

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

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

имя каталогаЦель
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_partitioned_tableинформация о ключе партиционирования таблиц
pg_pltemplateшаблонные данные для процедурных языков
pg_policyстроки-политики безопасности
pg_procфункции и процедуры
pg_publicationпубликации для логической репликации
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 хранит информацию о агрегатных функциях. Агрегатная функция-это функция, которая работает с набором значений (как правило, один столбец из каждой строки, которая соответствует условию запроса) и возвращает одно значение, вычисленное из всех этих значений. Типичными агрегатными функциями являются сумма, среднее, и максимум. Каждая запись внутри pg_aggregate это расширение записи в pg_proc. pg_proc запись содержит имя агрегата, типы входных и выходных данных, а также другую информацию, аналогичную обычным функциям.

pg_aggregate столбцы

ИмяТипСсылкиОписание
aggfnoidregprocpg_proc.oidOID из pg_proc для агрегатной функции
aggkindchar Агрегатный вид: n для "нормальных" агрегатов, o для агрегатов "упорядоченный набор", или h для агрегатов "гипотетический набор"
aggnumdirectargsint2 Число прямых (неагрегированных) аргументов агрегата с упорядоченным набором или гипотетическим набором, считая массив переменной длинны в качестве одного аргумента. Если равны pronargs, агрегат должен быть с переменным числом аргументов, и соот. массив описывает агрегированные аргументы, а также конечные прямые аргументы. Всегда ноль для нормальных агрегатов.
aggtransfnregprocpg_proc.oidПереходная функция
aggfinalfnregprocpg_proc.oidКонечная функция (ноль, если нет)
aggcombinefnregprocpg_proc.oidФункция объединения (ноль, если нет)
aggserialfnregprocpg_proc.oidФункция сериализации (ноль, если нет)
aggdeserialfnregprocpg_proc.oidФункция десериализации (ноль, если нет)
aggmtransfnregprocpg_proc.oidФункция прямого перехода для режима перемещения агрегата (ноль, если нет)
agminvtransfnregprocpg_proc.oidОбратная переходная функция для режима перемещения агрегата (ноль, если нет)
aggmfinalfnregprocpg_proc.oidКонечная функция для режима перемещения-aggregate (ноль, если нет)
aggfinalextrabool True для передачи дополнительных фиктивных аргументов в aggfinalfn
aggmfinalextrabool True для передачи дополнительных фиктивных аргументов в aggmfinalfn
aggfinalmodifychar aggfinalfn изменяет значение состояния перехода: r если он доступен только для чтения, s если aggtransfn не может быть применен после выполнения aggfinalfn, или w если он пишет на значение
aggmfinalmodifychar Также как aggfinalmodify, но для самого aggmfinalfn
aggsortopoidpg_operator.oidСвязанный оператор сортировки (ноль, если нет)
aggtranstypeoidpg_type.oidТип данных данных внутреннего перехода (состояния) агрегатной функции
aggtransspaceint4 Приблизительный средний размер (в байтах) данных о состоянии перехода или ноль для использования оценки по умолчанию
aggmtranstypeoidpg_type.oidТип данных внутреннего перехода (состояния) агрегатной функции для режима перемещения moving-aggregate (ноль, если нет)
aggmtransspaceint4 Приблизительный средний размер (в байтах) данных о состоянии перехода для режима перемещения moving-aggregate, или ноль для использования оценки по умолчанию
agginitvaltext Начальное значение переходного состояния. Это текстовое поле, содержащее начальное значение во внешнем строковом представлении. Если это поле имеет значение null, то значение состояния перехода начинается с null.
agginitvaltext Начальное значение переходного состояния для режима перемещения агрегата. Это текстовое поле, содержащее начальное значение во внешнем строковом представлении. Если это поле имеет значение null, то значение состояния перехода начинается с null.

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

pg_am

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

pg_am столбцы

ИмяТипСсылкиОписание
oidoid Идентификатор строки
amnamename Имя метода доступа
amhandlerregprocpg_proc.oidOID функции обработчика, ответственного за предоставление информации о методе доступа
amtypechar t = таблица (включая материализованные представления), i = индекс.

pg_amop

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

pg_amop столбцы

ИмяТипСсылкиОписание
oidoid Идентификатор строки
amopfamilyoidpg_opfamily.oidСемейство операторов для которых эта запись предназначена
amoplefttypeoidpg_type.oidЛевый тип входных данных оператора
amoprighttypeoidpg_type.oidПравый тип входных данных оператора
amopstrategyint2 Номер стратегии оператора
amoppurposechar Назначение оператора, либо s для поиска или о для сравнения
amopoproidpg_operator.oidOID оператора
amopmethodoidpg_am.oidСемейство операторов метода индексного доступа
amopsortfamilyoidpg_opfamily.oidСемейство операторов B-дерева для которого запись сортируется если оператор сравнения - ноль, если оператор поиска

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

Запись оператора ordering указывает, что индекс этого семейства операторов может быть отсканирован для возврата строк в порядке, представленном ORDER BY indexed_column operator constant. Такой оператор может возвращать любой сортируемый тип данных, хотя опять же его левый входной тип должен соответствовать типу данных столбца индекса. Точная семантика выражения ORDER BY определяются по формуле: amopsortfamily столбец, который должен ссылаться на семейство операторов B-tree для типа результата оператора.

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

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

pg_amproc

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

pg_amproc столбцы

ИмяТипСсылкиОписание
oidoid Идентификатор строки
amprocfamilyoidpg_opfamily.oidСемейство операторов для которых предназначается эта запись
amproclefttypeoidpg_type.oidЛевый тип входных данных ассоциированного оператора
amprocrighttypeoidpg_type.oidПравый тип входных данных ассоциированного оператора
amprocnumint2 Номер поддерживаемой функции
amprocregprocpg_proc.oidOID функции

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

pg_attrdef

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

pg_attrdef столбцы

ИмяТипСсылкиОписание
oidoid Идентификатор строки
adrelidoidpg_class.oidТаблица, к которой принадлежит этот столбец
adnumint2pg_attribute.attnumНомер столбца:
adbinpg_node_tree Значение столбца по умолчанию, в nodeToString() представлении. Воспользуйтесь pg_get_expr(adbin, adrelid) чтобы преобразовать его в выражение SQL.

pg_attribute

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

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

pg_attribute столбцы

ИмяТипСсылкиОписание
attrelidoidpg_class.oidТаблица, к которой принадлежит этот столбец
attnamename Имя столбца
atttypidoidpg_type.oidТип данных этого столбца
attstattargetint4 attstattarget управляет уровнем детализации статистики, накопленной для данного столбца методом ANALYZE. Нулевое значение указывает на то, что статистика не должна собираться. Отрицательное значение указывает на использование статистики по умолчанию. Точное значение положительных значений зависит от типа данных. Для скалярных типов данных, attstattarget является как числом "наиболее распространенных значений" для сбора, так и числом ячеек гистограммы для создания.
attlenint2 Копия pg_type.typlen типа этого столбца
attnumint2 Номер столбца. Обычные столбцы пронумерованы от 1 и выше. Системные столбцы, такие как ctid, имеют (произвольные) отрицательные числа.
attndimsint4 Число измерений, если столбец имеет тип массива; в противном случае 0. (В настоящее время число измерений массива не обязательно, поэтому любое ненулевое значение означает “это массив”.)
attcacheofint4 Всегда -1 в хранилище, но при загрузке в дескриптор строки в памяти он может быть обновлен для кэширования смещения атрибута в строке
atttypmodint4 atttypmod записи специфичные для типа данных, предоставляемых во время создания таблицы (например, максимальная длина для varchar) Передается в функции ввода определенного типа и функции ограничения длины. Значение обычно будет равно -1 для типов, которые не нуждаются в atttypmod.
attbyvalbool Копия pg_type.typbyval типа этого столбца
attstoragechar Обычно это копия pg_type.typsize типа этого столбца. Для TOAST типов данных этот атрибут можно изменить после создания столбца для управления политикой хранения.
attalignchar Копия pg_type.typalign типа этого столбца
attnotnullbool Ограничение not-null.
atthasdefbool Показывает, что столбец имеет выражение по умолчанию или выражение генерации, в этом случае будет соответствующая запись в поле pg_attrdef из каталога, который фактически определяет выражение. (Необходимо проверять attgenerated чтобы определить, является ли это выражение по умолчанию или значение.)
atthasmissingbool Показывает, что столбец имеет значение, которое используется, когда столбец полностью отсутствует в строке, это происходит, когда столбец добавляется с значением ПО УМОЛЧАНИЮ после создания строки. Используемое фактическое значение хранится в колонке attmissingval .
attidentitychar Если пусто (”), то столбец идентификаторов отсутствует. Иначе, a = генерируется всегда, d = генерируется по умолчанию.
attgeneratedchar Если пусто (”), то столбец не сгенерированный. Иначе, с = на хранении. (В будущем могут быть добавлены и другие значения.)
attisdroppedbool Этот столбец был удален и больше не является допустимым. Удалённый столбец все еще физически присутствует в таблице, но игнорируется синтаксическим анализатором и поэтому не может быть доступен через SQL.
attislocalbool Этот столбец определяется локально в отношении. Обратите внимание, что столбец может быть локально определен и унаследован одновременно.
attinhcountint4 Число прямых предков, которые есть в этой колонке. Столбец с ненулевым числом предков нельзя удалить или переименовать.
attcollationoidpg_collation.oidЗаданные параметры сортировки столбца или ноль, если столбец не является типом данных с возможностью сортировки.
attaclaclitem[] Права доступа на уровне столбца, если они были предоставлены специально для этого столбца
attoptionstext[] Параметры уровня атрибута, в виде строки "ключ=значение"
attfdwoptionstext[] Параметры внешней оболочки данных уровня атрибута, в виде строки "ключ=значение"
attmissingvalanyarray Этот столбец имеет массив из одного элемента, содержащий значение, используемое, когда столбец полностью отсутствует в строке, как это происходит, когда в столбец добавляется значение по умолчанию после создания строки. Значение используется только тогда, когда atthasmissing установлен в true. Если значение отсутствует, столбец имеет значение null.

Для удалённого(ых) столбца(ов) в pg_attribute, atttypid колонка сбрасывается в null, но attlen а остальные поля скопированые из pg_type все еще действительны. Это необходимо, чтобы справиться с ситуацией, когда тип данных удалённого столбца был позже удалён, и поэтому несуществует соот. pg_type и не возникает конфликта при повторном использовании OID, а attlen а другие поля можно использовать для интерпретации содержимого строки таблицы.

pg_authid

Каталог pg_authid содержит информацию об идентификаторах авторизации базы данных (ролях). Роль включает в себя понятия “пользователи” и “группы”. Пользователь-это просто роль с установленным флагом rolcanlogin. Любая роль (С или без rolcanlogin) может иметь другие роли в качестве членов - см. pg_auth_members.

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

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

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

pg_authid столбцы

ИмяТипОписание
oidoidИдентификатор строки
rolnamenameИмя роли
rolsuperboolРоль имеет привилегии суперпользователя
rolinheritboolРоль автоматически наследует привилегии ролей, членом которых она является
rolcreateroleboolРоль может создавать другие роли
rolcreatedbboolРоль может создавать базы данных
rolcanloginboolРоль может войти в систему. То есть эта роль может быть задана в качестве идентификатора авторизации начального сеанса
rolreplicationboolРоль - это роль репликации. Роль репликации может инициировать подключения репликации и создавать и удалять слоты репликации.
rolbypassrlsboolРоль обходит политику безопасности уровня строки, см. раздел Политики безопасности строк для получения дополнительной информации.
rolconnlimitint4Для ролей, которые могут войти в систему, задает максимальное число одновременных подключений, которые может создать эта роль. -1 означает отсутствие ограничений.
rolpasswordtextПароль (возможно зашифрованный), null, если нет. Формат зависит от используемой формы шифрования.
rolvaliduntiltimestamptzСрок действия пароля (используется только для аутентификации по паролю); null, если нет срока действия

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

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

SCRAM-SHA-256$<iteration count>:<salt>$<StoredKey>:<ServerKey>

где salt, StoredKey и ServerKey строки в формате Base64. Этот формат совпадает с форматом, указанным в документе RFC5803.

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

pg_auth_members

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

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

pg_auth_members столбцы

ИмяТипСсылкиОписание
roleidoidpg_authid.oidИдентификатор роли, имеющей участника
memberoidpg_authid.oidИдентификатор роли, которая является членом roleid
grantoroidpg_authid.oidИдентификатор роли, предоставившей это членство
admin_optionbool True, если member может предоставить членство в компании roleid для других

pg_cast

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

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

pg_cast столбцы

ИмяТипСсылкиОписание
oidoidИдентификатор строки
castsourceoidpg_type.oidOID типа исходных данных
casttargetoidpg_type.oidOID целевого типа данных
castfuncoidpg_proc.oidOID функции, которая будет использоваться для выполнения этого приведения. Null, если метод cast не требует функции.
castcontextcharУказывает, в каких контекстах приведение может быть вызвано - e означает только явное приведение (использование синтаксиса CAST или :: ) а означает неявно при присвоении целевому столбцу, а также явно, i означает неявно в выражениях, а также в других случаях.
castmethodchar Указывает, как выполняется приведение. а означает, что используется функция, указанная в столбце castfunc, i означает, что используются функции ввода/вывода. b означает, что типы являются двоично-совместимыми, поэтому преобразование не требуется.

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

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

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

pg_class

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

pg_class столбцы

ИмяТипСсылкиОписание
oidoid Идентификатор строки
relnamename Имя таблицы, индекса, представления и т.д.
relnamespaceoidpg_namespace.oidOID пространства имен, содержащего это отношение
reltypeoidpg_type.oidOID типа данных, который соответствует типу строки этой таблицы, если таковой имеется (ноль для индексов, у которых нет pg_type вход)
reloftypeoidpg_type.oidДля типизированных таблиц OID базового составного типа NULL для всех других отношений
relowneroidpg_authid.oidВладелец отношения
relamoidpg_am.oidЕсли это таблица или индекс, то используется метод доступа (куча, B-дерево, хэш и т. д.)
relfilenodeoid Имя файла на диске для этого отношения - NULL означает, что это “сопоставленное” отношение, имя файла на диске для которого определяется низкоуровневым состоянием
reltablespaceoidpg_tablespace.oidТабличное пространство, в котором хранится это отношение. Если NULL, подразумевается табличное пространство базы данных по умолчанию . (Не имеет смысла, если отношение не имеет файла на диске.)
relpagesint4 Размер представления этой таблицы на диске в страницах (размера BLCKSZ). Это только оценка, используемая планировщиком, столбец обновляется с помощью VACUUM, ANALYZE и нескольких команд DDL, таких как CREATE INDEX.
reltuplesfloat4 Количество "живых" строк в таблице. Это только оценка, используемая планировщиком. Она обновляется с помощью VACUUM, ANALYZE и нескольких команд DDL, таких как CREATE INDEX.
relallvisibleint4 Количество страниц, отмеченных как все видимые на карте видимости таблицы. Это только оценка, используемая планировщиком. Она обновляется с помощью VACUUM, ANALYZE и нескольких команд DDL, таких как CREATE INDEX.
reltoastrelidoidpg_class.oidOID таблицы TOAST, связанной с этой таблицей, 0, если нет. Таблица TOAST хранит большие атрибуты "вне строки" во вторичной таблице.
relhasindexbool True, если это таблица и она имеет (или недавно имела) какие-либо индексы
relissharedbool True, если эта таблица является общей для всех баз данных в кластере. Только определенные системные каталоги (такие как pg_database) разделяемы.
relpersistencechar p = постоянная таблица, u = незарегистрированная таблица, t = временная таблица
relkindchar r = Обычная таблица, i = индекс, s = последовательность, t = Таблица TOAST, v = представление, m = материализованное представление, c = составной тип, f = внешняя таблица, p = партиционированная таблица, I = партиционированный индекс
relnattsint2 Количество пользовательских столбцов в связи (системные столбцы не учитываются). Должно быть такое количество соответствующих записей в pg_attribute. См. также pg_attribute.attnum.
relchecksint2 Количество CHECK (порверок) ограничений для таблицы; см. каталог pg_constraint
relhasrulesbool True, если таблица имеет (или когда-то имела) правила; см. каталог pg_rewrite
relhastriggersbool True, если таблица имеет (или когда-то имела) триггеры; см. каталог pg_trigger
relhassubclassbool True, если у таблицы или индекса есть (или когда-то были) "дети" в результате наследования
relrowsecuritybool True, если в таблице включена защита на уровне строк; см. каталог pg_policy
relforcerowsecuritybool True, если безопасность на уровне строк (если она включена) будет также применяться к владельцу таблицы; см. каталог pg_policy
relispopulatedbool True, если отношение заполнено (это справедливо для всех отношений, кроме некоторых материализованных представлений)
relreplidentchar Столбцы, используемые для формирования "идентичности реплики" для строк: d = по умолчанию (первичный ключ, если есть), n = ничего, f = все столбцы i = индекс с indisreplident или по умолчанию
relispartitionbool True, если таблица или индекс является партицией
relrewriteoidpg_class.oidДля новых отношений, записываемых во время операции DDL, которая требует перезаписи таблицы, это содержит OID исходного отношения; в противном случае 0. Это состояние является видимым только dyenhb - это поле никогда не должно содержать ничего, кроме 0 для отношения пользователя.
relfrozenxidxid Все идентификаторы транзакций до этого были заменены на постоянный (”замороженный") идентификатор транзакции в этой таблице. Используется для отслеживания того, нужно ли очистить таблицу, чтобы предотвратить "оборачивание" идентификатора транзакции или разрешить уменьшение pg_xact. NULL (InvalidTransactionId) если отношение не является таблицей.
relminmxidxid Все идентификаторы multixact перед этим были заменены на постоянный (”замороженный") идентификатор транзакции в этой таблице. Это используется для отслеживания того, нужно ли вакуумировать таблицу, чтобы предотвратить "оборачивание" multixact ID или разрешить уменьшение pg_multixact. Ноль (InvalidMultiXactId) если отношение не является таблицей.
relaclaclitem[] Права доступа; смотрите раздел Привилегии для получения дополнительной информации
reloptionstext[] Параметры, зависящие от метода доступа, в виде строки "ключ=значение"
relpartboundpg_node_tree Если таблица является партицией (см. relispartition), внутреннее представление связанной партиции

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

pg_collation

Каталог pg_collation описывает доступные параметры сортировки, которые представляют собой сопоставления между именем SQL и категориями локали операционной системы.

pg_collation столбцы

ИмяТипСсылкиОписание
oidoid Идентификатор строки
collnamename Имя сортировки (уникальное для каждого пространства имен и кодировки)
collnamespaceoidpg_namespace.oidOID пространства имен, содержащего эту сортировку
collowneroidpg_authid.oidВладелец сортировки
collproviderchar Поставщик сортировки: d = database по умолчанию, c = libc, i = icu
collisdeterministicbool Является ли сортировка детерминированной?
collencodingint4 Кодировка, в которой применяется сортировка, или -1, если она работает для любой кодировки
collcollatename LC_COLLATE для этого объекта сортировки
collctypename LC_CTYPE для этого объекта сортировки
collversiontext Версия параметров сортировки для конкретного поставщика. Записывается при создании параметров сортировки, а затем проверяется при их использовании для обнаружения изменений в определении параметров сортировки, которые могут привести к повреждению данных.

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

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

pg_constraint

Каталог pg_constraint хранит ограничения check, primary key, unique, foreign key и exclusion для таблиц. (Ограничения столбцов не обрабатываются специально. Каждое ограничение столбца эквивалентно некоторому ограничению таблицы.) Ограничения Not-null представлены не здесь а в каталоге pg_attribute.

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

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

pg_constraint столбцы

ИмяТипСсылкиОписание
oidoid Идентификатор строки
connamename Имя ограничения (не обязательно уникальное!)
connamespaceoidpg_namespace.oidOID пространства имен, содержащего это ограничение
contypechar c = проверочное ограничение, f = ограничение внешнего ключа, p = ограничение первичного ключа, u = ограничение уникальности, t = триггер ограничения, x = ограничение на исключение
condeferrablebool Может ли это ограничение быть отложенным?
condeferredbool Является ли ограничение отложенным по умолчанию?
convalidatedbool Было ли это ограничение проверено? В настоящее время может быть false только для внешних ключей и проверочных ограничений
conrelidoidpg_class.oidТаблица, на которую наложено это ограничение; 0 если нет ограничения таблицы
contypidoidpg_type.oidДомен, на который наложено это ограничение; 0 если нет ограничения домена
conindidoidpg_class.oidИндекс, поддерживающий это ограничение, если это уникальный, первичный ключ, внешний ключ или ограничение исключения - в противном случае 0
conparentidoidpg_constraint.oidСоответствующее ограничение в родительской партиционированной таблице, если это ограничение для партиции в противном случае 0
confrelidoidpg_class.oidЕсли это внешний ключ, то ссылочная таблица (на которую ссылается ключ) - в противном случае 0
confupdtypechar Код действия при обновлении внешнего ключа: a = нет действия, r = ограничивать, c = каскад, n = установить значение null, d = установить по умолчанию
confdeltypechar Код действия при удалении внешнего ключа: a = нет действия, r = ограничивать, c = каскад, n = установить значение null, d = установить по умолчанию
confmatchtypechar Тип соответствия для внешнего ключа: f = полный, p = частичный, s = простой
conislocalbool Определяется ли ограничение локально для отношения. Обратите внимание, что ограничение может быть локально определено и унаследовано одновременно.
coninhcountint4 Число предков прямого наследованият ограничения. Ограничение с ненулевым числом предков не может быть удалено или переименовано.
connoinheritbool True если не наследуемое ограничение (определяется локально для отношения).
conkeyint2[]pg_attribute.attnumЕсли ограничение таблицы (включая внешние ключи, но не триггеры ограничений), то список ограниченных столбцов
confkeyint2[]pg_attribute.attnumЕсли это внешний ключ, то список ссылочных столбцов
conpfeqopoid[]pg_operator.oidЕсли ограничение - внешний ключ, то список операторов равенства для сравнений PK = FK
conppeqopoid[]pg_operator.oidЕсли ограничение - внешний ключ, то список операторов равенства для сравнений PK = PK
conffeqopoid[]pg_operator.oidЕсли ограничение - внешний ключ, то список операторов равенства для сравнений FK = FK
conexclopoid[]pg_operator.oidЕсли ограничение исключения, то список операторов исключения для каждого столбца
conbinpg_node_tree Если это проверочное ограничение (CHECK), то внутреннее представление выражения. (Чтобы извлечь определение проверочного ограничения рекомендуется использовать pg_get_constraintdef())

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

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

pg_conversion

Каталог pg_conversion описывает функции преобразования кодировки. Дополнительную информацию смотрите в разделе CREATE CONVERSION.

pg_conversion столбцы

ИмяТипСсылкиОписание
oidoid Идентификатор строки
connamename Имя преобразования (уникальное в пределах пространства имен)
connamespaceoidpg_namespace.oidOID пространства имен, содержащего это преобразование
conowneroidpg_authid.oidВладелец преобразования
conforencodingint4 ID кодировки источника
contoencodingint4 ID кодировки назначения
conprocregprocpg_proc.oidФункция преобразования
condefaultbool True, если это преобразование по умолчанию

pg_database

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

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

pg_database столбцы

ИмяТипСсылкиОписание
oidoid Идентификатор строки
datnamename Имя базы данных
datdbaoidpg_authid.oidВладелец базы данных, как правило, пользователь, который ее создал
encodingint4 Кодировка символов для этой базы данных (при помощи pg_encoding_to_char() можно перевести число в имя кодировки)
datcollatename LC_COLLATE для этой базы данных
datctypename LC_CTYPE для этой базы данных
datistemplatebool Если true, то эта база данных может быть клонирована любым пользователем обладающим привелегией CREATEDB, если значение false, то клонировать его могут только суперпользователи или владелец базы данных.
datallowconnbool Если false, то никто не может подключиться к этой базе данных. Используется для защиты базы данных template0 от изменения.
datconnlimitint4 Задает максимальное число одновременных подключений, которые могут быть выполнены для этой базы данных. -1 означает отсутствие ограничений.
datlastsysoidoid Последний системный OID в базе данных - необходимо, в частности, для qhb_dump
datfrozenxidxid Все идентификаторы транзакций до этого были заменены на постоянный (”замороженный") идентификатор транзакции в этой базе данных. Используется для отслеживания того, должна ли база данных быть очищена для предотвращения "оборачивания" идентификатора транзакции или для разрешения уменьшения pg_xact. Это минимальное значение pg_class.relfrozenxid для каждой таблицы.
datminmxidxid Все идентификаторы multixact перед этим были заменены на постоянный (”замороженный") идентификатор транзакции в этой базе данных. Используется для отслеживания того, должна ли база данных быть очищена для предотвращения "оборачивания" multixact или для разрешения уменьшенния pg_multixact. Это минимальное значение pg_class.relminmxid для каждой таблицы.
dattablespaceoidpg_tablespace.oidТабличное пространство по умолчанию для этой базы данных. Если в пределах этой базы данных pg_class.reltablespace - NULL там будут находиться все общие системные каталоги
dataclaclitem[] Права доступа- смотрите раздел Привилегии для получения дополнительной информации

pg_db_role_setting

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

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

pg_db_role_setting столбцы

ИмяТипСсылкиОписание
setdatabaseoidpg_database.oidOID базы данных, к которой применяется этот параметр, или NULL, если он не относится к конкретной базе данных
setroleoidpg_authid.oidOID роли, к которой применяется этот параметр, или NULL, если он не относится к конкретной роли
setconfigtext[] Значения по умолчанию для переменных конфигурации времени выполнения

pg_default_acl

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

pg_default_acl столбцы

ИмяТипСсылкиОписание
oidoid Идентификатор строки
defaclroleoidpg_authid.oidOID роли, связанной с этой записью
defaclnamespaceoidpg_namespace.oidOID пространства имен, связанного с этой записью, или 0 для глобальной записи
defaclobjtypechar Тип объекта для которого эта запись предназначена для: r = отношение (таблица, представление), S = последовательность, f = функция, T = тип, n = схема
defaclaclaclitem[] Права доступа, которые этот тип объекта должен иметь при создании

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

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

pg_depend

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

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

pg_depend столбцы

ИмяТипСсылкиОписание
classidoidpg_class.oidOID системного каталога, в котором находится зависимый объект
objidoidOID для любого столбцаOID конкретного зависимого объекта
objsubidint4 Для столбца таблицы это номер столбца (objid и classid задают саму таблицу). Для всех других типов объектов этот столбец равен нулю.
refclassidoidpg_class.oidOID системного каталога, в котором находится объект ссылки
refobjidoidOID для любого столбцаOID конкретного объекта ссылки
refobjsubidint4 Для столбца таблицы это номер столбца (refobjid и refclassid задают саму таблицу). Для всех других типов объектов этот столбец равен нулю.
deptypechar Код, определяющий конкретную семантику этого отношения зависимости

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

DEPENDENCY_NORMAL (n)

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

DEPENDENCY_AUTO (a)

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

DEPENDENCY_INTERNAL (i)

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

DEPENDENCY_PARTITION_PRI (P) и DEPENDENCY_PARTITION_SEC (S)

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

DEPENDENCY_EXTENSION (е)

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

DEPENDENCY_AUTO_EXTENSION (x)

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

DEPENDENCY_PIN (p)

Зависимого объекта нет - этот тип записи означает, что сама система зависит от объекта, и поэтому этот объект никогда не должен быть удален. Записи этого типа создаются только вкоманде qhb_bootstrap. Столбцы для зависимого объекта содержат нули.

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

pg_description

Каталог pg_description хранит комментарий для каждого объекта базы данных. Описаниями можно манипулировать с помощью команды COMMENT и просматривать с помощью qsql \d команды.

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

pg_description столбцы

ИмяТипСсылкиОписание
objoidoidOID для любого столбцаOID объекта, к которому относится данное описание
classoidoidpg_class.oidИдентификатор OID системного каталога, в котором отображается этот объект
objsubidint4 Для комментария к столбцу таблицы это номер столбца (objoid и classoid задают таблицу). Для всех других типов объектов этот столбец равен нулю.
descriptiontext Произвольный текст, который служит необязательным описанием (комментарием) данного объекта

pg_enum

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

pg_enum столбцы

ИмяТипСсылкиОписание
oidoid Идентификатор строки
enumtypidoidpg_type.oidOID записи в pg_type владеющей этим значением enum
enumsortorderfloat4 Положение сортировки этого значения enum в пределах его типа enum
enumlabelname Текстовая метка для этого перечисления значения

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

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

pg_event_trigger

Каталог pg_event_trigger хранит триггеры событий БД.

pg_event_trigger столбцы

ИмяТипСсылкиОписание
evtnamename Имя триггера (должно быть уникальным)
evteventname Определяет событие, для которого срабатывает этот триггер
evtowneroidpg_authid.oidВладелец триггера события
evtfoidoidpg_proc.oidВызываемая функция
evtenabledchar Задаёт режимы session_replication_role в которых срабатывает триггер события. О = триггер срабатывает в режимах origin и local, D = триггер отключен, R = триггер срабатывает в режиме replica, A = триггер срабатывает всегда.
evttagstext[] Метки команд, для которых этот триггер будет срабатывать. Если NULL, то запуск этого триггера не ограничен тегом команды.

pg_extension

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

pg_extension столбцы

ИмяТипСсылкиОписание
oidoid Идентификатор строки
extnamename Имя расширения
extowneroidpg_authid.oidВладелец расширения
extnamespaceoidpg_namespace.oidСхема, содержащая экспортируемые объекты расширения
extrelocatablebool True, если расширение можно переместить в другую схему
extversiontext Имя версии для расширения
extconfigoid[]pg_class.oidМассив из regclass OID для таблиц конфигурации расширения, или NULL если у расширения нет таблиц
extconditiontext[] Массив для условия фильтра WHERE предложений для таблиц конфигурации расширения, или NULL если условий нет

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

pg_foreign_data_wrapper

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

pg_foreign_data_wrapper столбцы

ИмяТипСсылкиОписание
oidoid Идентификатор строки
fdwnamename Имя источника внешних данных
fdwowneroidpg_authid.oidВладелец источника внешних данных
fdwhandleroidpg_proc.oidСсылается на функцию обработчика, которая отвечает за предоставление подпрограмм для обработки внешних данных. Ноль, если обработчик не предусмотрен
fdwvalidatoroidpg_proc.oidСсылается на функцию валидатора, которая отвечает за проверку правильности параметров, заданных вне СУБД, а также параметров для внешних серверов и сопоставлений пользователей, использующих внешние данные. Ноль, если валидатор не предусмотрен
fdwaclaclitem[] Права доступа; смотрите раздел Привилегии для получения дополнительной информации
fdwoptionstext[] Конкретные параметры внешних данных, в виде строки "ключ=значение"

pg_foreign_server

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

pg_foreign_server столбцы

ИмяТипСсылкиОписание
oidoid Идентификатор строки
srvnamename Имя внешнего сервера
srvowneroidpg_authid.oidВладелец внешнего сервера
srvfdwoidpg_foreign_data_wrapper.oidOID foreign_data_wrapper этого внешнего сервера
srvtypetext Тип сервера (необязательно)
srvversiontext Версия сервера (необязательно)
srvaclaclitem[] Права доступа - смотрите раздел Привилегии для получения дополнительной информации
srvoptionstext[] Конкретные параметры внешнего сервера, в виде строки "ключ=значение"

pg_foreign_table

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

pg_foreign_table столбцы

ИмяТипСсылкиОписание
ftrelidoidpg_class.oidOID записи из pg_class для этой внешней таблицы
ftserveroidpg_foreign_server.oidOID внешнего сервера для этой внешней таблицы
ftoptionstext[] Параметры внешней таблицы, в виде строки "ключ=значение"

pg_index

Каталог pg_index содержит часть информации об индексах. Остальное - в основном каталоге pg_class.

pg_index столбцы

ИмяТипСсылкиОписание
indexrelidoidpg_class.oidOID записи из pg_class для этого индекса
indrelidoidpg_class.oidOID записи pg_class таблицы для которой индекс предназначен
indnattsint2 Общее количество столбцов в индексе (повторяет pg_class.relnatts) это число включает в себя как ключевые, так и включенные атрибуты
indnkeyattsint2 Количество ключевых столбцов в индексе, не считая каких-либо включенных столбцов, которые просто хранятся и не участвуют в семантике индекса
indisuniquebool Если true, то это уникальный индекс
indisprimarybool Если true, то этот индекс представляет собой первичный ключ таблицы (indisunique в этом случае должно быть true)
indisexclusionbool Если значение true, то этот индекс поддерживает ограничение исключения
indimmediatebool Если true, то проверка уникальности применяется сразу после вставки (не имеет значения, если indisunique false)
indisclusteredbool Если true, то таблица была кластеризованной по этому индексу
indisvalidbool Если значение true, то индекс в настоящее время является допустимым для запросов. False означает, что индекс может быть неполным: и еще должен быть изменен с помощью операций вставки / обновления, но он не может безопасно использоваться для запросов. Если он обозначен как уникальный, свойство уникальности также не гарантируется.
indcheckxminbool Если значение true, запросы не должны использовать индекс до тех пор, пока поле xmin находится ниже их горизонта событий (TransactionXmin) , поскольку таблица может содержать разорванные HOT цепочки с несовместимыми строками, которые запросы могут видеть
indisreadybool Если true, то индекс в настоящее время готов к вставкам. False означает, что индекс должен быть проигнорирован операциями вставки / обновления.
indislivebool Если значение false, индекс находится в процессе удаления и должен игнорироваться при любой попытке использования (включая использования в HOT цепочках)
indisreplidentbool Если true, то этот индекс был выбран в качестве "идентификатора реплики" с помощью команд ALTER TABLE ... REPLICA IDENTITY USING INDEX ...
indkeyint2vectorpg_attribute.attnumМассив из значений indnatts, указывающий, на столбцы таблицы которые этот индекс обрабатывает. Например, значение параметра 1 3 означает, что первый и третий столбцы таблицы составляют записи индекса. Ключевые столбцы предшествуют неключевым (включенным) столбцам. Ноль в этом массиве указывает, что соответствующий атрибут индекса является выражением над столбцами таблицы, а не просто ссылкой на столбец.
indcollationoidvectorpg_collation.oidДля каждого столбца в ключе индекса (indnkeyatts values),содержит OID параметров сортировки, используемых для индекса,или ноль, если столбец не является типом данных с возможностью сортировки.
indclassoidvectorpg_opclass.oidДля каждого столбца в ключе индекса (indnkeyatts values), содержит OID класса оператора для использования. Смотрите дополнительную информацию в разделе pg_opclass.
indoptionint2vector Массив из indnkeyatts значений, хранящие биты флагов для каждого столбца. Значение битов определяется методом доступа индекса.
indexprspg_node_tree Деревья выражений (nodeToString() представление) для атрибутов индекса, которые не являются простыми ссылками на столбец. Это список с одним элементом для каждой нулевой записи в indkey. Null, если все атрибуты индекса являются простыми ссылками.
indpredpg_node_tree Дерево выражений (nodeToString() представление) для частичного индексного предиката. Null, если не является частичным индексом.

pg_inherits

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

pg_inherits столбцы

ИмяТипСсылкиОписание
inhrelidoidpg_class.oidOID дочерней таблицы
inparentoidpg_class.oidOID родительской таблицы
inhseqnoint4 Если для дочерней таблицы существует более одного прямого родителя (множественное наследование), это число указывает порядок, в котором должны быть упорядочены наследуемые столбцы. Отсчет начинается с 1.

pg_init_privs

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

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

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

pg_init_privs столбцы

ИмяТипСсылкиОписание
objoidoidOID для любого столбцаOID конкретного объекта
classoidoidpg_class.oidOID системного каталога, в котором находится объект
objsubidint4 Для столбца таблицы это номер столбца (objoid и classoid заданы от самой таблицы). Для всех других типов объектов этот столбец равен нулю.
privtypechar Код, определяющий тип начальной привилегии этого объекта - i или e
initprivsaclitem[] Начальные права доступа - смотрите раздел Привилегии для получения дополнительной информации

pg_language

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

pg_language столбцы

ИмяТипСсылкиОписание
oidoid Идентификатор строки
lannamename Название языка
lanowneroidpg_authid.oidВладелец языка
lanisplbool Это значение false для внутренних языков (таких как SQL) и true для пользовательских языков. В настоящее время qhb_dump все еще использует это, чтобы определить, какие языки должны быть сохранены, Но это может быть заменено другим механизмом в будущем.
lanplustedbool True, если это доверенный язык, пердполагается, что он, не предоставляет доступ к чему-либо за пределами обычной среды выполнения SQL. Только суперпользователи могут создавать функции на ненадежных языках.
lanplcallfoidoidpg_proc.oidДля языков не использующих внутренние механизмы это ссылка на обработчик языка - специальную функцию, ответственную за выполнение всех предложений, написанных на определенном языке
laninlineoidpg_proc.oidСсылка на функцию, которая отвечает за выполнение “встроенных” анонимных блоков кода ( DO блоков). Ноль, если анонимные блоки не поддерживаются.
lanvalidatoroidpg_proc.oidСсылка на функцию-валидатор языка, которая отвечает за проверку синтаксиса и валидности новых функций при их создании. Ноль, если валидатор не предусмотрен.
lanaclaclitem[] Права доступа - смотрите раздел Привилегии для получения дополнительной информации

pg_largeobject

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

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

pg_largeobject столбцы

ИмяТипСсылкиОписание
loidoidpg_largeobject_metadata.oidИдентификатор большого объекта, включающий страницу
pagenoint4 Номер страницы в пределах ее большого объекта (отсчет от нуля)
databytea Фактические данные, хранящиеся в большом объекте. Никогда не будет больше, чем LOBLKSIZE байт а может быть и меньше.

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

pg_largeobject_metadata

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

pg_largeobject_metadata столбцы

ИмяТипСсылкиОписание
oidoid Идентификатор строки
lomowneroidpg_authid.oidВладелец большого объекта
lomaclaclitem[] Права доступа; смотрите раздел Привилегии для получения дополнительной информации

pg_namespace

Каталог pg_namespace хранит пространства имен. Пространство имен-это структура, лежащая в основе схем SQL - каждое пространство имен может иметь отдельную коллекцию отношений, типов и т. д.

pg_namespace столбцы

ИмяТипСсылкиОписание
oidoid Идентификатор строки
nspnamename Имя пространства имен
nspowneroidpg_authid.oidВладелец пространства имен
nspaclaclitem[] Права доступа; смотрите раздел Привилегии для получения дополнительной информации

pg_opclass

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

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

pg_opclass столбцы

ИмяТипСсылкиОписание
oidoid Идентификатор строки
opcmethodoidpg_am.oidКласс оператора для метода индексного доступа
opcnamename Имя класса оператора
opcnamespaceoidpg_namespace.oidПространство имен класса оператора
opcowneroidpg_authid.oidВладелец класса оператора
opcfamilyoidpg_opfamily.oidСемейство операторов, содержащее класс оператора
opcintypeoidpg_type.oidТип данных, который индексирует класс оператора
opcdefaultbool True, если этот класс оператора является значением по умолчанию для opcintype
opckeytypeoidpg_type.oidТип данных, хранящихся в индексе, или ноль, если он совпадает с opcintype

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

pg_operator

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

pg_operator столбцы

ИмяТипСсылкиОписание
oidoid Идентификатор строки
oprnamename Наименование оператора
oprnamespaceoidpg_namespace.oidOID пространства имен, содержащего этот оператор
oprowneroidpg_authid.oidВладелец оператора
oprkindchar b = инфикс ("оба”), l = префикс ("слева”), r = постфикс ("справа”)
oprcanmergebool Этот оператор поддерживает объединения слиянием
oprcanhashbool Этот оператор поддерживает хэш-соединения
oprleftoidpg_type.oidТип левого операнда
oprrightoidpg_type.oidТип правого операнда
oprresultoidpg_type.oidТип результата
oprcomoidpg_operator.oidКоммутатор оператора этого типа, если таковой имеется
oprnegateoidpg_operator.oidОтрицание оператора этого типа, если таковое имеется
oprcoderegprocpg_proc.oidФункция, реализующая этот оператор
oprrestregprocpg_proc.oidФункция оценки селективности ограничения для данного оператора
oprjoinregprocpg_proc.oidФункция оценки селективности соединения для этого оператора

Неиспользуемые столбцы содержат нули. Например, oprleft равно нулю для префиксного оператора.

pg_opfamily

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

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

pg_opfamily столбцы

ИмяТипСсылкиОписание
oidoid Идентификатор строки
opfmethodoidpg_am.oidМетода индексного доступа для которго предназначено семейство операторов
opfnamename Имя этого семейства операторов
opfnamespaceoidpg_namespace.oidПространство имен этого семейства операторов
opfowneroidpg_authid.oidВладелец семейства операторов

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

pg_partitioned_table

Каталог pg_partitioned_table хранит информацию о способе партиционирования таблиц.

pg_partitioned_table столбцы

ИмяТипСсылкиОписание
partrelidoidpg_class.oidOID партиционированой таблицы, запись из pg_class
partstratchar Стратегия партиционирования; h = хэш партиционирование, l = партиционирование по списку, r = партиционирование по диапазону
partnattsint2 Количество столбцов в ключе партиции
partdefidoidpg_class.oidOID из pg_class для партиции по умолчанию этой партиционированой таблицы или ноль, если эта партиционированная таблица не имеет партиции по умолчанию.
partattrsint2vectorpg_attribute.attnumМассив из значений partnatts , указывающий, какие столбцы таблицы являются частью ключа партиции. Например, значение параметра 1 3 означает, что первый и третий столбцы таблицы составляют ключ партиции. Ноль в этом массиве указывает, что соответствующий столбец ключа партиции является выражением, а не простой ссылкой на столбец.
partclassoidvectorpg_opclass.oidДля каждого столбца в ключе партиционирования содержит OID класса оператора для использования. Смотрите дополнительную информацию в разделе pg_opclass.
partcollationoidvectorpg_opclass.oidДля каждого столбца в ключе партиционирования содержит OID параметров сортировки, используемых для партиционирования, или ноль, если столбец не является типом данных с возможностью сортировки.
partexprspg_node_tree Деревья выражений (nodeToString() представление) для столбцов ключа партиции, которые не являются простыми ссылками на столбцы. Это список с одним элементом для каждой нулевой записи в partattrs. Null, если все столбцы ключа партиции являются простыми ссылками.

pg_pltemplate

Каталог pg_pltemplate хранит информацию о "шаблоне" для процедурных языков. Шаблон для языка позволяет создать язык в конкретной базе данных с помощью простой команды CREATE LANGUAGE, без необходимости указывать детали реализации.

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

pg_pltemplate столбцы

ИмяТипОписание
tmplnamenameНазвание языка для которого предназначен данный шаблон
tmpltrustedbooleanTrue, если язык считается доверенным
tmpldbacreatebooleanTrue, если язык может быть создан владельцем базы данных
tmplhandlertextИмя функции обработчика вызовов
tmplinlinetextИмя функции обработчика анонимных блоков или null, если анонимных блоков нет
tmplvalidatortextИмя функции валидатора, или null, если валидатора нет
tmpllibrarytextПуть к разделяемой библиотеке, реализующей язык
tmplaclaclitem[]Права доступа для шаблона (фактически не используется)

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

Примечание!!!
Вполне вероятно, что pg_pltemplate будет удален в некоторых будущих выпусках QHB, в пользу сохранения этих знаний о процедурных языках в их соответствующих сценариях установки расширений.

pg_policy

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

pg_policy столбцы

ИмяТипСсылкиОписание
polnamename Название политики
polrelidoidpg_class.oidТаблица, к которой применяется политика
polcmdchar Тип команды, к которой применяется политика: r для SELECT, a для INSERT, w для UPDATE, d для DELETE, или * для всех
polpermissiveboolean Является ли эта политика разрешительной или ограничительной?
polrolesoid[]pg_authid.oidРоли, к которым применяется политика
polqualpg_node_tree Дерево выражений, добавляемое к квалификациям барьеров безопасности для запросов, использующих таблицу
polwithcheckpg_node_tree Дерево выражений, которое будет добавлено в квалификацию WITH CHECK для запросов, пытающихся добавить строки в таблицу

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

pg_proc

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

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

pg_proc столбцы

ИмяТипСсылкиОписание
oidoid Идентификатор строки
pronamename Имя функции
pronamespaceoidpg_namespace.oidOID пространства имен, содержащего эту функцию
proowneroidpg_authid.oidВладелец функции
prolangoidpg_language.oidЯзык реализации или интерфейс вызова этой функции
procostfloat4 Расчетная стоимость исполнения (в единицах cpu_operator_cost ), если установлен признак proretset, это стоимость за одну возвращенную строку
prorowsfloat4 Предполагаемое количество строк результатов (ноль, если не задан proretset)
provariadicoidpg_type.oidТип данных элементов масива параметров переменной длинны, либо ноль, если функция не имеет переменного числа параметров
prosupportregprocpg_proc.oidДополнительная функция поддержки планировщика для этой функции (см. раздел Оптимизация функций)
prokindchar f для нормальной функции, p для процедуры, a для агрегатной функции, или w для оконной функции
prosecdefbool Функция- определитель контекста безопасности (т. е. функция "setuid")
proleakproofbool Функция не имеет никаких побочных эффектов. Никакая информация о аргументах не передается, иначе чем через возвращаемое значение. Любая функция, которая может вызвать ошибку в зависимости от значений ее аргументов, не является герметичной.
proisstrictbool Функция возвращает значение null, если любой аргумент вызова имеет значение null. В этом случае функция по факту не будет вызвана вообще. Функции, которые не являются "строгими"(strict), должны быть подготовлены для обработки нулевых входных данных.
proretsetbool Функция возвращает набор (т. е. несколько значений указанного типа данных)
provolatilechar provolatile указывает, зависит ли результат функции только от ее входных аргументов или на него влияют внешние факторы. Для "неизменяемых" функций , которые всегда дают один и тот же результат для одних и тех же входных данных устанавливается значение i. Для "стабильных" функций, результаты которых (для фиксированных входных аргументов) не изменяются в пределах сканирования устанавливается значение s. Для "изменчивых" (volatile) функций, результаты которых могут измениться в любое время устанавливается значение v. (Также v используется для функций с побочными эффектами, так их вызовы не могут быть исключены в процессе оптимизации.)
proparallelchar Указывает, можно ли безопасно запускать функцию в параллельном режиме. Для функций, которые безопасно запускать в параллельном режиме без ограничений устанавливается значение s.Для функций, которые могут выполняться в параллельном режиме, но их выполнение ограничено процессом - параллельные рабочие процессы не могут вызывать эти функции устанавливается значение r. Для функций, которые небезопасны в параллельном режиме устанавливается значение u - наличие такой функции заставляет оптимизатор строить план последовательного выполнения.
pronargsint2 Количество входных аргументов
pronargdefaultsint2 Количество аргументов, имеющих значения по умолчанию
prorettypeoidpg_type.oidТип данных возвращаемого значения
proargtypesoidvectorpg_type.oidМассив с типами данных аргументов функции. Включает только входные аргументы (включая INOUT и VARIADIC Аргументы), и таким образом представляет сигнатуру вызова функции.
proallargtypesoid[]pg_type.oidМассив с типами данных аргументов функции. Включает в себя все аргументы (в том числе IN и INOUT аргументы), однако, если все аргументы являются IN, это поле будет иметь значение null. Обратите внимание, что индексация массива обычно начинается с 1, тогда как по историческим причинам proargtypes индексируется от 0.
proargmodeschar[] Массив с режимами аргументов функции, закодированными как i для IN аргументов, о для OUT аргументы, b для INOUT аргументов, v для VARIADIC аргументов, t для TABLE аргументов. Если все аргументы это IN аргументы, это поле будет иметь значение null. Обратите внимание, что индексы соответствуют позициям proallargtypes нет proargtypes.
proargnamestext[] Массив с именами аргументов функции. Аргументы без имени представляют собой пустые строки в массиве. Если ни один из аргументов не имеет имени, это поле будет иметь значение null. Обратите внимание, что индексы соответствуют позициям proallargtypes но не proargtypes.
proargdefaultspg_node_tree Деревья выражений (nodeToString() представление) для значений по умолчанию. Это список pronargdefaults элементов, соответствующих последнему N входным аргументам (т. е. последним N позициям в proargtypes). Если ни один из аргументов не имеет значений по умолчанию, это поле будет иметь значение null.
protrftypesoid[] Типы OID данных, для которых необходимо применить преобразования.
prosrctext Способ вызвать функцию. Может быть фактический исходный код функции для интерпретируемых языков, символ ссылки, имя файла или почти все остальное, в зависимости от языка и реализации/соглашения о вызове.
probintext Дополнительная информация о том, как вызвать эту функцию. Интерпретация зависит от языка.
proconfigtext[] Локальные настройки функции для переменных конфигурации времени выполнения
proaclaclitem[] Права доступа; смотрите раздел Привилегии для получения дополнительной информации

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

pg_publication

Каталог pg_publication содержит все публикации для логической репликации, созданные в базе данных.

pg_publication столбцы

ИмяТипСсылкиОписание
oidoid Идентификатор строки
pubnamename Название публикации
pubnameoidpg_authid.oidВладелец публикации
puballtablesbool Если задано значение true, эта публикация автоматически включает все таблицы в базе данных включая те которые созданы в будущем.
pubinsertbool При значении true операции вставки реплицируются для таблиц в публикации.
pubupdatebool При значении true операции обновления реплицируются для таблиц в публикации.
pubdeletebool При значении true операции удаления реплицируются для таблиц в публикации.
pubtruncatebool Если задано значение true, то операции truncate реплицируются для таблиц в публикации.

pg_publication_rel

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

pg_publication_rel столбцы

ИмяТипСсылкиОписание
prpubidoidpg_publication.oidСсылка на публикацию
prrelidoidpg_class.oidСсылка на связь

pg_range

Каталог pg_range хранит информацию о типах диапазона в дополнение к записям типов в pg_type .

pg_range столбцы

ИмяТипСсылкиОписание
rngtypidoidpg_type.oidOID типа диапазона
rngsubtypeoidpg_type.oidOID типа элемента (подтипа) данного типа диапазона
rngcollationoidpg_collation.oidOID параметров сортировки, используемых для сравнения диапазонов, или 0, если нет
rngsubopcoidpg_opclass.oidOID класса оператора подтипа, используемого для сравнения диапазонов
rngcanonicregprocpg_proc.oidOID функции для преобразования значения диапазона в каноническую форму или 0, если нет
rngsubdiffregprocpg_proc.oidOID функции для возврата разницы между двумя значениями элементов в виде двойная точность, или 0, если нет

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

pg_replication_origin

Каталог pg_replication_origin содержит все созданные источники репликации. Дополнительные сведения об источниках репликации.

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

pg_replication_origin столбцы

ИмяТипСсылкиОписание
roidentoid Уникальный кластерный идентификатор источника репликации. Никогда должен выходить за границы системы.
ronametext Внешнее, определяемое пользователем, имя источника репликации.

pg_rewrite

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

pg_rewrite столбцы

ИмяТипСсылкиОписание
oidoid Идентификатор строки
rulenamename Имя правила
ev_classoidpg_class.oidТаблица для которой предназначено это правило
ev_typechar Тип события, для которого используется правило: 1 = SELECT, 2 = UPDATE, 3 = INSERT, 4 = DELETE
ev_enabledchar Элементы управления, в которых срабатывает правило режимы session_replication_role. О = правило срабатывает в режимах origin и local, D = правило отключено, R = правило срабатывает в режиме replica, A = правило срабатывает всегда.
is_insteadbool True, если правило INSTEAD
ev_qualpg_node_tree Дерево выражений (nodeToString() представление) для квалификационного условия правила
ev_actionpg_node_tree Дерево запросов (nodeToString() представление) для действия правила

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

pg_seclabel

Каталог pg_seclabel сохраняет метки безопасности на объектах базы данных. Метками безопасности можно управлять с помощью команды SECURITY LABEL. Для более простого способа просмотра меток безопасности см. раздел pg_seclabels, а также раздел pg_shseclabel, который содержит аналогичную информацию для меток безопасности объектов базы данных, совместно используемых в кластере баз данных.

pg_seclabel столбцы

ИмяТипСсылкиОписание
objoidoidOID для любого столбцаOID объекта, к которому относится эта метка безопасности
classoidoidpg_class.oidИдентификатор OID системного каталога, в котором отображается этот объект
objsubidint4 Для метки безопасности в столбце таблицы это номер столбца (в этом случае objoid и classoid определяют саму таблицу). Для всех других типов объектов этот столбец равен нулю.
providertext Поставщик меток безопасности, связанный с этой меткой.
labeltext Метка безопасности, применяемая к этому объекту.

pg_sequence

Каталог pg_sequence содержит информацию о последовательностях (sequence). Некоторые сведения о последовательностях, такие как имя и схема, находятся в разделе pg_class.

pg_sequence столбцы

ИмяТипСсылкиОписание
seqrelidoidpg_class.oidOID в pg_class для этой последовательности
seqtypidoidpg_type.oidТип данных последовательности
seqstartint8 Начальное значение последовательности
seqincrementint8 Значение приращения последовательности
seqmaxint8 Максимальное значение последовательности
seqminint8 Минимальное значение последовательности
seqcacheint8 Размер кэша последовательности
seqcyclebool Циклы последовательности

pg_shdepend

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

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

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

pg_shdepend столбцы

ИмяТипСсылкиОписание
dbidoidpg_database.oidИдентификатор OID базы данных, в которой находится зависимый объект, или ноль для общего объекта
classidoidpg_class.oidOID системного каталога, в котором находится зависимый объект
objidoidOID для любого столбцаOID конкретного зависимого объекта
objsubidint4 Для столбца таблицы это номер столбца (objid и classid определяют саму таблицу). Для всех других типов объектов этот столбец равен нулю.
refclassidoidpg_class.oidOID системного каталога, в котором находится объект ссылки (должен быть общим каталогом)
refobjidoidOID для любого столбцаOID конкретного ссылки на объект
deptypechar Код, определяющий конкретную семантику этого отношения зависимости - см. ниже детальное описание

Во всех случаях запись в 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_PIN (p)

Не зависимого объекта - этот тип записи означает то, что сама система зависит от объекта на который ссылается, и поэтому этот объект никогда не должен быть удален. Записи этого типа создаются только в команде qhb_bootstrap. Столбцы для зависимого объекта у этой записи содержат нули.

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

pg_shdescription

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

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

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

pg_shdescription столбцы

ИмяТипСсылкиОписание
objoidoidOID для любого столбцаOID объекта, к которому относится данное описание
classoidoidpg_class.oidИдентификатор OID системного каталога, в котором отображается этот объект
descriptiontext Произвольный текст, который служит описанием данного объекта

pg_shseclabel

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

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

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

pg_shseclabel столбцы

ИмяТипСсылкиОписание
objoidoidOID для любого столбцаOID объекта, к которому относится эта метка безопасности
classoidoidpg_class.oidИдентификатор OID системного каталога, в котором отображается этот объект
providertext Поставщик, связанный с этой меткой.
labeltext Метка безопасности, применяемая к этому объекту.

pg_statistic

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

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

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

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

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

pg_statistic столбцы

ИмяТипСсылкиОписание
starelidoidpg_class.oidТаблица или индекс, к которому принадлежит описываемый столбец
staattnumint2pg_attribute.attnumНомер описываемой колонки
stainheritbool Если значение true, то статистика включает дочерние столбцы наследования, а не только значения в указанном отношении
stanullfracfloat4 Доля записей в которых столбец не заполнен
stawidthint4 Средняя сохраненная ширина записей для ненулевых столбцов в байтах
stadistinctfloat4 Число различных значений данных в ненулевом в столбце. Значение больше нуля-это фактическое число различных значений. Значение меньше нуля- взятое по модулю это количество строк в таблице; например, столбец, в котором около 80% значений не имеют значения NULL и каждое ненулевое значение появляется в среднем примерно два раза , может быть представлен следующим образом: stadistinct = -0.4. Нулевое значение означает, что число различных значений неизвестно.
stakindNint2 Кодовый номер, указывающий вид статистики, хранящейся в N-м "слоте" строки из pg_statistic.
staopNoidpg_operator.oidОператор, используемый для получения статистики, хранящейся в N-м "слоте". Например, для "слота гистограммы" это будет оператор <, определяющий порядок сортировки данных.
stacollNoidpg_collation.oidПараметры сортировки, используемые для получения статистики, хранящейся в N-м "слоте". Например, "слот гистограммы" для столбца с возможностью сортировки будет отображать параметры сортировки, определяющие порядок сортировки данных. Ноль для непроверяемых данных.
stanumbersNfloat4[] Числовая статистика соответствующего вида для N-го "слота", или null, если вид "слот" не содержит числовых значений
stavaluesNanyarray Значения данных столбца соответствующего вида длядля N-го "слота", или null, если этот вид "слота" не хранит никаких значений для данных. Значения каждого элемента массива фактически относятся к определенному типу данных столбца или связанному типу, такому как тип элемента массива, поэтому нет способа определить тип этих столбцов более конкретно, чем anyarray.

pg_statistic_ext

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

pg_statistic_ext столбцы

ИмяТипСсылкиОписание
stxrelidoidpg_class.oidТаблица, содержащая столбцы, описываемые данным объектом
stxnamename Имя объекта статистики
stxnamespaceoidpg_namespace.oidOID пространства имен, содержащего этот объект статистики
stxowneroidpg_authid.oidВладелец объекта статистики
stxkeysint2vectorpg_attribute.attnumМассив номеров атрибутов, указывающих, какие столбцы таблицы покрываются этим объектом статистики; например, значение 1 3 это означает, что будут покрыты первый и третий столбцы таблицы
stxkindchar[] Массив, содержащий коды для включенных типов статистики; допустимыми значениями являются: d для n-различных статистических данных, f для статистики функциональной зависимости, а также m для статистики списка наиболее часто встречающихся значений (MCV)

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

pg_statistic_ext_data

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

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

pg_statistic_ext_data столбцы

ИмяТипСсылкиОписание
stxoidoidpg_statistic_ext.oidРасширенный статистический объект, содержащий определение для данных
stxdndistinctpg_ndistinct количество значений сохранённая как тип pg_ndistinct
stxddependenciespg_dependencies Статистика функциональных зависимостей, сохранённая как тип pg_dependenciesп
stxdmcvpg_mcv_list Статистика списка MCV (most-common values), ссохранённая как тип pg_mcv_list Тип

pg_subscription

Каталог pg_subscription содержит все существующие подписки на логическую репликацию.

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

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

pg_subscription столбцы

ИмяТипСсылкиОписание
oidoid Идентификатор строки
subdbidoidpg_database.oidOID базы данных, в которой находится подписка
subnamename Название подписки
subowneroidpg_authid.oidВладелец подписки
subenabledbool Если задано значение true, подписка включена и должна реплицироваться.
subsynccommittext Содержит значение параметра настройка synchronous_commit для процессов подписки.
subconninfotext Строка подключения к вышестоящей базе данных
subslotnamename Имя слота репликации в вышестоящей базе данных. Также используется при локальной репликации имя источника.
subpublicationstext[] Массив подписанных имен публикаций которые ссылаются на публикации на сервере.

pg_subscription_rel

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

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

pg_subscription_rel столбцы

ИмяТипСсылкиОписание
srsubidoidpg_subscription.oidСсылка на подписку
srrelidoidpg_class.oidСсылка на связь
srsubstatechar Код состояния: i = инициализация, d = данные копируются, s = синхронизированно, r = готов (нормальная репликация)
srsublsnpg_lsn LSN принимающей стороны для состояния s и r.

pg_tablespace

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

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

pg_tablespace столбцы

ИмяТипСсылкиОписание
oidoid Идентификатор строки
spcnamename Имя табличного пространства
spcowneroidpg_authid.oidВладелец табличного пространства, обычно пользователь, который его создал
spcaclaclitem[] Права доступа; смотрите раздел Привилегии для получения дополнительной информации
spcoptionstext[] Параметры табличного пространства, в виде строки "ключ=значение"

pg_transform

Каталог pg_transform хранит информацию о преобразованиях, которые являются механизмом для адаптации типов данных к процедурным языкам.

pg_transform столбцы

ИмяТипСсылкиОписание
trftypeoidpg_type.oidOID типа данных, для которого предназначено это преобразование
trflangoidpg_language.oidOID языка, для которого это преобразование предназначено
trffromsqlregprocpg_proc.oidOID функции, используемый при преобразовании типа данных для передачи в процедурный язык (например, параметры функции). Ноль - если эта операция не поддерживается.
trftosqlregprocpg_proc.oidOID функции, используемый при преобразовании полученых из процедурного языка (например, возвращаемых значений) в тип данных. Ноль - если эта операция не поддерживается.

pg_trigger

Каталог pg_trigger содержит иноформацию о триггерах в таблицах и представлениях.

pg_trigger столбцы

ИмяТипСсылкиОписание
oidoid Идентификатор строки
tgrelidoidpg_class.oidТаблица, в которой находится этот триггер
tgnamename Имя триггера (должно быть уникальным среди триггеров одной таблицы)
tgfoidoidpg_proc.oidВызываемая функция
tgtypeint2 Битовая маска, идентифицирующая условия срабатывания триггера
tgenabledchar Элементы управления, для которых срабатывает триггер в режиму session_replication_role . О = триггер срабатывает в режимах origin и local, D = триггер отключен, R = триггер срабатывает в режиме replica, A = триггер срабатывает всегда.
tgisinternalbool True, если триггер генерируется внутри системы (обычно для принудительного применения ограничения, определенного tgconstraint)
tgconstrrelidoidpg_class.oidТаблица, на которую ссылается ограничение ссылочной целостности
tgconstrindidoidpg_class.oidИндекс, поддерживающий ограничение уникальности, первичного ключа, ссылочной целостности или исключения
tgconstraintoidpg_constraint.oidpg_constraint запись, связанная с триггером, если таковая имеется
tgdeferrablebool True, если триггер ограничения является отложенным
tginitdeferredbool True, если триггер ограничения изначально отложен
tgnargsint2 Количество строк аргументов, переданных в функцию trigger
tgattrint2vectorpg_attribute.attnumНомера столбцов, если триггер является специфичным для столбца - в противном случае пустой массив
tgargsbytea Строки аргументов для передачи триггеру, завершается NULL
tgqualpg_node_tree Дерево выражений (nodeToString() представление) для условие триггера WHEN, или NULL, если условия нет
tgoldtablename имя предложения REFERENCING для СТАРОЙ ТАБЛИЦЫ, или NULL, если нет
tgnewtablename имя предложения REFERENCING для НОВОЙ ТАБЛИЦЫ, или NULL, если условия нет

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

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

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

pg_ts_config

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

pg_ts_config столбцы

ИмяТипСсылкиОписание
oidoid Идентификатор строки
cfgnamename Имя конфигурации текстового поиска
cfgnamespaceoidpg_namespace.oidOID пространства имен, содержащего эту конфигурацию
cfgowneroidpg_authid.oidВладелец конфигурации
cfgparseroidpg_ts_parser.oidOID синтаксического анализатора текстового поиска для этой конфигурации

pg_ts_config_map

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

pg_ts_config_map столбцы

ИмяТипСсылкиОписание
mapcfgoidpg_ts_config.oidOID записи из pg_ts_config, владеющий этим отображением
maptokentypeinteger Тип маркера, создаваемого синтаксическим анализатором конфигурации
mapseqnointeger Порядок, в котором следует ознакомиться с этой записью (ниже mapseqnos первый)
mapdictoidpg_ts_dict.oidOID словаря текстового поиска для консультации

pg_ts_dict

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

pg_ts_dict столбцы

ИмяТипСсылкиОписание
oidoid Идентификатор строки
dictnamename Название словаря текстового поиска
dictnamespaceoidpg_namespace.oidOID пространства имен, содержащего этот словарь
dictowneroidpg_authid.oidВладелец словаря
dicttemplateoidpg_ts_template.oidOID шаблона текстового поиска для этого справочника
dictinitoptiontext Строка параметра инициализации для шаблона

pg_ts_parser

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

pg_ts_parser столбцы

ИмяТипСсылкиОписание
oidoid Идентификатор строки
prsnamename Имя синтаксического анализатора для поиска текста
prsnamespaceoidpg_namespace.oidOID пространства имен, содержащего этот синтаксический анализатор
prsstartregprocpg_proc.oidOID функции запуска синтаксического анализатора
prstokenregprocpg_proc.oidOID функции поиска следующего маркера синтаксического анализатора
prsendregprocpg_proc.oidOID функции завершения работы синтаксического анализатора
prsheadlineregprocpg_proc.oidOID функции заголовка синтаксического анализатора
prslextyperegprocpg_proc.oidOID функции анализатора лексического типа

pg_ts_template

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

pg_ts_template столбцы

ИмяТипСсылкиОписание
oidoid Идентификатор строки
tmplnamename Имя шаблона текстового поиска
tmplnamespaceoidpg_namespace.oidOID пространства имен, содержащего этот шаблон
tmplinitregprocpg_proc.oidOID функции инициализации шаблона
tmpllexizeregprocpg_proc.oidOID функции лексера

pg_type

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

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-строку завершающуюся нулевым символом.
typbyval bool   typbyval определяет, будут ли внутренние функции передавать значение этого типа по значению или по ссылке. typbyval предпочтительно иметь значение false - если typlen это не 1, 2 или 4 (или 8 на машинах, где Datum составляет 8 байт). Типы переменной длины всегда передаются по ссылке. Обратите внимание, что typbyval может быть false, даже если длина позволит передачу по значению.
typtype char   typtype имеет значения b для базового типа, s для составного типа (например, тип строки таблицы), d для домена, e для перечислимого типа, p для псевдо-типа, или r для типа диапазона. См/ также typrelid и typbasetype.
typcategory char   typcategory это произвольная классификация типов данных, которая используется синтаксическим анализатором для определения того, какие неявные приведения должны быть “предпочтительными”. См typcategory Коды.
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 для ссылки на них.) Для несоставных типов значение столбца - Ноль.
typelem oid pg_type.oid Если typelem не равно 0, то он ссылается на другую строку в pg_type. В этом случае текущий тип может использоваться как массив, значений типа typelem. "Настоящий" массив при этом имеет переменную длину (typlen = -1), но некоторые типы фиксированной длины (typlen > 0) также имеют ненулевое значение typelem, например Name и Point. Если для типа фиксированной длины задан typelem тогда его внутреннее представление должно быть некоторым количеством значений (кортежем) с типом данных typelem без каких-либо других данных. Типы массивов переменной длины имеют заголовок, определяемый подпрограммами массива.
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  

Показывает требуется ли выравнивание при хранении значения этого типа. Это относится к хранилищу на диске, а также к большинству представлений значения внутри QHB. Когда несколько значений хранятся последовательно, например в представлении строки данных на диске, заполнение числами вставляется перед Datum для этого типа так, чтобы он начинался на указанной границе. Ссылка на выравнивание является началом первого Datum в последовательности.

Возможные значения::

  • c = посимвольное выравнивание (char alignment), т. е. выравнивание не требуется.

  • s = выравнивание по границе слова (short alignment) 2 байта на большинстве процессоров.

  • i = выравнивание по границе целого (int alignment) 4 байта на большинстве процессоров.

  • d = выравнивание по границе двойного слова (double alignment) 8 байт на многих процессорах, но далеко не на всех.

Примечание

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

typstorage char  

typstorage сообщает о типах varlena (те с typlen = -1) подготовлен ли тип к TOAST и какова должна быть стратегия по умолчанию для атрибутов этого типа. Возможные значения:

  • p: Значение всегда должно храниться в обычном виде.

  • e: Значение может быть сохранено в "вторичном" отношении (если отношение имеет один, см. pg_class.reltoastrelid).

  • m: Значение может быть сохранено сжатым в строке.

  • x: Значение может быть сохранено сжатым в строке или сохранено в "вторичном" хранилище.

Обратите внимание, что столбцы "m" также можно переместить во вторичное хранилище, но только в крайнем случае ("e" и "x" столбцы перемещаются первыми).

typnotnull bool   typnotnull представляет собой не нулевое ограничение для типа. Используется только для доменов.
typbasetype oid pg_type.oid Если это домен (см. typtype), тогда typbasetype определяет тип, на котором основан этот вариант. Ноль, если этот тип не является доменом.
typtypmod int4   Если тип это домен typtypmod нужен для того чтобы задать модификатор приведения к его базовому типу (-1 если базовый тип не typtypmod). -1, если этот тип не является доменом.
typndims int4   typndims это число измерений массива из доменов (то есть, если typbasetype является массивом). Ноль для типов, отличных от массива из доменов.
typcollation oid pg_collation.oid typcollation задает параметры сортировки типа. Если тип не поддерживает параметры сортировки, столбец равен нулю. Базовый тип, который поддерживает параметры сортировки будет иметь ненулевое значение, как правило DEFAULT_COLLATION_OID. Домен над типом collatable вкачестве значения может иметь OID параметров сортировки, отличный от базового типа, если он был указан для домена.
typdefaultbin pg_node_tree   Если typdefaultbin не ноль, это то nodeToString() для выражения по умолчанию данного типа. Используется только для доменов.
typdefault text   typdefault имеет значение null, если тип не имеет связанного значения по умолчанию. Если typdefaultbin не равно нулю, typdefault должно содержать удобочитаемую версию выражения по умолчанию, представленного в typdefaultbin. Если typdefaultbin имеет значение null а typdefault нет, значит typdefault является внешним представлением значения по умолчанию типа, которое может быть подано в функцию преобразования типа для получения константы.
typacl aclitem[]   Права доступа; смотрите раздел Привилегии для получения дополнительной информации

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

typcategory Коды

КодКатегория
AМассив
BБулевый тип
CСоставной тип
DТипы даты / времени
EТип enum
GГеометрические типы
IТипы сетевых адресов
NЧисловой тип
PПсевдо-типы
RТип диапазон
SСтроковый тип
TТипы Timespan
UОпределяемые пользователем типы
VТипы битовых строк
XНеизвестный тип

pg_user_mapping

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

pg_user_mapping столбцы

ИмяТипСсылкиОписание
oidoid Идентификатор строки
umuseroidpg_authid.oidOID сопоставляемой локальной роли, 0, если пользовательское сопоставление является общедоступным
umserveroidpg_foreign_server.oidOID внешнего сервера, содержащий это сопоставление
umoptionstext[] Параметры сопоставления, в виде строки "ключ=значение"

Системные представления

Помимо системных каталогов, QHB предоставляет ряд встроенных представлений. Некоторые системные представления обеспечивают удобный доступ к некоторым часто используемым запросам в системных каталогах. Другие представления предоставляют доступ к внутреннему состоянию сервера.

Информационная схема (information_schema) предоставляет альтернативный набор представлений, которые перекрывают функциональные возможности системных представлений. Поскольку информационная схема является частью стандарта SQL, а представления, описанные здесь, являются специфичными для QHB, обычно лучше использовать информационную схему, если она предоставляет всю необходимую информацию.

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

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

системные представление

имя представленияЦель
pg_available_extensionsдоступные расширения
pg_available_extension_versionsдоступные версии расширений
pg_configпараметры конфигурации во время компиляции
pg_cursorsоткрытый курсор
pg_file_settingsсводка содержимого файла конфигурации
pg_groupгруппы пользователей баз данных
pg_hba_file_rulesсводка содержимого файла конфигурации проверки подлинности клиента
pg_indexesиндексы
pg_locksзамки в настоящее время удерживаются или ожидаются
pg_matviewsматериализованное представление
pg_policiesполитики
pg_prepared_statementsподготовленное заявление
pg_prepared_xactsподготовленные сделки
pg_publication_tablesпубликации и связанные с ними таблицы
pg_replication_origin_statusсведения об источниках репликации, включая ход выполнения репликации
pg_replication_slotsсведения о слоте репликации
pg_rolesроль базы данных
pg_rulesправила
pg_seclabelsметка безопасности
pg_sequencesпоследовательности
pg_settingsнастройка параметров
pg_shadowпользователь базы данных
pg_statsстатистика планировщика
pg_stats_extрасширенная статистика планировщика
pg_tablesтаблицы
pg_timezone_abbrevsсокращения часовых поясов
pg_timezone_namesназвания часовых поясов
pg_userпользователь базы данных
pg_user_mappingsсопоставление пользователей
pg_viewsчисло просмотров

pg_available_extensions

Представление pg_available_extensions содержит список расширений, доступных для установки. См. также каталог pg_extension, в котором отображаются установленные в данный момент расширения.

pg_available_extensions столбцы

ИмяТипОписание
namenameИмя расширения
default_versiontextИмя версии по умолчанию, или NULL если версия не указана
installed_versiontextВерсия расширения установленного сейчас, или NULL если расширение не установлено
commenttextСтрока комментария из управляющего файла расширения

Представление pg_available_extensions доступно только для чтения.

pg_available_extensions_versions

Представление pg_available_extension_versions содержит список конкретных версий расширений, доступных для установки. См. также каталог pg_extension, в котором отображаются установленные в данный момент расширения.

pg_available_extension_versions столбцы

ИмяТипОписание
namenameИмя расширения
versiontextВерсия
installedboolTrue, если эта версия данного расширения уже установлена
superuserboolTrue, если только суперпользователям разрешено устанавливать это расширение
relocatableboolTrue, если расширение можно переместить в другую схему
schemanameИмя схемы, в которую необходимо установить расширение, или NULL при частичном или полном перемещении
requiresname[]Имена необходимых для работы расширений (зависимости), или NULL если зависимостей нет
commenttextСтрока комментария из управляющего файла расширения

Представление pg_available_extension_versions доступно только для чтения.

pg_config

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

По умолчанию, представление pg_config может быть прочитано только суперпользователями.

pg_config столбцы

ИмяТипОписание
nametextИмя параметра
settingtextЗначение параметра

pg_cursors

Представление pg_cursors - список курсоров, которые в настоящее время доступны. Курсоры могут быть определены несколькими способами:

  • через оператор DECLARE в SQL

  • через сообщение привязки в сетевом протоколе QHB

  • через интерфейс программирования сервера (SPI), как описано в соот. разделе документации SPI

Представление pg_cursors отображает курсоры, созданные любым из этих средств. Курсоры существуют только в течение транзакции, которая их определяет, если они не были объявлены WITH HOLD. Таким образом, не удерживаемые курсоры присутствуют в представлении только до конца транзакции их создавшей.

Примечание!!!
Курсоры используются в системе для реализации некоторых компонентов QHB, таких как процедурные языки. Поэтому представление pg_cursors может содержать курсоры, которые не были явно созданы пользователем.

pg_cursors столбцы

ИмяТипОписание
nametextИмя курсора
statementtextСтрока запроса (полностью), отправленная для объявления этого курсора
is_holdablebooleanTrue если курсор является удерживаемым (то есть он может быть доступен после транзакции, объявшей курсор) - иначе false
is_binarybooleanTrue если курсор был объявлен BINARY - иначе false
is_scrollablebooleanTrue если курсор двунаправленный (то есть он позволяет извлекать строки непоследовательным образом)- иначе false
creation_timetimestamptzВремя когда был объявлен курсор

Представление pg_cursors доступно только для чтения.

pg_file_settings

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

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

По умолчанию, представление pg_file_settings может быть прочитано только суперпользователями.

pg_file_settings столбцы

ИмяТипОписание
sourcefiletextПолный путь к файлу конфигурации
sourcelineintegerНомер строки в файле конфигурации, где появляется запись
seqnointegerПорядок, в котором обрабатываются операции (1..N)
nametextИмя параметра конфигурации
settingtextЗначение, которое будет присвоено параметру
appliedbooleanTrue, если значение может быть применено успешно
errortextЕсли не null - в столбце содержится сообщение об ошибке, указывающее, почему эта запись не может быть применена

Если файл конфигурации содержит синтаксические ошибки или недопустимые имена параметров, сервер не будет пытаться применить какие-либо параметры из файла, а следовательно, все значения поля applied будут false. В таком случае в представлении будет одна или несколько строк с ненулевым значением error, указывающие на проблему(ы). В противном случае, если это возможно, будут применены отдельные настройки. Если индивидуальный параметр не может быть применен (например, недопустимое значение или параметр не может быть изменен после запуска сервера), он будет иметь соответствующее сообщение в поле error. Другой способ, при ктотром applied = false означает, что параметр переопределяется более поздней записью для того же имени параметра; этот случай не считается ошибкой, поэтому ничто не появляется в поле error.

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

pg_group

Представление pg_group показывает имена и члены всех ролей, которые помечены как not rolcanlogin, т.е. отображает роли как группы.

pg_group столбцы

ИмяТипСсылкиОписание
gronamenamepg_authid.rolnameНазвание группы
grosysidoidpg_authid.oidID этой группы
grolistoid[]pg_authid.oidМассив, содержащий идентификаторы ролей в этой группе

pg_hba_file_rules

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

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

По умолчанию, представление pg_hba_file_rules может быть прочитано только суперпользователями.

pg_hba_file_rules столбцы

ИмяТипОписание
line_numberintegerНомер строки этого правила в qhb_hba.conf
typetextТип соединения
databasetext[]Список имен баз данных, к которым применяется данное правило
user_nametext[]Список имен пользователей и ролей, к которым применяется данное правило
addresstextИмя хоста или IP-адрес, либо одно из значений all, samehost, или samenet, или null для локальных соединений
netmasktextМаска IP-адреса, или null, если не применимо
auth_methodtextСпособ аутентификации
optionstext[]Параметры, указанные для метода аутентификации, если таковые имеются
errortextЕсли не null, то сообщение об ошибке, указывающее, почему эта строка не может быть обработана

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

pg_indexes

Представление pg_indexes предоставляет доступ к полезной информации о каждом индексе в базе данных.

pg_indexes столбцы

ИмяТипСсылкиОписание
schemanamenamepg_namespace.nspnameИмя схемы, содержащей таблицу и индекс
tablenamenamepg_class.relnameИмя таблицы, для которой используется индекс
indexnamenamepg_class.relnameИмя индекса
tablespacenamepg_tablespace.spcnameИмя табличного пространства, содержащего индекс (null, если пространство по умолчанию для базы данных)
indexdeftext Определение индекса (восстановленная команда CREATE INDEX)

pg_locks

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

pg_locks содержит одну строку на активный блокируемый объект, запрошенный режим блокировки и соответствующий процесс. Таким образом, один и тот же блокируемый объект может появляться много раз, если несколько процессов удерживают или ожидают блокировки на нем. Однако объект, который в настоящее время не имеет блокировок не будет отображаться вообще.

Существует несколько различных типов блокируемых объектов: отношения целиком (например, таблицы), отдельные страницы отношений, отдельные кортежи отношений, идентификаторы транзакций (как виртуальные, так и постоянные идентификаторы) и общие объекты базы данных (идентифицируемые классом OID и объектным OID, таким же образом, как и в pg_description или pg_depend). Также запрос на расширение отношения представляется в виде отдельного блокируемого объекта. Кроме того, "необязательные" блокировки могут быть иметь номера, значения которых определет пользователь.

pg_locks столбцы

ИмяТипСсылкиОписание
locktypetext Тип блокируемого объекта: отношение (relation), расширение (extend), Страница (page), кортеж (tuple), транзакция ( transactionid, virtualxid), объект (object), userlock, или необязательная (advisory)
databaseoidpg_database.oidOID базы данных, в которой существует цель блокировки, или ноль, если цель является общим объектом, или null, если цель является идентификатором транзакции
relationoidpg_class.oidOID отношения, на которое направлена блокировка, или null, если цель не является отношением или частью отношения
pageinteger Номер страницы, на которую направлена блокировка в пределах отношения, или значение null, если цель не является страницей отношения или кортежем
tuplesmallint Номер кортежа, на который направлена блокировка внутри страницы, или значение null, если цель не является кортежем
virtualxidtext Виртуальный идентификатор транзакции, на которую направлена блокировка, или значение null, если цель не является виртуальным идентификатором транзакции
transactionidxid Идентификатор транзакции, на которую направлена блокировка, или значение null, если цель не является идентификатором транзакции
classidoidpg_class.oidOID системного каталога, содержащего целевой объект блокировки, или значение null, если целевой объект не является общим объектом базы данных
objidoidOID для любого столбцаOID целевого объекта блокировки в системном каталоге или значение null, если целевой объект не является общим объектом базы данных
objsubidsmallint Номер столбца, на который направлена блокировка (classid и objid определяет саму таблицу), или ноль, если целевой объект является каким-либо другим общим объектом базы данных, или null, если целевой объект не является общим объектом базы данных
virtualtransactiontext Виртуальный идентификатор транзакции, которая удерживает или ожидает эту блокировку
pidinteger Идентификатор серверного процесса (PID), удерживающего или ожидающего эту блокировку, или значение null, если блокировка удерживается подготовленной транзакцией
modetext Название режима блокировки, удерживаемого или ожидаемого этим процессом (см. раздел Блокировки на уровне таблицы и раздел Уровень изоляции Serializable)
grantedboolean True, если блокировка удерживается, false, если блокировка ожидается
fastpathboolean True, если блокировка была получена через fastpath, false, если получена через главную таблицу блокировки

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

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

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

Необязательные блокировки можно приобрести для ключей состоящих из любого одиночного значения bigint или двух integer. Старшая часть отображается в колонке classid, младшая в objid, а objsubid равно 1. Оригинал значения bigint можно собрать заново с помощью выражения (classid::bigint << 32) | objid::bigint. Ключи integer отображаются так : первый в столбце classid колонка, второй в столбце objid, а objsubid равно 2. Фактическое значение ключей зависит от пользователя. Необязательные блокировки являются локальными для каждой базы данных, поэтому столбец database имеет значение для необязательной блокировки.

pg_locks обеспечивает глобальное представление всех блокировок в кластере баз данных, а не только тех, которые относятся к текущей базе данных. Хотя через соединение по столбцу relation с pg_class.oid можно определить заблокированные отношения, это будет правильно работать только для отношений в текущей базе данных (те, для которых столбец database - это либо OID текущей базы данных, либо ноль).

Столбец pid можно соединить cо столбцом pid представления pg_stat_activity, что позволяет получить дополнительную информацию о сессии для каждой блокировки, например

SELECT * FROM pg_locks pl LEFT JOIN pg_stat_activity psa
    ON pl.pid = psa.pid;

Кроме того, если вы используете подготовленные транзакции, то virtualtransaction столбец можно соединить со столбцом transaction представления pg_prepared_xacts, что позволяет получить дополнительную информацию о подготовленных транзакциях, содержащих блокировки. (Подготовленная транзакция никогда не может ждать блокировки, но она продолжает удерживать блокировки, полученные во время выполнения)

Например:

SELECT * FROM pg_locks pl LEFT JOIN pg_prepared_xacts ppx
    ON pl.virtualtransaction = '-1/' || ppx.transaction;

При этом можно получить информацию о том, какие процессы блокируют какие другие процессы путем присоединения pg_locks с самим собой, но у такого соединения много сложных деталей - такой запрос должен был бы кодировать знания о том, какие режимы блокировки конфликтуют с другими. Хуже того, чем pg_locks представление не предоставляет сведения о том, какие процессы опережают другие в очереди ожидания блокировки, а также сведения о том, какие процессы являются параллельными рабочими (workers), выполняющимися от имени каких других сеансов клиента. Это лучше всего использовать при помощи функции pg_blocking_pids() (см. раздел Системные информационные функции и операторы) для определения того, какой процесс (ы) процесс ожидают каких блокировок.

Представление pg_locks отображает данные как из обычного диспетчера блокировки, так и из диспетчера блокировки предикатов, которые являются отдельными системами, кроме того, обычный менеджер блокировки подразделяет свои блокировки на регулярные и быстрые блокировки (fastpath). Т.о. данные в pg_locks не гарантируют полной согласованности. Когда представление запрашивает, данные о блокировках быстрого доступа (с fastpath = true) данные собираются с каждого бэкенда последовательно, не "замораживая" состояние всего менеджера блокировок, поэтому можно устанвить или снять блокировки во время сбора информации. Обратите внимание, что эти блокировки, как известно, не конфликтуют с любой другой блокировкой во время получения информации. После того, как все бэкенды были опрошены для получения быстрых блокировок, оставшаяся часть обычного менеджера блокировок блокируется как единое целое, и согласованный снимок всех оставшихся блокировок собирается атомарно. После разблокировки обычного диспетчера блокировки диспетчер блокировки предикатов точно также блокируется, и все блокировки предикатов собираются как атомарно. Таким образом, за исключением быстрых блокировок, каждый менеджер блокировок будет выдавать последовательные наборы результатов, но поскольку мы не блокируем оба менеджера блокировок одновременно, возможно, что блокировки будут захвачены или освобождены после опроса обычного менеджера блокировок и до опроса менеджера блокировки предикатов.

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

pg_matviews

Представление pg_matviews предоставляет доступ к полезной информации о каждом материализованном представлении в базе данных.

pg_matviews столбцы

ИмяТипСсылкиОписание
schemanamenamepg_namespace.nspnameИмя схемы, содержащей материализованное представление
matviewnamenamepg_class.relnameИмя материализованного представления
matviewownernamepg_authid.rolnameИмя владельца материализованного представления
tablespacenamepg_tablespace.spcnameИмя табличного пространства, содержащего материализованное представление (null, если пространство по умолчанию для базы данных)
hasindexesboolean True, если материализованное представление имеет (или недавно имело) какие-либо индексы
ISP populatedboolean True, если материализованное представление заполнено в данный момент
definitiontext Определение материализованного представления (реконструированный запрос SELECT)

pg_policies

Представление pg_policies предоставляет доступ к полезной информации о каждой политике безопасности на уровне строк в базе данных.

pg_policies столбцы

ИмяТипСсылкиОписание
schemanamenamepg_namespace.nspnameИмя схемы, содержащей табличную политику включено
tablenamenamepg_class.relnameИмя таблицы с включённой политикой
policynamenamepg_policy.polnameНазвание политики
polpermissivetext Является ли эта политика разрешительной или ограничительной?
rolesname[] Роли, к которым применяется эта политика
cmdtext Тип команды, к которой применяется политика
qualtext Выражение, добавленное к условиям барьеров безопасности для запросов, к которым применяется эта политика
with_checktext Выражение, добавленное в условие WITH CHECK для запросов, которые пытаются добавить строки в эту таблицу

pg_prepared_statements

Представление pg_prepared_statements отображает все подготовленные инструкции, доступные в текущем сеансе.

pg_prepared_statements содержит одну строку для каждого подготовленного оператора. Строки добавляются в представление при создании нового подготовленного оператора и удаляются при освобождении подготовленного оператора (например, с помощью команды DEALLOCATE).

pg_prepared_statements столбцы

ИмяТипОписание
nametextИдентификатор подготовленного заявления
statementtextСтрока запроса, отправленная клиентом для создания этого подготовленного оператора. Для подготовленных операторов, созданных с помощью SQL, это оператор PREPARE, представленный клиентом. Для подготовленных операторов, созданных с помощью сетевого протокола, это текст самого подготовленного оператора.
prepare_timetimestamptzВремя, в которое был создан prepared оператор
parameter_typesregtype[]Ожидаемые типы параметров для подготовленного оператора в виде массива regtype. OID, соответствующий элементу этого массива, может быть получен путем приведения regtype значение к oid.
from_sqlbooleanTrue, если подготовленный оператор был создан с помощью SQL команды PREPARE - False если оператор было подготовлен через сетевой протокол

Представление pg_prepared_statements доступно только для чтения.

pg_prepared_xacts

Представление pg_prepared_xacts отображает информацию о транзакциях, которые в настоящее время подготовлены для двухфазной фиксации (см. раздел PREPARE TRANSACTION для получения подробной информации).

pg_prepared_xacts содержит одну строку на подготовленную транзакцию. Запись удаляется при фиксации или откате транзакции.

pg_prepared_xacts столбцы

ИмяТипСсылкиОписание
transactionxid Числовой идентификатор подготовленной транзакции
gidtext Глобальный идентификатор, присвоенный транзакции
preparedtimestamp with time zone Время, в которое транзакция была подготовлена к фиксации
ownernamepg_authid.rolnameИмя пользователя, выполнившего транзакцию
databasenamepg_database.datnameИмя базы данных, в которой была выполнена транзакция

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

pg_publication_tables

Представление pg_publication_tables предоставляет информацию о сопоставлении публикаций и таблиц, которые они содержат. В отличие от базового каталога pg_publication_rel, это представление расширяет список публикаций, определённых как FOR ALL TABLES, таким образом, для таких публикаций будет строка для каждой подходящей таблицы.

pg_publication_tables столбцы

ИмяТипСсылкиОписание
pubnamenamepg_publication.pubnameНазвание публикации
schemanamenamepg_namespace.nspnameИмя схемы, содержащей таблицу
tablenamenamepg_class.relnameИмя таблицы

pg_replication_origin_status

Представление pg_replication_origin_status содержит информацию о том, как далеко продвинулось воспроизведение изменений для определенного источника.

pg_replication_origin_status столбцы

ИмяТипСсылкиОписание
local_idoidpg_replication_origin.roidentвнутренний идентификатор узла
external_idtextpg_replication_origin.ronameидентификатор внешнего узла
remote_lsnpg_lsn Номер LSN исходного узла, до которого были реплицированы данные.
local_lsnpg_lsn Номер LSN этого узла, в котором remote_lsn был реплицирован. Используется для очистки записей фиксации транзакции (COMMIT) перед сохранением данных на диске при использовании асинхронных commit.

pg_replication_slots

Представление pg_replication_slots предоставляет список всех слотов репликации, которые в настоящее время существуют в кластере баз данных, а также их текущее состояние.

pg_replication_slots столбцы

ИмяТипСсылкиОписание
slot_namename Уникальный кластерный идентификатор для слота репликации
pluginname Базовое имя разделяемого объекта, содержащего модуль вывода, который использует этот логический слот, или null для физических слотов.
slot_typetext Тип слота - физический или логический
datoidoidpg_database.oidИдентификатор OID базы данных, с которой связан этот слот, или значение null. Только логические слоты имеют связанную базу данных.
databasetextpg_database.datnameИмя базы данных, с которой связан этот слот, или null. Только логические слоты имеют связанную базу данных.
temporaryboolean True, если это слот временной репликации. Временные слоты не сохраняются на диске и автоматически сбрасываются при ошибке или по завершении сеанса.
activeboolean True, если этот слот в настоящее время активно используется
active_pidinteger Идентификатор процесса сеанса, использующего этот слот, если слот в настоящее время активно используется. NULL если неактивен.
xminxid Самая старая транзакция, которую этот слот должен сохранить в базе данных. VACUUM не сможет удалить кортежи, удаленные любой более поздней транзакцией.
catalog_xminxid Самая старая транзакция, влияющая на системные каталоги, которые этот слот должен сохранить в базе данных. VACUUM не сможет удалить кортежи каталога, удаленные любой более поздней транзакцией.
restart_lsnpg_lsn Адрес (номер LSN) самого старого WAL, который все еще может потребоваться потребителю этого слота и, следовательно, не будет автоматически удален во время контрольных точек. NULL если номер LSN этого слота никогда не был зарезервирован.
confirmed_flush_lsnpg_lsn Адрес (номер LSN) до которого потребитель логического слота подтвердил получение данных. Данные старше этого больше не доступны. NULL для физических слотов.

pg_roles

Представление pg_roles предоставляет доступ к информации о ролях базы данных. Это просто общедоступное представление pg_authid, которое скрывает поле пароля.

pg_roles столбцы

ИмяТипСсылкиОписание
rolnamename Имя роли
rolsuperbool Роль имеет привилегии суперпользователя
rolinheritbool Роль автоматически наследует привилегии ролей, членом которых она является
rolcreaterolebool Роль может создавать другие роли
rolcreatedbbool Роль может создавать базы данных
rolcanloginbool Роль может войти в систему. То есть эта роль может быть задана в качестве идентификатора авторизации начального сеанса
rolreplicationbool Роль - это роль репликации. Роль репликации может инициировать подключения репликации и создавать и удалять слоты репликации.
rolconnlimitint4 Для ролей, которые могут войти в систему, задает максимальное число одновременных подключений, которые может создать эта роль. -1 означает отсутствие ограничений.
rolpasswordtext Скрытый пароль (всегда читается как ********)
rolvaliduntiltimestamptz Срок действия пароля (используется только для парольной аутентификации - null, если нет срока действия
rolbypassrlsbool Роль обходит любую политику безопасности уровня строки, см. раздел Политики безопасности строк для получения дополнительной информации.
rolconfigtext[] Значения в роли по умолчанию для переменных конфигурации времени выполнения
oidoidpg_authid.oidИдентификатор роли

pg_rules

Вид pg_rules предоставляет доступ к полезной информации о правилах перезаписи запросов.

pg_rules столбцы

ИмяТипСсылкиОписание
schemanamenamepg_namespace.nspnameИмя схемы, содержащей таблицу
tablenamenamepg_class.relnameИмя таблицы, для которой используется правило
rulenamenamepg_rewrite.rulenameНазвание правила
definitiontext Определение правила (восстановленная команда создания)

Из представления pg_rules исключены возможности правил ON SELECT для представлений и материализованных представлений те, которые можно увидеть в pg_views и pg_matviews.

pg_seclabels

Представление pg_seclabels предоставляет информацию о метках безопасности. Это как более простая для запроса версия каталога pg_seclabel.

pg_seclabels столбцы

ИмяТипСсылкиОписание
objoidoidOID для любого столбцаOID объекта, к которому относится эта метка безопасности
classoidoidpg_class.oidИдентификатор OID системного каталога, в котором отображается этот объект
objsubidint4 Для метки безопасности в столбце таблицы это номер столбца (objoid и classoid определяют саму таблицу). Для всех других типов объектов этот столбец равен нулю.
objtypetext Тип объекта, к которому применяется эта метка (текст).
objnamespaceoidpg_namespace.oidOID пространства имен для этого объекта, если применимо; в противном случае значение NULL.
objnametext Имя объекта, к которому применяется эта метка (текст).
providertextpg_seclabel.providerПоставщик меток, связанный с этой меткой.
labeltextpg_seclabel.labelМетка безопасности, применяемая к этому объекту.

pg_sequences

Представление pg_sequences предоставляет доступ к полезной информации о каждой последовательности в базе данных.

pg_sequences столбцы

ИмяТипСсылкиОписание
schemanamenamepg_namespace.nspnameИмя схемы, содержащей последовательность
sequencenamenamepg_class.relnameИмя последовательности
sequenceownernamepg_authid.rolnameИмя владельца последовательности
data_typeregtypepg_type.oidТип данных последовательности
start_valuebigint Начальное значение последовательности
min_valuebigint Минимальное значение последовательности
max_valuebigint Максимальное значение последовательности
increment_bybigint Значение приращения последовательности
cycleboolean Цикличность последовательности (возможность)
cache_sizebigint Размер кэша последовательности
last_valuebigint Последнее значение последовательности, записанное на диск. Если используется кэширование, это значение может быть больше, чем последнее значение, выдаваемое из последовательности. Значение Null, если последовательность еще не была прочитана. Кроме того, если текущий пользователь не имеет прав USAGE или SELECT на последовательность, значение равно null.

pg_settings

Представление pg_settings предоставляет доступ к параметрам времени выполнения сервера. Это по существу альтернативный интерфейс к командам SHOW и SET. Оно также предоставляет доступ к некоторым фактам о каждом параметре, которые непосредственно не доступны из SHOW, таким как минимальные и максимальные значения.

pg_settings столбцы

ИмяТипОписание
nametextИмя параметра конфигурации времени выполнения
settingtextТекущее значение параметра
unittextНеявная единица измерения параметра
categorytextЛогическая группа параметра
short_desctextКраткое описание параметра
extra_desctextДополнительное, более детальное, описание параметра
contexttextКонтекст, необходимый для установки значения параметра (см. ниже)
vartypetextТип параметра (bool, перечисление, integer, real, или строка)
sourcetextИсточник текущего значения параметра
min_valtextМинимальное допустимое значение параметра (null для нечисловых значений)
max_valtextМаксимально допустимое значение параметра (null для нечисловых значений)
enumvalstext[]Допустимые значения параметра enum (null для значений, отличных от enum)
boot_valtextЗначение параметра принимается при запуске сервера, если параметр не задан иным образом
reset_valtextЗначение, которое будет сброшено для параметра в текущем сеансе
sourcefiletextФайл конфигурации в котором текущее значение было установлено (null для значений, заданных из источников, отличных от файлов конфигурации, или при проверке пользователем, который не является ни суперпользователем, ни членом pg_read_all_settings); полезно при использовании использовать директивы include в файлах конфигурации
sourcelineintegerНомер строки в файле конфигурации в котором текущее значение было установлено (null для значений, заданных из источников, отличных от файлов конфигурации, или при проверке пользователем, который не является ни суперпользователем, ни членом pg_read_all_settings).
pending_restartbooleanTrue если значение было изменено в файле конфигурации, но нуждается в перезапуске; иначе False.

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

internal

Эти параметры не могут быть изменены непосредственно; они отражают внутренне определенные значения. Некоторые из них могут быть изменены через изменения параметров, предоставляемых в qhb_bootstrap .

postmaster

Эти параметры могут применяться только при запуске сервера, поэтому любое изменение требует перезагрузки сервера. Значения для этих параметров обычно хранятся в qhb.conf файл, либо передаются в командной строке при запуске сервера. Конечно же, настройки с любым из нижниеследующих контекстов типы также могут быть установлены во время запуска сервера.

sighup

Изменения в этих настройках могут быть внесены в qhb.conf без перезагрузки сервера. Пошлите сигнал SIGHUP к qhbmaster для того чтобы причинить его перечитывать qhb.conf и применить изменения. Qhbmaster также переадресует сигнал SIGHUP своим дочерним процессам, чтобы все они приняли новое значение.

superuser-backend

Изменения в этих настройках могут быть внесены в qhb.conf без перезагрузки сервера. Они также могут быть установлены для определенного сеанса в пакете запроса на подключение (например, через переменную окружения PGOPTIONS), но только если подключающийся пользователь является суперпользователем. Однако эти параметры никогда не изменяются в сеансе после его запуска. Если вы измените их внутри qhb.conf, необходимо отправить сигнал SIGHUP к qhbmaster для того чтобы инициировать перечитывание qhb.conf. Новые значения будут влиять только на последующие запущенные сеансы.

backend

Изменения в этих настройках могут быть внесены в qhb.conf без перезагрузки сервера. Они также могут быть установлены для определенного сеанса в пакете запроса на подключение (например, через переменную окружения PGOPTIONS); любой пользователь может внести такое изменение для своей сессии. Однако эти параметры никогда не изменяются в сеансе после его запуска. Если вы измените их внутри qhb.conf, пошлите сигнал SIGHUP к qhbmaster для того чтобы инициировать перечитывание qhb.conf. Новые значения будут влиять только на последующие запущенные сеансы.

superuser

Эти настройки можно установить из qhb.conf, или в течение сеанса с помощью команды SET; но только суперпользователи могут изменить их с помощью SET. Изменения в составе qhb.conf будет влиять на существующие сеансы только в том случае, если не было установлено значение session-local с WITH SET .

user

Эти настройки можно установить из qhb.conf, или в течение сеанса с помощью команды SET. Любой пользователь может изменить свое локальное значение сеанса. Изменения в составе qhb.conf будет влиять на существующие сеансы только в том случае, если не было установлено значение session-local с WITH SET .

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

pg_shadow

Представление pg_shadow показывает свойства всех ролей, которые помечены как rolcanlogin в pg_authid.

Это имя связано с тем, что эта таблица не должна быть доступна для чтения любыми пользователями, поскольку она содержит пароли. pg_user-это доступное всем представление для pg_shadow но со скрытым полем пароля.

pg_shadow столбцы

ИмяТипСсылкиОписание
usenamenamepg_authid.rolnameИмя пользователя
usesysidoidpg_authid.oidID этого пользователя
usecreatedbbool Пользователь может создавать базы данных
usesuperbool Пользователь является суперпользователем
usereplbool Пользователь может инициировать потоковую репликацию и вывести систему из режима резервного копирования.
usebypassrlsbool Пользователь игнорирует любую политику безопасности уровня строки, см. раздел Политики безопасности строк для получения дополнительной информации.
passwdtext Пароль (возможно зашифрованный); null, если нет. Смотрите pg_authid для получения подробной информации о том, как хранятся зашифрованные пароли.
valuntiltimestamptz Срок действия пароля (используется только для аутентификации пароля)
useconfigtext[] Значения по умолчанию сеанса для переменных конфигурации времени выполнения

pg_stats

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

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

pg_stats столбцы

ИмяТипСсылкиОписание
schemanamenamepg_namespace.nspnameИмя схемы, содержащей таблицу
tablenamenamepg_class.relnameИмя таблицы
attnamenamepg_attribute.attnameИмя столбца, описываемого этой строкой
inheritedbool Если true, то эта строка содержит дочерние столбцы наследования, а не только значения в указанной таблице
null_fracreal Доля записей столбцов, имеющих значение null
avg_widthinteger Средняя ширина в байтах записей столбца
n_distinctreal Если больше нуля, то показывает примерное число различных значений в столбце. Если меньше нуля, то модуль числа показывает количество различных значений разделённое на число строк. (Отрицательная форма используется, когда ANALYZE считает, что число различных значений, вероятно, будет увеличиваться по мере роста таблицы; положительная форма используется, когда считается, что столбец имеет фиксированное число возможных значений.) Например, значение -1 указывает на уникальный столбец, в котором число различных значений совпадает с числом строк.
most_common_valsanyarray Список наиболее распространенных значений в столбце. (Null, если никакие значения не более распространенны, чем любые другие.)
most_common_freqsreal[] Список частот наиболее частых значений, т. е. количество вхождений каждого значения делится на общее количество строк. (Null, если most_common_vals тоже null.)
histogram_boundsanyarray Список значений, разделяющих значения столбца на группы примерно одинаковой наборы называемые "популяции". Значения внутри most_common_vals, если они присутствует, то они исключаются из этого расчета гистограммы. (Столбец имеет значение null, если тип данных столбца не имеет оператора < или если most_common_vals список охватывает все популяции.)
correlationreal Статистическая корреляция между физическим упорядочением строк и логическим упорядочением значений столбцов. Значение колеблется от -1 до +1. Когда значение близко к -1 или +1, сканирование индекса по столбцу будет оценено как более дешевое, чем когда оно близко к нулю, из-за уменьшения случайного доступа к диску. (Столбец имеет значение null, если тип данных столбца не имеет оператора <.)
most_common_elemsanyarray Список ненулевых значений элементов, наиболее часто появляющихся в пределах значений столбца. (Null для скалярных типов.)
most_common_elem_freqsreal[] Список частот наиболее распространенных значений элементов, т. е. доля строк, содержащих хотя бы один экземпляр данного значения. Два или три дополнительных значения следуют за частотами каждого элемента; это минимум и максимум предыдущих частот каждого элемента и, возможно, частота нулевых элементов. (Null, когда заполнен most_common_elems.)
elem_count_histogramreal[] Гистограмма подсчетов различных ненулевых значений элементов в пределах значений столбца, за которыми следует среднее число различных ненулевых элементов. (Null для скалярных типов.)

Максимальное число записей в полях массива можно контролировать по столбцам с помощью команды ALTER TABLE SET STATISTICS или глобально, задавая параметр времени выполнения default_statistics_target.

pg_stats_ext

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

pg_stats_ext также предназначена для представления информации в более удобочитаемом формате, чем базовые каталоги — и потому должна быть расширена всякий раз, когда добавляются новые типы расширенной статистики pg_statistic_ext.

pg_stats_ext столбцы

ИмяТипСсылкиОписание
schemanamenamepg_namespace.nspnameИмя схемы, содержащей таблицу
tablenamenamepg_class.relnameИмя таблицы
statistics_schemanamenamepg_namespace.nspnameИмя схемы, содержащей расширенную статистику
statistics_namenamepg_statistic_ext.stxnameНаименование расширенной статистики
statistics_owneroidpg_authid.oidВладелец расширенной статистики
attnamesname[]pg_attribute.attnameИмена столбцов, на которых определяется расширенная статистика
kindstext[] Типы расширенной статистики, включенной для этой записи
n_distinctpg_ndistinct Если больше нуля, то показывает примерное число различных значений в столбце. Если меньше нуля, то модуль числа показывает количество различных значений разделённое на число строк. (Отрицательная форма используется, когда ANALYZE считает, что число различных значений, вероятно, будет увеличиваться по мере роста таблицы; положительная форма используется, когда считается, что столбец имеет фиксированное число возможных значений.) Например, значение -1 указывает на уникальный столбец, в котором число различных значений совпадает с числом строк.
dependenciespg_dependencies Статистика для функциональной зависимости
most_common_valsanyarray Список наиболее распространенных комбинаций значений в столбцах. (Null, если никакие комбинации не считаются более распространенными, чем любые другие.)
most_common_val_nullsanyarray Список нулевых флагов для наиболее распространенных комбинаций значений. (Null, если задан most_common_vals)
most_common_freqsreal[] Список частот наиболее распространенных комбинаций, т. е. количество вхождений каждой делится на общее количество строк. (Null, если задан most_common_vals)
most_common_base_freqsreal[] Список базовых частот наиболее распространенных комбинаций, т. е. произведение частот на значение. (Null, если задан most_common_vals)

Максимальное число записей в полях массива можно контролировать для столбцов с помощью команды ALTER TABLE SET STATISTICS или глобально, задавая параметр времени выполнения default_statistics_target.

pg_tables

Представление pg_tables предоставляет доступ к полезной информации о каждой таблице в базе данных.

pg_tables столбцы

ИмяТипСсылкиОписание
schemanamenamepg_namespace.nspnameИмя схемы, содержащей таблицу
tablenamenamepg_class.relnameИмя таблицы
tableownernamepg_authid.rolnameИмя владельца таблицы
tablespacenamepg_tablespace.spcnameИмя табличного пространства, содержащего таблицу (null, если пространство по умолчанию для базы данных)
hasindexesbooleanpg_class.relhasindexTrue, если таблица имеет (или недавно имела) какие-либо индексы
hasrulesbooleanpg_class.relhasrulesTrue, если таблица имеет (или когда-то имела) правила
hastriggersbooleanpg_class.реластриггерыTrue, если таблица имеет (или когда-то имела) триггеры
rowsecuritybooleanpg_class.relrowsecurityTrue, если в таблице включена защита строк

pg_timezone_abbrevs

Представление pg_timezone_abbrevs предоставляет список сокращений часовых поясов, которые в настоящее время распознаются как корректные для функций datetime. Содержание этого представления изменяется при изменении параметра времени выполнения timezone_abbreviations.

pg_timezone_abbrevs столбцы

ИмяТипОписание
abbrevtextАббревиатура часового пояса
utc_offsetинтервалСмещение от UTC (положительное значение означает на восток от Гринвича)
is_dstbooleanTrue, если это аббревиатура необходима для перехода на летнее время

Хотя большинство сокращений часовых поясов представляют собой фиксированные смещения от UTC, есть некоторые, которые исторически менялись в таких случаях этот представление содержит их текущее значение.

pg_timezone_names

Представление pg_timezone_names предоставляет список имен часовых поясов, которые распознаются командой SET TIMEZONE, а также связанные с ними сокращения, смещения UTC и состояние летнего времени. (Технически QHB не использует UTC, потому что координация для високосных секунд не обрабатываются). В отличие от сокращений, показанных в pg_timezone_abbrevs, многие из этих имен подразумевают набор правил перехода на летнее время. Таким образом, связанная информация изменяется через локальные границы для летнего времени. Отображаемая информация вычисляется на основе текущего значения параметра CURRENT_TIMESTAMP.

pg_timezone_names столбцы

ИмяТипОписание
nametextНазвание часового пояса
abbrevtextАббревиатура часового пояса
utc_offsetинтервалСмещение от UTC (положительное значение означает восток от Гринвича)
is_dstbooleanTrue, если в настоящее время наблюдается переход на летнее время

pg_user

Представление pg_user доступ к информации о пользователях базы данных. Это просто общедоступное представление pg_shadow которое скрывает поле пароля.

pg_user столбцы

ИмяТипОписание
usenamenameИмя пользователя
usesysidoidID этого пользователя
usecreatedbboolПользователь может создавать базы данных
usesuperboolПользователь является суперпользователем
usereplboolПользователь может инициировать потоковую репликацию и вывести систему из режима резервного копирования.
usebypassrlsboolПользователь обходит каждую политику безопасности уровня строки, см. раздел Политики безопасности строк для получения дополнительной информации.
passwdtextНе пароль (всегда читается как ********)
valuntiltimestamptzСрок действия пароля (используется только для парольной аутентификации)
useconfigtext[]Значения по умолчанию сеанса для переменных конфигурации времени выполнения

pg_user_mappings

Представление pg_user_mappings доступ к информации о сопоставлениях пользователей. Это по существу общедоступное представление pg_user_mapping, которое оставляет столбец umoptions, если у пользователя нет прав на его использование.

pg_user_mappings столбцы

ИмяТипСсылкиОписание
umidoidpg_user_mapping.oidOID сопоставления пользователей
srvidoidpg_foreign_server.oidOID внешнего сервера, содержащий это сопоставление
srvnamenamepg_foreign_server.srvnameИмя внешнего сервера
umuseroidpg_authid.oidOID сопоставляемой локальной роли, 0, если пользовательское сопоставление является общедоступным
usenamename Имя локального пользователя для сопоставления
umoptionstext[] Пользователь сопоставляет определенные параметры, в виде строки "ключ=значение"

Чтобы защитить информацию о пароле, сохраненную в качестве параметра сопоставления пользователей, umoptions столбец будет считываться как null, если не применяется одно из следующих условий:

  • текущий пользователь-это сопоставляемый пользователь, который владеет сервером или имеет USAGE для него

  • текущий пользователь является владельцем сервера и сопоставление для PUBLIC

  • текущий пользователь является суперпользователем

pg_views

Представление pg_views предоставляет доступ к полезной информации о каждом представлении (view) в базе данных.

pg_views столбцы

ИмяТипСсылкиОписание
schemanamenamepg_namespace.nspnameИмя схемы, содержащей представление
viewnamenamepg_class.relnameИмя представления
viewownernamepg_authid.rolnameИмя владельца объекта (view)
определениеtext Определение представления (реконструированный запрос SELECT)