Системные информационные функции и операторы

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



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

В этом подразделе приведены несколько функций, которые извлекают информацию о сеансе и системе.

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

current_catalog or current_database

current_catalog → name
current_database () → name

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

current_query

current_query () → text

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

current_role

current_role → name

Это аналог current_user.

current_schema

current_schema → name
current_schema () → name

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

current_schemas

current_schemas ( включить_неявные_схемы boolean ) → name[]

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

current_user

current_user → name

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

inet_client_addr

inet_client_addr () → inet

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

inet_client_port

inet_client_port () → integer

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

inet_server_addr

inet_server_addr () → inet

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

inet_server_port

inet_server_port () → integer

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

pg_backend_pid

pg_backend_pid () → integer

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

pg_blocking_pids

pg_blocking_pids ( integer ) → integer[]

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

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

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

pg_conf_load_time

pg_conf_load_time () → timestamp with time zone

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

pg_current_logfile

pg_current_logfile ( [ text ] ) → text

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

pg_my_temp_schema

pg_my_temp_schema () → oid

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

pg_is_other_temp_schema

pg_is_other_temp_schema ( oid ) → boolean

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

pg_jit_available

pg_jit_available () → boolean

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

pg_listening_channels

pg_listening_channels () → setof text

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

pg_notification_queue_usage

pg_notification_queue_usage () → double precision

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

pg_qhbmaster_start_time

pg_qhbmaster_start_time () → timestamp with time zone

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

pg_safe_snapshot_blocking_pids

pg_safe_snapshot_blocking_pids ( integer ) → integer[]

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

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

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

pg_trigger_depth

pg_trigger_depth () → integer

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

session_user

session_user → name

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

system_user

system_user → text

Возвращает метод аутентификации и идентификационные данные (если таковые имеются) которые пользователь представил во время цикла аутентификации, прежде чем ему была присвоена роль базы данных. Он представлен как метод_аутент:идент_данные или NULL, если пользователь не прошел аутентификацию (например, если была использована аутентификация trust).

user

user → name

Это аналог current_user.

version

version () → text

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


Примечания

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

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



Функции для проверки прав доступа

В этом подразделе перечислены функции, позволяющие программно запрашивать информацию о правах доступа к объекту. (Дополнительную информацию о правах см. в разделе Права.) В этих функциях пользователя, для которого запрашиваются права, можно указать по имени или OID (pg_authid.oid), либо, если имя задано как public, будут проверяться права псевдороли PUBLIC. Кроме того, аргумент пользователь можно полностью опустить, и тогда будет подразумеваться 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');

has_any_column_privilege

has_any_column_privilege ( [ пользовательname или oid, ]таблицаtext или oid,право text ) → boolean

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

has_column_privilege

has_column_privilege ( [ пользовательname или oid, ]таблицаtext или oid,столбецtext или smallint,право text ) → boolean

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

has_database_privilege

has_database_privilege ( [ пользовательname или oid, ]база_данныхtext или oid,право text ) → boolean

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

has_foreign_data_wrapper_privilege

has_foreign_data_wrapper_privilege ( [ пользовательname или oid, ]обертка_сторонних_данныхtext или oid,право text ) → boolean

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

has_function_privilege

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

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

Когда функция задается по имени, а не по OID, допускаются те же входные значения, что и для типа данных regprocedure (см. раздел Типы идентификаторов объектов). Например:

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

has_language_privilege

has_language_privilege ( [ пользовательname или oid, ]языкtext или oid,право text ) → boolean

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

has_parameter_privilege

has_parameter_privilege ( [ пользовательname или oid, ]параметрtext,право text ) → boolean

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

has_schema_privilege

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

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

has_sequence_privilege

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

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

has_server_privilege

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

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

has_table_privilege

has_table_privilege ( [ пользовательname или oid, ]таблицаtext или oid,право text ) → boolean

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

has_tablespace_privilege

has_tablespace_privilege ( [ пользовательname или oid, ]табличное_пространствоtext или oid,право text ) → boolean

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

has_type_privilege

has_type_privilege ( [ пользовательname или oid, ]типtext или oid,право text ) → boolean

Имеет ли пользователь указанное право для типа данных? Единственный допустимый тип права — USAGE. Когда тип задается по имени, а не по OID, допускаются те же входные значения, что и для типа данных regtype (см. раздел Типы идентификаторов объектов).

pg_has_role

pg_has_role ( [ пользовательname или oid, ]рольtext или oid,право text ) → boolean

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

row_security_active

row_security_active ( таблица text или oid ) → boolean

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



Операторы для aclitem

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

aclitem = aclitem → boolean

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

'calvin=r*w/hobbes'::aclitem = 'calvin=r*w*/hobbes'::aclitem → f

aclitem[] @> aclitem → boolean

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

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

aclitem[] ~ aclitem → boolean

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

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


Функции для aclitem

В этом подразделе приводятся некоторые дополнительные функции для управления типом aclitem.

acldefault

acldefault ( тип"char",id_владельца oid ) → aclitem[]

Конструирует массив aclitem, содержащий права доступа по умолчанию для объекта заданного типа, принадлежащего роли с OID id_владельца. Эта функция показывает права доступа, которые будут подразумеваться, когда запись ACL определенного объекта равна NULL. (Права доступа по умолчанию описаны в разделе Права.) Параметр тип может принимать одно из следующих значений: '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

aclexplode ( aclitem[] ) → setof record ( праводательoid,правополучательoid,тип_праваtext,предоставляемое boolean )

Возвращает массив aclitem в виде набора строк. Если правополучателем является псевдороль PUBLIC, в столбце правополучатель она представляется нулем. Все назначенные права представляются ключевыми словами SELECT, INSERT и т. д. (полный список см. в таблице Аббревиатуры для прав в ACL). Обратите внимание, что каждое право выводится отдельной строкой, поэтому в столбце тип_права находится только одно ключевое слово.

makeaclitem

makeaclitem ( правополучательoid,праводательoid,праваtext,предоставляемое boolean ) → aclitem

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



Функции проверки видимости схемы

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

SELECT relname FROM pg_class WHERE pg_table_is_visible(oid);

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

pg_collation_is_visible

pg_collation_is_visible ( правило_сортировки oid ) → boolean

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

pg_conversion_is_visible

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

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

pg_function_is_visible

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

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

pg_opclass_is_visible

pg_opclass_is_visible ( класс_операторов oid ) → boolean

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

pg_operator_is_visible

pg_operator_is_visible ( оператор oid ) → boolean

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

pg_opfamily_is_visible

pg_opfamily_is_visible ( семейство_операторов oid ) → boolean

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

pg_statistics_obj_is_visible

pg_statistics_obj_is_visible ( объект_статистики oid ) → boolean

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

pg_table_is_visible

pg_table_is_visible ( таблица oid ) → boolean

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

pg_ts_config_is_visible

pg_ts_config_is_visible ( конфигурация oid ) → boolean

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

pg_ts_dict_is_visible

pg_ts_dict_is_visible ( словарь oid ) → boolean

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

pg_ts_parser_is_visible

pg_ts_parser_is_visible ( анализатор oid ) → boolean

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

pg_ts_template_is_visible

pg_ts_template_is_visible ( шаблон oid ) → boolean

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

pg_type_is_visible

pg_type_is_visible ( тип oid ) → boolean

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


Примечание

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

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

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



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

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

format_type

format_type ( типoid,модификатор_типа integer ) → text

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

pg_char_to_encoding

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

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

pg_encoding_to_char

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

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

pg_get_catalog_foreign_keys

pg_get_catalog_foreign_keys () → setof record ( ссылающ_таблицаregclass,ссылающ_столбцыtext[],ссылочн_таблицаregclass,ссылочн_столбцыtext[],является_массивомboolean,необязательно boolean )

Возвращает набор записей, описывающих отношения внешних ключей, существующие в системных каталогах QHB. Столбец ссылающ_таблица содержит имя ссылающегося каталога, а столбец ссылающ_столбцы — имена ссылающихся столбцов. Аналогичным образом столбец ссылочн_таблица содержит имя ссылочного каталога, а столбец ссылочн_столбцы — имена ссылочных столбцов. Если параметр является_массивом равен true, последний ссылающийся столбец является массивом, каждый из элементов которого должен соответствовать некоторой записи в ссылочном каталоге. Если параметр необязательно равен true, ссылочным столбцам можно содержать нули вместо действительной ссылки.

pg_get_constraintdef

pg_get_constraintdef ( ограничениеoid [,удобный_формат boolean ] ) → text

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

pg_get_expr

pg_get_expr ( выражениеpg_node_tree,отношениеoid [,удобный_формат boolean ] ) → text

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

pg_get_functiondef

pg_get_functiondef ( функция oid ) → text

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

pg_get_function_arguments

pg_get_function_arguments ( функция oid ) → text

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

pg_get_function_identity_arguments

pg_get_function_identity_arguments ( функция oid ) → text

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

pg_get_function_result

pg_get_function_result ( функция oid ) → text

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

pg_get_indexdef

pg_get_indexdef ( индексoid [,столбецinteger,удобный_формат boolean ] ) → text

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

pg_get_keywords

pg_get_keywords () → setof record ( словоtext,код_катег"char",откр_меткаboolean,описание_категtext,описание_метки text )

Возвращает набор записей, описывающих ключевые слова SQL, распознаваемые сервером. Столбец слово содержит ключевое слово. Столбец код_катег содержит код категории: U — незарезервированное ключевое слово, C — ключевое слово, которое может быть именем столбца, T — ключевое слово, которое может быть именем типа или функции, или R — полностью зарезервированное ключевое слово. Столбец откр_метка содержит true, если ключевое слово можно использовать в качестве «открытой» метки столбца в списках SELECT, или false, если его можно использовать только после AS. Столбец описание_катег содержит возможно локализованную строку, описывающую категорию ключевого слова. Столбец описание_метки содержит возможно локализованную строку, описывающую статус метки столбца с ключевым словом.

pg_get_partkeydef

pg_get_partkeydef ( таблица oid ) → text

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

pg_get_ruledef

pg_get_ruledef ( правилоoid [,удобный_формат boolean ] ) → text

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

pg_get_serial_sequence

pg_get_serial_sequence ( таблицаtext,столбец text ) → text

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

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

pg_get_statisticsobjdef

pg_get_statisticsobjdef ( объект_статистики oid ) → text

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

pg_get_triggerdef

pg_get_triggerdef ( триггерoid [,удобный_формат boolean ] ) → text

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

pg_get_userbyid

pg_get_userbyid ( роль oid ) → name

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

pg_get_viewdef

pg_get_viewdef ( представлениеoid [,удобный_формат boolean ] ) → text

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

pg_get_viewdef ( представлениеoid,число_столбцов integer ) → text

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

pg_get_viewdef ( представлениеtext [,удобный_формат boolean ] ) → text

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

pg_index_column_has_property

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

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

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

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

pg_index_has_property

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

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

Свойства индекса

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

pg_indexam_has_property

pg_indexam_has_property ( метод_доступаoid,свойство text ) → boolean

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

Свойства индексного метода доступа

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

pg_options_to_table

pg_options_to_table ( массив_параметровtext[] ) → setof record (имя_параметраtext,значение_параметра text )

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

pg_settings_get_flags

pg_settings_get_flags ( guc text ) → text[]

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

Флаги GUC

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

pg_tablespace_databases

pg_tablespace_databases ( табличное_пространство oid ) → setof oid

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

pg_tablespace_location

pg_tablespace_location ( табличное_пространство oid ) → text

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

pg_typeof

pg_typeof ( "any" ) → regtype

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

Например:

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

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

COLLATION FOR

COLLATION FOR ( "any" ) → 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

to_regclass ( text ) → regclass

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

to_regcollation

to_regcollation ( text ) → regcollation

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

to_regnamespace

to_regnamespace ( text ) → regnamespace

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

to_regoper

to_regoper ( text ) → regoper

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

to_regoperator

to_regoperator ( text ) → regoperator

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

to_regproc

to_regproc ( text ) → regproc

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

to_regprocedure

to_regprocedure ( text ) → regprocedure

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

to_regrole

to_regrole ( text ) → regrole

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

to_regtype

to_regtype ( text ) → regtype

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


Примечание

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



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

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

pg_describe_object

pg_describe_object ( id_классаoid,id_объектаoid,id_подобъекта integer ) → text

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

pg_identify_object

pg_identify_object ( id_классаoid,id_объектаoid,id_подобъектаinteger ) → record (типtext,схемаtext,имяtext,идентификатор text )

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

pg_identify_object_as_address

pg_identify_object_as_address ( id_классаoid,id_объектаoid,id_подобъектаinteger ) → record (типtext,имена_объектовtext[],аргументы_объектов text[] )

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

pg_get_object_address

pg_get_object_address ( типtext,имена_объектовtext[],аргументы_объектовtext[] ) → record (id_классаoid,id_объектаoid,id_подобъекта integer )

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



Функции для получения комментариев

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

col_description

col_description ( таблицаoid,столбец integer ) → text

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

obj_description

obj_description ( объектoid,каталог name ) → text

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

obj_description ( объект oid ) → text

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

shobj_description

shobj_description ( объектoid,каталог name ) → text

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



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

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

pg_input_is_valid

pg_input_is_valid ( строкаtext,тип text ) → boolean

Проверяет, является ли заданная строка допустимым входным значением для указанного типа данных, возвращая 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

pg_input_error_info ( строкаtext,tyтипpetext ) → record (сообщениеtext,детализацияtext,подсказкаtext,код_ошибки_sql text )

Проверяет, является ли заданная строка допустимым входным значением для указанного типа данных; если нет, возвращает детализацию ошибки, которая бы при этом возникла. Если входные данные допустимы, результатом будет 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.


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

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

age

age ( xid ) → integer

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

mxid_age

mxid_age ( xid ) → integer

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

pg_current_xact_id

pg_current_xact_id () → xid8

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

pg_current_xact_id_if_assigned

pg_current_xact_id_if_assigned () → xid8

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

pg_xact_status

pg_xact_status ( xid8 ) → text

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

pg_current_snapshot

pg_current_snapshot () → pg_snapshot

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

pg_snapshot_xip

pg_snapshot_xip ( pg_snapshot ) → setof xid8

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

pg_snapshot_xmax

pg_snapshot_xmax ( pg_snapshot ) → xid8

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

pg_snapshot_xmin

pg_snapshot_xmin ( pg_snapshot ) → xid8

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

pg_visible_in_snapshot

pg_visible_in_snapshot ( xid8, pg_snapshot ) → boolean

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


Примечание

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


Компоненты снимка состояния

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


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

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

txid_current

txid_current () → bigint

См. pg_current_xact_id().

txid_current_if_assigned

txid_current_if_assigned () → bigint

См. pg_current_xact_id_if_assigned().

txid_current_snapshot

txid_current_snapshot () → txid_snapshot

См. pg_current_snapshot().

txid_snapshot_xip

txid_snapshot_xip ( txid_snapshot ) → setof bigint

См. pg_snapshot_xip().

txid_snapshot_xmax

txid_snapshot_xmax ( txid_snapshot ) → bigint

См. pg_snapshot_xmax().

txid_snapshot_xmin

txid_snapshot_xmin ( txid_snapshot ) → bigint

См. pg_snapshot_xmin().

txid_visible_in_snapshot

txid_visible_in_snapshot ( bigint, txid_snapshot ) → boolean

См. pg_visible_in_snapshot().

txid_status

txid_status ( bigint ) → text

См. pg_xact_status().



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

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

pg_xact_commit_timestamp

pg_xact_commit_timestamp ( xid ) → timestamp with time zone

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

pg_xact_commit_timestamp_origin

pg_xact_commit_timestamp_origin ( xid ) → record ( временная_меткаtimestamp with time zone,id_ист_репл oid)

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

pg_last_committed_xact

pg_last_committed_xact () → record ( id_транзакцииxid,временная_меткаtimestamp with time zone,id_ист_репл oid )

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



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

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

pg_control_checkpoint

pg_control_checkpoint () → record

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

Столбцы вывода 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

pg_control_system

pg_control_system () → record

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

Столбцы вывода pg_control_system

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

pg_control_init

pg_control_init () → record

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

Столбцы вывода 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

pg_control_recovery

pg_control_recovery () → record

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

Столбцы вывода 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