Системные каталоги
Системные каталоги — это место, где система управления реляционными
базами данных хранит метаданные схемы, такие как сведения о таблицах и
столбцах, а также информацию о внутреннем бухгалтерском учете. Системные
каталоги 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_available_extensions
- pg_available_extensions_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_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_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 хранит информацию об агрегатных функциях. Агрегатная функция — это функция, которая работает с набором значений (как правило, с одним столбцом из каждой строки, которая соответствует условию запроса) и возвращает одно значение, вычисленное из всех этих значений. Типичными агрегатными функциями являются sum, count и max. Каждая запись внутри pg_aggregate представляет собой расширение записи в pg_proc. Запись в pg_proc содержит имя агрегата, типы входных и выходных данных, а также другую информацию, аналогичную имеющейся у обычных функций.
Столбцы pg_aggregate
Имя | Тип | Ссылки | Описание |
---|---|---|---|
aggfnoid | regproc | pg_proc.oid | OID агрегатной функции в pg_proc |
aggkind | char | Вид агрегатной функции: n для обычной (normal), o для сортирующей (ordered-set) или h для гипотезирующей (hypothetical-set) | |
aggnumdirectargs | int2 | Число прямых (неагрегированных) аргументов сортирующей или гипотезирующей агрегатной функции, считая переменный массив аргументов за один аргумент. Если равняется pronargs, агрегатная функция должна принимать переменный массив, и этот массив описывает как агрегированные аргументы, так и конечные прямые аргументы. Всегда равно 0 для обычных агрегатных функций. | |
aggtransfn | regproc | pg_proc.oid | Функция перехода |
aggfinalfn | regproc | pg_proc.oid | Функция завершения (0, если ее нет) |
aggcombinefn | regproc | pg_proc.oid | Функция совмещения (0, если ее нет) |
aggserialfn | regproc | pg_proc.oid | Функция сериализации (0, если ее нет) |
aggdeserialfn | regproc | pg_proc.oid | Функция десериализации (0, если ее нет) |
aggmtransfn | regproc | pg_proc.oid | Функция прямого перехода для режима движущегося агрегата (0, если ее нет) |
agminvtransfn | regproc | pg_proc.oid | Функция обратного перехода для режима движущегося агрегата (0, если ее нет) |
aggmfinalfn | regproc | pg_proc.oid | Функция завершения для режима движущегося агрегата (0, если ее нет) |
aggfinalextra | bool | При значении true в aggfinalfn передаются дополнительные фиктивные аргументы | |
aggmfinalextra | bool | При значении true в aggmfinalfn передаются дополнительные фиктивные аргументы | |
aggfinalmodify | char | Изменяет ли aggfinalfn значение состояния перехода: r, если состояние доступно только для чтения, s, если aggtransfn не может быть применена после *aggfinalfn, или w, если состояние перезаписывается | |
aggmfinalmodify | char | Сходно с aggfinalmodify, но для самого aggmfinalfn | |
aggsortop | oid | pg_operator.oid | Связанный оператор сортировки (0, если его нет) |
aggtranstype | oid | pg_type.oid | Тип данных внутреннего перехода (состояния) агрегатной функции |
aggtransspace | int4 | Приблизительный средний размер (в байтах) данных о состоянии перехода или 0 для использования оценки по умолчанию | |
aggmtranstype | oid | pg_type.oid | Тип данных внутреннего перехода (состояния) агрегатной функции для режима движущегося агрегата (0, если его нет) |
aggmtransspace | int4 | Приблизительный средний размер (в байтах) данных о состоянии перехода для режима движущегося агрегата или 0 для использования оценки по умолчанию | |
agginitval | text | Начальное значение переходного состояния. Это текстовое поле, содержащее начальное значение во внешнем строковом представлении. Если это поле имеет значение *NULL, то значение состояния перехода начнется с NULL. | |
agginitval | text | Начальное значение переходного состояния для режима движущегося агрегата. Это текстовое поле, содержащее начальное значение во внешнем строковом представлении. Если это поле имеет значение NULL, то значение состояния перехода начнется с NULL. |
Новые агрегатные функции регистрируются с помощью команды CREATE AGGREGATE. Дополнительную информацию о написании агрегатных функций и значении функций перехода см. в разделе Пользовательские агрегаты.
pg_am
Каталог pg_am хранит информацию о методах доступа к отношениям. Существует одна строка для каждого метода доступа, поддерживаемого системой. В настоящее время только таблицы и индексы имеют методы доступа. Требования к методам доступа к таблицам и индексам подробно рассматриваются в главах Интерфейс доступа к таблице и Интерфейс доступа индекса соответственно.
Столбцы pg_am
Имя | Тип | Ссылки | Описание |
---|---|---|---|
oid | oid | Идентификатор строки | |
amname | name | Имя метода доступа | |
amhandler | regproc | pg_proc.oid | OID функции обработчика, ответственного за предоставление информации о методе доступа |
amtype | char | t = таблица (включая материализованные представления), i = индекс. |
Примечание
Данные о свойствах индексных методов доступа напрямую видны только на уровне кода С. Однако запросы SQL могут проверять эти свойства с помощью pg_index_column_has_property() и связанных функций.
pg_amop
Каталог pg_amop хранит информацию об операторах, связанных с семействами операторов метода доступа. Существует одна строка для каждого оператора, который является членом семейства операторов. Членом семейства может быть либо оператор поиска, либо оператор упорядочивания. Оператор может принадлежать нескольким семействам, но в пределах одного семейства не может находиться более чем в одной позиции поиска или позиции упорядочивания. (Допустимо, хотя и маловероятно, что оператор будет использоваться как для поиска, так и для сравнения.)
Столбцы pg_amop
Имя | Тип | Ссылки | Описание |
---|---|---|---|
oid | oid | Идентификатор строки | |
amopfamily | oid | pg_opfamily.oid | Семейство операторов, для которых эта запись предназначена |
amoplefttype | oid | pg_type.oid | Левый тип входных данных оператора |
amoprighttype | oid | pg_type.oid | Правый тип входных данных оператора |
amopstrategy | int2 | Номер стратегии оператора | |
amoppurpose | char | Назначение оператора: s для поиска, о для сравнения | |
amopopr | oid | pg_operator.oid | OID оператора |
amopmethod | oid | pg_am.oid | Семейство операторов метода индексного доступа |
amopsortfamily | oid | pg_opfamily.oid | Семейство операторов B-дерева, в соответствии с которым данный оператор сортирует, если это оператор упорядочивания, и 0, если это оператор поиска |
Запись оператора «поиска» указывает, что индекс этого семейства операторов может быть использован для поиска всех строк, удовлетворяющих требованию WHERE столбец_индекса оператор константа. Очевидно, что такой оператор должен вернуть тип boolean, а тип его левого операнда должен соответствовать типу данных столбца индекса.
Запись оператора «упорядочивания» указывает, что индекс этого семейства операторов может быть отсканирован для возврата строк в порядке, представленном ORDER BY столбец_индекса оператор константа. Такой оператор может возвращать любой сортируемый тип данных, хотя, опять же, тип его левого операнда должен соответствовать типу данных столбца индекса. Точная семантика выражения ORDER BY определяется по столбцу amopsortfamily, который должен указывать на семейство операторов B-дерева для типа, возвращаемого оператором.
Примечание
В настоящее время предполагается, что порядок сортировки для оператора упорядочивания является значением по умолчанию для указанного семейства операторов, т. е. ASC NULLS LAST. Возможно, когда-нибудь для придания большей гибкости будут добавлены дополнительные столбцы, чтобы явно указать параметры сортировки.
Поле amopmethod в записи оператора должно соответствовать полю opfmethod содержащего его семейства операторов (в данном случае включение amopmethod является преднамеренной денормализацией структуры каталога из соображений производительности). Кроме того, поля amoplefttype и amoprighttype должны соответствовать полям oprleft и oprright соответствующей записи в pg_operator.
pg_amproc
Каталог pg_amproc хранит информацию о функциях поддерживаемых оператором и связанных с семействами операторов метода доступа. Существует одна строка для каждой опорной функции, принадлежащей семейству операторов.
pg_amproc столбцы
Имя | Тип | Ссылки | Описание |
---|---|---|---|
oid | oid | Идентификатор строки | |
amprocfamily | oid | pg_opfamily.oid | Семейство операторов для которых предназначается эта запись |
amproclefttype | oid | pg_type.oid | Левый тип входных данных ассоциированного оператора |
amprocrighttype | oid | pg_type.oid | Правый тип входных данных ассоциированного оператора |
amprocnum | int2 | Номер поддерживаемой функции | |
amproc | regproc | pg_proc.oid | OID функции |
Пояснить эту структуру можно так amproclefttype и amprocrighttype поля - которые идентифицируют левый и правый типы входных данных оператора(ов), поддерживающие определенную функцию. Для некоторых методов доступа они соответствуют типам входных данных самой функции, для других-нет. Существует понятие функции для индекса "по умолчанию" это такая функция, для которой amproclefttype и amprocrighttype оба равны классу оператора индекса opcintype.
pg_attrdef
Каталог pg_attrdef сохраняет значения столбца по умолчанию. Основная информация о столбцах хранится в каталоге pg_attribute. Только столбцы, для которых значение по умолчанию было явно установлено, хранятся в этом каталоге.
pg_attrdef столбцы
Имя | Тип | Ссылки | Описание |
---|---|---|---|
oid | oid | Идентификатор строки | |
adrelid | oid | pg_class.oid | Таблица, к которой принадлежит этот столбец |
adnum | int2 | pg_attribute.attnum | Номер столбца: |
adbin | pg_node_tree | Значение столбца по умолчанию, в nodeToString() представлении. Воспользуйтесь pg_get_expr(adbin, adrelid) чтобы преобразовать его в выражение SQL. |
pg_attribute
Каталог pg_attribute хранит информацию о столбцах таблицы. Хранится ровно одна строка для каждого столбца в каждой таблице базы данных. (Также хранятся записи атрибутов для индексов, и всех объектов, которые имеют записи в pg_class).
Термин атрибут эквивалентен столбцу и используется по историческим причинам.
pg_attribute столбцы
Имя | Тип | Ссылки | Описание |
---|---|---|---|
attrelid | oid | pg_class.oid | Таблица, к которой принадлежит этот столбец |
attname | name | Имя столбца | |
atttypid | oid | pg_type.oid | Тип данных этого столбца |
attstattarget | int4 | attstattarget управляет уровнем детализации статистики, накопленной для данного столбца методом ANALYZE. Нулевое значение указывает на то, что статистика не должна собираться. Отрицательное значение указывает на использование статистики по умолчанию. Точное значение положительных значений зависит от типа данных. Для скалярных типов данных, attstattarget является как числом "наиболее распространенных значений" для сбора, так и числом ячеек гистограммы для создания. | |
attlen | int2 | Копия pg_type.typlen типа этого столбца | |
attnum | int2 | Номер столбца. Обычные столбцы пронумерованы от 1 и выше. Системные столбцы, такие как ctid, имеют (произвольные) отрицательные числа. | |
attndims | int4 | Число измерений, если столбец имеет тип массива; в противном случае 0. (В настоящее время число измерений массива не обязательно, поэтому любое ненулевое значение означает “это массив”.) | |
attcacheof | int4 | Всегда -1 в хранилище, но при загрузке в дескриптор строки в памяти он может быть обновлен для кэширования смещения атрибута в строке | |
atttypmod | int4 | atttypmod записи специфичные для типа данных, предоставляемых во время создания таблицы (например, максимальная длина для varchar) Передается в функции ввода определенного типа и функции ограничения длины. Значение обычно будет равно -1 для типов, которые не нуждаются в atttypmod. | |
attbyval | bool | Копия pg_type.typbyval типа этого столбца | |
attstorage | char | Обычно это копия pg_type.typsize типа этого столбца. Для TOAST типов данных этот атрибут можно изменить после создания столбца для управления политикой хранения. | |
attalign | char | Копия pg_type.typalign типа этого столбца | |
attnotnull | bool | Ограничение not-null. | |
atthasdef | bool | Показывает, что столбец имеет выражение по умолчанию или выражение генерации, в этом случае будет соответствующая запись в поле pg_attrdef из каталога, который фактически определяет выражение. (Необходимо проверять attgenerated чтобы определить, является ли это выражение по умолчанию или значение.) | |
atthasmissing | bool | Показывает, что столбец имеет значение, которое используется, когда столбец полностью отсутствует в строке, это происходит, когда столбец добавляется с значением ПО УМОЛЧАНИЮ после создания строки. Используемое фактическое значение хранится в колонке attmissingval . | |
attidentity | char | Если пусто (”), то столбец идентификаторов отсутствует. Иначе, a = генерируется всегда, d = генерируется по умолчанию. | |
attgenerated | char | Если пусто (”), то столбец не сгенерированный. Иначе, с = на хранении. (В будущем могут быть добавлены и другие значения.) | |
attisdropped | bool | Этот столбец был удален и больше не является допустимым. Удалённый столбец все еще физически присутствует в таблице, но игнорируется синтаксическим анализатором и поэтому не может быть доступен через SQL. | |
attislocal | bool | Этот столбец определяется локально в отношении. Обратите внимание, что столбец может быть локально определен и унаследован одновременно. | |
attinhcount | int4 | Число прямых предков, которые есть в этой колонке. Столбец с ненулевым числом предков нельзя удалить или переименовать. | |
attcollation | oid | pg_collation.oid | Заданные параметры сортировки столбца или ноль, если столбец не является типом данных с возможностью сортировки. |
attacl | aclitem[] | Права доступа на уровне столбца, если они были предоставлены специально для этого столбца | |
attoptions | text[] | Параметры уровня атрибута, в виде строки "ключ=значение" | |
attfdwoptions | text[] | Параметры внешней оболочки данных уровня атрибута, в виде строки "ключ=значение" | |
attmissingval | anyarray | Этот столбец имеет массив из одного элемента, содержащий значение, используемое, когда столбец полностью отсутствует в строке, как это происходит, когда в столбец добавляется значение по умолчанию после создания строки. Значение используется только тогда, когда 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 столбцы
Имя | Тип | Описание |
---|---|---|
oid | oid | Идентификатор строки |
rolname | name | Имя роли |
rolsuper | bool | Роль имеет привилегии суперпользователя |
rolinherit | bool | Роль автоматически наследует привилегии ролей, членом которых она является |
rolcreaterole | bool | Роль может создавать другие роли |
rolcreatedb | bool | Роль может создавать базы данных |
rolcanlogin | bool | Роль может войти в систему. То есть эта роль может быть задана в качестве идентификатора авторизации начального сеанса |
rolreplication | bool | Роль - это роль репликации. Роль репликации может инициировать подключения репликации и создавать и удалять слоты репликации. |
rolbypassrls | bool | Роль обходит политику безопасности уровня строки, см. раздел Политики безопасности строк для получения дополнительной информации. |
rolconnlimit | int4 | Для ролей, которые могут войти в систему, задает максимальное число одновременных подключений, которые может создать эта роль. -1 означает отсутствие ограничений. |
rolpassword | text | Пароль (возможно зашифрованный), null, если нет. Формат зависит от используемой формы шифрования. |
rolvaliduntil | timestamptz | Срок действия пароля (используется только для аутентификации по паролю); null, если нет срока действия |
Для зашифрованного пароля MD5, rolpassword столбец будет начинаться со строки md5 далее следует 32-символьный шестнадцатеричный хэш MD5. Хэш MD5 будет содержать пароль пользователя, связанный с его именем. Например, если пользователь Джо имеет пароль 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 столбцы
Имя | Тип | Ссылки | Описание |
---|---|---|---|
roleid | oid | pg_authid.oid | Идентификатор роли, имеющей участника |
member | oid | pg_authid.oid | Идентификатор роли, которая является членом roleid |
grantor | oid | pg_authid.oid | Идентификатор роли, предоставившей это членство |
admin_option | bool | True, если member может предоставить членство в компании roleid для других |
pg_cast
Каталог pg_cast хранит пути преобразования типов данных, как встроенные, так и определяемые пользователем.
Следует отметить, что pg_cast не содержит все преобразования типов, которые система умеет выполнять, а только те, которые не могут быть выведены из некоторого общего правила. Например, приведение между доменом и его базовым типом явно не представлено в виде pg_cast. Еще одним важным исключением является то, что каталог pg_cast не содержит "автоматическое преобразование ввода-вывода", те преобразования, которые выполняются с использованием собственных функций ввода-вывода типа данных для преобразования в/из текста или других строковых типов, явно не представленные в pg_cast.
pg_cast столбцы
Имя | Тип | Ссылки | Описание |
---|---|---|---|
oid | oid | Идентификатор строки | |
castsource | oid | pg_type.oid | OID типа исходных данных |
casttarget | oid | pg_type.oid | OID целевого типа данных |
castfunc | oid | pg_proc.oid | OID функции, которая будет использоваться для выполнения этого приведения. Null, если метод cast не требует функции. |
castcontext | char | Указывает, в каких контекстах приведение может быть вызвано - e означает только явное приведение (использование синтаксиса CAST или :: ) а означает неявно при присвоении целевому столбцу, а также явно, i означает неявно в выражениях, а также в других случаях. | |
castmethod | char | Указывает, как выполняется приведение. а означает, что используется функция, указанная в столбце 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 столбцы
Имя | Тип | Ссылки | Описание |
---|---|---|---|
oid | oid | Идентификатор строки | |
relname | name | Имя таблицы, индекса, представления и т.д. | |
relnamespace | oid | pg_namespace.oid | OID пространства имен, содержащего это отношение |
reltype | oid | pg_type.oid | OID типа данных, который соответствует типу строки этой таблицы, если таковой имеется (ноль для индексов, у которых нет pg_type вход) |
reloftype | oid | pg_type.oid | Для типизированных таблиц OID базового составного типа NULL для всех других отношений |
relowner | oid | pg_authid.oid | Владелец отношения |
relam | oid | pg_am.oid | Если это таблица или индекс, то используется метод доступа (куча, B-дерево, хэш и т. д.) |
relfilenode | oid | Имя файла на диске для этого отношения - NULL означает, что это “сопоставленное” отношение, имя файла на диске для которого определяется низкоуровневым состоянием | |
reltablespace | oid | pg_tablespace.oid | Табличное пространство, в котором хранится это отношение. Если NULL, подразумевается табличное пространство базы данных по умолчанию . (Не имеет смысла, если отношение не имеет файла на диске.) |
relpages | int4 | Размер представления этой таблицы на диске в страницах (размера BLCKSZ). Это только оценка, используемая планировщиком, столбец обновляется с помощью VACUUM, ANALYZE и нескольких команд DDL, таких как CREATE INDEX. | |
reltuples | float4 | Количество "живых" строк в таблице. Это только оценка, используемая планировщиком. Она обновляется с помощью VACUUM, ANALYZE и нескольких команд DDL, таких как CREATE INDEX. | |
relallvisible | int4 | Количество страниц, отмеченных как все видимые на карте видимости таблицы. Это только оценка, используемая планировщиком. Она обновляется с помощью VACUUM, ANALYZE и нескольких команд DDL, таких как CREATE INDEX. | |
reltoastrelid | oid | pg_class.oid | OID таблицы TOAST, связанной с этой таблицей, 0, если нет. Таблица TOAST хранит большие атрибуты "вне строки" во вторичной таблице. |
relhasindex | bool | True, если это таблица и она имеет (или недавно имела) какие-либо индексы | |
relisshared | bool | True, если эта таблица является общей для всех баз данных в кластере. Только определенные системные каталоги (такие как pg_database) разделяемы. | |
relpersistence | char | p = постоянная таблица, u = незарегистрированная таблица, t = временная таблица | |
relkind | char | r = Обычная таблица, i = индекс, s = последовательность, t = Таблица TOAST, v = представление, m = материализованное представление, c = составной тип, f = внешняя таблица, p = партиционированная таблица, I = партиционированный индекс | |
relnatts | int2 | Количество пользовательских столбцов в связи (системные столбцы не учитываются). Должно быть такое количество соответствующих записей в pg_attribute. См. также pg_attribute.attnum. | |
relchecks | int2 | Количество CHECK (порверок) ограничений для таблицы; см. каталог pg_constraint | |
relhasrules | bool | True, если таблица имеет (или когда-то имела) правила; см. каталог pg_rewrite | |
relhastriggers | bool | True, если таблица имеет (или когда-то имела) триггеры; см. каталог pg_trigger | |
relhassubclass | bool | True, если у таблицы или индекса есть (или когда-то были) "дети" в результате наследования | |
relrowsecurity | bool | True, если в таблице включена защита на уровне строк; см. каталог pg_policy | |
relforcerowsecurity | bool | True, если безопасность на уровне строк (если она включена) будет также применяться к владельцу таблицы; см. каталог pg_policy | |
relispopulated | bool | True, если отношение заполнено (это справедливо для всех отношений, кроме некоторых материализованных представлений) | |
relreplident | char | Столбцы, используемые для формирования "идентичности реплики" для строк: d = по умолчанию (первичный ключ, если есть), n = ничего, f = все столбцы i = индекс с indisreplident или по умолчанию | |
relispartition | bool | True, если таблица или индекс является партицией | |
relrewrite | oid | pg_class.oid | Для новых отношений, записываемых во время операции DDL, которая требует перезаписи таблицы, это содержит OID исходного отношения; в противном случае 0. Это состояние является видимым только dyenhb - это поле никогда не должно содержать ничего, кроме 0 для отношения пользователя. |
relfrozenxid | xid | Все идентификаторы транзакций до этого были заменены на постоянный (”замороженный") идентификатор транзакции в этой таблице. Используется для отслеживания того, нужно ли очистить таблицу, чтобы предотвратить "оборачивание" идентификатора транзакции или разрешить уменьшение pg_xact. NULL (InvalidTransactionId) если отношение не является таблицей. | |
relminmxid | xid | Все идентификаторы multixact перед этим были заменены на постоянный (”замороженный") идентификатор транзакции в этой таблице. Это используется для отслеживания того, нужно ли вакуумировать таблицу, чтобы предотвратить "оборачивание" multixact ID или разрешить уменьшение pg_multixact. Ноль (InvalidMultiXactId) если отношение не является таблицей. | |
relacl | aclitem[] | Права доступа; смотрите раздел Привилегии для получения дополнительной информации | |
reloptions | text[] | Параметры, зависящие от метода доступа, в виде строки "ключ=значение" | |
relpartbound | pg_node_tree | Если таблица является партицией (см. relispartition), внутреннее представление связанной партиции |
Несколько логических флагов внутри pg_class поддерживаются "лениво" : они гарантированно будут истинными, если это правильное состояние, но не сбрасываются на false сразу же, когда условие больше не является истинным. Например, relhasindex устанавливается с помощью CREATE INDEX, но никогда не очищается с помощью DROP INDEX. Вместо этого, вакуум очищает relhasindex если он обнаружит, что таблица не имеет индексов. Это расположение позволяет избежать условий гонки и улучшает параллелизм.
pg_collation
Каталог pg_collation описывает доступные параметры сортировки, которые представляют собой сопоставления между именем SQL и категориями локали операционной системы.
pg_collation столбцы
Имя | Тип | Ссылки | Описание |
---|---|---|---|
oid | oid | Идентификатор строки | |
collname | name | Имя сортировки (уникальное для каждого пространства имен и кодировки) | |
collnamespace | oid | pg_namespace.oid | OID пространства имен, содержащего эту сортировку |
collowner | oid | pg_authid.oid | Владелец сортировки |
collprovider | char | Поставщик сортировки: d = database по умолчанию, c = libc, i = icu | |
collisdeterministic | bool | Является ли сортировка детерминированной? | |
collencoding | int4 | Кодировка, в которой применяется сортировка, или -1, если она работает для любой кодировки | |
collcollate | name | LC_COLLATE для этого объекта сортировки | |
collctype | name | LC_CTYPE для этого объекта сортировки | |
collversion | text | Версия параметров сортировки для конкретного поставщика. Записывается при создании параметров сортировки, а затем проверяется при их использовании для обнаружения изменений в определении параметров сортировки, которые могут привести к повреждению данных. |
Обратите внимание, что уникальным ключем в этом каталоге является (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 столбцы
Имя | Тип | Ссылки | Описание |
---|---|---|---|
oid | oid | Идентификатор строки | |
conname | name | Имя ограничения (не обязательно уникальное!) | |
connamespace | oid | pg_namespace.oid | OID пространства имен, содержащего это ограничение |
contype | char | c = проверочное ограничение, f = ограничение внешнего ключа, p = ограничение первичного ключа, u = ограничение уникальности, t = триггер ограничения, x = ограничение на исключение | |
condeferrable | bool | Может ли это ограничение быть отложенным? | |
condeferred | bool | Является ли ограничение отложенным по умолчанию? | |
convalidated | bool | Было ли это ограничение проверено? В настоящее время может быть false только для внешних ключей и проверочных ограничений | |
conrelid | oid | pg_class.oid | Таблица, на которую наложено это ограничение; 0 если нет ограничения таблицы |
contypid | oid | pg_type.oid | Домен, на который наложено это ограничение; 0 если нет ограничения домена |
conindid | oid | pg_class.oid | Индекс, поддерживающий это ограничение, если это уникальный, первичный ключ, внешний ключ или ограничение исключения - в противном случае 0 |
conparentid | oid | pg_constraint.oid | Соответствующее ограничение в родительской партиционированной таблице, если это ограничение для партиции в противном случае 0 |
confrelid | oid | pg_class.oid | Если это внешний ключ, то ссылочная таблица (на которую ссылается ключ) - в противном случае 0 |
confupdtype | char | Код действия при обновлении внешнего ключа: a = нет действия, r = ограничивать, c = каскад, n = установить значение null, d = установить по умолчанию | |
confdeltype | char | Код действия при удалении внешнего ключа: a = нет действия, r = ограничивать, c = каскад, n = установить значение null, d = установить по умолчанию | |
confmatchtype | char | Тип соответствия для внешнего ключа: f = полный, p = частичный, s = простой | |
conislocal | bool | Определяется ли ограничение локально для отношения. Обратите внимание, что ограничение может быть локально определено и унаследовано одновременно. | |
coninhcount | int4 | Число предков прямого наследования от ограничения. Ограничение с ненулевым числом предков не может быть удалено или переименовано. | |
connoinherit | bool | True если не наследуемое ограничение (определяется локально для отношения). | |
conkey | int2[] | pg_attribute.attnum | Если ограничение таблицы (включая внешние ключи, но не триггеры ограничений), то список ограниченных столбцов |
confkey | int2[] | pg_attribute.attnum | Если это внешний ключ, то список ссылочных столбцов |
conpfeqop | oid[] | pg_operator.oid | Если ограничение - внешний ключ, то список операторов равенства для сравнений PK = FK |
conppeqop | oid[] | pg_operator.oid | Если ограничение - внешний ключ, то список операторов равенства для сравнений PK = PK |
conffeqop | oid[] | pg_operator.oid | Если ограничение - внешний ключ, то список операторов равенства для сравнений FK = FK |
conexclop | oid[] | pg_operator.oid | Если ограничение исключения, то список операторов исключения для каждого столбца |
conbin | pg_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 столбцы
Имя | Тип | Ссылки | Описание |
---|---|---|---|
oid | oid | Идентификатор строки | |
conname | name | Имя преобразования (уникальное в пределах пространства имен) | |
connamespace | oid | pg_namespace.oid | OID пространства имен, содержащего это преобразование |
conowner | oid | pg_authid.oid | Владелец преобразования |
conforencoding | int4 | ID кодировки источника | |
contoencoding | int4 | ID кодировки назначения | |
conproc | regproc | pg_proc.oid | Функция преобразования |
condefault | bool | True, если это преобразование по умолчанию |
pg_database
Каталог pg_database хранит информацию о доступных базах данных. Базы данных создаются с помощью команды CREATE DATABASE. Дополнительную информацию о значении некоторых параметров см. в главе Управление базами данных.
В отличие от большинства системных каталогов, pg_database является общим для всех баз данных кластера: существует только одна копия pg_database на кластер, а не по одному на каждую базу данных.
pg_database столбцы
Имя | Тип | Ссылки | Описание |
---|---|---|---|
oid | oid | Идентификатор строки | |
datname | name | Имя базы данных | |
datdba | oid | pg_authid.oid | Владелец базы данных, как правило, пользователь, который ее создал |
encoding | int4 | Кодировка символов для этой базы данных (при помощи pg_encoding_to_char() можно перевести число в имя кодировки) | |
datcollate | name | LC_COLLATE для этой базы данных | |
datctype | name | LC_CTYPE для этой базы данных | |
datistemplate | bool | Если true, то эта база данных может быть клонирована любым пользователем обладающим привилегией CREATEDB, если значение false, то клонировать его могут только суперпользователи или владелец базы данных. | |
datallowconn | bool | Если false, то никто не может подключиться к этой базе данных. Используется для защиты базы данных template0 от изменения. | |
datconnlimit | int4 | Задает максимальное число одновременных подключений, которые могут быть выполнены для этой базы данных. -1 означает отсутствие ограничений. | |
datlastsysoid | oid | Последний системный OID в базе данных - необходимо, в частности, для qhb_dump | |
datfrozenxid | xid | Все идентификаторы транзакций до этого были заменены на постоянный (”замороженный") идентификатор транзакции в этой базе данных. Используется для отслеживания того, должна ли база данных быть очищена для предотвращения "оборачивания" идентификатора транзакции или для разрешения уменьшения pg_xact. Это минимальное значение pg_class.relfrozenxid для каждой таблицы. | |
datminmxid | xid | Все идентификаторы multixact перед этим были заменены на постоянный (”замороженный") идентификатор транзакции в этой базе данных. Используется для отслеживания того, должна ли база данных быть очищена для предотвращения "оборачивания" multixact или для разрешения уменьшения pg_multixact. Это минимальное значение pg_class.relminmxid для каждой таблицы. | |
dattablespace | oid | pg_tablespace.oid | Табличное пространство по умолчанию для этой базы данных. Если в пределах этой базы данных pg_class.reltablespace - NULL там будут находиться все общие системные каталоги |
datacl | aclitem[] | Права доступа- смотрите раздел Привилегии для получения дополнительной информации |
pg_db_role_setting
Каталог pg_db_role_setting хранит значения по умолчанию, заданные для переменных конфигурации времени выполнения, для каждой комбинации роли и базы данных.
В отличие от большинства системных каталогов, pg_db_role_setting является общим для всех баз данных кластера: существует только одна копия pg_db_role_setting на кластер, а не по одному на каждую базу данных.
pg_db_role_setting столбцы
Имя | Тип | Ссылки | Описание |
---|---|---|---|
setdatabase | oid | pg_database.oid | OID базы данных, к которой применяется этот параметр, или NULL, если он не относится к конкретной базе данных |
setrole | oid | pg_authid.oid | OID роли, к которой применяется этот параметр, или NULL, если он не относится к конкретной роли |
setconfig | text[] | Значения по умолчанию для переменных конфигурации времени выполнения |
pg_default_acl
Каталог pg_default_acl сохраняет начальные привилегии, назначаемые вновь созданным объектам.
pg_default_acl столбцы
Имя | Тип | Ссылки | Описание |
---|---|---|---|
oid | oid | Идентификатор строки | |
defaclrole | oid | pg_authid.oid | OID роли, связанной с этой записью |
defaclnamespace | oid | pg_namespace.oid | OID пространства имен, связанного с этой записью, или 0 для глобальной записи |
defaclobjtype | char | Тип объекта для которого эта запись предназначена для: r = отношение (таблица, представление), S = последовательность, f = функция, T = тип, n = схема | |
defaclacl | aclitem[] | Права доступа, которые этот тип объекта должен иметь при создании |
Одна запись в 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 столбцы
Имя | Тип | Ссылки | Описание |
---|---|---|---|
classid | oid | pg_class.oid | OID системного каталога, в котором находится зависимый объект |
objid | oid | OID для любого столбца | OID конкретного зависимого объекта |
objsubid | int4 | Для столбца таблицы это номер столбца (objid и classid задают саму таблицу). Для всех других типов объектов этот столбец равен нулю. | |
refclassid | oid | pg_class.oid | OID системного каталога, в котором находится объект ссылки |
refobjid | oid | OID для любого столбца | OID конкретного объекта ссылки |
refobjsubid | int4 | Для столбца таблицы это номер столбца (refobjid и refclassid задают саму таблицу). Для всех других типов объектов этот столбец равен нулю. | |
deptype | char | Код, определяющий конкретную семантику этого отношения зависимости | |
Во всех случаях 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 столбцы
Имя | Тип | Ссылки | Описание |
---|---|---|---|
objoid | oid | OID для любого столбца | OID объекта, к которому относится данное описание |
classoid | oid | pg_class.oid | Идентификатор OID системного каталога, в котором отображается этот объект |
objsubid | int4 | Для комментария к столбцу таблицы это номер столбца (objoid и classoid задают таблицу). Для всех других типов объектов этот столбец равен нулю. | |
description | text | Произвольный текст, который служит необязательным описанием (комментарием) данного объекта |
pg_enum
Каталог pg_enum содержит записи, показывающие значения и текстовые метки для каждого типа enum. Внутренним представлением значения enum фактически является OID связанной строки в pg_enum.
pg_enum столбцы
Имя | Тип | Ссылки | Описание |
---|---|---|---|
oid | oid | Идентификатор строки | |
enumtypid | oid | pg_type.oid | OID записи в pg_type владеющей этим значением enum |
enumsortorder | float4 | Положение сортировки этого значения enum в пределах его типа enum | |
enumlabel | name | Текстовая метка для этого перечисления значения |
OIDs для pg_enum строки следуют специальному правилу: четные OID гарантированно упорядочиваются таким же образом, как и порядок сортировки их типа enum. То есть, если два четных OID принадлежат к одному и тому же типу перечисления, меньший OID должен иметь меньший размер enumsortorder значение. Нечетные значения OID не должны иметь никакого отношения к порядку сортировки. Это правило позволяет подпрограммам сравнения перечислений избегать поиска в каталоге во многих распространенных случаях. Подпрограммы, которые создают и изменяют типы перечислений, пытаются назначить чётный OID для значений перечисления, когда это возможно.
При создании типа перечисления его членам присваиваются позиции порядка
сортировки 1..n
. Но элементы, добавленные позже, могут иметь
отрицательные или дробные значения enumsortorder. Единственное
требование к этим значениям состоит в том, чтобы они были правильно
упорядочены и уникальны в каждом типе перечисления.
pg_event_trigger
Каталог pg_event_trigger хранит триггеры событий БД.
pg_event_trigger столбцы
Имя | Тип | Ссылки | Описание |
---|---|---|---|
evtname | name | Имя триггера (должно быть уникальным) | |
evtevent | name | Определяет событие, для которого срабатывает этот триггер | |
evtowner | oid | pg_authid.oid | Владелец триггера события |
evtfoid | oid | pg_proc.oid | Вызываемая функция |
evtenabled | char | Задаёт режимы session_replication_role в которых срабатывает триггер события. О = триггер срабатывает в режимах origin и local, D = триггер отключен, R = триггер срабатывает в режиме replica, A = триггер срабатывает всегда. | |
evttags | text[] | Метки команд, для которых этот триггер будет срабатывать. Если NULL, то запуск этого триггера не ограничен тегом команды. |
pg_extension
Каталог pg_extension сохраняет информацию об установленных расширениях. Смотрите раздел Упаковка связанных объектов в расширение для получения подробной информации о расширениях.
pg_extension столбцы
Имя | Тип | Ссылки | Описание |
---|---|---|---|
oid | oid | Идентификатор строки | |
extname | name | Имя расширения | |
extowner | oid | pg_authid.oid | Владелец расширения |
extnamespace | oid | pg_namespace.oid | Схема, содержащая экспортируемые объекты расширения |
extrelocatable | bool | True, если расширение можно переместить в другую схему | |
extversion | text | Имя версии для расширения | |
extconfig | oid[] | pg_class.oid | Массив из regclass OID для таблиц конфигурации расширения, или NULL если у расширения нет таблиц |
extcondition | text[] | Массив для условия фильтра WHERE предложений для таблиц конфигурации расширения, или NULL если условий нет |
Обратите внимание, что в отличие от большинства каталогов со столбцами namespace, extnamespace их наличие в этом каталоге не означает, что расширение принадлежит к этой схеме. Имена расширений никогда не определяются схемой. Скорее, extnamespace указывает схему, содержащую большинство или все объекты расширения. Если extrelocatable true, тогда эта схема должна содержать все объекты, принадлежащие расширению.
pg_foreign_data_wrapper
Каталог pg_foreign_data_wrapper сохраняет определения внешних данных. Внешние данные - это механизм, с помощью которого осуществляется доступ к данным находящимся на внешних серверах.
pg_foreign_data_wrapper столбцы
Имя | Тип | Ссылки | Описание |
---|---|---|---|
oid | oid | Идентификатор строки | |
fdwname | name | Имя источника внешних данных | |
fdwowner | oid | pg_authid.oid | Владелец источника внешних данных |
fdwhandler | oid | pg_proc.oid | Ссылается на функцию обработчика, которая отвечает за предоставление подпрограмм для обработки внешних данных. Ноль, если обработчик не предусмотрен |
fdwvalidator | oid | pg_proc.oid | Ссылается на функцию валидатора, которая отвечает за проверку правильности параметров, заданных вне СУБД, а также параметров для внешних серверов и сопоставлений пользователей, использующих внешние данные. Ноль, если валидатор не предусмотрен |
fdwacl | aclitem[] | Права доступа; смотрите раздел Привилегии для получения дополнительной информации | |
fdwoptions | text[] | Конкретные параметры внешних данных, в виде строки "ключ=значение" |
pg_foreign_server
Каталог pg_foreign_server сохраняет определения внешних серверов. Внешний сервер описывает источник внешних данных, например удаленный сервер. Доступ к внешним серверам осуществляется через foreign_data_wrapper.
pg_foreign_server столбцы
Имя | Тип | Ссылки | Описание |
---|---|---|---|
oid | oid | Идентификатор строки | |
srvname | name | Имя внешнего сервера | |
srvowner | oid | pg_authid.oid | Владелец внешнего сервера |
srvfdw | oid | pg_foreign_data_wrapper.oid | OID foreign_data_wrapper этого внешнего сервера |
srvtype | text | Тип сервера (необязательно) | |
srvversion | text | Версия сервера (необязательно) | |
srvacl | aclitem[] | Права доступа - смотрите раздел Привилегии для получения дополнительной информации | |
srvoptions | text[] | Конкретные параметры внешнего сервера, в виде строки "ключ=значение" |
pg_foreign_table
Каталог pg_foreign_table содержит дополнительную информацию о внешних таблицах. Внешняя таблица в основном представлена в каталоге pg_class, как обычная таблица. Запись соответствующая ей в pg_foreign_table содержит информацию, относящуюся только к внешним таблицам, а не к какому-либо другому виду связи.
pg_foreign_table столбцы
Имя | Тип | Ссылки | Описание |
---|---|---|---|
ftrelid | oid | pg_class.oid | OID записи из pg_class для этой внешней таблицы |
ftserver | oid | pg_foreign_server.oid | OID внешнего сервера для этой внешней таблицы |
ftoptions | text[] | Параметры внешней таблицы, в виде строки "ключ=значение" |
pg_index
Каталог pg_index содержит часть информации об индексах. Остальное - в основном каталоге pg_class.
pg_index столбцы
Имя | Тип | Ссылки | Описание |
---|---|---|---|
indexrelid | oid | pg_class.oid | OID записи из pg_class для этого индекса |
indrelid | oid | pg_class.oid | OID записи pg_class таблицы для которой индекс предназначен |
indnatts | int2 | Общее количество столбцов в индексе (повторяет pg_class.relnatts) это число включает в себя как ключевые, так и включенные атрибуты | |
indnkeyatts | int2 | Количество ключевых столбцов в индексе, не считая каких-либо включенных столбцов, которые просто хранятся и не участвуют в семантике индекса | |
indisunique | bool | Если true, то это уникальный индекс | |
indisprimary | bool | Если true, то этот индекс представляет собой первичный ключ таблицы (indisunique в этом случае должно быть true) | |
indisexclusion | bool | Если значение true, то этот индекс поддерживает ограничение исключения | |
indimmediate | bool | Если true, то проверка уникальности применяется сразу после вставки (не имеет значения, если indisunique false) | |
indisclustered | bool | Если true, то таблица была кластеризованной по этому индексу | |
indisvalid | bool | Если значение true, то индекс в настоящее время является допустимым для запросов. False означает, что индекс может быть неполным: и еще должен быть изменен с помощью операций вставки / обновления, но он не может безопасно использоваться для запросов. Если он обозначен как уникальный, свойство уникальности также не гарантируется. | |
indcheckxmin | bool | Если значение true, запросы не должны использовать индекс до тех пор, пока поле xmin находится ниже их горизонта событий (TransactionXmin) , поскольку таблица может содержать разорванные HOT цепочки с несовместимыми строками, которые запросы могут видеть | |
indisready | bool | Если true, то индекс в настоящее время готов к вставкам. False означает, что индекс должен быть проигнорирован операциями вставки / обновления. | |
indislive | bool | Если значение false, индекс находится в процессе удаления и должен игнорироваться при любой попытке использования (включая использования в HOT цепочках) | |
indisreplident | bool | Если true, то этот индекс был выбран в качестве "идентификатора реплики" с помощью команд ALTER TABLE ... REPLICA IDENTITY USING INDEX ... | |
indkey | int2vector | pg_attribute.attnum | Массив из значений indnatts, указывающий, на столбцы таблицы которые этот индекс обрабатывает. Например, значение параметра 1 3 означает, что первый и третий столбцы таблицы составляют записи индекса. Ключевые столбцы предшествуют неключевым (включенным) столбцам. Ноль в этом массиве указывает, что соответствующий атрибут индекса является выражением над столбцами таблицы, а не просто ссылкой на столбец. |
indcollation | oidvector | pg_collation.oid | Для каждого столбца в ключе индекса (indnkeyatts values),содержит OID параметров сортировки, используемых для индекса,или ноль, если столбец не является типом данных с возможностью сортировки. |
indclass | oidvector | pg_opclass.oid | Для каждого столбца в ключе индекса (indnkeyatts values), содержит OID класса оператора для использования. Смотрите дополнительную информацию в разделе pg_opclass. |
indoption | int2vector | Массив из indnkeyatts значений, хранящие биты флагов для каждого столбца. Значение битов определяется методом доступа индекса. | |
indexprs | pg_node_tree | Деревья выражений (nodeToString() представление) для атрибутов индекса, которые не являются простыми ссылками на столбец. Это список с одним элементом для каждой нулевой записи в indkey. Null, если все атрибуты индекса являются простыми ссылками. | |
indpred | pg_node_tree | Дерево выражений (nodeToString() представление) для частичного индексного предиката. Null, если не является частичным индексом. |
pg_inherits
Каталог pg_inherits записывает информацию об иерархиях наследования таблиц. Существует одна запись для каждой прямой связи родительской и дочерней таблиц в базе данных. (Косвенное наследование может быть определено цепочками записей.)
pg_inherits столбцы
Имя | Тип | Ссылки | Описание |
---|---|---|---|
inhrelid | oid | pg_class.oid | OID дочерней таблицы |
inparent | oid | pg_class.oid | OID родительской таблицы |
inhseqno | int4 | Если для дочерней таблицы существует более одного прямого родителя (множественное наследование), это число указывает порядок, в котором должны быть упорядочены наследуемые столбцы. Отсчет начинается с 1. |
pg_init_privs
Каталог pg_init_privs записывает информацию о начальных привилегиях объектов в системе. Существует одна запись для каждого объекта в базе данных, имеющего начальный набор привилегий отличных от привилегий по умолчанию (не-NULL).
Объекты могут иметь начальные привилегии, задавая эти привилегии при инициализации системы (с помощью qhb_bootstrap) или при создании объекта при выполнении CREATE EXTENSION, а сценарий расширения устанавливает начальные привилегии с помощью системы предоставления привилегий (GRANT). Обратите внимание, что система автоматически обрабатывает запись привилегий во время сценария расширения и что авторам расширения нужно только использовать инструкции GRANT и REVOKE в своем сценарии, чтобы иметь записанные привилегии. Столбец privtype указывает, была ли начальная привилегия установлена qhb_bootstrap или во время выполнения команды CREATE EXTENSION.
Объекты, которые имеют начальные привилегии, установленные qhb_bootstrap
, будут
иметь записи, где privtype помечается как i, в то время как объекты,
которые имеют начальные привилегии, установленные при помощи CREATE EXTENSION,
будут помечаться как e.
pg_init_privs столбцы
Имя | Тип | Ссылки | Описание |
---|---|---|---|
objoid | oid | OID для любого столбца | OID конкретного объекта |
classoid | oid | pg_class.oid | OID системного каталога, в котором находится объект |
objsubid | int4 | Для столбца таблицы это номер столбца (objoid и classoid заданы от самой таблицы). Для всех других типов объектов этот столбец равен нулю. | |
privtype | char | Код, определяющий тип начальной привилегии этого объекта - i или e | |
initprivs | aclitem[] | Начальные права доступа - смотрите раздел Привилегии для получения дополнительной информации |
pg_language
Каталог pg_language регистрирует языки, на которых можно писать функции или хранимые процедуры. Дополнительную информацию об обработчиках языка смотрите в разделе CREATE LANGUAGE.
pg_language столбцы
Имя | Тип | Ссылки | Описание |
---|---|---|---|
oid | oid | Идентификатор строки | |
lanname | name | Название языка | |
lanowner | oid | pg_authid.oid | Владелец языка |
lanispl | bool | Это значение false для внутренних языков (таких как SQL) и true для пользовательских языков. В настоящее время qhb_dump все еще использует это, чтобы определить, какие языки должны быть сохранены, Но это может быть заменено другим механизмом в будущем. | |
lanplusted | bool | True, если это доверенный язык, пердполагается, что он, не предоставляет доступ к чему-либо за пределами обычной среды выполнения SQL. Только суперпользователи могут создавать функции на ненадежных языках. | |
lanplcallfoid | oid | pg_proc.oid | Для языков не использующих внутренние механизмы это ссылка на обработчик языка - специальную функцию, ответственную за выполнение всех предложений, написанных на определенном языке |
laninline | oid | pg_proc.oid | Ссылка на функцию, которая отвечает за выполнение “встроенных” анонимных блоков кода ( DO блоков). Ноль, если анонимные блоки не поддерживаются. |
lanvalidator | oid | pg_proc.oid | Ссылка на функцию-валидатор языка, которая отвечает за проверку синтаксиса и валидности новых функций при их создании. Ноль, если валидатор не предусмотрен. |
lanacl | aclitem[] | Права доступа - смотрите раздел Привилегии для получения дополнительной информации |
pg_largeobject
Каталог pg_largeobject
содержит данные, составляющие "большие объекты".
Большой объект идентифицируется OID, назначенным при его создании.
Каждый большой объект разбивается на сегменты или "страницы" достаточно
маленькие, чтобы удобно хранить их в виде строк внутри pg_largeobject
.
Количество данных на странице определяется как LOBLKSIZE (который в
настоящее время BLCKSZ / 4, или обычно 2 кб).
Для получения списка OID больших объектов используйте pg_largeobject_metadata.
pg_largeobject столбцы
Имя | Тип | Ссылки | Описание |
---|---|---|---|
loid | oid | pg_largeobject_metadata.oid | Идентификатор большого объекта, включающий страницу |
pageno | int4 | Номер страницы в пределах ее большого объекта (отсчет от нуля) | |
data | bytea | Фактические данные, хранящиеся в большом объекте. Никогда не будет больше, чем LOBLKSIZE байт а может быть и меньше. |
Каждая строка из pg_largeobject содержит данные для одной страницы большого объекта, начиная со смещения в байтах (pageno * LOBLKSIZE) внутри объекта. Реализация позволяет использовать разреженное хранилище: страницы могут отсутствовать и быть короче, чем LOBLKSIZE байты, даже если они не являются последней страницей объекта. Отсутствующие области внутри большого объекта считываются как нули.
pg_largeobject_metadata
Каталог pg_largeobject_metadata содержит метаданные, связанные с большими объектами. Фактические данные большого объекта хранятся в pg_largeobject.
pg_largeobject_metadata столбцы
Имя | Тип | Ссылки | Описание |
---|---|---|---|
oid | oid | Идентификатор строки | |
lomowner | oid | pg_authid.oid | Владелец большого объекта |
lomacl | aclitem[] | Права доступа; смотрите раздел Привилегии для получения дополнительной информации |
pg_namespace
Каталог pg_namespace хранит пространства имен. Пространство имен-это структура, лежащая в основе схем SQL - каждое пространство имен может иметь отдельную коллекцию отношений, типов и т. д.
pg_namespace столбцы
Имя | Тип | Ссылки | Описание |
---|---|---|---|
oid | oid | Идентификатор строки | |
nspname | name | Имя пространства имен | |
nspowner | oid | pg_authid.oid | Владелец пространства имен |
nspacl | aclitem[] | Права доступа; смотрите раздел Привилегии для получения дополнительной информации |
pg_opclass
Каталог pg_opclass определяет классы операторов метода доступа к индексу. Каждый класс операторов определяет семантику для индексных столбцов определенного типа данных и конкретного метода доступа к индексам. Класс оператора по существу определяет, что определенное семейство операторов применимо к определенному типу данных индексируемого столбца. Набор операторов из семейства, которые фактически используются с индексированным столбцом, являются теми, которые принимают тип данных столбца в качестве их аргумента.
Классы операторов подробно описаны в разделе Расширения для индексов.
pg_opclass столбцы
Имя | Тип | Ссылки | Описание |
---|---|---|---|
oid | oid | Идентификатор строки | |
opcmethod | oid | pg_am.oid | Класс оператора для метода индексного доступа |
opcname | name | Имя класса оператора | |
opcnamespace | oid | pg_namespace.oid | Пространство имен класса оператора |
opcowner | oid | pg_authid.oid | Владелец класса оператора |
opcfamily | oid | pg_opfamily.oid | Семейство операторов, содержащее класс оператора |
opcintype | oid | pg_type.oid | Тип данных, который индексирует класс оператора |
opcdefault | bool | True, если этот класс оператора является значением по умолчанию для opcintype | |
opckeytype | oid | pg_type.oid | Тип данных, хранящихся в индексе, или ноль, если он совпадает с opcintype |
Класс оператора должен соответствовать opfmethod содержащего его семейства операторов. Кроме того, должно быть не более одной строки в pg_opclass у которой opcdefault true для любой заданной комбинации opcmethod и opcintype.
pg_operator
Каталог pg_operator хранит информацию об операторах. Дополнительную информацию смотрите в разделах CREATE OPERATOR и Пользовательские операторы.
pg_operator столбцы
Имя | Тип | Ссылки | Описание |
---|---|---|---|
oid | oid | Идентификатор строки | |
oprname | name | Наименование оператора | |
oprnamespace | oid | pg_namespace.oid | OID пространства имен, содержащего этот оператор |
oprowner | oid | pg_authid.oid | Владелец оператора |
oprkind | char | b = инфикс ("оба”), l = префикс ("слева”), r = постфикс ("справа”) | |
oprcanmerge | bool | Этот оператор поддерживает объединения слиянием | |
oprcanhash | bool | Этот оператор поддерживает хэш-соединения | |
oprleft | oid | pg_type.oid | Тип левого операнда |
oprright | oid | pg_type.oid | Тип правого операнда |
oprresult | oid | pg_type.oid | Тип результата |
oprcom | oid | pg_operator.oid | Коммутатор оператора этого типа, если таковой имеется |
oprnegate | oid | pg_operator.oid | Отрицание оператора этого типа, если таковое имеется |
oprcode | regproc | pg_proc.oid | Функция, реализующая этот оператор |
oprrest | regproc | pg_proc.oid | Функция оценки селективности ограничения для данного оператора |
oprjoin | regproc | pg_proc.oid | Функция оценки селективности соединения для этого оператора |
Неиспользуемые столбцы содержат нули. Например, oprleft равно нулю для префиксного оператора.
pg_opfamily
Каталог pg_opfamily определяет семейства операторов. Каждое семейство операторов представляет собой набор операторов и связанных с ними основных процедур, реализующих семантику, заданную для конкретного метода доступа к индексу. Кроме того, операторы в семействе все “совместимы”, тем способом, который определяет метод доступа. Концепция семейства операторов позволяет использовать операторы разного типа с индексами и использовать знания о семантике метода доступа.
Семейства операторов подробно описаны в разделе Расширения для индексов.
pg_opfamily столбцы
Имя | Тип | Ссылки | Описание |
---|---|---|---|
oid | oid | Идентификатор строки | |
opfmethod | oid | pg_am.oid | Метода индексного доступа для которго предназначено семейство операторов |
opfname | name | Имя этого семейства операторов | |
opfnamespace | oid | pg_namespace.oid | Пространство имен этого семейства операторов |
opfowner | oid | pg_authid.oid | Владелец семейства операторов |
Большая часть информации, определяющей семейство операторов, не входит в pg_opfamily, а находится в связанных строках в pg_amop, pg_amproc и pg_opclass.
pg_partitioned_table
Каталог pg_partitioned_table хранит информацию о способе партиционирования таблиц.
pg_partitioned_table столбцы
Имя | Тип | Ссылки | Описание |
---|---|---|---|
partrelid | oid | pg_class.oid | OID партиционированой таблицы, запись из pg_class |
partstrat | char | Стратегия партиционирования; h = хэш партиционирование, l = партиционирование по списку, r = партиционирование по диапазону | |
partnatts | int2 | Количество столбцов в ключе партиции | |
partdefid | oid | pg_class.oid | OID из pg_class для партиции по умолчанию этой партиционированой таблицы или ноль, если эта партиционированная таблица не имеет партиции по умолчанию. |
partattrs | int2vector | pg_attribute.attnum | Массив из значений partnatts , указывающий, какие столбцы таблицы являются частью ключа партиции. Например, значение параметра 1 3 означает, что первый и третий столбцы таблицы составляют ключ партиции. Ноль в этом массиве указывает, что соответствующий столбец ключа партиции является выражением, а не простой ссылкой на столбец. |
partclass | oidvector | pg_opclass.oid | Для каждого столбца в ключе партиционирования содержит OID класса оператора для использования. Смотрите дополнительную информацию в разделе pg_opclass. |
partcollation | oidvector | pg_opclass.oid | Для каждого столбца в ключе партиционирования содержит OID параметров сортировки, используемых для партиционирования, или ноль, если столбец не является типом данных с возможностью сортировки. |
partexprs | pg_node_tree | Деревья выражений (nodeToString() представление) для столбцов ключа партиции, которые не являются простыми ссылками на столбцы. Это список с одним элементом для каждой нулевой записи в partattrs. Null, если все столбцы ключа партиции являются простыми ссылками. |
pg_pltemplate
Каталог pg_pltemplate хранит информацию о "шаблоне" для процедурных языков. Шаблон для языка позволяет создать язык в конкретной базе данных с помощью простой команды CREATE LANGUAGE, без необходимости указывать детали реализации.
В отличие от большинства системных каталогов, pg_pltemplate является общим для всех баз данных кластера: существует только одна копия pg_pltemplate на кластер, а не по одному на каждую базу данных. Это позволяет получить доступ к информации в каждой базе данных по мере необходимости.
pg_pltemplate столбцы
Имя | Тип | Описание |
---|---|---|
tmplname | name | Название языка для которого предназначен данный шаблон |
tmpltrusted | boolean | True, если язык считается доверенным |
tmpldbacreate | boolean | True, если язык может быть создан владельцем базы данных |
tmplhandler | text | Имя функции обработчика вызовов |
tmplinline | text | Имя функции обработчика анонимных блоков или null, если анонимных блоков нет |
tmplvalidator | text | Имя функции валидатора, или null, если валидатора нет |
tmpllibrary | text | Путь к разделяемой библиотеке, реализующей язык |
tmplacl | aclitem[] | Права доступа для шаблона (фактически не используется) |
В настоящее время нет никаких команд, которые управляют шаблонами процедурного языка; чтобы изменить встроенную информацию, суперпользователь должен изменить таблицу с помощью обычных команд INSERT, DELETE или UPDATE.
Примечание!!!
Вполне вероятно, что pg_pltemplate будет удален в некоторых будущих выпусках QHB, в пользу сохранения этих знаний о процедурных языках в их соответствующих сценариях установки расширений.
pg_policy
Каталог pg_policy сохраняет политики безопасности на уровне строк для таблиц. Политика включает тип команды, к которой она применяется (возможно, все команды), роли, к которым она применяется, выражение, которое должно быть добавлено в качестве квалификационного барьера безопасности к запросам, включающим таблицу, и выражение, которое должно быть добавлено в опцию WITH CHECK для запросов, которые пытаются добавить новые записи в таблицу.
pg_policy столбцы
Имя | Тип | Ссылки | Описание |
---|---|---|---|
polname | name | Название политики | |
polrelid | oid | pg_class.oid | Таблица, к которой применяется политика |
polcmd | char | Тип команды, к которой применяется политика: r для SELECT, a для INSERT, w для UPDATE, d для DELETE, или * для всех | |
polpermissive | boolean | Является ли эта политика разрешительной или ограничительной? | |
polroles | oid[] | pg_authid.oid | Роли, к которым применяется политика |
polqual | pg_node_tree | Дерево выражений, добавляемое к квалификациям барьеров безопасности для запросов, использующих таблицу | |
polwithcheck | pg_node_tree | Дерево выражений, которое будет добавлено в квалификацию WITH CHECK для запросов, пытающихся добавить строки в таблицу |
Примечание!!!
Политики, хранящиеся в pg_policy применяются только тогда, когда pg_class.relrowsecurity установлено для соот. таблицы.
pg_proc
Каталог pg_proc хранит информацию о функциях, процедурах, агрегатных функциях и оконных функциях (в совокупности также известных как подпрограммы). Дополнительную информацию смотрите в разделах CREATE FUNCTION, CREATE PROCEDURE и Пользовательские функции.
Если prokind указывает, что запись предназначена для агрегатной функции, в ней должна быть соответствующая строка из pg_aggregate.
pg_proc столбцы
Имя | Тип | Ссылки | Описание |
---|---|---|---|
oid | oid | Идентификатор строки | |
proname | name | Имя функции | |
pronamespace | oid | pg_namespace.oid | OID пространства имен, содержащего эту функцию |
proowner | oid | pg_authid.oid | Владелец функции |
prolang | oid | pg_language.oid | Язык реализации или интерфейс вызова этой функции |
procost | float4 | Расчетная стоимость исполнения (в единицах cpu_operator_cost ), если установлен признак proretset, это стоимость за одну возвращенную строку | |
prorows | float4 | Предполагаемое количество строк результатов (ноль, если не задан proretset) | |
provariadic | oid | pg_type.oid | Тип данных элементов масива параметров переменной длинны, либо ноль, если функция не имеет переменного числа параметров |
prosupport | regproc | pg_proc.oid | Дополнительная функция поддержки планировщика для этой функции (см. раздел Оптимизация функций) |
prokind | char | f для нормальной функции, p для процедуры, a для агрегатной функции, или w для оконной функции | |
prosecdef | bool | Функция- определитель контекста безопасности (т. е. функция "setuid") | |
proleakproof | bool | Функция не имеет никаких побочных эффектов. Никакая информация о аргументах не передается, иначе чем через возвращаемое значение. Любая функция, которая может вызвать ошибку в зависимости от значений ее аргументов, не является герметичной. | |
proisstrict | bool | Функция возвращает значение null, если любой аргумент вызова имеет значение null. В этом случае функция по факту не будет вызвана вообще. Функции, которые не являются "строгими"(strict), должны быть подготовлены для обработки нулевых входных данных. | |
proretset | bool | Функция возвращает набор (т. е. несколько значений указанного типа данных) | |
provolatile | char | provolatile указывает, зависит ли результат функции только от ее входных аргументов или на него влияют внешние факторы. Для "неизменяемых" функций , которые всегда дают один и тот же результат для одних и тех же входных данных устанавливается значение i. Для "стабильных" функций, результаты которых (для фиксированных входных аргументов) не изменяются в пределах сканирования устанавливается значение s. Для "изменчивых" (volatile) функций, результаты которых могут измениться в любое время устанавливается значение v. (Также v используется для функций с побочными эффектами, так их вызовы не могут быть исключены в процессе оптимизации.) | |
proparallel | char | Указывает, можно ли безопасно запускать функцию в параллельном режиме. Для функций, которые безопасно запускать в параллельном режиме без ограничений устанавливается значение s.Для функций, которые могут выполняться в параллельном режиме, но их выполнение ограничено процессом - параллельные рабочие процессы не могут вызывать эти функции устанавливается значение r. Для функций, которые небезопасны в параллельном режиме устанавливается значение u - наличие такой функции заставляет оптимизатор строить план последовательного выполнения. | |
pronargs | int2 | Количество входных аргументов | |
pronargdefaults | int2 | Количество аргументов, имеющих значения по умолчанию | |
prorettype | oid | pg_type.oid | Тип данных возвращаемого значения |
proargtypes | oidvector | pg_type.oid | Массив с типами данных аргументов функции. Включает только входные аргументы (включая INOUT и VARIADIC Аргументы), и таким образом представляет сигнатуру вызова функции. |
proallargtypes | oid[] | pg_type.oid | Массив с типами данных аргументов функции. Включает в себя все аргументы (в том числе IN и INOUT аргументы), однако, если все аргументы являются IN, это поле будет иметь значение null. Обратите внимание, что индексация массива обычно начинается с 1, тогда как по историческим причинам proargtypes индексируется от 0. |
proargmodes | char[] | Массив с режимами аргументов функции, закодированными как i для IN аргументов, о для OUT аргументы, b для INOUT аргументов, v для VARIADIC аргументов, t для TABLE аргументов. Если все аргументы это IN аргументы, это поле будет иметь значение null. Обратите внимание, что индексы соответствуют позициям proallargtypes нет proargtypes. | |
proargnames | text[] | Массив с именами аргументов функции. Аргументы без имени представляют собой пустые строки в массиве. Если ни один из аргументов не имеет имени, это поле будет иметь значение null. Обратите внимание, что индексы соответствуют позициям proallargtypes но не proargtypes. | |
proargdefaults | pg_node_tree | Деревья выражений (nodeToString() представление) для значений по умолчанию. Это список pronargdefaults элементов, соответствующих последнему N входным аргументам (т. е. последним N позициям в proargtypes). Если ни один из аргументов не имеет значений по умолчанию, это поле будет иметь значение null. | |
protrftypes | oid[] | Типы OID данных, для которых необходимо применить преобразования. | |
prosrc | text | Способ вызвать функцию. Может быть фактический исходный код функции для интерпретируемых языков, символ ссылки, имя файла или почти все остальное, в зависимости от языка и реализации/соглашения о вызове. | |
probin | text | Дополнительная информация о том, как вызвать эту функцию. Интерпретация зависит от языка. | |
proconfig | text[] | Локальные настройки функции для переменных конфигурации времени выполнения | |
proacl | aclitem[] | Права доступа; смотрите раздел Привилегии для получения дополнительной информации |
Для скомпилированных функций, как встроенных, так и динамически загружаемых, prosrc содержит имя функции на языке C (объектную ссылку). Для всех других известных на данный момент типов языков, prosrc содержит исходный текст функции. probin не используется, за исключением динамически загружаемых функций C/RUST, для которых он дает имя файла общей библиотеки, содержащего функцию.
pg_publication
Каталог pg_publication содержит все публикации для логической репликации, созданные в базе данных.
pg_publication столбцы
Имя | Тип | Ссылки | Описание |
---|---|---|---|
oid | oid | Идентификатор строки | |
pubname | name | Название публикации | |
pubname | oid | pg_authid.oid | Владелец публикации |
puballtables | bool | Если задано значение true, эта публикация автоматически включает все таблицы в базе данных включая те которые созданы в будущем. | |
pubinsert | bool | При значении true операции вставки реплицируются для таблиц в публикации. | |
pubupdate | bool | При значении true операции обновления реплицируются для таблиц в публикации. | |
pubdelete | bool | При значении true операции удаления реплицируются для таблиц в публикации. | |
pubtruncate | bool | Если задано значение true, то операции truncate реплицируются для таблиц в публикации. |
pg_publication_rel
Каталог pg_publication_rel
содержит сопоставление между отношениями и
публикациями в базе данных в виде отображения многие-ко-многим. Смотрите
также раздел pg_publication_tables для более удобного просмотра этой информации.
pg_publication_rel столбцы
Имя | Тип | Ссылки | Описание |
---|---|---|---|
prpubid | oid | pg_publication.oid | Ссылка на публикацию |
prrelid | oid | pg_class.oid | Ссылка на связь |
pg_range
Каталог pg_range хранит информацию о типах диапазона в дополнение к записям типов в pg_type.
pg_range столбцы
Имя | Тип | Ссылки | Описание |
---|---|---|---|
rngtypid | oid | pg_type.oid | OID типа диапазона |
rngsubtype | oid | pg_type.oid | OID типа элемента (подтипа) данного типа диапазона |
rngcollation | oid | pg_collation.oid | OID параметров сортировки, используемых для сравнения диапазонов, или 0, если нет |
rngsubopc | oid | pg_opclass.oid | OID класса оператора подтипа, используемого для сравнения диапазонов |
rngcanonic | regproc | pg_proc.oid | OID функции для преобразования значения диапазона в каноническую форму или 0, если нет |
rngsubdiff | regproc | pg_proc.oid | OID функции для возврата разницы между двумя значениями элементов в виде двойная точность, или 0, если нет |
rngsubopc (плюс rngcollation, если тип элемента является collatable) определяет порядок сортировки, используемый типом диапазона. rngcanonic используется, когда тип элемента является дискретным. rngsubdiff является необязательным, но может задаваться для повышения производительности индексов GiST по типу диапазона.
pg_replication_origin
Каталог pg_replication_origin содержит все созданные источники репликации. Дополнительные сведения об источниках репликации.
В отличие от большинства системных каталогов, pg_replication_origin является общим для всех баз данных кластера: существует только одна копия pg_replication_origin на кластер, а не по одному на каждую базу данных.
pg_replication_origin столбцы
Имя | Тип | Ссылки | Описание |
---|---|---|---|
roident | oid | Уникальный кластерный идентификатор источника репликации. Никогда должен выходить за границы системы. | |
roname | text | Внешнее, определяемое пользователем, имя источника репликации. |
pg_rewrite
Каталог pg_rewrite хранит правила перезаписи для таблиц и представлений.
pg_rewrite столбцы
Имя | Тип | Ссылки | Описание |
---|---|---|---|
oid | oid | Идентификатор строки | |
rulename | name | Имя правила | |
ev_class | oid | pg_class.oid | Таблица для которой предназначено это правило |
ev_type | char | Тип события, для которого используется правило: 1 = SELECT, 2 = UPDATE, 3 = INSERT, 4 = DELETE | |
ev_enabled | char | Элементы управления, в которых срабатывает правило режимы session_replication_role. О = правило срабатывает в режимах origin и local, D = правило отключено, R = правило срабатывает в режиме replica, A = правило срабатывает всегда. | |
is_instead | bool | True, если правило INSTEAD | |
ev_qual | pg_node_tree | Дерево выражений (nodeToString() представление) для квалификационного условия правила | |
ev_action | pg_node_tree | Дерево запросов (nodeToString() представление) для действия правила |
Примечание!!!
pg_class.relhasrules должно быть true, если таблица имеет какие-либо правила в этом каталоге.
pg_seclabel
Каталог pg_seclabel сохраняет метки безопасности на объектах базы данных. Метками безопасности можно управлять с помощью команды SECURITY LABEL. Для более простого способа просмотра меток безопасности см. раздел pg_seclabels, а также раздел pg_shseclabel, который содержит аналогичную информацию для меток безопасности объектов базы данных, совместно используемых в кластере баз данных.
pg_seclabel столбцы
Имя | Тип | Ссылки | Описание |
---|---|---|---|
objoid | oid | OID для любого столбца | OID объекта, к которому относится эта метка безопасности |
classoid | oid | pg_class.oid | Идентификатор OID системного каталога, в котором отображается этот объект |
objsubid | int4 | Для метки безопасности в столбце таблицы это номер столбца (в этом случае objoid и classoid определяют саму таблицу). Для всех других типов объектов этот столбец равен нулю. | |
provider | text | Поставщик меток безопасности, связанный с этой меткой. | |
label | text | Метка безопасности, применяемая к этому объекту. |
pg_sequence
Каталог pg_sequence содержит информацию о последовательностях (sequence). Некоторые сведения о последовательностях, такие как имя и схема, находятся в разделе pg_class.
pg_sequence столбцы
Имя | Тип | Ссылки | Описание |
---|---|---|---|
seqrelid | oid | pg_class.oid | OID в pg_class для этой последовательности |
seqtypid | oid | pg_type.oid | Тип данных последовательности |
seqstart | int8 | Начальное значение последовательности | |
seqincrement | int8 | Значение приращения последовательности | |
seqmax | int8 | Максимальное значение последовательности | |
seqmin | int8 | Минимальное значение последовательности | |
seqcache | int8 | Размер кэша последовательности | |
seqcycle | bool | Циклы последовательности |
pg_shdepend
Каталог pg_shdepend содержит зависимости между объектами базы данных и общими объектами, такими как роли. Эта информация позволяет QHB убедиться в том, что эти объекты не используются перед попыткой их удаления.
См. также раздел pg_depend, который содержит аналогичную информацию для зависимостей, включающих объекты в пределах одной базы данных.
В отличие от большинства системных каталогов, pg_shdepend является общим для всех баз данных кластера: существует только одна копия pg_shdepend на кластер, а не по одному на каждую базу данных.
pg_shdepend столбцы
Имя | Тип | Ссылки | Описание |
---|---|---|---|
dbid | oid | pg_database.oid | Идентификатор OID базы данных, в которой находится зависимый объект, или ноль для общего объекта |
classid | oid | pg_class.oid | OID системного каталога, в котором находится зависимый объект |
objid | oid | OID для любого столбца | OID конкретного зависимого объекта |
objsubid | int4 | Для столбца таблицы это номер столбца (objid и classid определяют саму таблицу). Для всех других типов объектов этот столбец равен нулю. | |
refclassid | oid | pg_class.oid | OID системного каталога, в котором находится объект ссылки (должен быть общим каталогом) |
refobjid | oid | OID для любого столбца | OID конкретного ссылки на объект |
deptype | char | Код, определяющий конкретную семантику этого отношения зависимости - см. ниже детальное описание |
Во всех случаях запись в pg_shdepend указывает, что объект ссылки не может быть удален без удаления также зависимого объекта. Тем не менее, есть несколько подвидов, которые задаются с помощью deptype:
SHARED_DEPENDENCY_OWNER (о)
Объект на который ссылаются (должен быть ролью) является владельцем зависимого объекта.
SHARED_DEPENDENCY_ACL (a)
Объект на который ссылаются (должен быть ролью) упоминается в списке ACL (access control list, т. е. список привилегий) зависимого объекта. (Запись SHARED_DEPENDENCY_ACL не создаётся для владельца объекта, так как у владельца в любом случае будет SHARED_DEPENDENCY_OWNER .)
SHARED_DEPENDENCY_POLICY (r)
Объект на который ссылаются (должен быть ролью) является целью для зависимого объекта политики.
SHARED_DEPENDENCY_PIN (p)
Не зависимого объекта - этот тип записи означает то, что сама система зависит от объекта на который ссылается, и поэтому этот объект никогда не должен быть удален. Записи этого типа создаются только в команде qhb_bootstrap. Столбцы для зависимого объекта у этой записи содержат нули.
В будущем могут потребоваться и другие виды зависимостей. Обратите внимание, сейчас для объекта на который ссылаются поддерживаются только роли.
pg_shdescription
Каталог pg_shdescription хранит необязательные описания (комментарии) для общих объектов базы данных. Описаниями можно манипулировать с помощью команды COMMENT и просматривать с помощью qsql \d команды.
См. также раздел pg_description, который содержит аналогичную информацию для описаний, включающих объекты в пределах одной базы данных.
В отличие от большинства системных каталогов, pg_shdescription является общим для всех баз данных кластера: существует только одна копия pg_shdescription на кластер, а не по одному на каждую базу данных.
pg_shdescription столбцы
Имя | Тип | Ссылки | Описание |
---|---|---|---|
objoid | oid | OID для любого столбца | OID объекта, к которому относится данное описание |
classoid | oid | pg_class.oid | Идентификатор OID системного каталога, в котором отображается этот объект |
description | text | Произвольный текст, который служит описанием данного объекта |
pg_shseclabel
Каталог pg_shseclabel сохраняет метки безопасности на общих объектах базы данных. Метками безопасности можно управлять с помощью команды SECURITY LABEL. Для простого способа просмотра меток безопасности см. раздел pg_seclabels.
Смотрите также раздел pg_seclabel, который выполняет аналогичную функцию для меток безопасности, включающих объекты в пределах одной базы данных.
В отличие от большинства системных каталогов, pg_shseclabel является общим для всех баз данных кластера: существует только одна копия pg_shseclabel на кластер, а не по одному на каждую базу данных.
pg_shseclabel столбцы
Имя | Тип | Ссылки | Описание |
---|---|---|---|
objoid | oid | OID для любого столбца | OID объекта, к которому относится эта метка безопасности |
classoid | oid | pg_class.oid | Идентификатор OID системного каталога, в котором отображается этот объект |
provider | text | Поставщик, связанный с этой меткой. | |
label | text | Метка безопасности, применяемая к этому объекту. |
pg_statistic
Каталог pg_statistic хранит статистические данные о содержимом базы данных. Записи создаются при помощи команды ANALYZE и впоследствии используются планировщиком запросов. Обратите внимание, что все статистические данные по своей сути являются приблизительными, даже если они являются актуальными.
Обычно есть одна запись, с stainherit = false, для каждого столбца таблицы, который был проанализирован. Если таблица имеет дочерние элементы наследования, тотакже создается вторая запись с stainherit = true . Эта строка представляет статистику для столбца по всему дереву наследования, т. е. статистику для данных, которые вы видите с помощью SELECT 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 столбцы
Имя | Тип | Ссылки | Описание |
---|---|---|---|
starelid | oid | pg_class.oid | Таблица или индекс, к которому принадлежит описываемый столбец |
staattnum | int2 | pg_attribute.attnum | Номер описываемой колонки |
stainherit | bool | Если значение true, то статистика включает дочерние столбцы наследования, а не только значения в указанном отношении | |
stanullfrac | float4 | Доля записей в которых столбец не заполнен | |
stawidth | int4 | Средняя сохраненная ширина записей для ненулевых столбцов в байтах | |
stadistinct | float4 | Число различных значений данных в ненулевом в столбце. Значение больше нуля-это фактическое число различных значений. Значение меньше нуля- взятое по модулю это количество строк в таблице; например, столбец, в котором около 80% значений не имеют значения NULL и каждое ненулевое значение появляется в среднем примерно два раза , может быть представлен следующим образом: stadistinct = -0.4. Нулевое значение означает, что число различных значений неизвестно. | |
stakindN | int2 | Кодовый номер, указывающий вид статистики, хранящейся в N-м "слоте" строки из pg_statistic. | |
staopN | oid | pg_operator.oid | Оператор, используемый для получения статистики, хранящейся в N-м "слоте". Например, для "слота гистограммы" это будет оператор <, определяющий порядок сортировки данных. |
stacollN | oid | pg_collation.oid | Параметры сортировки, используемые для получения статистики, хранящейся в N-м "слоте". Например, "слот гистограммы" для столбца с возможностью сортировки будет отображать параметры сортировки, определяющие порядок сортировки данных. Ноль для непроверяемых данных. |
stanumbersN | float4[] | Числовая статистика соответствующего вида для N-го "слота", или null, если вид "слот" не содержит числовых значений | |
stavaluesN | anyarray | Значения данных столбца соответствующего вида для N-го "слота", или null, если этот вид "слота" не хранит никаких значений для данных. Значения каждого элемента массива фактически относятся к определенному типу данных столбца или связанному типу, такому как тип элемента массива, поэтому нет способа определить тип этих столбцов более конкретно, чем anyarray. |
pg_statistic_ext
Каталог pg_statistic_ext содержит определения расширенной статистики планировщика. Каждая строка в этом каталоге соответствует объекту статистики, созданному с помощью команды CREATE STATISTICS.
pg_statistic_ext столбцы
Имя | Тип | Ссылки | Описание |
---|---|---|---|
stxrelid | oid | pg_class.oid | Таблица, содержащая столбцы, описываемые данным объектом |
stxname | name | Имя объекта статистики | |
stxnamespace | oid | pg_namespace.oid | OID пространства имен, содержащего этот объект статистики |
stxowner | oid | pg_authid.oid | Владелец объекта статистики |
stxkeys | int2vector | pg_attribute.attnum | Массив номеров атрибутов, указывающих, какие столбцы таблицы покрываются этим объектом статистики; например, значение 1 3 это означает, что будут покрыты первый и третий столбцы таблицы |
stxkind | char[] | Массив, содержащий коды для включенных типов статистики; допустимыми значениями являются: 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 столбцы
Имя | Тип | Ссылки | Описание |
---|---|---|---|
stxoid | oid | pg_statistic_ext.oid | Расширенный статистический объект, содержащий определение для данных |
stxdndistinct | pg_ndistinct | количество значений сохранённая как тип pg_ndistinct | |
stxddependencies | pg_dependencies | Статистика функциональных зависимостей, сохранённая как тип pg_dependenciesп | |
stxdmcv | pg_mcv_list | Статистика списка MCV (most-common values), сохранённая как тип pg_mcv_list Тип |
pg_subscription
Каталог pg_subscription содержит все существующие подписки на логическую репликацию.
В отличие от большинства системных каталогов, pg_subscription является общим для всех баз данных кластера: существует только одна копия pg_subscription на кластер, а не по одному на каждую базу данных.
Доступ к колонке subconninfo отзывается у обычных пользователей, поскольку он может содержать простые текстовые пароли.
pg_subscription столбцы
Имя | Тип | Ссылки | Описание |
---|---|---|---|
oid | oid | Идентификатор строки | |
subdbid | oid | pg_database.oid | OID базы данных, в которой находится подписка |
subname | name | Название подписки | |
subowner | oid | pg_authid.oid | Владелец подписки |
subenabled | bool | Если задано значение true, подписка включена и должна реплицироваться. | |
subsynccommit | text | Содержит значение параметра настройка synchronous_commit для процессов подписки. | |
subconninfo | text | Строка подключения к вышестоящей базе данных | |
subslotname | name | Имя слота репликации в вышестоящей базе данных. Также используется при локальной репликации имя источника. | |
subpublications | text[] | Массив подписанных имен публикаций которые ссылаются на публикации на сервере. |
pg_subscription_rel
Каталог pg_subscription_rel содержит состояние для каждого реплицируемого отношения в каждой подписке. Это отображение хранится как многие-ко-многим.
Этот каталог содержит только таблицы, известные подписке после выполнения команды CREATE SUBSCRIPTION или ALTER SUBSCRIPTION или REFRESH PUBLICATION.
pg_subscription_rel столбцы
Имя | Тип | Ссылки | Описание |
---|---|---|---|
srsubid | oid | pg_subscription.oid | Ссылка на подписку |
srrelid | oid | pg_class.oid | Ссылка на связь |
srsubstate | char | Код состояния: i = инициализация, d = данные копируются, s = синхронизированно, r = готов (нормальная репликация) | |
srsublsn | pg_lsn | LSN принимающей стороны для состояния s и r. |
pg_tablespace
Каталог pg_tablespace хранит информацию о доступных табличных пространствах. Таблицы могут быть размещены в определенных табличных пространствах для облегчения администрирования хранилища.
В отличие от большинства системных каталогов, pg_tablespace является общим для всех баз данных кластера - существует только одна копия pg_tablespace на кластер, а не по одному на каждую базу данных.
pg_tablespace столбцы
Имя | Тип | Ссылки | Описание |
---|---|---|---|
oid | oid | Идентификатор строки | |
spcname | name | Имя табличного пространства | |
spcowner | oid | pg_authid.oid | Владелец табличного пространства, обычно пользователь, который его создал |
spcacl | aclitem[] | Права доступа; смотрите раздел Привилегии для получения дополнительной информации | |
spcoptions | text[] | Параметры табличного пространства, в виде строки "ключ=значение" |
pg_transform
Каталог pg_transform хранит информацию о преобразованиях, которые являются механизмом для адаптации типов данных к процедурным языкам.
pg_transform столбцы
Имя | Тип | Ссылки | Описание |
---|---|---|---|
trftype | oid | pg_type.oid | OID типа данных, для которого предназначено это преобразование |
trflang | oid | pg_language.oid | OID языка, для которого это преобразование предназначено |
trffromsql | regproc | pg_proc.oid | OID функции, используемый при преобразовании типа данных для передачи в процедурный язык (например, параметры функции). Ноль - если эта операция не поддерживается. |
trftosql | regproc | pg_proc.oid | OID функции, используемый при преобразовании полученных из процедурного языка (например, возвращаемых значений) в тип данных. Ноль - если эта операция не поддерживается. |
pg_trigger
Каталог pg_trigger содержит информацию о триггерах в таблицах и представлениях.
pg_trigger столбцы
Имя | Тип | Ссылки | Описание |
---|---|---|---|
oid | oid | Идентификатор строки | |
tgrelid | oid | pg_class.oid | Таблица, в которой находится этот триггер |
tgname | name | Имя триггера (должно быть уникальным среди триггеров одной таблицы) | |
tgfoid | oid | pg_proc.oid | Вызываемая функция |
tgtype | int2 | Битовая маска, идентифицирующая условия срабатывания триггера | |
tgenabled | char | Элементы управления, для которых срабатывает триггер в режиму session_replication_role . О = триггер срабатывает в режимах origin и local, D = триггер отключен, R = триггер срабатывает в режиме replica, A = триггер срабатывает всегда. | |
tgisinternal | bool | True, если триггер генерируется внутри системы (обычно для принудительного применения ограничения, определенного tgconstraint) | |
tgconstrrelid | oid | pg_class.oid | Таблица, на которую ссылается ограничение ссылочной целостности |
tgconstrindid | oid | pg_class.oid | Индекс, поддерживающий ограничение уникальности, первичного ключа, ссылочной целостности или исключения |
tgconstraint | oid | pg_constraint.oid | pg_constraint запись, связанная с триггером, если таковая имеется |
tgdeferrable | bool | True, если триггер ограничения является отложенным | |
tginitdeferred | bool | True, если триггер ограничения изначально отложен | |
tgnargs | int2 | Количество строк аргументов, переданных в функцию trigger | |
tgattr | int2vector | pg_attribute.attnum | Номера столбцов, если триггер является специфичным для столбца - в противном случае пустой массив |
tgargs | bytea | Строки аргументов для передачи триггеру, завершается NULL | |
tgqual | pg_node_tree | Дерево выражений (nodeToString() представление) для условие триггера WHEN, или NULL, если условия нет | |
tgoldtable | name | имя предложения REFERENCING для СТАРОЙ ТАБЛИЦЫ, или NULL, если нет | |
tgnewtable | name | имя предложения 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 столбцы
Имя | Тип | Ссылки | Описание |
---|---|---|---|
oid | oid | Идентификатор строки | |
cfgname | name | Имя конфигурации текстового поиска | |
cfgnamespace | oid | pg_namespace.oid | OID пространства имен, содержащего эту конфигурацию |
cfgowner | oid | pg_authid.oid | Владелец конфигурации |
cfgparser | oid | pg_ts_parser.oid | OID синтаксического анализатора текстового поиска для этой конфигурации |
pg_ts_config_map
Каталог pg_ts_config_map содержит записи, показывающие, с какими словарями текстового поиска следует обращаться и в каком порядке, для каждого типа выходного токена синтаксического анализатора каждой конфигурации текстового поиска.
pg_ts_config_map столбцы
Имя | Тип | Ссылки | Описание |
---|---|---|---|
mapcfg | oid | pg_ts_config.oid | OID записи из pg_ts_config, владеющий этим отображением |
maptokentype | integer | Тип маркера, создаваемого синтаксическим анализатором конфигурации | |
mapseqno | integer | Порядок, в котором следует ознакомиться с этой записью (ниже mapseqnos первый) | |
mapdict | oid | pg_ts_dict.oid | OID словаря текстового поиска для консультации |
pg_ts_dict
Каталог pg_ts_dict содержит записи, определяющие словари текстового поиска. Словарь зависит от шаблона текстового поиска, который задает все необходимые функции реализации - сам словарь предоставляет значения для настраиваемых пользователем параметров, поддерживаемых шаблоном. Такое разделение позволяет создавать словари непривилегированным пользователям. Параметры задаются текстовой строкой dictinitoption, формат и значение которой различаются в зависимости от шаблона.
pg_ts_dict столбцы
Имя | Тип | Ссылки | Описание |
---|---|---|---|
oid | oid | Идентификатор строки | |
dictname | name | Название словаря текстового поиска | |
dictnamespace | oid | pg_namespace.oid | OID пространства имен, содержащего этот словарь |
dictowner | oid | pg_authid.oid | Владелец словаря |
dicttemplate | oid | pg_ts_template.oid | OID шаблона текстового поиска для этого справочника |
dictinitoption | text | Строка параметра инициализации для шаблона |
pg_ts_parser
Каталог pg_ts_parser содержит записи, определяющие синтаксические анализаторы текстового поиска. Синтаксический анализатор отвечает за разбиение входного текста на лексемы и присвоение каждой лексеме типа токена. Поскольку синтаксический анализатор должен быть реализован с помощью функций на языке C\RUST, создание новых синтаксических анализаторов возможно только для суперпользователей базы данных.
pg_ts_parser столбцы
Имя | Тип | Ссылки | Описание |
---|---|---|---|
oid | oid | Идентификатор строки | |
prsname | name | Имя синтаксического анализатора для поиска текста | |
prsnamespace | oid | pg_namespace.oid | OID пространства имен, содержащего этот синтаксический анализатор |
prsstart | regproc | pg_proc.oid | OID функции запуска синтаксического анализатора |
prstoken | regproc | pg_proc.oid | OID функции поиска следующего маркера синтаксического анализатора |
prsend | regproc | pg_proc.oid | OID функции завершения работы синтаксического анализатора |
prsheadline | regproc | pg_proc.oid | OID функции заголовка синтаксического анализатора |
prslextype | regproc | pg_proc.oid | OID функции анализатора лексического типа |
pg_ts_template
Каталог pg_ts_template содержит записи, определяющие шаблоны текстового поиска. Шаблон-это скелет реализации для класса словарей текстового поиска. Поскольку шаблон должен быть реализован с помощью функций на языке C\RUST, создание новых шаблонов возможно только для суперпользователей базы данных.
pg_ts_template столбцы
Имя | Тип | Ссылки | Описание |
---|---|---|---|
oid | oid | Идентификатор строки | |
tmplname | name | Имя шаблона текстового поиска | |
tmplnamespace | oid | pg_namespace.oid | OID пространства имен, содержащего этот шаблон |
tmplinit | regproc | pg_proc.oid | OID функции инициализации шаблона |
tmpllexize | regproc | pg_proc.oid | OID функции лексера |
pg_type
Каталог pg_type хранит информацию о типах данных. Базовые типы и типы перечислений (скалярные типы) создаются с помощью CREATE TYPE, а домены-с помощью CREATE DOMAIN. Составной тип автоматически создается для каждой таблицы в базе данных, чтобы представить структуру строк таблицы. Кроме того, можно создать составные типы с помощью CREATE TYPE AS.
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 в последовательности. Возможные значения::
ПримечаниеДля типов, используемых в системных таблицах, очень важно, чтобы размер и выравнивание определённые в pg_type были согласованы с тем, как компилятор будет упаковывать столбец в структуру, представляющую строку таблицы. |
|
typstorage | char | typstorage сообщает о типах varlena (те с typlen = -1) подготовлен ли тип к TOAST и какова должна быть стратегия по умолчанию для атрибутов этого типа. Возможные значения:
Обратите внимание, что столбцы "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 зарезервированы для пользовательских категорий.
Код | Категория |
---|---|
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 столбцы
Имя | Тип | Ссылки | Описание |
---|---|---|---|
oid | oid | Идентификатор строки | |
umuser | oid | pg_authid.oid | OID сопоставляемой локальной роли, 0, если пользовательское сопоставление является общедоступным |
umserver | oid | pg_foreign_server.oid | OID внешнего сервера, содержащий это сопоставление |
umoptions | text[] | Параметры сопоставления, в виде строки "ключ=значение" |
Системные представления
Помимо системных каталогов, 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 столбцы
Имя | Тип | Описание |
---|---|---|
name | name | Имя расширения |
default_version | text | Имя версии по умолчанию, или NULL если версия не указана |
installed_version | text | Версия расширения установленного сейчас, или NULL если расширение не установлено |
comment | text | Строка комментария из управляющего файла расширения |
Представление pg_available_extensions доступно только для чтения.
pg_available_extensions_versions
Представление pg_available_extension_versions содержит список конкретных версий расширений, доступных для установки. См. также каталог pg_extension, в котором отображаются установленные в данный момент расширения.
pg_available_extension_versions столбцы
Имя | Тип | Описание |
---|---|---|
name | name | Имя расширения |
version | text | Версия |
installed | bool | True, если эта версия данного расширения уже установлена |
superuser | bool | True, если только суперпользователям разрешено устанавливать это расширение |
relocatable | bool | True, если расширение можно переместить в другую схему |
schema | name | Имя схемы, в которую необходимо установить расширение, или NULL при частичном или полном перемещении |
requires | name[] | Имена необходимых для работы расширений (зависимости), или NULL если зависимостей нет |
comment | text | Строка комментария из управляющего файла расширения |
Представление pg_available_extension_versions доступно только для чтения.
pg_config
Представление pg_config описывает параметры конфигурации во время компиляции текущей установленной версии QHB. Оно предназначено, например, для использования программными пакетами, которые хотят взаимодействовать с QHB, чтобы облегчить поиск необходимых заголовочных файлов и библиотек. Оно предоставляет ту же основную информацию, что и утилита qhb_config из поставки QHB.
По умолчанию, представление pg_config может быть прочитано только суперпользователями.
pg_config столбцы
Имя | Тип | Описание |
---|---|---|
name | text | Имя параметра |
setting | text | Значение параметра |
pg_cursors
Представление pg_cursors - список курсоров, которые в настоящее время доступны. Курсоры могут быть определены несколькими способами:
-
через оператор DECLARE в SQL
-
через сообщение привязки в сетевом протоколе QHB
-
через интерфейс программирования сервера (SPI), как описано в соот. разделе документации SPI
Представление pg_cursors отображает курсоры, созданные любым из этих средств. Курсоры существуют только в течение транзакции, которая их определяет, если они не были объявлены WITH HOLD. Таким образом, не удерживаемые курсоры присутствуют в представлении только до конца транзакции их создавшей.
Примечание!!!
Курсоры используются в системе для реализации некоторых компонентов QHB, таких как процедурные языки. Поэтому представление pg_cursors может содержать курсоры, которые не были явно созданы пользователем.
pg_cursors столбцы
Имя | Тип | Описание |
---|---|---|
name | text | Имя курсора |
statement | text | Строка запроса (полностью), отправленная для объявления этого курсора |
is_holdable | boolean | True если курсор является удерживаемым (то есть он может быть доступен после транзакции, объявшей курсор) - иначе false |
is_binary | boolean | True если курсор был объявлен BINARY - иначе false |
is_scrollable | boolean | True если курсор двунаправленный (то есть он позволяет извлекать строки непоследовательным образом)- иначе false |
creation_time | timestamptz | Время когда был объявлен курсор |
Представление pg_cursors доступно только для чтения.
pg_file_settings
Представление pg_file_settings предоставляет сводку содержимого файла(ов) конфигурации сервера. В этом представлении отображается строка для каждой записи "имя = значение", появляющейся в файлах, с примечаниями, указывающими, может ли это значение быть успешно применено. Дополнительные строки могут отображаться для проблем, не связанных с записью "имя = значение", например синтаксических ошибок в файлах.
Это представление полезно для проверки того, будут ли работать запланированные изменения в файлах конфигурации, или для диагностики предыдущего сбоя. Обратите внимание, что это представление сообщает о текущем содержимом файлов, а не о том, что было применено сервером в последний раз. (Для этого обычно достаточно представления pg_settings).
По умолчанию, представление pg_file_settings может быть прочитано только суперпользователями.
pg_file_settings столбцы
Имя | Тип | Описание |
---|---|---|
sourcefile | text | Полный путь к файлу конфигурации |
sourceline | integer | Номер строки в файле конфигурации, где появляется запись |
seqno | integer | Порядок, в котором обрабатываются операции (1..N) |
name | text | Имя параметра конфигурации |
setting | text | Значение, которое будет присвоено параметру |
applied | boolean | True, если значение может быть применено успешно |
error | text | Если не null - в столбце содержится сообщение об ошибке, указывающее, почему эта запись не может быть применена |
Если файл конфигурации содержит синтаксические ошибки или недопустимые имена параметров, сервер не будет пытаться применить какие-либо параметры из файла, а следовательно, все значения поля applied будут false. В таком случае в представлении будет одна или несколько строк с ненулевым значением error, указывающие на проблему(ы). В противном случае, если это возможно, будут применены отдельные настройки. Если индивидуальный параметр не может быть применен (например, недопустимое значение или параметр не может быть изменен после запуска сервера), он будет иметь соответствующее сообщение в поле error. Другой способ, при котором applied = false означает, что параметр переопределяется более поздней записью для того же имени параметра; этот случай не считается ошибкой, поэтому ничто не появляется в поле error.
Дополнительную информацию о различных способах изменения параметров времени выполнения см. в разделе Настройка параметров
pg_group
Представление pg_group показывает имена и члены всех ролей, которые помечены как not rolcanlogin, т.е. отображает роли как группы.
pg_group столбцы
Имя | Тип | Ссылки | Описание |
---|---|---|---|
groname | name | pg_authid.rolname | Название группы |
grosysid | oid | pg_authid.oid | ID этой группы |
grolist | oid[] | pg_authid.oid | Массив, содержащий идентификаторы ролей в этой группе |
pg_hba_file_rules
Представление pg_hba_file_rules предоставляет сводку содержимого файла конфигурации для проверки подлинности клиента, qhb_hba.conf. В этом представлении отображается строка для каждой непустой строки файла, не содержащей комментариев, с примечаниями, указывающими на возможность успешного применения правила.
Это представление может быть полезно для проверки того, будут ли работать запланированные изменения в файле конфигурации проверки подлинности, или для диагностики предыдущего сбоя. Обратите внимание, что это представление сообщает о текущем содержимом файла, а не о том, что было загружено последним сервером.
По умолчанию, представление pg_hba_file_rules может быть прочитано только суперпользователями.
pg_hba_file_rules столбцы
Имя | Тип | Описание |
---|---|---|
line_number | integer | Номер строки этого правила в qhb_hba.conf |
type | text | Тип соединения |
database | text[] | Список имен баз данных, к которым применяется данное правило |
user_name | text[] | Список имен пользователей и ролей, к которым применяется данное правило |
address | text | Имя хоста или IP-адрес, либо одно из значений all, samehost, или samenet, или null для локальных соединений |
netmask | text | Маска IP-адреса, или null, если не применимо |
auth_method | text | Способ аутентификации |
options | text[] | Параметры, указанные для метода аутентификации, если таковые имеются |
error | text | Если не null, то сообщение об ошибке, указывающее, почему эта строка не может быть обработана |
Обычно строка, отражающая неверную запись, будет иметь значения только для line_number и error.
pg_indexes
Представление pg_indexes предоставляет доступ к полезной информации о каждом индексе в базе данных.
pg_indexes столбцы
Имя | Тип | Ссылки | Описание |
---|---|---|---|
schemaname | name | pg_namespace.nspname | Имя схемы, содержащей таблицу и индекс |
tablename | name | pg_class.relname | Имя таблицы, для которой используется индекс |
indexname | name | pg_class.relname | Имя индекса |
tablespace | name | pg_tablespace.spcname | Имя табличного пространства, содержащего индекс (null, если пространство по умолчанию для базы данных) |
indexdef | text | Определение индекса (восстановленная команда CREATE INDEX) |
pg_locks
Представление pg_locks предоставляет доступ к информации о блокировках, удерживаемых активными процессами на сервере базы данных. Дополнительную информацию о блокировке смотрите в разделе посвященном блокировкам
pg_locks содержит одну строку на активный блокируемый объект, запрошенный режим блокировки и соответствующий процесс. Таким образом, один и тот же блокируемый объект может появляться много раз, если несколько процессов удерживают или ожидают блокировки на нем. Однако объект, который в настоящее время не имеет блокировок - не будет отображаться вообще.
Существует несколько различных типов блокируемых объектов: отношения целиком (например, таблицы), отдельные страницы отношений, отдельные кортежи отношений, идентификаторы транзакций (как виртуальные, так и постоянные идентификаторы) и общие объекты базы данных (идентифицируемые классом OID и объектным OID, таким же образом, как и в pg_description или pg_depend). Также запрос на расширение отношения представляется в виде отдельного блокируемого объекта. Кроме того, "необязательные" блокировки могут быть иметь номера, значения которых определяет пользователь.
pg_locks столбцы
Имя | Тип | Ссылки | Описание |
---|---|---|---|
locktype | text | Тип блокируемого объекта: отношение (relation), расширение (extend), Страница (page), кортеж (tuple), транзакция ( transactionid, virtualxid), объект (object), userlock, или необязательная (advisory) | |
database | oid | pg_database.oid | OID базы данных, в которой существует цель блокировки, или ноль, если цель является общим объектом, или null, если цель является идентификатором транзакции |
relation | oid | pg_class.oid | OID отношения, на которое направлена блокировка, или null, если цель не является отношением или частью отношения |
page | integer | Номер страницы, на которую направлена блокировка в пределах отношения, или значение null, если цель не является страницей отношения или кортежем | |
tuple | smallint | Номер кортежа, на который направлена блокировка внутри страницы, или значение null, если цель не является кортежем | |
virtualxid | text | Виртуальный идентификатор транзакции, на которую направлена блокировка, или значение null, если цель не является виртуальным идентификатором транзакции | |
transactionid | xid | Идентификатор транзакции, на которую направлена блокировка, или значение null, если цель не является идентификатором транзакции | |
classid | oid | pg_class.oid | OID системного каталога, содержащего целевой объект блокировки, или значение null, если целевой объект не является общим объектом базы данных |
objid | oid | OID для любого столбца | OID целевого объекта блокировки в системном каталоге или значение null, если целевой объект не является общим объектом базы данных |
objsubid | smallint | Номер столбца, на который направлена блокировка (classid и objid определяет саму таблицу), или ноль, если целевой объект является каким-либо другим общим объектом базы данных, или null, если целевой объект не является общим объектом базы данных | |
virtualtransaction | text | Виртуальный идентификатор транзакции, которая удерживает или ожидает эту блокировку | |
pid | integer | Идентификатор серверного процесса (PID), удерживающего или ожидающего эту блокировку, или значение null, если блокировка удерживается подготовленной транзакцией | |
mode | text | Название режима блокировки, удерживаемого или ожидаемого этим процессом (см. раздел Блокировки на уровне таблицы и раздел Уровень изоляции Serializable) | |
granted | boolean | True, если блокировка удерживается, false, если блокировка ожидается | |
fastpath | boolean | 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 можно соединить со столбцом 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 столбцы
Имя | Тип | Ссылки | Описание |
---|---|---|---|
schemaname | name | pg_namespace.nspname | Имя схемы, содержащей материализованное представление |
matviewname | name | pg_class.relname | Имя материализованного представления |
matviewowner | name | pg_authid.rolname | Имя владельца материализованного представления |
tablespace | name | pg_tablespace.spcname | Имя табличного пространства, содержащего материализованное представление (null, если пространство по умолчанию для базы данных) |
hasindexes | boolean | True, если материализованное представление имеет (или недавно имело) какие-либо индексы | |
ISP populated | boolean | True, если материализованное представление заполнено в данный момент | |
definition | text | Определение материализованного представления (реконструированный запрос SELECT) |
pg_policies
Представление pg_policies предоставляет доступ к полезной информации о каждой политике безопасности на уровне строк в базе данных.
pg_policies столбцы
Имя | Тип | Ссылки | Описание |
---|---|---|---|
schemaname | name | pg_namespace.nspname | Имя схемы, содержащей табличную политику включено |
tablename | name | pg_class.relname | Имя таблицы с включённой политикой |
policyname | name | pg_policy.polname | Название политики |
polpermissive | text | Является ли эта политика разрешительной или ограничительной? | |
roles | name[] | Роли, к которым применяется эта политика | |
cmd | text | Тип команды, к которой применяется политика | |
qual | text | Выражение, добавленное к условиям барьеров безопасности для запросов, к которым применяется эта политика | |
with_check | text | Выражение, добавленное в условие WITH CHECK для запросов, которые пытаются добавить строки в эту таблицу |
pg_prepared_statements
Представление pg_prepared_statements отображает все подготовленные инструкции, доступные в текущем сеансе.
pg_prepared_statements содержит одну строку для каждого подготовленного оператора. Строки добавляются в представление при создании нового подготовленного оператора и удаляются при освобождении подготовленного оператора (например, с помощью команды DEALLOCATE).
pg_prepared_statements столбцы
Имя | Тип | Описание |
---|---|---|
name | text | Идентификатор подготовленного заявления |
statement | text | Строка запроса, отправленная клиентом для создания этого подготовленного оператора. Для подготовленных операторов, созданных с помощью SQL, это оператор PREPARE, представленный клиентом. Для подготовленных операторов, созданных с помощью сетевого протокола, это текст самого подготовленного оператора. |
prepare_time | timestamptz | Время, в которое был создан prepared оператор |
parameter_types | regtype[] | Ожидаемые типы параметров для подготовленного оператора в виде массива regtype. OID, соответствующий элементу этого массива, может быть получен путем приведения regtype значение к oid. |
from_sql | boolean | True, если подготовленный оператор был создан с помощью SQL команды PREPARE - False если оператор было подготовлен через сетевой протокол |
Представление pg_prepared_statements доступно только для чтения.
pg_prepared_xacts
Представление pg_prepared_xacts отображает информацию о транзакциях, которые в настоящее время подготовлены для двухфазной фиксации (см. раздел PREPARE TRANSACTION для получения подробной информации).
pg_prepared_xacts содержит одну строку на подготовленную транзакцию. Запись удаляется при фиксации или откате транзакции.
pg_prepared_xacts столбцы
Имя | Тип | Ссылки | Описание |
---|---|---|---|
transaction | xid | Числовой идентификатор подготовленной транзакции | |
gid | text | Глобальный идентификатор, присвоенный транзакции | |
prepared | timestamp with time zone | Время, в которое транзакция была подготовлена к фиксации | |
owner | name | pg_authid.rolname | Имя пользователя, выполнившего транзакцию |
database | name | pg_database.datname | Имя базы данных, в которой была выполнена транзакция |
Когда осуществляется доступ к представлению pg_prepared_xacts, внутренние структуры данных диспетчера транзакций на мгновение блокируются, а для отображения d представлении создается копия. Это гарантирует, что представление создает согласованный набор результатов, не блокируя при этом обычные операции дольше, чем это необходимо. Тем не менее, если к этому представлению часто обращаться, это может оказать определенное влияние на производительность базы данных.
pg_publication_tables
Представление pg_publication_tables предоставляет информацию о сопоставлении публикаций и таблиц, которые они содержат. В отличие от базового каталога pg_publication_rel, это представление расширяет список публикаций, определённых как FOR ALL TABLES, таким образом, для таких публикаций будет строка для каждой подходящей таблицы.
pg_publication_tables столбцы
Имя | Тип | Ссылки | Описание |
---|---|---|---|
pubname | name | pg_publication.pubname | Название публикации |
schemaname | name | pg_namespace.nspname | Имя схемы, содержащей таблицу |
tablename | name | pg_class.relname | Имя таблицы |
pg_replication_origin_status
Представление pg_replication_origin_status содержит информацию о том, как далеко продвинулось воспроизведение изменений для определенного источника.
pg_replication_origin_status столбцы
Имя | Тип | Ссылки | Описание |
---|---|---|---|
local_id | oid | pg_replication_origin.roident | внутренний идентификатор узла |
external_id | text | pg_replication_origin.roname | идентификатор внешнего узла |
remote_lsn | pg_lsn | Номер LSN исходного узла, до которого были реплицированы данные. | |
local_lsn | pg_lsn | Номер LSN этого узла, в котором remote_lsn был реплицирован. Используется для очистки записей фиксации транзакции (COMMIT) перед сохранением данных на диске при использовании асинхронных commit. |
pg_replication_slots
Представление pg_replication_slots предоставляет список всех слотов репликации, которые в настоящее время существуют в кластере баз данных, а также их текущее состояние.
pg_replication_slots столбцы
Имя | Тип | Ссылки | Описание |
---|---|---|---|
slot_name | name | Уникальный кластерный идентификатор для слота репликации | |
plugin | name | Базовое имя разделяемого объекта, содержащего модуль вывода, который использует этот логический слот, или null для физических слотов. | |
slot_type | text | Тип слота - физический или логический | |
datoid | oid | pg_database.oid | Идентификатор OID базы данных, с которой связан этот слот, или значение null. Только логические слоты имеют связанную базу данных. |
database | text | pg_database.datname | Имя базы данных, с которой связан этот слот, или null. Только логические слоты имеют связанную базу данных. |
temporary | boolean | True, если это слот временной репликации. Временные слоты не сохраняются на диске и автоматически сбрасываются при ошибке или по завершении сеанса. | |
active | boolean | True, если этот слот в настоящее время активно используется | |
active_pid | integer | Идентификатор процесса сеанса, использующего этот слот, если слот в настоящее время активно используется. NULL если неактивен. | |
xmin | xid | Самая старая транзакция, которую этот слот должен сохранить в базе данных. VACUUM не сможет удалить кортежи, удаленные любой более поздней транзакцией. | |
catalog_xmin | xid | Самая старая транзакция, влияющая на системные каталоги, которые этот слот должен сохранить в базе данных. VACUUM не сможет удалить кортежи каталога, удаленные любой более поздней транзакцией. | |
restart_lsn | pg_lsn | Адрес (номер LSN) самого старого WAL, который все еще может потребоваться потребителю этого слота и, следовательно, не будет автоматически удален во время контрольных точек. NULL если номер LSN этого слота никогда не был зарезервирован. | |
confirmed_flush_lsn | pg_lsn | Адрес (номер LSN) до которого потребитель логического слота подтвердил получение данных. Данные старше этого больше не доступны. NULL для физических слотов. |
pg_roles
Представление pg_roles предоставляет доступ к информации о ролях базы данных. Это просто общедоступное представление pg_authid, которое скрывает поле пароля.
pg_roles столбцы
Имя | Тип | Ссылки | Описание |
---|---|---|---|
rolname | name | Имя роли | |
rolsuper | bool | Роль имеет привилегии суперпользователя | |
rolinherit | bool | Роль автоматически наследует привилегии ролей, членом которых она является | |
rolcreaterole | bool | Роль может создавать другие роли | |
rolcreatedb | bool | Роль может создавать базы данных | |
rolcanlogin | bool | Роль может войти в систему. То есть эта роль может быть задана в качестве идентификатора авторизации начального сеанса | |
rolreplication | bool | Роль - это роль репликации. Роль репликации может инициировать подключения репликации и создавать и удалять слоты репликации. | |
rolconnlimit | int4 | Для ролей, которые могут войти в систему, задает максимальное число одновременных подключений, которые может создать эта роль. -1 означает отсутствие ограничений. | |
rolpassword | text | Скрытый пароль (всегда читается как ********) | |
rolvaliduntil | timestamptz | Срок действия пароля (используется только для парольной аутентификации - null, если нет срока действия | |
rolbypassrls | bool | Роль обходит любую политику безопасности уровня строки, см. раздел Политики безопасности строк для получения дополнительной информации. | |
rolconfig | text[] | Значения в роли по умолчанию для переменных конфигурации времени выполнения | |
oid | oid | pg_authid.oid | Идентификатор роли |
pg_rules
Вид pg_rules предоставляет доступ к полезной информации о правилах перезаписи запросов.
pg_rules столбцы
Имя | Тип | Ссылки | Описание |
---|---|---|---|
schemaname | name | pg_namespace.nspname | Имя схемы, содержащей таблицу |
tablename | name | pg_class.relname | Имя таблицы, для которой используется правило |
rulename | name | pg_rewrite.rulename | Название правила |
definition | text | Определение правила (восстановленная команда создания) |
Из представления pg_rules исключены возможности правил ON SELECT для представлений и материализованных представлений те, которые можно увидеть в pg_views и pg_matviews.
pg_seclabels
Представление pg_seclabels предоставляет информацию о метках безопасности. Это как более простая для запроса версия каталога pg_seclabel.
pg_seclabels столбцы
Имя | Тип | Ссылки | Описание |
---|---|---|---|
objoid | oid | OID для любого столбца | OID объекта, к которому относится эта метка безопасности |
classoid | oid | pg_class.oid | Идентификатор OID системного каталога, в котором отображается этот объект |
objsubid | int4 | Для метки безопасности в столбце таблицы это номер столбца (objoid и classoid определяют саму таблицу). Для всех других типов объектов этот столбец равен нулю. | |
objtype | text | Тип объекта, к которому применяется эта метка (текст). | |
objnamespace | oid | pg_namespace.oid | OID пространства имен для этого объекта, если применимо; в противном случае значение NULL. |
objname | text | Имя объекта, к которому применяется эта метка (текст). | |
provider | text | pg_seclabel.provider | Поставщик меток, связанный с этой меткой. |
label | text | pg_seclabel.label | Метка безопасности, применяемая к этому объекту. |
pg_sequences
Представление pg_sequences предоставляет доступ к полезной информации о каждой последовательности в базе данных.
pg_sequences столбцы
Имя | Тип | Ссылки | Описание |
---|---|---|---|
schemaname | name | pg_namespace.nspname | Имя схемы, содержащей последовательность |
sequencename | name | pg_class.relname | Имя последовательности |
sequenceowner | name | pg_authid.rolname | Имя владельца последовательности |
data_type | regtype | pg_type.oid | Тип данных последовательности |
start_value | bigint | Начальное значение последовательности | |
min_value | bigint | Минимальное значение последовательности | |
max_value | bigint | Максимальное значение последовательности | |
increment_by | bigint | Значение приращения последовательности | |
cycle | boolean | Цикличность последовательности (возможность) | |
cache_size | bigint | Размер кэша последовательности | |
last_value | bigint | Последнее значение последовательности, записанное на диск. Если используется кэширование, это значение может быть больше, чем последнее значение, выдаваемое из последовательности. Значение Null, если последовательность еще не была прочитана. Кроме того, если текущий пользователь не имеет прав USAGE или SELECT на последовательность, значение равно null. |
pg_settings
Представление pg_settings предоставляет доступ к параметрам времени выполнения сервера. Это по существу альтернативный интерфейс к командам SHOW и SET. Оно также предоставляет доступ к некоторым фактам о каждом параметре, которые непосредственно не доступны из SHOW, таким как минимальные и максимальные значения.
pg_settings столбцы
Имя | Тип | Описание |
---|---|---|
name | text | Имя параметра конфигурации времени выполнения |
setting | text | Текущее значение параметра |
unit | text | Неявная единица измерения параметра |
category | text | Логическая группа параметра |
short_desc | text | Краткое описание параметра |
extra_desc | text | Дополнительное, более детальное, описание параметра |
context | text | Контекст, необходимый для установки значения параметра (см. ниже) |
vartype | text | Тип параметра (bool, перечисление, integer, real, или строка) |
source | text | Источник текущего значения параметра |
min_val | text | Минимальное допустимое значение параметра (null для нечисловых значений) |
max_val | text | Максимально допустимое значение параметра (null для нечисловых значений) |
enumvals | text[] | Допустимые значения параметра enum (null для значений, отличных от enum) |
boot_val | text | Значение параметра принимается при запуске сервера, если параметр не задан иным образом |
reset_val | text | Значение, которое будет сброшено для параметра в текущем сеансе |
sourcefile | text | Файл конфигурации в котором текущее значение было установлено (null для значений, заданных из источников, отличных от файлов конфигурации, или при проверке пользователем, который не является ни суперпользователем, ни членом pg_read_all_settings); полезно при использовании использовать директивы include в файлах конфигурации |
sourceline | integer | Номер строки в файле конфигурации в котором текущее значение было установлено (null для значений, заданных из источников, отличных от файлов конфигурации, или при проверке пользователем, который не является ни суперпользователем, ни членом pg_read_all_settings). |
pending_restart | boolean | True если значение было изменено в файле конфигурации, но нуждается в перезапуске; иначе 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 не может быть вставлено или удалено, но его можно обновить. UPDATE, для pg_settings эквивалентен выполнению команды SET для этого именованного параметра. Это изменение влияет только на значение, используемое в текущем сеансе. Если обновление выполняется в рамках транзакции, которая позже прерывается, последствия команды UPDATE исчезают при откате транзакции. После фиксации окружающей транзакции эффекты будут сохраняться до конца сеанса, если только они не будут переопределены другим UPDATE или SET.
pg_shadow
Представление pg_shadow показывает свойства всех ролей, которые помечены как rolcanlogin в pg_authid.
Это имя связано с тем, что эта таблица не должна быть доступна для чтения любыми пользователями, поскольку она содержит пароли. pg_user-это доступное всем представление для pg_shadow, но со скрытым полем пароля.
pg_shadow столбцы
Имя | Тип | Ссылки | Описание |
---|---|---|---|
usename | name | pg_authid.rolname | Имя пользователя |
usesysid | oid | pg_authid.oid | ID этого пользователя |
usecreatedb | bool | Пользователь может создавать базы данных | |
usesuper | bool | Пользователь является суперпользователем | |
userepl | bool | Пользователь может инициировать потоковую репликацию и вывести систему из режима резервного копирования. | |
usebypassrls | bool | Пользователь игнорирует любую политику безопасности уровня строки, см. раздел Политики безопасности строк для получения дополнительной информации. | |
passwd | text | Пароль (возможно зашифрованный); null, если нет. Смотрите pg_authid для получения подробной информации о том, как хранятся зашифрованные пароли. | |
valuntil | timestamptz | Срок действия пароля (используется только для аутентификации пароля) | |
useconfig | text[] | Значения по умолчанию сеанса для переменных конфигурации времени выполнения |
pg_stats
Представление pg_stats предоставляет доступ к информации, хранящейся в каталоге pg_statistic. Это представление позволяет получить доступ только к строкам pg_statistic это соответствует таблицам, на которые у пользователя есть разрешение для чтения, и поэтому безопасно разрешать публичный доступ для чтения к этому представлению.
pg_stats также предназначена для представления информации в более удобочитаемом формате, чем базовый каталог — за счет того, что его схема должна быть расширена всякий раз, когда определяются новые типы слотов для pg_statistic.
pg_stats столбцы
Имя | Тип | Ссылки | Описание |
---|---|---|---|
schemaname | name | pg_namespace.nspname | Имя схемы, содержащей таблицу |
tablename | name | pg_class.relname | Имя таблицы |
attname | name | pg_attribute.attname | Имя столбца, описываемого этой строкой |
inherited | bool | Если true, то эта строка содержит дочерние столбцы наследования, а не только значения в указанной таблице | |
null_frac | real | Доля записей столбцов, имеющих значение null | |
avg_width | integer | Средняя ширина в байтах записей столбца | |
n_distinct | real | Если больше нуля, то показывает примерное число различных значений в столбце. Если меньше нуля, то модуль числа показывает количество различных значений разделённое на число строк. (Отрицательная форма используется, когда ANALYZE считает, что число различных значений, вероятно, будет увеличиваться по мере роста таблицы; положительная форма используется, когда считается, что столбец имеет фиксированное число возможных значений.) Например, значение -1 указывает на уникальный столбец, в котором число различных значений совпадает с числом строк. | |
most_common_vals | anyarray | Список наиболее распространенных значений в столбце. (Null, если никакие значения не более распространенны, чем любые другие.) | |
most_common_freqs | real[] | Список частот наиболее частых значений, т. е. количество вхождений каждого значения делится на общее количество строк. (Null, если most_common_vals тоже null.) | |
histogram_bounds | anyarray | Список значений, разделяющих значения столбца на группы примерно одинаковой наборы называемые "популяции". Значения внутри most_common_vals, если они присутствует, то они исключаются из этого расчета гистограммы. (Столбец имеет значение null, если тип данных столбца не имеет оператора < или если most_common_vals список охватывает все популяции.) | |
correlation | real | Статистическая корреляция между физическим упорядочением строк и логическим упорядочением значений столбцов. Значение колеблется от -1 до +1. Когда значение близко к -1 или +1, сканирование индекса по столбцу будет оценено как более дешевое, чем когда оно близко к нулю, из-за уменьшения случайного доступа к диску. (Столбец имеет значение null, если тип данных столбца не имеет оператора <.) | |
most_common_elems | anyarray | Список ненулевых значений элементов, наиболее часто появляющихся в пределах значений столбца. (Null для скалярных типов.) | |
most_common_elem_freqs | real[] | Список частот наиболее распространенных значений элементов, т. е. доля строк, содержащих хотя бы один экземпляр данного значения. Два или три дополнительных значения следуют за частотами каждого элемента; это минимум и максимум предыдущих частот каждого элемента и, возможно, частота нулевых элементов. (Null, когда заполнен most_common_elems.) | |
elem_count_histogram | real[] | Гистограмма подсчетов различных ненулевых значений элементов в пределах значений столбца, за которыми следует среднее число различных ненулевых элементов. (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 столбцы
Имя | Тип | Ссылки | Описание |
---|---|---|---|
schemaname | name | pg_namespace.nspname | Имя схемы, содержащей таблицу |
tablename | name | pg_class.relname | Имя таблицы |
statistics_schemaname | name | pg_namespace.nspname | Имя схемы, содержащей расширенную статистику |
statistics_name | name | pg_statistic_ext.stxname | Наименование расширенной статистики |
statistics_owner | oid | pg_authid.oid | Владелец расширенной статистики |
attnames | name[] | pg_attribute.attname | Имена столбцов, на которых определяется расширенная статистика |
kinds | text[] | Типы расширенной статистики, включенной для этой записи | |
n_distinct | pg_ndistinct | Если больше нуля, то показывает примерное число различных значений в столбце. Если меньше нуля, то модуль числа показывает количество различных значений разделённое на число строк. (Отрицательная форма используется, когда ANALYZE считает, что число различных значений, вероятно, будет увеличиваться по мере роста таблицы; положительная форма используется, когда считается, что столбец имеет фиксированное число возможных значений.) Например, значение -1 указывает на уникальный столбец, в котором число различных значений совпадает с числом строк. | |
dependencies | pg_dependencies | Статистика для функциональной зависимости | |
most_common_vals | anyarray | Список наиболее распространенных комбинаций значений в столбцах. (Null, если никакие комбинации не считаются более распространенными, чем любые другие.) | |
most_common_val_nulls | anyarray | Список нулевых флагов для наиболее распространенных комбинаций значений. (Null, если задан most_common_vals) | |
most_common_freqs | real[] | Список частот наиболее распространенных комбинаций, т. е. количество вхождений каждой делится на общее количество строк. (Null, если задан most_common_vals) | |
most_common_base_freqs | real[] | Список базовых частот наиболее распространенных комбинаций, т. е. произведение частот на значение. (Null, если задан most_common_vals) |
Максимальное число записей в полях массива можно контролировать для столбцов с помощью команды ALTER TABLE SET STATISTICS или глобально, задавая параметр времени выполнения default_statistics_target.
pg_tables
Представление pg_tables предоставляет доступ к полезной информации о каждой таблице в базе данных.
pg_tables столбцы
Имя | Тип | Ссылки | Описание |
---|---|---|---|
schemaname | name | pg_namespace.nspname | Имя схемы, содержащей таблицу |
tablename | name | pg_class.relname | Имя таблицы |
tableowner | name | pg_authid.rolname | Имя владельца таблицы |
tablespace | name | pg_tablespace.spcname | Имя табличного пространства, содержащего таблицу (null, если пространство по умолчанию для базы данных) |
hasindexes | boolean | pg_class.relhasindex | True, если таблица имеет (или недавно имела) какие-либо индексы |
hasrules | boolean | pg_class.relhasrules | True, если таблица имеет (или когда-то имела) правила |
hastriggers | boolean | pg_class.реластриггеры | True, если таблица имеет (или когда-то имела) триггеры |
rowsecurity | boolean | pg_class.relrowsecurity | True, если в таблице включена защита строк |
pg_timezone_abbrevs
Представление pg_timezone_abbrevs предоставляет список сокращений часовых поясов, которые в настоящее время распознаются как корректные для функций datetime. Содержание этого представления изменяется при изменении параметра времени выполнения timezone_abbreviations.
pg_timezone_abbrevs столбцы
Имя | Тип | Описание |
---|---|---|
abbrev | text | Аббревиатура часового пояса |
utc_offset | интервал | Смещение от UTC (положительное значение означает на восток от Гринвича) |
is_dst | boolean | True, если это аббревиатура необходима для перехода на летнее время |
Хотя большинство сокращений часовых поясов представляют собой фиксированные смещения от UTC, есть некоторые, которые исторически менялись в таких случаях этот представление содержит их текущее значение.
pg_timezone_names
Представление pg_timezone_names предоставляет список имен часовых поясов, которые распознаются командой SET TIMEZONE, а также связанные с ними сокращения, смещения UTC и состояние летнего времени. (Технически QHB не использует UTC, потому что координация для високосных секунд не обрабатываются). В отличие от сокращений, показанных в pg_timezone_abbrevs, многие из этих имен подразумевают набор правил перехода на летнее время. Таким образом, связанная информация изменяется через локальные границы для летнего времени. Отображаемая информация вычисляется на основе текущего значения параметра CURRENT_TIMESTAMP.
pg_timezone_names столбцы
Имя | Тип | Описание |
---|---|---|
name | text | Название часового пояса |
abbrev | text | Аббревиатура часового пояса |
utc_offset | интервал | Смещение от UTC (положительное значение означает восток от Гринвича) |
is_dst | boolean | True, если в настоящее время наблюдается переход на летнее время |
pg_user
Представление pg_user доступ к информации о пользователях базы данных. Это просто общедоступное представление pg_shadow которое скрывает поле пароля.
pg_user столбцы
Имя | Тип | Описание |
---|---|---|
usename | name | Имя пользователя |
usesysid | oid | ID этого пользователя |
usecreatedb | bool | Пользователь может создавать базы данных |
usesuper | bool | Пользователь является суперпользователем |
userepl | bool | Пользователь может инициировать потоковую репликацию и вывести систему из режима резервного копирования. |
usebypassrls | bool | Пользователь обходит каждую политику безопасности уровня строки, см. раздел Политики безопасности строк для получения дополнительной информации. |
passwd | text | Не пароль (всегда читается как ********) |
valuntil | timestamptz | Срок действия пароля (используется только для парольной аутентификации) |
useconfig | text[] | Значения по умолчанию сеанса для переменных конфигурации времени выполнения |
pg_user_mappings
Представление pg_user_mappings доступ к информации о сопоставлениях пользователей. Это по существу общедоступное представление pg_user_mapping, которое оставляет столбец umoptions, если у пользователя нет прав на его использование.
pg_user_mappings столбцы
Имя | Тип | Ссылки | Описание |
---|---|---|---|
umid | oid | pg_user_mapping.oid | OID сопоставления пользователей |
srvid | oid | pg_foreign_server.oid | OID внешнего сервера, содержащий это сопоставление |
srvname | name | pg_foreign_server.srvname | Имя внешнего сервера |
umuser | oid | pg_authid.oid | OID сопоставляемой локальной роли, 0, если пользовательское сопоставление является общедоступным |
usename | name | Имя локального пользователя для сопоставления | |
umoptions | text[] | Пользователь сопоставляет определенные параметры, в виде строки "ключ=значение" |
Чтобы защитить информацию о пароле, сохраненную в качестве параметра сопоставления пользователей, umoptions столбец будет считываться как null, если не применяется одно из следующих условий:
-
текущий пользователь-это сопоставляемый пользователь, который владеет сервером или имеет USAGE для него
-
текущий пользователь является владельцем сервера и сопоставление для PUBLIC
-
текущий пользователь является суперпользователем
pg_views
Представление pg_views предоставляет доступ к полезной информации о каждом представлении (view) в базе данных.
pg_views столбцы
Имя | Тип | Ссылки | Описание |
---|---|---|---|
schemaname | name | pg_namespace.nspname | Имя схемы, содержащей представление |
viewname | name | pg_class.relname | Имя представления |
viewowner | name | pg_authid.rolname | Имя владельца объекта (view) |
определение | text | Определение представления (реконструированный запрос SELECT) |