Системные информационные функции и операторы
Функции, описанные в этом разделе, используются для получения различной информации об установке 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_lsn | pg_lsn |
| redo_lsn | pg_lsn |
| redo_wal_file | text |
| timeline_id | integer |
| prev_timeline_id | integer |
| full_page_writes | boolean |
| next_xid | text |
| next_oid | oid |
| next_multixact_id | xid |
| next_multi_offset | xid |
| oldest_xid | xid |
| oldest_xid_dbid | oid |
| oldest_active_xid | xid |
| oldest_multi_xid | xid |
| oldest_multi_dbid | oid |
| oldest_commit_ts_xid | xid |
| newest_commit_ts_xid | xid |
| checkpoint_time | timestamp with time zone |
pg_control_system
pg_control_system () → record
Возвращает информацию о текущем состоянии управляющего файла, показанную в таблице ниже.
Столбцы вывода pg_control_system
| Имя столбца | Тип данных |
|---|---|
| pg_control_version | integer |
| catalog_version_no | integer |
| system_identifier | bigint |
| pg_control_last_modified | timestamp with time zone |
pg_control_init
pg_control_init () → record
Возвращает информацию о состоянии инициализации кластера, показанную в таблице ниже.
Столбцы вывода pg_control_init
| Имя столбца | Тип данных |
|---|---|
| max_data_alignment | integer |
| database_block_size | integer |
| blocks_per_segment | integer |
| wal_block_size | integer |
| bytes_per_wal_segment | integer |
| max_identifier_length | integer |
| max_index_columns | integer |
| max_toast_chunk_size | integer |
| large_object_chunk_size | integer |
| float8_pass_by_value | boolean |
| data_page_checksum_version | integer |
pg_control_recovery
pg_control_recovery () → record
Возвращает информацию о состоянии восстановления, показанную в таблице ниже.
Столбцы вывода pg_control_recovery
| Имя столбца | Тип данных |
|---|---|
| min_recovery_end_lsn | pg_lsn |
| min_recovery_end_timeline | integer |
| backup_start_lsn | pg_lsn |
| backup_end_lsn | pg_lsn |
| end_of_backup_record_required | boolean |