本节描述每个逻辑复制消息的详细格式。这些消息要么由复制槽 SQL 接口返回,要么由 walsender 发送。在 walsender 的情况下,它们封装在复制协议 WAL 消息中,如第 53.4 节所述,并且通常遵循与物理复制相同的消息流。
将消息标识为开始消息。
事务的最终 LSN。
事务的提交时间戳。该值以自 PostgreSQL 纪元 (2000-01-01) 以来以微秒为单位表示。
事务的 Xid。
将消息标识为逻辑解码消息。
事务的 Xid(仅在流式事务中存在)。此字段自协议版本 2 起可用。
标志;要么为 0 表示无标志,要么为 1 表示逻辑解码消息是事务性的。
逻辑解码消息的 LSN。
逻辑解码消息的前缀。
内容的长度。
n
逻辑解码消息的内容。
将消息标识为提交消息。
标志;当前未使用。
提交的 LSN。
事务的结束 LSN。
事务的提交时间戳。该值以自 PostgreSQL 纪元 (2000-01-01) 以来以微秒为单位表示。
将消息标识为来源消息。
源服务器上提交的 LSN。
来源的名称。
请注意,单个事务中可能有多个来源消息。
将消息标识为关系消息。
事务的 Xid(仅在流式事务中存在)。此字段自协议版本 2 起可用。
关系的 OID。
命名空间(对于pg_catalog
为空字符串)。
关系名称。
关系的副本标识设置(与pg_class
中的relreplident
相同)。
列数。
接下来,以下消息部分将显示在发布中包含的每个列(生成的列除外)
列的标志。当前可以是 0 表示无标志,或者 1 表示该列是键的一部分。
列的名称。
列的数据类型的 OID。
列的类型修饰符(atttypmod
)。
将消息标识为类型消息。
事务的 Xid(仅在流式事务中存在)。此字段自协议版本 2 起可用。
数据类型的 OID。
命名空间(对于pg_catalog
为空字符串)。
数据类型的名称。
将消息标识为插入消息。
事务的 Xid(仅在流式事务中存在)。此字段自协议版本 2 起可用。
与关系消息中的 ID 对应的关系的 OID。
将以下 TupleData 消息标识为新元组。
表示新元组内容的 TupleData 消息部分。
将消息标识为更新消息。
事务的 Xid(仅在流式事务中存在)。此字段自协议版本 2 起可用。
与关系消息中的 ID 对应的关系的 OID。
将以下 TupleData 子消息标识为键。此字段是可选的,仅当更新更改了 REPLICA IDENTITY 索引中任何列的数据时才会出现。
将以下 TupleData 子消息标识为旧元组。此字段是可选的,仅当更新发生所在的表将 REPLICA IDENTITY 设置为 FULL 时才会出现。
表示旧元组或主键内容的 TupleData 消息部分。仅当存在之前的 'O' 或 'K' 部分时才会出现。
将以下 TupleData 消息标识为新元组。
表示新元组内容的 TupleData 消息部分。
Update 消息可以包含 'K' 消息部分或 'O' 消息部分,或者两者都不包含,但绝不会同时包含两者。
将消息标识为删除消息。
事务的 Xid(仅在流式事务中存在)。此字段自协议版本 2 起可用。
与关系消息中的 ID 对应的关系的 OID。
将以下 TupleData 子消息标识为键。如果删除发生所在的表使用索引作为 REPLICA IDENTITY,则此字段存在。
将以下 TupleData 消息标识为旧元组。如果删除发生所在的表将 REPLICA IDENTITY 设置为 FULL,则此字段存在。
表示旧元组或主键内容的 TupleData 消息部分,具体取决于之前的字段。
Delete 消息可以包含 'K' 消息部分或 'O' 消息部分,但绝不会同时包含两者。
将消息标识为截断消息。
事务的 Xid(仅在流式事务中存在)。此字段自协议版本 2 起可用。
关系数
用于TRUNCATE
的选项位:1 用于CASCADE
,2 用于RESTART IDENTITY
与关系消息中的 ID 对应的关系的 OID。此字段针对每个关系重复。
以下消息(流开始、流停止、流提交和流中止)自协议版本 2 起可用。
将消息标识为流开始消息。
事务的 Xid。
值为 1 表示这是此 XID 的第一个流段,0 表示任何其他流段。
将消息标识为流停止消息。
将消息标识为流提交消息。
事务的 Xid。
标志;当前未使用。
提交的 LSN。
事务的结束 LSN。
事务的提交时间戳。该值以自 PostgreSQL 纪元 (2000-01-01) 以来以微秒为单位表示。
将消息标识为流中止消息。
事务的 Xid。
子事务的 Xid(对于顶级事务将与事务的 xid 相同)。
中止的 LSN。此字段自协议版本 4 起可用。
事务的中止时间戳。该值以自 PostgreSQL 纪元 (2000-01-01) 以来以微秒为单位表示。此字段自协议版本 4 起可用。
以下消息(开始准备、准备、提交准备、回滚准备、流准备)自协议版本 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
是上述长度。
如果您在文档中看到任何不正确的内容,与您对特定功能的体验不符,或者需要进一步说明,请使用此表单报告文档问题。