pg_cursors#

The pg_cursors view lists the cursors that are currently available. Cursors can be defined in several ways:

  • via the DECLARE statement in SQL

  • via the Bind message in the frontend/backend protocol

  • via the Server Programming Interface (SPI)

The pg_cursors view displays cursors created by any of these means. Cursors only exist for the duration of the transaction that defines them, unless they have been declared WITH HOLD. Therefore non-holdable cursors are only present in the view until the end of their creating transaction.

Table 1. pg_catalog.pg_cursors

Name

Type

Description

name

text

The name of the cursor

statement

text

The verbatim query string submitted to declare this cursor

is_holdable

boolean

true if the cursor is holdable (that is, it can be accessed after the transaction that declared the cursor has committed); false otherwise

is_binary

boolean

true if the cursor was declared BINARY; false otherwise

is_scrollable

boolean

true if the cursor is scrollable (that is, it allows rows to be retrieved in a nonsequential manner); false otherwise

creation_time

timestamptz

The time at which the cursor was declared

is_parallel

boolean

true if the cursor was declared PARALLEL RETRIEVE; false otherwise.

The pg_cursors view is read only.