8.20. Tipo de dados pg_lsn #

O tipo de dados pg_lsn pode ser usado para armazenar dados de LSN (Log Sequence Number), que são um ponteiro para uma posição no WAL (Write-Ahead Log – registro de transações). Esse tipo de dados é uma representação do tipo de dados XLogRecPtr, e um tipo de dados interno do sistema do PostgreSQL.

/* Arquivo access/xlogdefs.h
 *
 * Ponteiro para um local no XLOG.
 * Esses ponteiros têm 64 bits de comprimento,
 * porque não se deseja que excedam o limite.
 */
typedef uint64 XLogRecPtr;

Internamente, o LSN é um número inteiro de 64 bits, representando uma posição de byte no WAL. O LSN é mostrado como dois números hexadecimais de até 8 dígitos cada, separados por uma barra; por exemplo, 16/B374D848. O tipo de dados pg_lsn oferece suporte aos operadores de comparação padrão, como = e >. Dois LSNs podem ser subtraídos usando o operador -; o resultado é o número de bytes que separa esses locais no WAL. Além disso, pode ser adicionado e subtraído um determinado número de bytes ao LSN usando os operadores +(pg_lsn,numeric) e -(pg_lsn,numeric), respectivamente. Note que o LSN calculado deverá estar no intervalo do tipo de dados pg_lsn, ou seja, entre 0/0 e FFFFFFFF/FFFFFFFF.