pg_cursors#

В представлении pg_cursors перечислены курсоры, которые доступны в данный момент. Курсоры могут быть определены несколькими способами:

  • с помощью оператора DECLARE в SQL;

  • через сообщение Bind в протоколе frontend/backend, как описано в разделе «Поток сообщений»;

  • через интерфейс программирования сервера (SPI).

Представление pg_cursors отображает курсоры, созданные любым из этих способов. Курсоры существуют только в течение времени транзакции, которая их определяет, если только они не были объявлены WITH HOLD. Поэтому курсоры без возможности удержания присутствуют в представлении только до конца создавшей их транзакции.

Примечание:

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

Столбец

Тип данных

Описание

name

text

Имя курсора

statement

text

Строка дословного запроса, отправленная для объявления этого курсора

is_holdable

bool

true, если курсор является удерживаемым (то есть к нему можно получить доступ после того, как транзакция, которая объявила курсор, зафиксирована); false в противном случае

is_binary

bool

true, если курсор был объявлен BINARY; false в противном случае

is_scrocable

bool

true, если курсор можно прокрутить (то есть он позволяет извлекать строки беспоследовательным образом); false в противном случае

creation_time

timestamptz

Время объявления курсора

Представление pg_cursors доступно только для чтения