9.26. Функции и операторы системной информации#

9.26. Функции и операторы системной информации

9.26. Функции и операторы системной информации #

Функции, описанные в этом разделе, используются для получения различной информации об установке Tantor BE.

9.26.1. Функции информации о сессии #

Таблица 9.67 показывает несколько функций, которые извлекают информацию о сессии и системе.

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

Таблица 9.67. Функции информации о сессии

Функция

Описание

current_catalogname

current_database () → name

Возвращает имя текущей базы данных. (Базы данных в стандарте SQL называются "каталогами", поэтому current_catalog - это стандартное написание).

current_query () → text

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

current_rolename

Это эквивалентно current_user.

current_schemaname

current_schema () → name

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

current_schemas ( include_implicit boolean ) → name[]

Возвращает массив имен всех схем, которые в настоящее время находятся в действующем пути поиска, в их приоритетном порядке. (Элементы в текущем настройке search_path, которые не соответствуют существующим и доступным для поиска схемам, опускаются). Если аргумент типа Boolean равен true, то в результат включаются системные схемы, такие как pg_catalog, которые подразумеваются для поиска.

current_username

Возвращает имя пользователя текущего контекста выполнения.

inet_client_addr () → inet

Возвращает IP-адрес текущего клиента или NULL, если текущее соединение осуществляется через Unix-доменный сокет.

inet_client_port () → integer

Возвращает номер IP-порта текущего клиента или NULL, если текущее соединение осуществляется через Unix-доменный сокет.

inet_server_addr () → inet

Возвращает IP-адрес, на котором сервер принял текущее соединение, или NULL, если текущее соединение осуществляется через Unix-доменный сокет.

inet_server_port () → integer

Возвращает номер IP-порта, на котором сервер принял текущее соединение, или NULL, если текущее соединение осуществляется через Unix-доменный сокет.

pg_backend_pid () → integer

Возвращает идентификатор процесса сервера, присоединенного к текущей сессии.

pg_blocking_pids ( integer ) → integer[]

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

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

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

pg_conf_load_time () → timestamp with time zone

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

pg_current_logfile ( [ text ] ) → text

Возвращает путь к текущему используемому файлу журнала событий. Путь включает каталог log_directory и имя отдельного файла журнала. Результатом является NULL, если сборщик журнала отключен. Если существует несколько файлов журнала в разных форматах, pg_current_logfile без аргумента возвращает путь к файлу с первым найденным форматом в упорядоченном списке: stderr, csvlog, jsonlog. Если ни один из файлов журнала не имеет ни одного из этих форматов, возвращается NULL. Чтобы запросить информацию о конкретном формате файла журнала, укажите csvlog, jsonlog или stderr в качестве значения необязательного параметра. Результатом является NULL, если запрошенный формат журнала не настроен в log_destination. Результат отражает содержимое файла current_logfiles.

pg_my_temp_schema () → oid

Возвращает OID временной схемы текущей сессии или ноль, если она не имеет временной схемы (потому что не создала никаких временных таблиц).

pg_is_other_temp_schema ( oid ) → boolean

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

pg_jit_available () → boolean

Возвращает true, если доступно расширение компилятора JIT (см. Глава 30) и параметр конфигурации jit установлен в on.

pg_listening_channels () → setof text

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

pg_notification_queue_usage () → double precision

Возвращает долю (0–1) максимального размера очереди асинхронных уведомлений, которая в настоящее время занята уведомлениями, ожидающими обработки. См. LISTEN и NOTIFY для получения дополнительной информации.

pg_postmaster_start_time () → timestamp with time zone

Возвращает время, когда сервер был запущен.

pg_safe_snapshot_blocking_pids ( integer ) → integer[]

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

Сессия, выполняющая транзакцию SERIALIZABLE, блокирует транзакцию SERIALIZABLE READ ONLY DEFERRABLE от получения снимка, пока последняя не определит, что безопасно избежать взятия каких-либо предикатных блокировок. См. Раздел 13.2.3 для получения дополнительной информации о сериализуемых и отложенных транзакциях.

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

pg_trigger_depth () → integer

Возвращает текущий уровень вложенности триггеров Tantor BE (0, если функция не вызывается, непосредственно или косвенно, изнутри триггера).

session_username

Возвращает имя пользователя сессии.

system_usertext

Возвращает метод аутентификации и идентификацию (если таковая имеется), которую пользователь представил в ходе цикла аутентификации до того, как ему была назначена роль базы данных. Это представлено как auth_method:identity или NULL, если пользователь не был аутентифицирован (например, если была использована доверительная аутентификация).

username

Это эквивалентно current_user.

version () → text

Возвращает строку, описывающую версию сервера PostgreSQL. Также можно получить эту информацию из server_version, или для машинно-читаемой версии использовать server_version_num. Разработчики программного обеспечения должны использовать server_version_num (доступно с версии 8.2) или PQserverVersion вместо разбора текстовой версии.

tantor_version () → text

Возвращает строку, описывающую версию сервера Tantor BE в формате major.maintenance.tantor_maintenance с именем издания.

tantor_edition () → text

Возвращает строку, описывающую название версии Tantor BE.

tantor_build () → text

Возвращает строку с хешем коммита Tantor BE.


Примечание

current_catalog, current_role, current_schema, current_user, session_user, и user имеют особый синтаксический статус в SQL: они должны вызываться без закрывающих скобок. В PostgreSQL скобки могут быть использованы необязательно с current_schema, но не с другими.

Функция session_user обычно представляет пользователя, который инициировал текущее соединение с базой данных; но суперпользователи могут изменить это значение с помощью SET SESSION AUTHORIZATION. Функция current_user представляет идентификатор пользователя, который используется для проверки разрешений. Обычно он равен пользователю сессии, но его можно изменить с помощью SET ROLE. Он также изменяется во время выполнения функций с атрибутом SECURITY DEFINER. В терминах Unix, пользователь сессии - это реальный пользователь, а текущий пользователь - это эффективный пользователь. current_role и user являются синонимами для current_user. (Стандарт SQL делает различие между current_role и current_user, но Tantor BE не делает этого, так как объединяет пользователей и роли в один тип сущности).

9.26.2. Функции запроса привилегий доступа #

Таблица 9.68 перечисляет функции, которые позволяют программно запрашивать привилегии доступа к объектам. (См. Раздел 5.7 для получения дополнительной информации о привилегиях). В этих функциях пользователь, привилегии которого запрашиваются, может быть указан по имени или по OID (pg_authid.oid), или если имя указано как public, то проверяются привилегии псевдороли PUBLIC. Также, аргумент user может быть полностью не указан, в этом случае предполагается использование current_user. Объект, о котором запрашивается информация, также может быть указан по имени или по OID. При указании по имени может быть указано имя схемы, если это применимо. Интересующая привилегия доступа указывается текстовой строкой, которая должна быть одним из соответствующих ключевых слов привилегий для типа объекта (например, SELECT). Дополнительно, к типу привилегии можно добавить WITH GRANT OPTION, чтобы проверить, имеется ли привилегия с опцией предоставления. Также, можно перечислить несколько типов привилегий, разделяя их запятыми, в этом случае результат будет true, если имеется хотя бы одна из перечисленных привилегий. (Регистр строки привилегии не имеет значения, и допускается наличие дополнительных пробелов между, но не внутри имен привилегий). Некоторые примеры:

SELECT has_table_privilege('myschema.mytable', 'select');
SELECT has_table_privilege('joe', 'mytable', 'INSERT, SELECT WITH GRANT OPTION');

Таблица 9.68. Функции запроса привилегий доступа

Функция

Описание

has_any_column_privilege ( [ user name или oid, ] table text или oid, privilege text ) → boolean

Есть ли у пользователя привилегия для любого столбца таблицы? Это выполняется, если привилегия присутствует для всей таблицы или если есть предоставление привилегии на уровне столбца хотя бы для одного столбца. Допустимые типы привилегий: SELECT, INSERT, UPDATE и REFERENCES.

has_column_privilege ( [ user name или oid, ] table text или oid, column text или smallint, privilege text ) → boolean

Есть ли у пользователя привилегия для указанного столбца таблицы? Это выполняется, если привилегия удерживается для всей таблицы или если есть привилегия на уровне столбца для этого столбца. Столбец может быть указан по имени или по номеру атрибута (pg_attribute.attnum). Допустимые типы привилегий: SELECT, INSERT, UPDATE и REFERENCES.

has_database_privilege ( [ user name или oid, ] database text или oid, privilege text ) → boolean

Есть ли у пользователя привилегия для базы данных? Допустимые типы привилегий: CREATE, CONNECT, TEMPORARY и TEMP (который эквивалентен TEMPORARY).

has_foreign_data_wrapper_privilege ( [ user name или oid, ] fdw text или oid, privilege text ) → boolean

Имеет ли пользователь привилегию для внешнего источника данных? Единственный допустимый тип привилегии - USAGE.

has_function_privilege ( [ user name или oid, ] function text или oid, privilege text ) → boolean

Есть ли у пользователя привилегия для функции? Единственный допустимый тип привилегии - EXECUTE.

При указании функции по имени, а не по OID, допустимый ввод такой же, как для типа данных regprocedure (см. Раздел 8.19). Пример:

SELECT has_function_privilege('joeuser', 'myfunc(int, text)', 'execute');

has_language_privilege ( [ user name или oid, ] language text или oid, privilege text ) → boolean

Имеет ли пользователь привилегию для языка? Единственный допустимый тип привилегии - USAGE.

has_parameter_privilege ( [ user name или oid, ] parameter text, privilege text ) → boolean

Имеет ли пользователь привилегию для параметра конфигурации? Имя параметра нечувствительно к регистру. Допустимые типы привилегий: SET и ALTER SYSTEM.

has_schema_privilege ( [ user name или oid, ] schema text или oid, privilege text ) → boolean

Есть ли у пользователя привилегия для схемы? Допустимые типы привилегий: CREATE и USAGE.

has_sequence_privilege ( [ user name или oid, ] sequence text или oid, privilege text ) → boolean

Есть ли у пользователя привилегия для последовательности? Допустимые типы привилегий: USAGE, SELECT и UPDATE.

has_server_privilege ( [ user name или oid, ] server text или oid, privilege text ) → boolean

Есть ли у пользователя привилегия для внешнего сервера? Единственный допустимый тип привилегии - USAGE.

has_table_privilege ( [ user name или oid, ] table text или oid, privilege text ) → boolean

Есть ли у пользователя привилегия для таблицы? Допустимые типы привилегий: SELECT, INSERT, UPDATE, DELETE, TRUNCATE, REFERENCES, и TRIGGER.

has_tablespace_privilege ( [ user name или oid, ] tablespace text или oid, privilege text ) → boolean

Есть ли у пользователя привилегия для табличного пространства? Единственный допустимый тип привилегии - CREATE.

has_type_privilege ( [ user name или oid, ] type text или oid, privilege text ) → boolean

Есть ли у пользователя привилегия для типа данных? Единственный допустимый тип привилегий - USAGE. При указании типа по имени, а не по OID, допустимый ввод такой же, как для типа данных regtype (см. Раздел 8.19).

pg_has_role ( [ user name или oid, ] role text или oid, privilege text ) → boolean

Есть ли у пользователя привилегия для роли? Допустимые типы привилегий: MEMBER, USAGE, и SET. MEMBER обозначает прямое или косвенное членство в роли без учета конкретных привилегий, которые могут быть предоставлены. USAGE обозначает, доступны ли привилегии роли немедленно без выполнения SET ROLE, в то время как SET обозначает, возможно ли переключение на роль с использованием команды SET ROLE. WITH ADMIN OPTION или WITH GRANT OPTION могут быть добавлены к любому из этих типов привилегий для проверки наличия привилегии ADMIN (все шесть написаний проверяют одно и то же). Эта функция не позволяет специальный случай установки user в public, потому что псевдо-роль PUBLIC никогда не может быть членом реальных ролей.

row_security_active ( table text или oid ) → boolean

Активна ли политика защиты на уровне строк для указанной таблицы в контексте текущего пользователя и текущей среды?


Таблица 9.69 показывает операторы, доступные для типа aclitem, который является каталожным представлением привилегий доступа. См. Раздел 5.7 для получения информации о том, как читать значения привилегий доступа.

Таблица 9.69. aclitem Операторы

Оператор

Описание

Пример(ы)

aclitem = aclitemboolean

Are aclitems equal? (Обратите внимание, что тип aclitem не имеет обычного набора операторов сравнения; у него есть только равенство. В свою очередь, массивы aclitem могут быть сравнены только на равенство).

'calvin=r*w/hobbes'::aclitem = 'calvin=r*w*/hobbes'::aclitemf

aclitem[] @> aclitemboolean

Содержит ли массив указанные привилегии? (Это верно, если есть элемент массива, который соответствует правополучателю и праводателю aclitem и имеет по крайней мере указанный набор привилегий).

'{calvin=r*w/hobbes,hobbes=r*w*/postgres}'::aclitem[] @> 'calvin=r*/hobbes'::aclitemt

aclitem[] ~ aclitemboolean

Это устаревший псевдоним для @>.

'{calvin=r*w/hobbes,hobbes=r*w*/postgres}'::aclitem[] ~ 'calvin=r*/hobbes'::aclitemt


Таблица 9.70 показывает некоторые дополнительные функции для управления типом aclitem.

Таблица 9.70. aclitem Функции

Функция

Описание

acldefault ( type "char", ownerId oid ) → aclitem[]

Создает массив aclitem, содержащий привилегии доступа по умолчанию для объекта типа type, принадлежащего роли с OID ownerId. Это представляет собой привилегии доступа, которые будут использоваться, когда запись ACL объекта равна NULL. (Подробнее о привилегиях доступа по умолчанию см. в разделе Раздел 5.7). Параметр type должен быть одним из следующих значений: - 'c' для COLUMN, - 'r' для TABLE и объектов, схожих с таблицами, - 's' для SEQUENCE, - 'd' для DATABASE, - 'f' для FUNCTION или PROCEDURE, - 'l' для LANGUAGE, - 'L' для LARGE OBJECT, - 'n' для SCHEMA, - 'p' для PARAMETER, - 't' для TABLESPACE, - 'F' для FOREIGN DATA WRAPPER, - 'S' для FOREIGN SERVER, или - 'T' для TYPE или DOMAIN.

aclexplode ( aclitem[] ) → setof record ( grantor oid, grantee oid, privilege_type text, is_grantable boolean )

Возвращает массив aclitem в виде набора строк. Если получатель является псевдоролью PUBLIC, это представляется нулем в колонке grantee. Каждое предоставленное привилегие представлено как SELECT, INSERT, и т.д. (см. Таблица 5.1 для полного списка). Обратите внимание, что каждое привилегие разбивается на отдельную строку, поэтому в колонке privilege_type появляется только одно ключевое слово.

makeaclitem ( grantee oid, grantor oid, privileges text, is_grantable boolean ) → aclitem

Создает aclitem с заданными свойствами. privileges — это список привилегий, разделенных запятыми, таких как SELECT, INSERT и т. д., все из которых устанавливаются в результате. (Регистр строки привилегий не имеет значения, и дополнительные пробелы допускаются между, но не внутри имен привилегий.)


9.26.3. Функции запроса видимости схемы #

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

SELECT relname FROM pg_class WHERE pg_table_is_visible(oid);

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

Таблица 9.71. Функции запроса видимости схемы

Функция

Описание

pg_collation_is_visible ( collation oid ) → boolean

Видимо ли правило сортировки в пути поиска?

pg_conversion_is_visible ( conversion oid ) → boolean

Видна ли конверсия в пути поиска?

pg_function_is_visible ( function oid ) → boolean

Видна ли функция в пути поиска? (Это также работает для процедур и агрегатов).

pg_opclass_is_visible ( opclass oid ) → boolean

Видим ли класс оператора в пути поиска?

pg_operator_is_visible ( operator oid ) → boolean

Оператор виден в пути поиска?

pg_opfamily_is_visible ( opclass oid ) → boolean

Видна ли семья операторов в пути поиска?

pg_statistics_obj_is_visible ( stat oid ) → boolean

Видим ли объект статистики в пути поиска?

pg_table_is_visible ( table oid ) → boolean

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

pg_ts_config_is_visible ( config oid ) → boolean

Видна ли конфигурация полнотекстового поиска в пути поиска?

pg_ts_dict_is_visible ( dict oid ) → boolean

Виден ли словарь текстового поиска в пути поиска?

pg_ts_parser_is_visible ( parser oid ) → boolean

Виден ли парсер текстового поиска в пути поиска?

pg_ts_template_is_visible ( template oid ) → boolean

Видим ли шаблон текстового поиска в пути поиска?

pg_type_is_visible ( type oid ) → boolean

Видим ли тип (или домен) в пути поиска?


Все эти функции требуют идентификаторы объектов (OID) для идентификации объекта, который нужно проверить. Если нужно проверить объект по имени, удобно использовать типы псевдонимов OID (regclass, regtype, regprocedure, regoperator, regconfig или regdictionary), например:

SELECT pg_type_is_visible('myschema.widget'::regtype);

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

9.26.4. Функции информации системного каталога #

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

Таблица 9.72. Функции информации системного каталога

Функция

Описание

format_type ( type oid, typemod integer ) → text

Возвращает SQL-имя для типа данных, который идентифицируется его OID и, возможно, модификатором типа. Передайте NULL для модификатора типа, если конкретный модификатор неизвестен.

pg_char_to_encoding ( encoding name ) → integer

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

pg_encoding_to_char ( encoding integer ) → name

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

pg_get_catalog_foreign_keys () → setof record ( fktable regclass, fkcols text[], pktable regclass, pkcols text[], is_array boolean, is_opt boolean )

Возвращает набор записей, описывающих внешние ключевые отношения, существующие в каталогах системы Tantor BE. Столбец fktable содержит имя ссылающегося каталога, а столбец fkcols содержит имя(имена) ссылающегося столбца (столбцов). Аналогично, столбец pktable содержит имя целевого каталога, а столбец pkcols содержит имя(имена) целевого столбца (столбцов). Если is_array равно true, последний целевой столбец является массивом, каждый элемент которого должен соответствовать некоторой записи в целевом каталоге. Если is_opt равно true, ссылающиеся столбцы могут содержать нули вместо допустимой ссылки.

pg_get_constraintdef ( constraint oid [, pretty boolean ] ) → text

Восстанавливает команду создания ограничения. (Это восстановление декомпилировано, а не оригинальный текст команды).

pg_get_expr ( expr pg_node_tree, relation oid [, pretty boolean ] ) → text

Декомпилирует внутреннюю форму выражения, хранящегося в системных каталогах, такую как значение по умолчанию для столбца. Если выражение может содержать переменные (Vars), укажите OID отношения, на которое они ссылаются, в качестве второго параметра; если переменные (Vars) не ожидаются, достаточно передать ноль.

pg_get_functiondef ( func oid ) → text

Восстанавливает команду создания функции или процедуры. (Это восстановление декомпилированное, а не оригинальный текст команды). Результатом является полный оператор CREATE OR REPLACE FUNCTION или CREATE OR REPLACE PROCEDURE.

pg_get_function_arguments ( func oid ) → text

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

pg_get_function_identity_arguments ( func oid ) → text

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

pg_get_function_result ( func oid ) → text

Восстанавливает предложение RETURNS функции в форме, в которой она должна появиться внутри CREATE FUNCTION. Возвращает NULL для процедуры.

pg_get_indexdef ( index oid [, column integer, pretty boolean ] ) → text

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

pg_get_keywords () → setof record ( word text, catcode "символ", barelabel boolean, catdesc text, baredesc text )

Возвращает набор записей, описывающих ключевые слова SQL, распознаваемые сервером. Столбец word содержит ключевое слово. Столбец catcode содержит код категории: U для незарезервированного ключевого слова, C для ключевого слова, которое может быть именем столбца, T для ключевого слова, которое может быть именем типа или функции, или R для полностью зарезервированного ключевого слова. Столбец barelabel содержит значение true, если ключевое слово может использоваться в качестве "голого" метки столбца в списках SELECT, или false, если оно может использоваться только после AS. Столбец catdesc содержит, возможно, локализованную строку, описывающую категорию ключевого слова. Столбец baredesc содержит, возможно, локализованную строку, описывающую статус метки столбца ключевого слова.

pg_get_partkeydef ( table oid ) → text

Воссоздает определение ключа секции секционированной таблицы в том виде, в котором оно будет в предложении PARTITION BY команды CREATE TABLE. (Это декомпилированная реконструкция, а не оригинальный текст команды.)

pg_get_ruledef ( rule oid [, pretty boolean ] ) → text

Восстанавливает команду создания правила. (Это восстановление декомпилированной команды, а не оригинального текста команды).

pg_get_serial_sequence ( table text, column text ) → text

Возвращает имя последовательности, связанной с колонкой, или NULL, если с колонкой не связана последовательность. Если колонка является колонкой идентификатора, связанная последовательность - это последовательность, созданная внутренне для этой колонки. Для колонок, созданных с использованием одного из серийных типов (serial, smallserial, bigserial), это последовательность, созданная для определения этой серийной колонки. В последнем случае связь может быть изменена или удалена с помощью ALTER SEQUENCE OWNED BY. (Возможно, эту функцию следовало бы назвать pg_get_owned_sequence; ее текущее имя отражает тот факт, что исторически она использовалась с колонками серийного типа). Первый параметр - это имя таблицы с необязательной схемой, а второй параметр - это имя колонки. Поскольку первый параметр потенциально содержит и схему, и имя таблицы, он анализируется согласно обычным правилам SQL, что означает, что он по умолчанию приводится к нижнему регистру. Второй параметр, являющийся просто именем колонки, обрабатывается буквально и поэтому его регистр сохраняется. Результат подходящим образом форматируется для передачи функциям последовательности (см. Раздел 9.17).

Типичное использование - чтение текущего значения последовательности для столбца с идентификатором или серийным номером, например:

SELECT currval(pg_get_serial_sequence('sometable', 'id'));

pg_get_statisticsobjdef ( statobj oid ) → text

Восстанавливает команду создания объекта расширенной статистики. (Это восстановление декомпилированное, а не оригинальный текст команды).

pg_get_triggerdef ( trigger oid [, pretty boolean ] ) → text

Восстанавливает команду создания триггера. (Это восстановление декомпилированной команды, а не оригинального текста команды).

pg_get_userbyid ( role oid ) → name

Возвращает имя роли по ее OID.

pg_get_viewdef ( view oid [, pretty boolean ] ) → text

Восстанавливает базовую команду SELECT для представления или материализованного представления. (Это восстановление декомпилировано, а не оригинальный текст команды).

pg_get_viewdef ( view oid, wrap_column integer ) → text

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

pg_get_viewdef ( view text [, pretty boolean ] ) → text

Восстанавливает базовую команду SELECT для представления или материализованного представления, работая с текстовым именем представления вместо его OID. (Это устарело; вместо этого используйте вариант с OID).

pg_index_column_has_property ( index regclass, column integer, property text ) → boolean

Проверяет, имеет ли столбец индекса указанное свойство. Общие свойства столбцов индекса перечислены в Таблица 9.73. (Обратите внимание, что методы доступа расширений могут определять дополнительные имена свойств для своих индексов). NULL возвращается, если имя свойства неизвестно или не применимо к конкретному объекту, или если OID или номер столбца не идентифицируют допустимый объект.

pg_index_has_property ( index regclass, property text ) → boolean

Проверяет, имеет ли индекс указанное свойство. Общие свойства индекса перечислены в Таблица 9.74. (Обратите внимание, что методы доступа расширений могут определять дополнительные имена свойств для своих индексов). NULL возвращается, если имя свойства неизвестно или не применимо к конкретному объекту, или если OID не идентифицирует допустимый объект.

pg_indexam_has_property ( am oid, property text ) → boolean

Проверяет, имеет ли метод доступа к индексу указанное свойство. Свойства методов доступа к индексам перечислены в Таблица 9.75. NULL возвращается, если имя свойства неизвестно или не применимо к конкретному объекту, или если OID не идентифицирует допустимый объект.

pg_options_to_table ( options_array text[] ) → setof record ( option_name text, option_name text )

Возвращает набор параметров хранения, представленных значением из pg_class.reloptions или pg_attribute.attoptions.

pg_settings_get_flags ( guc text ) → text[]

Возвращает массив флагов, связанных с указанным GUC, или NULL, если он не существует. Результатом будет пустой массив, если GUC существует, но нет флагов для отображения. Показаны только наиболее полезные флаги, перечисленные в Таблица 9.76.

pg_tablespace_databases ( tablespace oid ) → setof oid

Возвращает набор OID баз данных, в которых хранятся объекты в указанном табличном пространстве. Если эта функция возвращает какие-либо строки, значит табличное пространство не пустое и его нельзя удалить. Чтобы определить конкретные объекты, находящиеся в табличном пространстве, вам потребуется подключиться к базе данных, указанной в функции pg_tablespace_databases, и запросить их каталоги pg_class.

pg_tablespace_location ( tablespace oid ) → text

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

pg_typeof ( "any" ) → regtype

Возвращает OID типа данных значения, переданного ему. Это может быть полезно для устранения неполадок или динамического создания SQL-запросов. Функция объявлена с возвращаемым типом regtype, который является псевдонимом OID (см. Раздел 8.19); это означает, что он сравнивается с OID, но отображается как имя типа.

Например:

SELECT pg_typeof(33);
 pg_typeof
-----------
 integer

SELECT typlen FROM pg_type WHERE oid = pg_typeof(33);
 typlen
--------
      4

COLLATION FOR ( "любой" ) → text

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

Например:

SELECT collation for (description) FROM pg_description LIMIT 1;
 pg_collation_for
------------------
 "default"

SELECT collation for ('foo' COLLATE "de_DE");
 pg_collation_for
------------------
 "de_DE"

to_regclass ( text ) → regclass

Преобразует текстовое имя отношения в его OID. Аналогичный результат получается при приведении строки к типу regclass (см. Раздел 8.19); однако эта функция вернет NULL вместо того, чтобы выдать ошибку, если имя не найдено.

to_regcollation ( text ) → regcollation

Преобразует текстовое имя сортировки в его OID. Аналогичный результат получается путем приведения строки к типу regcollation (см. Раздел 8.19); однако эта функция вернет NULL вместо того, чтобы выдать ошибку, если имя не найдено.

to_regnamespace ( text ) → regnamespace

Преобразует текстовое имя схемы в его OID. Аналогичный результат получается при приведении строки к типу regnamespace (см. Раздел 8.19); однако эта функция вернет NULL вместо того, чтобы выдать ошибку, если имя не найдено.

to_regoper ( text ) → regoper

Преобразует текстовое имя оператора в его OID. Аналогичный результат получается при приведении строки к типу regoper (см. Раздел 8.19); однако эта функция вернет NULL вместо того, чтобы выдать ошибку, если имя не найдено или является неоднозначным.

to_regoperator ( text ) → regoperator

Преобразует текстовое имя оператора (с типами параметров) в его OID. Аналогичный результат получается при приведении строки к типу regoperator (см. Раздел 8.19); однако, эта функция вернет NULL вместо того, чтобы выдать ошибку, если имя не найдено.

to_regproc ( text ) → regproc

Преобразует текстовое имя функции или процедуры в его OID. Аналогичный результат получается при приведении строки к типу regproc (см. Раздел 8.19); однако эта функция вернет NULL вместо того, чтобы вызывать ошибку, если имя не найдено или является неоднозначным.

to_regprocedure ( text ) → regprocedure

Переводит текстовое имя функции или процедуры (с типами аргументов) в его OID. Аналогичный результат получается при приведении строки к типу regprocedure (см. Раздел 8.19); однако, эта функция вернет NULL вместо того, чтобы выдать ошибку, если имя не найдено.

to_regrole ( text ) → regrole

Преобразует текстовое имя роли в его OID. Аналогичный результат получается при приведении строки к типу regrole (см. Раздел 8.19); однако эта функция вернет NULL вместо того, чтобы выдать ошибку, если имя не найдено.

to_regtype ( text ) → regtype

Преобразует текстовое имя типа в его OID. Аналогичный результат получается при приведении строки к типу regtype (см. Раздел 8.19); однако эта функция вернет NULL вместо того, чтобы выдать ошибку, если имя не найдено.


Большинство функций, которые восстанавливают (декомпилируют) объекты базы данных, имеют необязательный флаг pretty, который, если установлен в значение true, приводит к выводу результата в формате красивого вывода. Красивый вывод удаляет ненужные скобки и добавляет пробелы для улучшения читаемости. Формат красивого вывода более читаем, но формат по умолчанию более вероятно будет интерпретироваться одинаково будущими версиями Tantor BE, поэтому избегайте использования красивого вывода для целей дампа. Передача значения false для параметра pretty дает тот же результат, что и опускание параметра.

Таблица 9.73. Свойства столбца индекса

NameDescription
ascСортирует ли столбец в возрастающем порядке при прямом сканировании?
descОпределяет, сортируется ли столбец в порядке убывания при прямом сканировании?
nulls_firstСортирует ли столбец сначала значениями null при прямом сканировании?
nulls_lastСортирует ли столбец с null-значениями в конце при прямом сканировании?
orderableОбладает ли столбец определенным порядком сортировки?
distance_orderableМожет ли столбец быть просканирован в порядке с помощью оператора distance, например ORDER BY col <-> constant ?
returnableМожет ли значение столбца быть возвращено при сканировании только по индексу?
search_arrayПоддерживает ли столбец нативно поиск col = ANY(array)?
search_nullsПоддерживает ли столбец поиск IS NULL и IS NOT NULL?

Таблица 9.74. Свойства индекса

NameDescription
clusterableМожет ли индекс использоваться в команде CLUSTER?
index_scanПоддерживает ли индекс обычные (не битовые) сканирования?
bitmap_scanПоддерживает ли индекс сканирования по битовым картам?
backward_scanМожет ли направление сканирования быть изменено в середине сканирования (для поддержки FETCH BACKWARD на курсоре без необходимости материализации)?

Таблица 9.75. Свойства метода доступа к индексу

NameDescription
can_orderПоддерживает ли метод доступа ключевые слова ASC, DESC и связанные с ними в CREATE INDEX?
can_uniqueПоддерживает ли метод доступа уникальные индексы?
can_multi_colПоддерживает ли метод доступа индексы с несколькими столбцами?
can_excludeПоддерживает ли метод доступа ограничение-исключения?
can_includeПоддерживает ли метод доступа INCLUDE в предложении CREATE INDEX?

Таблица 9.76. Флаги GUC

FlagDescription
EXPLAINПараметры с этим флагом включаются в команды EXPLAIN (SETTINGS).
NO_SHOW_ALLПараметры с этим флагом исключаются из команд SHOW ALL.
NO_RESETПараметры с этим флагом не поддерживают команды RESET.
NO_RESET_ALLПараметры с этим флагом исключаются из команды RESET ALL.
NOT_IN_SAMPLEПараметры с этим флагом по умолчанию не включены в postgresql.conf.
RUNTIME_COMPUTEDПараметры с этим флагом вычисляются во время выполнения.

9.26.5. Функции информации об объекте и адресации #

Таблица 9.77 перечисляет функции, связанные с идентификацией и адресацией объектов базы данных.

Таблица 9.77. Функции информации об объекте и адресации

Функция

Описание

pg_describe_object ( classid oid, objid oid, objsubid integer ) → text

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

pg_identify_object ( classid oid, objid oid, objsubid integer ) → record ( type text, schema text, name text, identity text )

Возвращает строку, содержащую достаточно информации для однозначной идентификации объекта базы данных, указанного OID каталога, OID объекта и подобъекта. Эта информация предназначена для машинного чтения и никогда не переводится. type определяет тип объекта базы данных; schema - это имя схемы, к которой принадлежит объект, или NULL для типов объектов, не принадлежащих схемам; name - это имя объекта, заключенное в кавычки, если необходимо, если имя (вместе с именем схемы, если применимо) достаточно для однозначной идентификации объекта, в противном случае NULL; identity - это полная идентичность объекта, с точным форматом, зависящим от типа объекта, и каждое имя в формате является полным и заключено в кавычки при необходимости. Неопределенные объекты идентифицируются с помощью значений NULL.

pg_identify_object_as_address ( classid oid, objid oid, objsubid integer ) → record ( type text, object_names text[], аргументы_объектов text[] )

Возвращает строку, содержащую достаточно информации для уникальной идентификации объекта базы данных, указанного OID каталога, OID объекта и подобъекта. Возвращаемая информация не зависит от текущего сервера, то есть ее можно использовать для идентификации объекта с таким же именем на другом сервере. type определяет тип объекта базы данных; object_names и object_args являются текстовыми массивами, которые вместе формируют ссылку на объект. Эти три значения могут быть переданы в pg_get_object_address для получения внутреннего адреса объекта.

pg_get_object_address ( type text, object_names text[], object_args text[] ) → record ( classid oid, objid oid, objsubid integer )

Возвращает строку, содержащую достаточно информации для уникальной идентификации объекта базы данных, указанного кодом типа и именем объекта, а также массивами аргументов. Возвращаемые значения являются значениями, которые будут использоваться в системных каталогах, таких как pg_depend; их можно передавать другим системным функциям, таким как pg_describe_object или pg_identify_object. classid - это OID системного каталога, содержащего объект; objid - это OID самого объекта, а objsubid - это идентификатор подобъекта или ноль, если такового нет. Эта функция является обратной функции pg_identify_object_as_address. Неопределенные объекты идентифицируются с помощью значений NULL.


9.26.6. Функции комментариев информации #

Функции, показанные в Таблица 9.78 извлекают комментарии, ранее сохраненные с помощью команды COMMENT. Если для указанных параметров комментарий не найден, возвращается значение null.

Таблица 9.78. Функции комментариев информации

Функция

Описание

col_description ( table oid, column integer ) → text

Возвращает комментарий для столбца таблицы, который определяется OID таблицы и номером столбца. (obj_description не может быть использован для столбцов таблицы, так как у столбцов нет собственных OID).

obj_description ( object oid, catalog name ) → text

Возвращает комментарий для объекта базы данных, указанного его OID и имени содержащего системного каталога. Например, obj_description(123456, 'pg_class') извлекает комментарий для таблицы с OID 123456.

obj_description ( object oid ) → text

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

shobj_description ( object oid, catalog name ) → text

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


9.26.7. Функции проверки достоверности данных #

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

Таблица 9.79. Функции проверки достоверности данных

Функция

Описание

Пример(ы)

pg_input_is_valid ( string text, type text ) → boolean

Проверяет, является ли данный string допустимым вводом для указанного типа данных, возвращая true или false.

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

pg_input_is_valid('42', 'integer')t

pg_input_is_valid('42000000000', 'integer')f

pg_input_is_valid('1234.567', 'numeric(7,4)')f

pg_input_error_info ( string text, type text ) → record ( message text, detail text, hint text, sql_error_code text )

Проверяет, является ли данный string допустимым вводом для указанного типа данных; если нет, возвращает детали ошибки, которая была бы вызвана. Если ввод допустим, результатом будет NULL. Входные данные такие же, как для pg_input_is_valid.

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

select * from pg_input_error_info('42000000000', 'integer')

                       message                        | detail | hint | sql_error_code
------------------------------------------------------+--------+------+----------------
 value "42000000000" is out of range for type integer |        |      | 22003

select message, detail from pg_input_error_info('1234.567', 'numeric(7,4)')

        message         |                                      detail
------------------------+----------------------------------​-------------------------------------------------
 numeric field overflow | A field with precision 7, scale 4 must round to an absolute value less than 10^3.


9.26.8. Функции для получения идентификатора транзакции и информации о снимке #

Функции, показанные в Таблица 9.80, предоставляют информацию о транзакциях сервера в экспортируемой форме. Основное использование этих функций - определить, какие транзакции были подтверждены между двумя снимками.

Таблица 9.80. Функции для получения идентификатора транзакции и информации о снимке

Функция

Описание

age ( xid ) → integer

Возвращает количество транзакций между указанным идентификатором транзакции и текущим счетчиком транзакций.

mxid_age ( xid ) → integer

Возвращает количество multixacts ID между указанным multixact ID и текущим счетчиком multixacts.

pg_current_xact_id () → xid8

Возвращает идентификатор текущей транзакции. Назначит новый, если текущая транзакция еще не имеет его (потому что не выполняла обновлений базы данных); см. Раздел 71.1 для подробностей. Если выполнено в подчиненной транзакции, это вернет идентификатор транзакции верхнего уровня; см. Раздел 71.3 для подробностей.

pg_current_xact_id_if_assigned () → xid8

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

pg_xact_status ( xid8 ) → text

Отчет о состоянии коммита недавней транзакции. Результатом является одно из значений in progress, committed или aborted, при условии, что транзакция достаточно новая, чтобы система сохраняла информацию о состоянии коммита этой транзакции. Если транзакция достаточно старая, что в системе не осталось ссылок на нее и информация о состоянии коммита была удалена, результатом будет NULL. Приложения могут использовать эту функцию, например, чтобы определить, была ли их транзакция подтверждена или отменена после разрыва связи между приложением и сервером базы данных во время выполнения команды COMMIT. Обратите внимание, что подготовленные транзакции отображаются как in progress; приложения должны проверять pg_prepared_xacts, если им необходимо определить, принадлежит ли идентификатор транзакции подготовленной транзакции.

pg_current_snapshot () → pg_snapshot

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

pg_snapshot_xip ( pg_snapshot ) → setof xid8

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

pg_snapshot_xmax ( pg_snapshot ) → xid8

Возвращает xmax снимка.

pg_snapshot_xmin ( pg_snapshot ) → xid8

Возвращает xmin снимка.

pg_visible_in_snapshot ( xid8, pg_snapshot ) → boolean

Является ли данное ID транзакции видимым согласно этому снимку (то есть, было ли оно завершено до того, как был сделан снимок)? Обратите внимание, что эта функция не даст правильного ответа для ID подтранзакции (subxid); см. Раздел 71.3 для подробностей.


Внутренний тип идентификатора транзакции xid имеет ширину 32 бита и оборачивается каждые 4 миллиарда транзакций. Однако, функции, показанные в Таблица 9.80, за исключением age и mxid_age, используют 64-битный тип xid8, который не оборачивается в течение срока установки и может быть преобразован в xid путем приведения, если это необходимо; см. Раздел 71.1 для подробностей. Тип данных pg_snapshot хранит информацию о видимости идентификатора транзакции в определенный момент времени. Его компоненты описаны в Таблица 9.81. Текстовое представление pg_snapshotxmin:xmax:xip_list. Например, 10:20:10,14,15 означает xmin=10, xmax=20, xip_list=10, 14, 15.

Таблица 9.81. Компоненты снимка

ИмяОписание
xmin Самый низкий идентификатор транзакции, который все еще активен. Все идентификаторы транзакций меньше xmin либо подтверждены и видимы, либо отменены и недействительны.
xmax Один за наивысшим завершенным идентификатором транзакции. Все идентификаторы транзакций, большие или равные xmax, еще не завершились на момент создания снимка, и поэтому невидимы.
xip_list Транзакции, выполняющиеся на момент создания снимка. Транзакция с идентификатором xmin <= X < xmax и не входящая в этот список, уже была завершена на момент создания снимка, и, следовательно, либо видима, либо мертва в зависимости от её статуса фиксации. Этот список не включает идентификаторы транзакций подчинённых транзакций (subxids).

В релизах Tantor BE до 13-й версии не было типа xid8, поэтому были предоставлены варианты этих функций, которые использовали тип bigint для представления 64-битного XID, с соответствующим отдельным типом данных снимка txid_snapshot. Эти старые функции имеют в своих именах txid. Они все еще поддерживаются для обратной совместимости, но могут быть удалены в будущих версиях. См. Таблица 9.82.

Таблица 9.82. Устаревшие функции идентификатора транзакции и информации о снимке

Функция

Описание

txid_current () → bigint

See pg_current_xact_id().

txid_current_if_assigned () → bigint

See pg_current_xact_id_if_assigned().

txid_current_snapshot () → txid_snapshot

See pg_current_snapshot().

txid_snapshot_xip ( txid_snapshot ) → setof bigint

See pg_snapshot_xip().

txid_snapshot_xmax ( txid_snapshot ) → bigint

See pg_snapshot_xmax().

txid_snapshot_xmin ( txid_snapshot ) → bigint

See pg_snapshot_xmin().

txid_visible_in_snapshot ( bigint, txid_snapshot ) → boolean

See pg_visible_in_snapshot().

txid_status ( bigint ) → text

See pg_xact_status().


9.26.9. Функции информации о зафиксированных транзакциях #

Функции, показанные в Таблица 9.83 предоставляют информацию о том, когда были зафиксированы прошлые транзакции. Они предоставляют полезные данные только тогда, когда включена опция конфигурации track_commit_timestamp, и только для транзакций, которые были зафиксированы после ее включения. Информация о времени фиксации регулярно удаляется во время vacuum.

Таблица 9.83. Функции информации о зафиксированных транзакциях

Функция

Описание

pg_xact_commit_timestamp ( xid ) → timestamp with time zone

Возвращает временную метку коммита транзакции.

pg_xact_commit_timestamp_origin ( xid ) → record ( timestamp timestamp with time zone, roident oid)

Возвращает временную метку коммита и источник репликации транзакции.

pg_last_committed_xact () → record ( xid xid, timestamp timestamp with time zone, roident oid )

Возвращает идентификатор транзакции, временную метку коммита и источник репликации последней подтвержденной транзакции.


9.26.10. Функции управления данными #

Функции, показанные в Таблица 9.84, выводят информацию, инициализированную во время initdb, такую как версия каталога. Они также показывают информацию о журналировании предварительной записи и обработке контрольных точек. Эта информация относится ко всему кластеру, а не к конкретной базе данных. Эти функции предоставляют большую часть той же информации из того же источника, что и приложение pg_controldata.

Таблица 9.84. Функции управления данными

Функция

Описание

pg_control_checkpoint () → record

Возвращает информацию о текущем состоянии контрольной точки, как показано в Таблица 9.85.

pg_control_system () → record

Возвращает информацию о текущем состоянии контрольного файла, как показано в Таблица 9.86.

pg_control_init () → record

Возвращает информацию о состоянии инициализации кластера, как показано в Таблица 9.87.

pg_control_recovery () → record

Возвращает информацию о состоянии восстановления, как показано в Таблица 9.88.


Таблица 9.85. Выходные столбцы pg_control_checkpoint

Имя столбцаТип данных
checkpoint_lsnpg_lsn
redo_lsnpg_lsn
redo_wal_filetext
timeline_idinteger
prev_timeline_idinteger
full_page_writesboolean
next_xidtext
next_oidoid
next_multixact_idxid
next_multi_offsetxid
oldest_xidxid
oldest_xid_dbidoid
oldest_active_xidxid
oldest_multi_xidxid
oldest_multi_dbidoid
oldest_commit_ts_xidxid
newest_commit_ts_xidxid
checkpoint_timetimestamp with time zone

Таблица 9.86. Выходные столбцы pg_control_system

Имя столбцаТип данных
pg_control_versioninteger
catalog_version_nointeger
system_identifierbigint
pg_control_last_modifiedtimestamp with time zone

Таблица 9.87. Выходные столбцы pg_control_init

Имя столбцаТип данных
max_data_alignmentinteger
database_block_sizeinteger
blocks_per_segmentinteger
wal_block_sizeinteger
bytes_per_wal_segmentinteger
max_identifier_lengthinteger
max_index_columnsinteger
max_toast_chunk_sizeinteger
large_object_chunk_sizeinteger
float8_pass_by_valueboolean
data_page_checksum_versioninteger

Таблица 9.88. pg_control_recovery Output Columns

Имя столбцаТип данных
min_recovery_end_lsnpg_lsn
min_recovery_end_timelineinteger
backup_start_lsnpg_lsn
backup_end_lsnpg_lsn
end_of_backup_record_requiredboolean