PostgreSQL中还有一些数据类型没有包括在前面介绍的类型中,本节来介绍这些数据类型。
UUID(Universally Unique Identifier)用于存储一个UUID。UUID定义在RFC 4122和ISO/IEC 9834-8:2005中。它是一个128bit的数字。
PostgreSQL中提供了UUID类型的比较运算符,示例如下:
osdba=# select uuid '1b34eaba-0d59-11e4-bf51-dc85de4d74f3' < uuid '1e0e95b0-0d59-11e4-bf51-dc85de4d74f3'; ?column? ---------- t (1 row)
虽然PostgreSQL核心源代码中没有提供产生UUID的函数,但contrib下的uuid-ossp模块提供了产生UUID的函数。具体可参见官方手册: http://www.postgresql.org/docs/9.4/static/uuid-ossp.html 。
pg_lsn类型是PostgreSQL9.4以上版本提供的一种表示LSN(Log Sequence Number)的数据类型。LSN表示WAL日志的位置。一些记录WAL日志信息的系统表中某些字段的类型就是pg_lsn类型,示例如下:
osdba=# \d pg_stat_replication View "pg_catalog.pg_stat_replication" Column | Type | Modifiers ------------------+--------------------------+----------- pid | integer | usesysid | oid | usename | name | application_name | text | client_addr | inet | client_hostname | text | client_port | integer | backend_start | timestamp with time zone | backend_xmin | xid | state | text | sent_location | pg_lsn | write_location | pg_lsn | flush_location | pg_lsn | replay_location | pg_lsn | sync_priority | integer | sync_state | text | osdba=# \d pg_replication_slots View "pg_catalog.pg_replication_slots" Column | Type | Modifiers --------------+---------+----------- slot_name | name | plugin | name | slot_type | text | datoid | oid | database | name | active | boolean | xmin | xid | catalog_xmin | xid | restart_lsn | pg_lsn |
在上面的示例中,pg_stat_replication的“sent_location”“write_location”等字段的类型就是pg_lsn类型,而pg_replication_slots视图中的“restart_lsn”字段也是pg_lsn类型。
在数据库内部,LSN是一个64bit的大整数,其输出类似如下格式:
16/B374D848
pg_lsn类型可以使用基本的比较运算符,如“=”“>”“<”等,两个pg_lsn的值可以相减,此时使用“-”运算符,相减所得的结果是两个WAL日志相差的字节数。