pg_lsn
是一种表示LSN(日志序列号)的数据类型。
pg_lsn
在PostgreSQL 9.4 中添加。
用法
pg_lsn
支持 0/0
到 FFFFFFFF/FFFFFFFF
之间的值。
支持标准比较运算符,例如 =
和 >
。
从PostgreSQL 14 开始,可以添加和减去字节值。
更改历史记录
- PostgreSQL 14
+(pg_lsn,numeric)
和-(pg_lsn,numeric)
运算符已添加(提交 9bae7e4c)
- PostgreSQL 13
- 添加了对
MIN()
和MAX()
聚合的支持(提交 313f87a1)
- 添加了对
- PostgreSQL 9.4
- 添加(提交 7d03a83f)
示例
pg_lsn
的基本用法
postgres=# SELECT '0/0'::pg_lsn; pg_lsn -------- 0/0 (1 row)
确定两个LSN之间以字节为单位的距离
postgres=# SELECT '7/A25801C8'::pg_lsn - '7/A2000000'::pg_lsn; ?column? ---------- 5767624 (1 row)
添加和减去字节值(PostgreSQL 14 及更高版本)
postgres=# SELECT '7/A25801C8'::pg_lsn + 128; ?column? ------------ 7/A2580248 (1 row) postgres=# SELECT '7/A25801C8'::pg_lsn - 65536; ?column? ------------ 7/A25701C8 (1 row)
尝试转换无效的LSN
postgres=# SELECT '-1/-1'::pg_lsn; ERROR: invalid input syntax for type pg_lsn: "-1/-1" LINE 1: SELECT '-1/-1'::pg_lsn;
无法添加LSN
postgres=# SELECT '7/A25801C8'::pg_lsn + '7/A2000000'::pg_lsn; ERROR: operator does not exist: pg_lsn + pg_lsn LINE 1: SELECT '7/A25801C8'::pg_lsn + '7/A2000000'::pg_lsn;
参考文献
- PostgreSQL 文档: pg_lsn