×
Мы обрабатываем cookies, чтобы сделать наш сайт удобнее и персонализированнее для вас. Подробнее: политика использования «cookies» и «политики конфиденциальности».

Для самостоятельной настройки ознакомьтесь с инструкцией

Дополнительные настройки cookies в браузерах

Файлы cookie автоматически загружаются в ваш браузер при посещении веб-сайта. У вас есть возможность управлять этими файлами. Если Вы не согласны с использованием файлов cookies, запретите их сохранение на своём устройстве, удалите уже имеющиеся файлы cookies через настройки браузера или прекратите использование сайта.

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

Инструкция по отключению cookies
Принять
Настроить
Отклонить

ДОКУМЕНТАЦИЯ

Выберите версию, форк и язык для СУБД Digital Q.DataBase, чтобы прочитать или скачать всю документацию.
Техподдержка
Документация
Диасофт
Авторские права © 2016–2025 ООО "Диасофт Экосистема"
Скачать всю документацию:

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

2.6.27.1. Функции получения информации о сеансе
2.6.27.2. Функции проверки прав доступа
2.6.27.3. Функции проверки видимости объектов в схемах
2.6.27.4. Функции для получения информации из системных каталогов
2.6.27.5. Функции получения информации об объектах и функции адресации
2.6.27.6. Функции получения информации о комментариях
2.6.27.7. Функции проверки валидности данных
2.6.27.8. Функции идентификаторов транзакций и информации о снимках
2.6.27.9. Функции получения информации о зафиксированных транзакциях
2.6.27.10. Функции управляющих данных
2.6.27.11. Функции получения информации о версии
2.6.27.12. Функции получения информации о суммировании WAL

Функции, описанные в данном разделе, предназначены для получения различных сведений об установленном экземпляре Digital Q.DataBase.

2.6.27.1. Функции получения информации о сеансе #

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

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

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

Функция

Описание

current_catalogname

current_database () → name

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

current_query () → text

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

current_rolename

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

current_schemaname

current_schema () → name

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

current_schemas ( include_implicit boolean ) → name[]

Возвращает массив имен всех схем, входящих в настоящее время в эффективный путь поиска в порядке приоритета элементов. (Элементы в текущем search_path значении параметра, которые не соответствуют существующим и доступным для поиска схемам, исключаются.) Если логический аргумент соответствует 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[]

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

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

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

pg_conf_load_time () → timestamp with time zone

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

pg_current_logfile ( [ text ] ) → text

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

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

pg_my_temp_schema () → oid

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

pg_is_other_temp_schema ( oid ) → boolean

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

pg_jit_available () → boolean

Возвращает логическое значение true, если JIT расширение компилятора доступно (см. Глава 3.15) и если 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[]

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

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

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

pg_trigger_depth () → integer

Возвращает текущий уровень вложенности из Digital Q.DataBase триггеров (значение 0, если вызов выполнен, прямо или косвенно, не из триггера).

session_username

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

system_usertext

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

username

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


Примечание

current_catalog, current_role, current_schema, current_user, session_user, а также user имеют особый синтаксический статус в языке SQL: их следует вызывать без замыкающих скобок. В СУБД Digital Q.DataBase круглые скобки могут опционально использоваться с функцией current_schema, но не с остальными функциями.

Данный session_user обычно возвращает имя пользователя, инициировавшего текущее соединение с базой данных; однако суперпользователи могут изменить этот параметр с помощью команды SET SESSION AUTHORIZATION. Данная функция current_user возвращает идентификатор пользователя, применяемый для проверки прав доступа. Как правило, он совпадает с сеансовым пользователем, но может быть изменен с помощью команды SET ROLE. Данное значение также изменяется во время выполнения функций с атрибутом SECURITY DEFINER. В терминологии Unix пользователь сеанса представляет собой «реальный пользователь» а текущий пользователь — это «эффективный пользователь». current_role и user являются синонимами для current_user. (В стандарте SQL проводится различие между current_role и current_user, но Digital Q.DataBase PostgreSQL этого не делает, так как в данной системе пользователи и роли объединены в один тип сущности.)

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

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

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

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

Функция

Описание

has_any_column_privilege ( [ user name или oid, ] table text или oid, право доступа text ) → boolean

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

has_column_privilege ( [ user name или oid, ] table text или oid, column text или smallint, право доступа text ) → boolean

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

has_database_privilege ( [ user name или oid, ] database text или oid, право доступа text ) → boolean

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

has_foreign_data_wrapper_privilege ( [ user name или oid, ] fdw text или oid, право доступа text ) → boolean

Обладает ли пользователь правами доступа к обертке сторонних данных (foreign-data wrapper)? Единственным допустимым типом прав доступа является USAGE.

has_function_privilege ( [ user name или oid, ] функция text или oid, право доступа text ) → boolean

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

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

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

has_language_privilege ( [ user name или oid, ] язык text или oid, право доступа text ) → boolean

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

has_parameter_privilege ( [ user name или oid, ] параметр text, право доступа text ) → boolean

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

has_schema_privilege ( [ user name или oid, ] схема text или oid, право доступа text ) → boolean

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

has_sequence_privilege ( [ user name или oid, ] последовательность text или oid, право доступа text ) → boolean

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

has_server_privilege ( [ user name или oid, ] сервер text или oid, право доступа text ) → boolean

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

has_table_privilege ( [ user name или oid, ] table text или oid, право доступа text ) → boolean

Имеется ли у пользователя право доступа к таблице? Допустимые типы прав доступа являются следующими: SELECT, INSERT, UPDATE, DELETE, TRUNCATE, REFERENCES, TRIGGER, и MAINTAIN.

has_tablespace_privilege ( [ user name или oid, ] tablespace text или oid, право доступа text ) → boolean

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

has_type_privilege ( [ user name или oid, ] тип text или oid, право доступа text ) → boolean

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

pg_has_role ( [ user name или oid, ] роль text или oid, право доступа 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

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


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

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

Оператор

Описание

Примеры

aclitem = aclitemboolean

Являются ли aclitemравными? (Обратите внимание: для типа тип aclitem отсутствует стандартный набор операторов сравнения; предусмотрен только оператор равенства. В свою очередь, aclitem массивы также можно сравнивать только на равенство.)

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

aclitem[] @> aclitemboolean

Содержит ли массив указанные привилегии? (Значение будет истинным, если в массиве присутствует запись, соответствующая aclitemсубъекту (grantee) и объекту (grantor) прав, и предоставляющая как минимум указанный набор привилегий.)

'{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


Таблица 2.6.72 содержит некоторые дополнительные функции для управления aclitem типа.

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

Функция

Описание

acldefault ( тип "char", ownerId oid ) → aclitem[]

Функция формирует aclitem массив, содержащий привилегии доступа по умолчанию для объекта типа тип принадлежащего роли с идентификатором OID ownerId. Данное значение представляет права доступа, которые будут назначены, если запись списка ACL объекта имеет значение NULL (оператор IS NULL). (Привилегии доступа по умолчанию описаны в Раздел 2.2.8.) Данный тип параметр должен принимать одно из следующих значений: '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 массив в виде набора строк. Если получателем прав (grantee) является псевдороль PUBLIC, она представляется нулевым значением в с grantee столбце. Каждая предоставленная привилегия представляется в формате SELECT, INSERT, и т. д. (полный список приведен в Таблица 2.2.1 for a full list). Обратите внимание, что каждое право доступа выводится в виде отдельной строки, поэтому в функции privilege_type столбца.

makeaclitem ( grantee oid, grantor oid, указывается только одно ключевое слово text, is_grantable boolean ) → aclitem

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


2.6.27.3. Функции проверки видимости объектов в схемах #

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

SELECT relname FROM pg_class WHERE pg_table_is_visible(oid);

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

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

Функция

Описание

pg_collation_is_visible ( collation oid ) → boolean

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

pg_conversion_is_visible ( преобразование oid ) → boolean

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

pg_function_is_visible ( функция oid ) → boolean

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

pg_opclass_is_visible ( opclass oid ) → boolean

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

pg_operator_is_visible ( оператор 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 ( анализатор oid ) → boolean

Доступен ли анализатор текстового поиска в пути поиска?

pg_ts_template_is_visible ( pattern oid ) → boolean

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

pg_type_is_visible ( тип oid ) → boolean

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


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

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

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

2.6.27.4. Функции для получения информации из системных каталогов #

Таблица 2.6.74 содержит функции, извлекающие информацию из системных каталогов.

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

Функция

Описание

format_type ( тип oid, typemod integer ) → text

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

pg_basetype ( regtype ) → regtype

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

Пример: CREATE DOMAIN mytext AS text:

pg_basetype('mytext'::regtype)text

pg_char_to_encoding ( кодировка name ) → integer

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

pg_encoding_to_char ( кодировка integer ) → name

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

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

Данная функция возвращает набор записей, описывающих связи по внешним ключам, существующие в Digital Q.DataBase системных каталогах. Данный fktable столбец содержит имя ссылающегося каталога, а столбец fkcols столбец, содержит имена ссылающихся столбцов. Аналогичным образом, с pktable столбец содержит имя целевого каталога, а столбец pkcols столбец, содержит имена целевых столбцов. Если is_array имеет значение true, то последний ссылающийся столбец является массивом, каждый элемент которого должен соответствовать определенной записи в целевом каталоге. Если is_opt имеет значение true, то ссылающиеся столбцы могут содержать нули вместо корректной ссылки.

pg_get_constraintdef ( ограничение oid [, в отформатированном виде boolean ] ) → text

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

pg_get_expr ( expr pg_node_tree, relation oid [, в отформатированном виде 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 ( индекс oid [, column integer, в отформатированном виде boolean ] ) → text

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

pg_get_keywords () → setof record ( word text, catcode "char", 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 ( правило oid [, в отформатированном виде boolean ] ) → text

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

pg_get_serial_sequence ( table text, column text ) → text

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

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

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

pg_get_statisticsobjdef ( statobj oid ) → text

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

pg_get_triggerdef ( trigger oid [, в отформатированном виде boolean ] ) → text

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

pg_get_userbyid ( роль oid ) → name

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

pg_get_viewdef ( view oid [, в отформатированном виде boolean ] ) → text

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

pg_get_viewdef ( view oid, wrap_column integer ) → text

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

pg_get_viewdef ( view text [, в отформатированном виде boolean ] ) → text

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

pg_index_column_has_property ( индекс regclass, column integer, свойство text ) → boolean

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

pg_index_has_property ( индекс regclass, свойство text ) → boolean

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

pg_indexam_has_property ( am oid, свойство text ) → boolean

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

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

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

pg_settings_get_flags ( guc text ) → text[]

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

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 (см. Раздел 2.5.19); это означает, что данный тип идентичен типу OID при операциях сравнения, но отображается как имя типа данных.

pg_typeof(33)integer

COLLATION FOR ( "any" ) → text

Функция возвращает имя правила сортировки (коллации) для значения, переданного ей в качестве аргумента. Значение заключается в кавычки и дополняется именем схемы при необходимости. Если для выражения, являющегося аргументом, не было определено правило сортировки, то NULL возвращается результат. Если аргумент не относится к типу данных, поддерживающему правила сортировки (collation), генерируется ошибка.

правило сортировки (collation) для ('foo'::text)"default"

правило сортировки (collation) для ('foo' COLLATE "de_DE")"de_DE"

to_regclass ( text ) → regclass

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

to_regcollation ( text ) → regcollation

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

to_regnamespace ( text ) → regnamespace

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

to_regoper ( text ) → regoper

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

to_regoperator ( text ) → regoperator

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

to_regproc ( text ) → regproc

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

to_regprocedure ( text ) → regprocedure

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

to_regrole ( text ) → regrole

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

to_regtype ( text ) → regtype

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

to_regtypemod ( text ) → integer

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

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

format_type(to_regtype('varchar(32)'), to_regtypemod('varchar(32)'))character varying(32)


Большинство функций, выполняющих реконструкцию (декомпиляцию) объектов базы данных, имеют необязательный в отформатированном виде флаг, который если true приводит к тому, что результат будет представлен в «форматированном виде (pretty-print)». Форматированный вывод подавляет избыточные скобки и добавляет пробелы для улучшения читаемости. Такой формат более удобен для восприятия, однако формат по умолчанию с большей вероятностью будет интерпретирован идентично будущими версиями Digital Q.DataBase; поэтому следует избегать использования форматированного вывода для целей создания дампов. Передача значения false для параметра в отформатированном виде возвращает тот же результат, что и пропуск данного параметра.

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

ИмяОписание
по возрастаниюВыполняется ли сортировка столбца по возрастанию при прямом сканировании?
по убываниюВыполняется ли сортировка столбца по убыванию при прямом сканировании?
nulls_firstВыполняется ли при прямом сканировании сортировка столбца с расположением значений NULL в начале?
nulls_lastВыполняется ли при прямом сканировании сортировка столбца с расположением значений NULL в конце?
упорядочиваемыйИмеется ли у данного столбца какой-либо определенный порядок сортировки?
distance_orderableДопускается ли сканирование столбца в определенном порядке с использованием «расстояние» оператора, например, ORDER BY col <-> constant ?
возвращаемыйМожет ли значение столбца быть возвращено при использовании метода сканирования только индекса (index-only scan)?
search_arrayПоддерживает ли столбец нативно col = ANY(array) поиск?
search_nullsПоддерживает ли столбец оператор IS NULL и оператор IS NOT NULL поиск?

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

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

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

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

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

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

2.6.27.5. Функции получения информации об объектах и функции адресации #

Таблица 2.6.79 содержит функции, относящиеся к идентификации и адресации объектов базы данных.

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

Функция

Описание

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

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

pg_identify_object ( classid oid, objid oid, objsubid integer ) → record ( тип text, схема text, name text, идентификатор text )

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

pg_identify_object_as_address ( classid oid, objid oid, objsubid integer ) → record ( тип text, object_names text[], object_args text[] )

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

pg_get_object_address ( тип 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 значений.


2.6.27.6. Функции получения информации о комментариях #

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

Таблица 2.6.80. Функции получения информации о комментариях

Функция

Описание

col_description ( table oid, column integer ) → text

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

obj_description ( object oid, системный каталог name ) → text

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

obj_description ( object oid ) → text

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

shobj_description ( object oid, системный каталог name ) → text

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


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

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

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

Функция

Описание

Примеры

pg_input_is_valid ( string text, тип 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, тип text ) → record ( сообщение text, подробности text, подсказка text, sql_error_code text )

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

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

SELECT * FROM pg_input_error_info('42000000000', 'integer')

                       сообщение                        | detail | hint | sql_error_code
------------------------------------------------------+--------+------+----------------
 значение "42000000000" вне диапазона для типа integer |        |      | 22003


2.6.27.8. Функции идентификаторов транзакций и информации о снимках #

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

Таблица 2.6.82. Функции идентификаторов транзакций и информации о снимках

Функция

Описание

age ( xid ) → integer

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

mxid_age ( xid ) → integer

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

pg_current_xact_id () → xid8

Возвращает идентификатор текущей транзакции. Функция назначает новый идентификатор, если текущая транзакция еще не имеет его (так как она еще не выполняла обновлений базы данных); см. Раздел 7.16.1 для получения подробных сведений. При выполнении в подтранзакции функция возвращает идентификатор транзакции верхнего уровня; см. Раздел 7.16.3 для получения подробных сведений.

pg_current_xact_id_if_assigned () → xid8

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

pg_xact_status ( xid8 ) → text

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

pg_current_snapshot () → pg_snapshot

Возвращает текущий snapshot, структуру данных, показывающую, какие идентификаторы транзакций выполняются в данный момент. В данный снимок включаются только идентификаторы транзакций верхнего уровня; идентификаторы подтранзакций не отображаются; см. Раздел 7.16.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

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


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

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

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

В версиях Digital Q.DataBase ранее 13-й отсутствовал тип xid8 , в связи с чем предоставлялись варианты функций, использовавшие bigint для представления 64-битных идентификаторов XID с соответствующим отдельным типом данных снимка txid_snapshot. В названиях этих устаревших функций присутствует сочетание txid in their names. Данные функции все еще поддерживаются для обеспечения обратной совместимости, однако они могут быть удалены в будущих выпусках. См. раздел Таблица 2.6.84.

Таблица 2.6.84. «Устаревшие функции для получения идентификаторов транзакций и информации о снимках»

Функция

Описание

txid_current () → bigint

См. pg_current_xact_id().

txid_current_if_assigned () → bigint

См. pg_current_xact_id_if_assigned().

txid_current_snapshot () → txid_snapshot

См. pg_current_snapshot().

txid_snapshot_xip ( txid_snapshot ) → setof bigint

См. pg_snapshot_xip().

txid_snapshot_xmax ( txid_snapshot ) → bigint

См. pg_snapshot_xmax().

txid_snapshot_xmin ( txid_snapshot ) → bigint

См. pg_snapshot_xmin().

txid_visible_in_snapshot ( bigint, txid_snapshot ) → boolean

См. pg_visible_in_snapshot().

txid_status ( bigint ) → text

См. pg_xact_status().


2.6.27.9. Функции получения информации о зафиксированных транзакциях #

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

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

Функция

Описание

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 )

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


2.6.27.10. Функции управляющих данных #

Функции, представленные в Таблица 2.6.86 выводят информацию, инициализированную при выполнении утилиты initdb, такую как версия системного каталога. Данные функции также отображают сведения о журналах упреждающей записи (WAL) и о процессе создания контрольных точек. Эта информация относится ко всему кластеру баз данных, а не к какой-либо конкретной базе данных. Данные функции предоставляют практически ту же информацию из того же источника, что и pg_controldata приложение.

Таблица 2.6.86. Функции управляющих данных

Функция

Описание

pg_control_checkpoint () → record

Функция возвращает сведения о текущем состоянии контрольной точки, как показано в Таблица 2.6.87.

pg_control_system () → record

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

pg_control_init () → record

Функция возвращает сведения о состоянии инициализации кластера, как показано в Таблица 2.6.89.

pg_control_recovery () → record

Функция возвращает сведения о состоянии восстановления, как показано в Таблица 2.6.90.


Таблица 2.6.87. 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

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

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

Таблица 2.6.89. 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

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

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

2.6.27.11. Функции получения информации о версии #

Функции, представленные в Таблица 2.6.91 выводит информацию о версии.

Таблица 2.6.91. Функции получения информации о версии

Функция

Описание

version () → text

Функция возвращает строку, описывающую Digital Q.DataBase версию сервера. Данную информацию также можно получить из server_version, а для получения версии в машиночитаемом формате следует использовать server_version_num. Программное обеспечение разработчикам следует использовать server_version_num (доступно начиная с версии 8.2) или PQserverVersion вместо разбора текстовой версии.

unicode_version () → text

Данная функция возвращает строку с версией стандарта Unicode, используемой Digital Q.DataBase.

icu_unicode_version () → text

Данная функция возвращает строку с версией стандарта Unicode, используемой библиотекой ICU, если сервер был собран с поддержкой ICU; в противном случае возвращается NULL


2.6.27.12. Функции получения информации о суммировании WAL #

Функции, представленные в Таблица 2.6.92 выводит информацию о состоянии процесса суммирования WAL. См. summarize_wal.

Таблица 2.6.92. Функции получения информации о суммировании WAL

Функция

Описание

pg_available_wal_summaries () → setof record ( tli bigint, start_lsn pg_lsn, end_lsn pg_lsn )

Данная функция возвращает информацию о файлах сводок WAL, расположенных в каталоге данных, в пути pg_wal/summaries. Для каждого файла сводки WAL возвращается одна строка. В каждом файле суммируются записи WAL для указанного идентификатора TLI в заданном диапазоне LSN. Эта функция может использоваться для проверки наличия на сервере достаточного количества сводок WAL для создания инкрементной резервной копии на основе данных предыдущей резервная копия, для которой известен начальный номер LSN.

pg_wal_summary_contents ( tli bigint, start_lsn pg_lsn, end_lsn pg_lsn ) → setof record ( relfilenode oid, reltablespace oid, reldatabase oid, relforknumber smallint, relblocknumber bigint, is_limit_block boolean )

Функция возвращает информацию о содержимом одного файла сводки WAL, идентифицируемого по идентификатору TLI, а также начальному и конечному значениям LSN. Каждая строка, содержащая is_limit_block false, указывает на то, что блок, определяемый остальными выходными столбцами, был изменен как минимум одной записью WAL в диапазоне записей, агрегированных в данном файле. Каждая строка, содержащая is_limit_block true, указывает на то, что либо (а) слой отношения был усечен до длины, указанной в relblocknumber в соответствующем диапазоне записей WAL, либо (б) слой отношения был создан или удален в соответствующем диапазоне записей WAL; в таких случаях значение relblocknumber будет равно нулю.

pg_get_wal_summarizer_state () → record ( summarized_tli bigint, summarized_lsn pg_lsn, pending_lsn pg_lsn, summarizer_pid int )

Функция возвращает сведения о ходе выполнения процесса суммирования WAL (WAL summarizer). Если процесс суммирования WAL ни разу не запускался с момента запуска экземпляра системы, то summarized_tli и summarized_lsn будет 0 и 0/0 соответственно; в противном случае данные поля будут содержать идентификатор линии времени (TLI) и конечный номер LSN последнего файла сводки WAL, записанного на диск. Если процесс суммирования WAL выполняется в текущий момент, pending_lsn будет являться конечным номером LSN последней записи, обработанной процессом; данное значение всегда должно быть больше или равно summarized_lsn; если же процесс суммирования WAL не запущен, это значение будет равно summarized_lsn. summarizer_pid представляет собой идентификатор (PID) процесса суммирования WAL, если он активен, и значение NULL в противном случае.

В качестве особого исключения процесс суммирования WAL не генерирует файлы сводки WAL, если обработка выполняется для записей WAL, созданных при wal_level=minimal, так как использование подобных сводок небезопасно в качестве основы для инкрементного резервного копирования. В этом случае значения в вышеуказанных полях продолжат инкрементироваться так, будто сводные данные генерируются, однако запись на диск производиться не будет. Как только процесс суммирования достигнет сегментов WAL, созданных в то время, когда уровень логирования wal_level был установлен в значение в replica или выше, запись сводных данных на диск возобновится.


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

*поля обязательные к заполнению