pg_xact_commit_timestamp_origin()
是一个系统函数,返回事务的提交时间戳和复制源。
pg_xact_commit_timestamp_origin()
在 PostgreSQL 14 中添加。
用法
pg_xact_commit_timestamp_origin (xid
)
→ record (timestamp
timestamp with time zone
,roident
oid
)
如果事务记录未与复制源关联,则 roident
返回 0
。
更改历史记录
- PostgreSQL 14
- 添加 (提交 b1e48bbe)
示例
以下为 pg_xact_commit_timestamp_origin()
的基本用法示例,此处在订阅节点上执行,显示最初在发布节点上插入的节点
postgres=# SELECT foo.xmin, origin.roident, foo.id, foo.node FROM foo, LATERAL pg_xact_commit_timestamp_origin(foo.xmin) origin; xmin | roident | id | node ------+---------+----+---------------- 740 | 1 | 1 | logical[node1] 740 | 1 | 2 | logical[node1] 740 | 1 | 3 | logical[node1] 740 | 1 | 4 | logical[node1] 740 | 1 | 5 | logical[node1] (5 rows)
在订阅节点上插入的其他行具有 roident
值 0
,因为它们不是源自其他节点。
postgres=# INSERT INTO foo VALUES (pg_catalog.generate_series(6, 10), pg_catalog.current_setting('cluster_name'), pg_catalog.clock_timestamp() ); INSERT 0 5 postgres=# SELECT foo.xmin, origin.roident, foo.id, foo.node FROM foo, LATERAL pg_xact_commit_timestamp_origin(foo.xmin) origin; xmin | roident | id | node ------+---------+----+---------------- 740 | 1 | 1 | logical[node1] 740 | 1 | 2 | logical[node1] 740 | 1 | 3 | logical[node1] 740 | 1 | 4 | logical[node1] 740 | 1 | 5 | logical[node1] 741 | 0 | 6 | logical[node2] 741 | 0 | 7 | logical[node2] 741 | 0 | 8 | logical[node2] 741 | 0 | 9 | logical[node2] 741 | 0 | 10 | logical[node2] (10 rows)
参考文献
- PostgreSQL 文档: 已提交事务信息函数