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.