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

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



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

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

current_setting

current_setting ( имя_параметраtext [,может_отсутствовать boolean ] ) → text

Возвращает текущее значение параметра имя_параметра. Если такого параметра нет, current_setting выдает ошибку, если только не передан параметр может_отсутствовать со значением true (в этом случае возвращается NULL). Эта функция соответствует команде SQL SHOW.

current_setting('datestyle') → ISO, MDY

set_config

set_config ( имя_параметраtext,новое_значениеtext,локально boolean ) → text

Устанавливает для параметра имя_параметра новое_значение и возвращает это значение. Если параметр локально равен true, новое значение будет применяться только в рамках текущей транзакции. Чтобы новое значение действовало до конца текущего сеанса, нужно задать этому параметру значение false. Эта функция соответствует команде SQL SET.

set_config('log_statement_stats', 'off', false) → off

set_runtime_guc

set_runtime_guc ( pidint4,имя_параметраtext,значение text )

Устанавливает в серверном процессе с заданным PID для параметра имя_параметра новое значение, которое применяется к сеансу серверного процесса, переопределяя параметры, указанные в конфигурационных файлах. Посылает сигнал SIGHANGUP целевому процессу. Для применения данной функции к произвольному параметру, он должен быть объявлен с контекстом PGC_RUNTIMESET.

reset_runtime_guc

reset_runtime_guc ( pidint4,имя_параметра text)

Сбрасывает в серверном процессе с заданным PID параметр имя_параметра на значение по умолчанию, которое применяется к сеансу серверного процесса, переопределяя параметры, указанные в конфигурационных файлах. Посылает сигнал SIGHANGUP целевому процессу. Для применения данной функции к произвольному параметру, он должен быть объявлен с контекстом PGC_RUNTIMESET.

reset_runtime_guc ( pid int4)

Сбрасывает в серверном процессе с заданным PID все параметры, установленные ранее с помощью функции set_runtime_guc. Посылает сигнал SIGHANGUP целевому процессу.



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

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

Каждая из этих функция возвращает true, если сигнал был успешно передан, и false, если передача сигнала не удалась.

pg_cancel_backend

pg_cancel_backend ( pid integer ) → boolean

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

pg_log_backend_memory_contexts

pg_log_backend_memory_contexts ( pid integer ) → boolean

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

pg_reload_conf

pg_reload_conf () → boolean

Заставляет все процессы сервера QHB перезагрузить их файлы конфигурации. (Для запуска этой операции посылается сигнал SIGHUP процессу qhbmaster, который, в свою очередь, посылает SIGHUP всем своим дочерним процессам.) Перед перезагрузкой можно воспользоваться представлениями pg_file_settings, pg_hba_file_rules и pg_ident_file_mappings для проверки файлов конфигурации на предмет возможных ошибок.

pg_rotate_logfile

pg_rotate_logfile () → boolean

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

pg_terminate_backend

pg_terminate_backend ( pidinteger,время_ожидания bigint DEFAULT 0 ) → boolean

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

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


Примечания

Функции pg_cancel_backend и pg_terminate_backend отправляют сигналы (SIGINT или SIGTERM соответственно) обслуживающим процессам, идентифицируемым по PID. PID активного процесса можно найти в столбце pid представления pg_stat_activity или в списке процессов qhb на сервере (с помощью ps в Unix). Роль активного процесса можно найти в столбце usename представления pg_stat_activity.

Функцию pg_log_backend_memory_contexts можно использовать для протоколирования в журнале информации о контекстах памяти обслуживающего процесса. Например:

qhb=# SELECT pg_log_backend_memory_contexts(pg_backend_pid());
 pg_log_backend_memory_contexts
--------------------------------
 t
(1 row)

Для каждого контекста памяти будет выводится одно сообщение. Например:

LOG:  logging memory contexts of PID 10377
STATEMENT:  SELECT pg_log_backend_memory_contexts(pg_backend_pid());
LOG:  level: 0; TopMemoryContext: 80800 total in 6 blocks; 14432 free (5 chunks); 66368 used
LOG:  level: 1; pgstat TabStatusArray lookup hash table: 8192 total in 1 blocks; 1408 free (0 chunks); 6784 used
LOG:  level: 1; TopTransactionContext: 8192 total in 1 blocks; 7720 free (1 chunks); 472 used
LOG:  level: 1; RowDescriptionContext: 8192 total in 1 blocks; 6880 free (0 chunks); 1312 used
LOG:  level: 1; MessageContext: 16384 total in 2 blocks; 5152 free (0 chunks); 11232 used
LOG:  level: 1; Operator class cache: 8192 total in 1 blocks; 512 free (0 chunks); 7680 used
LOG:  level: 1; smgr relation table: 16384 total in 2 blocks; 4544 free (3 chunks); 11840 used
LOG:  level: 1; TransactionAbortContext: 32768 total in 1 blocks; 32504 free (0 chunks); 264 used
...
LOG:  level: 1; ErrorContext: 8192 total in 1 blocks; 7928 free (3 chunks); 264 used
LOG:  Grand total: 1651920 bytes in 201 blocks; 622360 free (88 chunks); 1029560 used

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



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

Функции, перечисленные в этом подразделе, помогают создавать резервные копии в режиме реального времени. Эти функции нельзя выполнять во время восстановления (за исключением pg_backup_start, pg_backup_stop и pg_wal_lsn_diff).

Подробную информацию о надлежащем использовании этих функций см. в разделе Непрерывное архивирование и восстановление на момент времени (PITR).

pg_create_restore_point

pg_create_restore_point ( имя text ) → pg_lsn

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

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

pg_current_wal_flush_lsn

pg_current_wal_flush_lsn () → pg_lsn

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

pg_current_wal_insert_lsn

pg_current_wal_insert_lsn () → pg_lsn

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

pg_current_wal_lsn

pg_current_wal_lsn () → pg_lsn

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

pg_backup_start

pg_backup_start ( меткаtext [,быстро boolean ] ) → pg_lsn

Подготавливает сервер к началу резервного копирования в режиме реального времени. Единственный требуемый параметр — произвольная пользовательская метка для резервной копии. (Обычно это имя, под которым будет храниться файл дампа.) Если необязательный второй параметр имеет значение true, функция pg_backup_start должна выполняться как можно быстрее. При этом будет принудительно выполнена контрольная точка, что вызовет кратковременный всплеск операций ввода/вывода, замедлив тем самым параллельно выполняемые запросы.

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

pg_backup_stop

pg_backup_stop ( [, ждать_архивированияboolean ] ) → record (lsnpg_lsn,файл_меткиtext,файл_карты_табл_пространств text )

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

У функции также имеется необязательный параметр типа boolean. Если он равен false, функция вернет результат сразу после окончания резервного копирования, не дожидаясь архивирования WAL. Такое поведение полезно только для программ резервного копирования, независимо мониторящих архивирование WAL. В противном случае архив WAL, требующийся для согласованности резервной копии, может отсутствовать, делая копию бесполезной. По умолчанию или когда этот параметр равен true, pg_backup_stop будет ждать завершения архивирования WAL, если оно включено. (Для резервного сервера это означает, что функция будет ждать только при условии archive_mode = always. При низкой активности записи на основном сервере может быть полезно выполнить на нем pg_switch_wal, чтобы запустить немедленное переключение сегмента.)

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

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

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

pg_switch_wal

pg_switch_wal () → pg_lsn

Производит принудительное переключение сервера на новый файл журнала упреждающей записи, что позволяет архивировать текущий файл (в предположении, что вы используете непрерывное архивирование). Результат — конечная позиция в только что законченном журнале упреждающей записи плюс 1. Если с момента последнего переключения файлов не было активности, pg_switch_wal ничего не делает и возвращает начальную позицию в журнале упреждающей записи, используемом в данный момент.

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

pg_walfile_name

pg_walfile_name ( lsn pg_lsn ) → text

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

pg_walfile_name_offset

pg_walfile_name_offset ( lsnpg_lsn ) → record (имя_файлаtext,смещение_файла integer )

Преобразует позицию в журнале упреждающей записи в имя файла WAL и байтовое смещение в этом файле.

pg_split_walfile_name

pg_split_walfile_name ( имя_файлаtext ) → record (номер_сегментаnumeric,id_временной_шкалы bigint )

Извлекает последовательный номер и идентификатор временной шкалы из имени файла WAL.

pg_wal_lsn_diff

pg_wal_lsn_diff ( lsn1pg_lsn,lsn2 pg_lsn ) → numeric

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


Примечания

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

Функцию pg_walfile_name_offset можно использовать для извлечения соответствующего имени файла журнала упреждающей записи и байтового смещения из значения pg_lsn. Например:

qhb=# SELECT * FROM pg_walfile_name_offset((pg_backup_stop()).lsn);
        file_name         | file_offset
--------------------------+-------------
 00000001000000000000000D |     4039624
(1 row)

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

Функция pg_split_walfile_name полезна для вычисления LSN из смещения файла и имени файла WAL, например:

qhb=# \set file_name '000000010000000100C000AB'
qhb=# \set offset 256
qhb=# SELECT '0/0'::pg_lsn + pd.segment_number * ps.setting::int + :offset AS lsn
  FROM pg_split_walfile_name(:'file_name') pd,
       pg_show_all_settings() ps
  WHERE ps.name = 'wal_segment_size';
      lsn
---------------
 C001/AB000100
(1 row)


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

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

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

pg_is_in_recovery

pg_is_in_recovery () → boolean

Возвращает true, если восстановление еще продолжается.

pg_last_wal_receive_lsn

pg_last_wal_receive_lsn () → pg_lsn

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

pg_last_wal_replay_lsn

pg_last_wal_replay_lsn () → pg_lsn

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

pg_last_xact_replay_timestamp

pg_last_xact_replay_timestamp () → timestamp with time zone

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

pg_get_wal_resource_managers

pg_get_wal_resource_managers () → setof record ( id_мрinteger,имя_мрtext,встроенный_мр boolean )

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


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

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

pg_is_wal_replay_paused

pg_is_wal_replay_paused () → boolean

Возвращает true, если запрошена приостановка восстановления.

pg_get_wal_replay_pause_state

pg_get_wal_replay_pause_state () → text

Возвращает состояние приостановки восстановления. Возвращаемые значения: not paused, если приостановка не запрашивалась, pause requested, если приостановка запрашивалась, но восстановление еще не приостановлено, и paused, если восстановление действительно приостановлено.

pg_promote

pg_promote ( ожиданиеboolean DEFAULT true,секунды_ожидания integer DEFAULT 60 ) → boolean

Повышает статус резервного сервера до основного. Если параметр ожидание равен true (по умолчанию), функция дожидается завершения повышения либо пока пройдут секунды_ожидания и возвращает true, если повышение завершилось успешно, и false в противном случае. Если параметр ожидание равен false, функция возвращает true сразу после отправки процессу qhbmaster сигнала SIGUSR1, запускающего повышение.

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

pg_wal_replay_pause

pg_wal_replay_pause () → void

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

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

pg_wal_replay_resume

pg_wal_replay_resume () → void

Возобновляет восстановление, если оно было приостановлено.

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


Примечания

Функции pg_wal_replay_pause и pg_wal_replay_resume нельзя выполнять в процессе повышения. Если повышение инициируется, когда восстановление приостановлено, оно снимается с паузы, и процесс повышения продолжается.

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



Функции синхронизации снимков

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

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

Снимки экспортируются с помощью функции pg_export_snapshot, приведенной ниже, и импортируются с помощью команды SET TRANSACTION.

pg_export_snapshot

pg_export_snapshot () → text

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

При необходимости транзакция может экспортировать более одного снимка. Обратите внимание, что это может быть полезно только для транзакций с уровнем изоляции READ COMMITTED, поскольку транзакции уровня REPEATABLE READ и выше используют один снимок на протяжении всего своего существования. После того, как транзакция экспортировала какие-либо снимки, ее нельзя сделать подготовленной с помощью команды PREPARE TRANSACTION.

pg_log_standby_snapshot

pg_log_standby_snapshot () → pg_lsn

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



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

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

Многим из этих функций равнозначны команды в протоколе репликации; см. раздел Протокол потоковой репликации.

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

pg_create_physical_replication_slot

pg_create_physical_replication_slot ( имя_слотаname [,мгновенный_резервboolean,временныйboolean ] ) → record (имя_слотаname,lsn pg_lsn )

Создает новый физический слот репликации с заданным именем_слота. Когда необязательный второй параметр равен true, это указывает, что LSN для этого слота репликации должен быть зарезервирован немедленно; в противном случае LSN резервируется при первом подключении клиента потоковой репликации. Передача изменений из физического слота возможна только по протоколу потоковой репликации — см. раздел Протокол потоковой репликации. Когда необязательный третий параметр временный равен true, это указывает, что данный слот не должен постоянно храниться на диске и предназначен к использованию только в текущем сеансе. Временные слоты также освобождаются при любой ошибке. Эта функция соответствует команде протокола репликации CREATE_REPLICATION_SLOT ... PHYSICAL.

pg_drop_replication_slot

pg_drop_replication_slot ( имя_слота name ) → void

Удаляет физический или логический слот с заданным именем_слота. Аналогична команде протокола репликации DROP_REPLICATION_SLOT.

pg_create_logical_replication_slot

pg_create_logical_replication_slot ( имя_слотаname,плагинname [,временныйboolean,две_фазыboolean ] ) → record (имя_слотаname,lsn pg_lsn )

Создает новый логический (декодирующий) слот репликации с заданным именем_слота, используя заданный плагин вывода. Когда необязательный третий параметр временный равен true, это указывает, что слот не должен постоянно храниться на диске и предназначен к использованию только в текущем сеансе. Временные слоты также освобождаются при любой ошибке. Когда необязательный четвертый параметр две_фазы равен true, это означает, что для данного слота включено декодирование подготовленных транзакций. Вызов этой функции равнозначен выполнению команды протокола репликации CREATE_REPLICATION_SLOT ... LOGICAL.

pg_copy_physical_replication_slot

pg_copy_physical_replication_slot ( имя_исходного_слотаname,имя_целевого_слотаname [,временныйboolean ] ) → record (имя_слотаname,lsn pg_lsn )

Копирует существующий физический слот репликации с заданным именем_исходного_слота в физический слот репликации с заданным именем_целевого_слота. Скопированный физический слот начинает резервировать WAL с того же LSN, что и исходный слот. Параметр временный является необязательным. Если этот параметр опущен, используется та же продолжительность существования, какую имеет исходный слот. Копирование денонсированного слота не допускается.

pg_copy_logical_replication_slot

pg_copy_logical_replication_slot ( имя_исходного_слотаname,имя_целевого_слотаname [,временныйboolean [,плагинname ]] ) → record (имя_слотаname,lsn pg_lsn )

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

pg_logical_slot_get_changes

pg_logical_slot_get_changes ( имя_слотаname,до_lsnpg_lsn,до_n_измененийinteger,VARIADIC параметрыtext[] ) → setof record (lsnpg_lsn,id_транзакцииxid,данные text )

Возвращает изменения в слоте имя_слота, начиная с последней точки, с которой ранее были получены изменения. Если параметры до_lsn и до_n_изменений равны NULL, логическое декодирование будет продолжаться до конца WAL. Если до_lsn отличен от NULL, декодирование затронет только транзакции, зафиксированные до заданного LSN. Если до_n_изменений отличен от NULL, декодирование остановится, когда число строк, выданных при декодировании, превысит заданное значение. Однако обратите внимание, что фактическое число возвращенных строк может быть больше, поскольку это ограничение проверяется только после добавления строк, выданных при декодировании очередной зафиксированной транзакции.

pg_logical_slot_peek_changes

pg_logical_slot_peek_changes ( имя_слотаname,до_lsnpg_lsn,до_n_измененийinteger,VARIADIC параметрыtext[] ) → setof record (lsnpg_lsn,id_транзакцииxid,данные text )

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

pg_logical_slot_get_binary_changes

pg_logical_slot_get_binary_changes ( имя_слотаname,до_lsnpg_lsn,до_n_измененийinteger,VARIADIC параметрыtext[] ) → setof record (lsnpg_lsn,id_транзакцииxid,данные bytea )

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

pg_logical_slot_peek_binary_changes

pg_logical_slot_peek_binary_changes ( имя_слотаname,до_lsnpg_lsn,до_n_измененийinteger,VARIADIC параметрыtext[] ) → setof record (lsnpg_lsn,id_транзакцииxid,данные bytea )

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

pg_replication_slot_advance

pg_replication_slot_advance ( имя_слотаname,до_lsnpg_lsn ) → record (имя_слотаname,итоговый_lsn pg_lsn )

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

pg_replication_origin_create

pg_replication_origin_create ( имя_узла text ) → oid

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

pg_replication_origin_drop

pg_replication_origin_drop ( имя_узла text ) → void

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

pg_replication_origin_oid

pg_replication_origin_oid ( имя_узла text ) → oid

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

pg_replication_origin_session_setup

pg_replication_origin_session_setup ( имя_узла text ) → void

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

pg_replication_origin_session_reset

pg_replication_origin_session_reset () → void

Отменяет действие функции pg_replication_origin_session_setup().

pg_replication_origin_session_is_setup

pg_replication_origin_session_is_setup () → boolean

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

pg_replication_origin_session_progress

pg_replication_origin_session_progress ( сброс_на_диск boolean ) → pg_lsn

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

pg_replication_origin_xact_setup

pg_replication_origin_xact_setup ( исходный_lsnpg_lsn,исх_временная_метка timestamp with time zone ) → void

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

pg_replication_origin_xact_reset

pg_replication_origin_xact_reset () → void

Отменяет действие функции pg_replication_origin_xact_setup().

pg_replication_origin_advance

pg_replication_origin_advance ( имя_узлаtext,lsn pg_lsn ) → void

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

pg_replication_origin_progress

pg_replication_origin_progress ( имя_узлаtext,сброс_на_диск boolean ) → pg_lsn

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

pg_logical_emit_message

pg_logical_emit_message ( часть_транзакцииboolean,префиксtext,содержимое text ) → pg_lsn
pg_logical_emit_message ( часть_транзакцииboolean,префиксtext,содержимое bytea ) → pg_lsn

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



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

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

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

pg_column_size

pg_column_size ( "any" ) → integer

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

pg_column_compression

pg_column_compression ( "any" ) → text

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

pg_database_size

pg_database_size ( name ) → bigint
pg_database_size ( oid ) → bigint

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

pg_indexes_size

pg_indexes_size ( regclass ) → bigint

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

pg_relation_size

pg_relation_size ( отношениеregclass [,ветвь text ] ) → bigint

Вычисляет объем дискового пространства, занимаемый одной «ветвью» указанного отношения. (Обратите внимание, что в большинстве случаев удобнее использовать более высокоуровневые функции pg_total_relation_size или pg_table_size, суммирующие размер всех ветвей.) С одним аргументом она выдает размер основной ветви данных отношения. Во втором аргументе можно передать название ветви, которую нужно проверить:

  • main возвращает размер основной ветви данных этого отношения.
  • fsm возвращает размер карты свободного пространства (см. раздел Карта свободного пространства), связанной с этим отношением.
  • vm возвращает размер карты видимости (см. раздел Карта видимости), связанной с этим отношением.
  • init возвращает размер ветви инициализации (если таковая имеется), связанной с этим отношением.

pg_size_bytes

pg_size_bytes ( text ) → bigint

Преобразует размер в формате, удобном для восприятия человеком (который возвращает функция pg_size_pretty), в байты. Допустимые единицы: bytes, B, kB, MB, GB, TB и PB.

pg_size_pretty

pg_size_pretty ( bigint ) → text
pg_size_pretty ( numeric ) → text

Преобразует размер в байтах в более удобный для восприятия человеком формат с единицами измерения размера (bytes, kB, MB, GB, TB или PB, в зависимости от ситуации). Обратите внимание, что эти единицы являются степенями 2, а не 10, поэтому 1kB — это 1024 байта, 1MB — это 10242 = 1048576 байта и т. д.

pg_table_size

pg_table_size ( regclass ) → bigint

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

pg_tablespace_size

pg_tablespace_size ( name ) → bigint
pg_tablespace_size ( oid ) → bigint

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

pg_total_relation_size

pg_total_relation_size ( regclass ) → bigint

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


Примечания

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


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

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

pg_relation_filenode

pg_relation_filenode ( отношение regclass ) → oid

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

pg_relation_filepath

pg_relation_filepath ( отношение regclass ) → text

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

pg_filenode_relation

pg_filenode_relation ( табличное_пространствоoid,файловый_узел oid ) → regclass

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


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

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

pg_collation_actual_version

pg_collation_actual_version ( oid ) → text

Возвращает актуальную версию объекта правила сортировки, которая в данный момент установлена в операционной системе. Если результат отличается от значения в столбце pg_collation.collversion, может потребоваться перестройка объектов, зависящих от этого правила сортировки. См. также ALTER COLLATION.

pg_database_collation_actual_version

pg_database_collation_actual_version ( oid ) → text

Возвращает актуальную версию правила сортировки базы данных, которая в данный момент установлена в операционной системе. Если результат отличается от значения в столбце pg_database.datcollversion, может потребоваться перестройка объектов, зависящих от этого правила сортировки. См. также ALTER DATABASE.

pg_import_system_collations

pg_import_system_collations ( схема regnamespace ) → integer

Добавляет правила сортировки в системный каталог pg_collation с учетом всех локалей, которые она находит в операционной системе. Именно эту информацию использует qhb_bootstrap (или initdb); подробную информацию см. в подразделе Управление правилами сортировки. Если позднее в операционную систему устанавливаются дополнительные локали, эту функцию можно запустить снова, чтобы добавить правила сортировки для новых локалей. Локали, соответствующие существующим записям в pg_collation, будут пропущены. (Но объекты правил сортировки, относящиеся к локалям, которых больше не существует в операционной системе, этой функцией не удаляются.) В параметре схема обычно передается pg_catalog, но это не обязательное требование; правила сортировки могут быть установлены и в какую-нибудь другую схему. Эта функция возвращает число созданных ею новых объектов правил сортировки. Вызывать эту функцию могут только суперпользователи.


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

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

pg_partition_tree

pg_partition_tree ( regclass ) → setof record ( id_отношенияregclass,id_родителяregclass,является_листовойboolean,уровень integer )

Перечисляет таблицы или индексы в дереве партиционирования указанной партиционированной таблицы или партиционированного индекса, по одной строке на каждую партицию. Предоставляемая информация включает OID партиции, OID ее непосредственного родителя, логическое значение, указывающее, является ли партиция концевой вершиной структуры, и целое число, отражающее ее уровень в иерархии. Значение уровня 0 означает переданную таблицу или индекс, 1 — непосредственные дочерние партиции, 2 — партиции этих партиций и т. д. Если это отношение не существует или не является партицией или партиционированной таблицей, возвращает пустой результат.

Например, чтобы проверить общий размер данных, содержащихся в партиционированной таблице measurement, можно использовать следующий запрос:

SELECT pg_size_pretty(sum(pg_relation_size(relid))) AS total_size
  FROM pg_partition_tree('measurement');

pg_partition_ancestors

pg_partition_ancestors ( regclass ) → setof regclass

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

pg_partition_root

pg_partition_root ( regclass ) → regclass

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



Функции для обслуживания индексов

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

brin_summarize_new_values

brin_summarize_new_values ( индекс regclass ) → integer

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

brin_summarize_range

brin_summarize_range ( индексregclass,номер_блока bigint ) → integer

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

brin_desummarize_range

brin_desummarize_range ( индексregclass,номер_блока bigint ) → void

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

gin_clean_pending_list

gin_clean_pending_list ( индекс regclass ) → bigint

Очищает список «ожидания» указанного индекса GIN путем массового перемещения записей из него в основную структуру данных GIN. Возвращает число страниц, убранных из списка ожидания. Если аргументом является индекс GIN, построенный с выключенным параметром fastupdate, очистка не производится, и результат равен нулю, поскольку у этого индекса нет списка ожидания. Подробную информацию о списке ожидания и параметре fastupdate см. в подразделе Методика быстрого обновления GIN и разделе Советы и приемы для индексов GIN.



Функции доступа к типовым файлам

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

Обратите внимание, что предоставление пользователям права EXECUTE для pg_read_file () или связанных функций дает им возможность читать любой файл на сервере, который может прочитать серверный процесс базы данных; эти функции обходят все проверки прав внутри базы данных. Это означает, к примеру, что пользователь с таким доступом может читать содержимое таблицы pg_authid, в которой содержится информация по аутентификации, а также читать любые табличные данные в базе. Поэтому предоставление доступа к этим функциям должно быть тщательно продумано.

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

Некоторые из этих функций принимают необязательный параметр может_отсутствовать, который определяет их поведение в случае отсутствия файла или каталога. Если он равен true, функция возвращает NULL или пустой результат, в зависимости от конкретного случая. Если он равен false, возникает ошибка. (Условия сбоя, отличные от «file not found» (файл не найден), в любом случае выводятся как ошибки.) Значение по умолчанию — false.

pg_ls_dir

pg_ls_dir ( имя_каталогаtext [,может_отсутствоватьboolean,включать_каталоги_с_точками boolean ] ) → setof text

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

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

pg_ls_logdir

pg_ls_logdir () → setof record ( имяtext,размерbigint,модификация timestamp with time zone )

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

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

pg_ls_waldir

pg_ls_waldir () → setof record ( имяtext,размерbigint,модификация timestamp with time zone )

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

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

pg_ls_logicalmapdir

pg_ls_logicalmapdir () → setof record ( имяtext,размерbigint,модификация timestamp with time zone )

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

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

pg_ls_logicalsnapdir

pg_ls_logicalsnapdir () → setof record ( имяtext,размерbigint,модификация timestamp with time zone )

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

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

pg_ls_replslotdir

pg_ls_replslotdir () → setof record ( имя_слотаtext,размерbigint,модификация timestamp with time zone )

Возвращает имя, размер и время последней модификации (mtime) всех обычных файлов в каталоге pg_replslot/slot_name сервера, где имя_слота — это имя слота репликации, передаваемое этой функции в качестве аргумента. Файлы с именами, начинающимися с точки, каталоги и другие специальные файлы исключаются.

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

pg_ls_archive_statusdir

pg_ls_archive_statusdir () → setof record ( имяtext,размерbigint,модификация timestamp with time zone )

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

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

pg_ls_tmpdir

pg_ls_tmpdir ( [ табличное_пространствоoid ] ) → setof record (имяtext,размерbigint,модификация timestamp with time zone )

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

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

pg_read_file

pg_read_file ( имя_файлаtext [,смещениеbigint,длинаbigint [,может_отсутствовать boolean ]] ) → text

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

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

pg_read_binary_file

pg_read_binary_file ( имя_файлаtext [,смещениеbigint,длинаbigint [,может_отсутствовать boolean ]] ) → bytea

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

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

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

SELECT convert_from(pg_read_binary_file('file_in_utf8.txt'), 'UTF8');

pg_stat_file

pg_stat_file ( имя_файлаtext [,может_отсутствоватьboolean ] ) → record (размерbigint,обращениеtimestamp with time zone,модификацияtimestamp with time zone,изменениеtimestamp with time zone,является_каталогом boolean )

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

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



Функции рекомендательных блокировок

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

Все эти функции предназначены для работы с блокировками ресурсов, определяемых приложением, которые могут задаваться либо одним 64-битным, либо двумя 32-битными значениями ключей (обратите внимание, что пространства этих двух ключей не пересекаются). Если другой сеанс уже удерживает конфликтующую блокировку с тем же идентификатором ресурса, эти функции либо дожидаются, когда этот ресурс снова станет доступен, либо возвращают результат false, в зависимости от конкретной функции. Блокировки могут быть как совместными, так и эксклюзивными: совместная блокировка не конфликтует с другими совместными блокировками того же ресурса, только с эксклюзивными. Блокировки могут устанавливаться на уровне сеанса (таким образом они удерживаются до освобождения или до завершения сеанса) или на уровне транзакции (таким образом они удерживаются до завершения текущей транзакции; освободить их вручную возможности нет). Когда на блокировку уровня сеанса поступает несколько запросов, они накапливаются, поэтому если один идентификатор ресурса был заблокирован три раза, до завершения сеанса должно поступить три запроса на освобождение ресурса.

pg_advisory_lock

pg_advisory_lock ( ключ bigint ) → void
pg_advisory_lock ( ключ1integer,ключ2 integer ) → void

Получает эксклюзивную рекомендательную блокировку уровня сеанса, при необходимости ожидая ее.

pg_advisory_lock_shared

pg_advisory_lock_shared ( ключ bigint ) → void
pg_advisory_lock_shared ( ключ1integer,ключ2 integer ) → void

Получает совместную рекомендательную блокировку уровня сеанса, при необходимости ожидая ее.

pg_advisory_unlock

pg_advisory_unlock ( ключ bigint ) → boolean
pg_advisory_unlock ( ключ1integer,ключ2 integer ) → boolean

Освобождает полученную ранее эксклюзивную рекомендательную блокировку уровня сеанса. Если блокировка успешно освобождена, возвращает true. Если сеанс не удерживал эту блокировку, возвращается false, а кроме того сервер выдаст предупреждение SQL.

pg_advisory_unlock_all

pg_advisory_unlock_all () → void

Освобождает все рекомендательные блокировки уровня сеанса, удерживаемые текущим сеансом. (Эта функция неявно вызывается при завершении сеанса, даже если внезапно прервалось соединение с клиентом.)

pg_advisory_unlock_shared

pg_advisory_unlock_shared ( ключ bigint ) → boolean
pg_advisory_unlock_shared ( ключ1integer,ключ2 integer ) → boolean

Освобождает полученную ранее совместную рекомендательную блокировку уровня сеанса. Если блокировка успешно освобождена, возвращает true. Если сеанс не удерживал эту блокировку, возвращается false, а кроме того сервер выдаст предупреждение SQL.

pg_advisory_xact_lock

pg_advisory_xact_lock ( ключ bigint ) → void
pg_advisory_xact_lock ( ключ1integer,ключ2 integer ) → void

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

pg_advisory_xact_lock_shared

pg_advisory_xact_lock_shared ( ключ bigint ) → void
pg_advisory_xact_lock_shared ( ключ1integer,ключ2 integer ) → void

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

pg_try_advisory_lock

pg_try_advisory_lock ( ключ bigint ) → boolean
pg_try_advisory_lock ( ключ1integer,ключ2 integer ) → boolean

Получает эксклюзивную рекомендательную блокировку уровня сеанса, если она доступна. Эта функция либо немедленно получит блокировку и возвратит true, либо сразу возвратит false, если блокировку нельзя получить немедленно.

pg_try_advisory_lock_shared

pg_try_advisory_lock_shared ( ключ bigint ) → boolean
pg_try_advisory_lock_shared ( ключ1integer,ключ2 integer ) → boolean

Получает совместную рекомендательную блокировку уровня сеанса, если она доступна. Эта функция либо немедленно получит блокировку и возвратит true, либо сразу возвратит false, если блокировку нельзя получить немедленно.

pg_try_advisor_xact_lock

pg_try_advisor_xact_lock ( ключ bigint ) → boolean
pg_try_advisory_xact_lock ( ключ1integer,ключ2 integer ) → boolean

Получает эксклюзивную рекомендательную блокировку уровня транзакции, если она доступна. Эта функция либо немедленно получит блокировку и возвратит true, либо сразу возвратит false, если блокировку нельзя получить немедленно.

pg_try_advisory_xact_lock_shared

pg_try_advisory_xact_lock_shared ( ключ bigint ) → boolean
pg_try_advisory_xact_lock_shared ( ключ1integer,ключ2 integer ) → boolean

Получает совместную рекомендательную блокировку уровня транзакции, если она доступна. Эта функция либо немедленно получит блокировку и возвратит true, либо сразу возвратит false, если блокировку нельзя получить немедленно.



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

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

qhb_timer_report

qhb_timer_report имяtextзначение int8

Отправляет метрику с заданным именем и заданным в наносекундах значением таймера.

qhb_counter_increase_by

qhb_counter_increase_by имяtextзначение int8

Увеличивает значение «счетчика» для метрики с указанным именем. Во втором аргументе передается число наносекунд, на которое увеличивается это значение.

qhb_gauge_add

qhb_gauge_add имяtextзначение int8

Увеличивает значение типа gauge для метрики с указанным именем. Во втором аргументе передается число наносекунд, на которое увеличивается это значение.

qhb_gauge_sub

qhb_gauge_sub имяtextзначение int8

Уменьшает значение типа gauge для метрики с указанным именем. Во втором аргументе передается число наносекунд, на которое уменьшается это значение.

qhb_gauge_update

qhb_gauge_update имяtextзначение int8

Устанавливает значение типа gauge для метрики с указанным именем.

qhb_annotation

qhb_annotation текстtext [тег ... ]

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