本节描述每个逻辑复制消息的详细格式。这些消息要么由复制槽 SQL 接口返回,要么由 walsender 发送。在 walsender 的情况下,它们被封装在复制协议 WAL 消息中,如 第 53.4 节所述,并且通常遵循与物理复制相同的消息流。
标识消息为 begin 消息。
事务的最终 LSN。
事务的提交时间戳。该值是自 PostgreSQL 纪元 (2000-01-01) 以来的微秒数。
事务的 Xid。
标识消息为逻辑解码消息。
事务的 Xid (仅存在于流式事务中)。此字段自协议版本 2 起可用。
标志;0 表示没有标志,1 表示逻辑解码消息是事务性的。
逻辑解码消息的 LSN。
逻辑解码消息的前缀。
内容的长度。
n
逻辑解码消息的内容。
标识消息为 commit 消息。
标志;当前未使用。
commit 的 LSN。
事务的结束 LSN。
事务的提交时间戳。该值是自 PostgreSQL 纪元 (2000-01-01) 以来的微秒数。
标识消息为 origin 消息。
原始服务器上 commit 的 LSN。
origin 的名称。
请注意,在单个事务中可以有多个 Origin 消息。
标识消息为 relation 消息。
事务的 Xid (仅存在于流式事务中)。此字段自协议版本 2 起可用。
关系的 OID。
命名空间 (对于 pg_catalog
为空字符串)。
关系名称。
关系的副本标识设置 (与 relreplident
在 pg_class
中相同)。
列数。
接下来,对于发布中包含的每一列(除了生成的列),会出现以下消息部分
列的标志。目前可以是 0 表示没有标志,也可以是 1 表示该列是键的一部分。
列的名称。
列的数据类型的 OID。
列的类型修饰符 (atttypmod
)。
标识消息为 type 消息。
事务的 Xid (仅存在于流式事务中)。此字段自协议版本 2 起可用。
数据类型的 OID。
命名空间 (对于 pg_catalog
为空字符串)。
数据类型的名称。
标识消息为 insert 消息。
事务的 Xid (仅存在于流式事务中)。此字段自协议版本 2 起可用。
与 relation 消息中的 ID 对应的关系的 OID。
标识以下 TupleData 消息为新元组。
表示新元组内容的 TupleData 消息部分。
标识消息为 update 消息。
事务的 Xid (仅存在于流式事务中)。此字段自协议版本 2 起可用。
与 relation 消息中的 ID 对应的关系的 OID。
标识以下 TupleData 子消息为键。此字段是可选的,仅当更新更改了 REPLICA IDENTITY 索引中任何列的数据时才会出现。
标识以下 TupleData 子消息为旧元组。此字段是可选的,仅当发生更新的表将 REPLICA IDENTITY 设置为 FULL 时才会出现。
表示旧元组或主键内容的 TupleData 消息部分。仅当存在之前的 'O' 或 'K' 部分时才会出现。
标识以下 TupleData 消息为新元组。
表示新元组内容的 TupleData 消息部分。
Update 消息可能包含 'K' 消息部分或 'O' 消息部分,或者两者都不包含,但绝不会同时包含两者。
标识消息为 delete 消息。
事务的 Xid (仅存在于流式事务中)。此字段自协议版本 2 起可用。
与 relation 消息中的 ID 对应的关系的 OID。
标识以下 TupleData 子消息为键。如果发生删除的表使用索引作为 REPLICA IDENTITY,则此字段存在。
标识以下 TupleData 消息为旧元组。如果发生删除的表将 REPLICA IDENTITY 设置为 FULL,则此字段存在。
表示旧元组或主键内容的 TupleData 消息部分,具体取决于前一个字段。
Delete 消息可能包含 'K' 消息部分或 'O' 消息部分,但绝不会同时包含两者。
标识消息为 truncate 消息。
事务的 Xid (仅存在于流式事务中)。此字段自协议版本 2 起可用。
关系数
TRUNCATE
的选项位: 1 表示 CASCADE
,2 表示 RESTART IDENTITY
与 relation 消息中的 ID 对应的关系的 OID。此字段针对每个关系重复。
以下消息(Stream Start、Stream Stop、Stream Commit 和 Stream Abort)自协议版本 2 起可用。
标识消息为 stream start 消息。
事务的 Xid。
值为 1 表示这是此 XID 的第一个流段,0 表示任何其他流段。
标识消息为 stream stop 消息。
标识消息为 stream commit 消息。
事务的 Xid。
标志;当前未使用。
commit 的 LSN。
事务的结束 LSN。
事务的提交时间戳。该值是自 PostgreSQL 纪元 (2000-01-01) 以来的微秒数。
标识消息为 stream abort 消息。
事务的 Xid。
子事务的 Xid(对于顶层事务,将与事务的 xid 相同)。
中止的 LSN。此字段自协议版本 4 起可用。
事务的中止时间戳。该值是自 PostgreSQL 纪元 (2000-01-01) 以来的微秒数。此字段自协议版本 4 起可用。
以下消息(Begin Prepare、Prepare、Commit Prepared、Rollback Prepared、Stream Prepare)自协议版本 3 起可用。
标识消息为预备事务消息的开始。
准备的 LSN。
预备事务的结束 LSN。
事务的准备时间戳。该值是自 PostgreSQL 纪元 (2000-01-01) 以来的微秒数。
事务的 Xid。
预备事务的用户定义 GID。
标识消息为预备事务消息。
标志;当前未使用。
准备的 LSN。
预备事务的结束 LSN。
事务的准备时间戳。该值是自 PostgreSQL 纪元 (2000-01-01) 以来的微秒数。
事务的 Xid。
预备事务的用户定义 GID。
标识消息为预备事务消息的提交。
标志;当前未使用。
预备事务提交的 LSN。
预备事务提交的结束 LSN。
事务的提交时间戳。该值是自 PostgreSQL 纪元 (2000-01-01) 以来的微秒数。
事务的 Xid。
预备事务的用户定义 GID。
标识消息为预备事务消息的回滚。
标志;当前未使用。
预备事务的结束 LSN。
预备事务回滚的结束 LSN。
事务的准备时间戳。该值是自 PostgreSQL 纪元 (2000-01-01) 以来的微秒数。
事务的回滚时间戳。该值是自 PostgreSQL 纪元 (2000-01-01) 以来的微秒数。
事务的 Xid。
预备事务的用户定义 GID。
标识消息为流式预备事务消息。
标志;当前未使用。
准备的 LSN。
预备事务的结束 LSN。
事务的准备时间戳。该值是自 PostgreSQL 纪元 (2000-01-01) 以来的微秒数。
事务的 Xid。
预备事务的用户定义 GID。
以下消息部分由上述消息共享。
列数。
接下来,对于每一列(除了生成的列),会出现以下子消息之一
标识数据为 NULL 值。
或
标识未更改的 TOASTed 值(不发送实际值)。
或
标识数据为文本格式的值。
或
标识数据为二进制格式的值。
列值的长度。
n
列的值,以二进制或文本格式。(如前面的格式字节中指定)。n
是上面的长度。
如果您发现文档中的任何内容不正确,与您对特定功能的体验不符或需要进一步澄清,请使用此表单报告文档问题。