本节描述了每个逻辑复制消息的详细格式。这些消息要么由复制槽SQL接口返回,要么由walsender发送。 对于walsender,它们被封装在复制协议WAL消息中,如Section 54.4所述, 并且通常遵循与物理复制相同的消息流程。
请注意,在单个事务中可能存在多个Origin消息。
接下来,对于出版物中包含的每一列(除了生成的列),会出现以下消息部分:
标识消息为更新消息。
事务的Xid(仅适用于流式事务)。 该字段自协议版本2起可用。
与关系消息中ID对应的关系的OID。
标识以下TupleData子消息为键。 此字段是可选的,仅在更新更改了属于REPLICA IDENTITY索引的任何列的数据时才存在。
标识以下TupleData子消息为旧元组。 此字段是可选的,仅在发生更新的表中REPLICA IDENTITY设置为FULL时才存在。
TupleData消息部分表示旧元组或主键的内容。仅在先前的'O'或'K'部分存在时才存在。
标识以下TupleData消息为新元组。
TupleData消息部分表示新元组的内容。
更新消息可能包含一个'K'消息部分,也可能包含一个'O'消息部分,或者两者都不包含,但绝不会同时包含两者。
标识消息为删除消息。
事务的Xid(仅适用于流式事务)。 该字段自协议版本2起可用。
与关系消息中ID对应的关系的OID。
标识以下TupleData子消息为键。 如果发生删除操作的表使用索引作为REPLICA IDENTITY,则存在此字段。
标识以下TupleData消息为旧元组。 如果发生删除操作的表的REPLICA IDENTITY设置为FULL,则存在此字段。
TupleData消息部分,表示旧元组或主键的内容,取决于前一个字段。
删除消息可能包含一个'K'消息部分或一个'O'消息部分,但绝不会同时包含两者。
以下消息(Stream Start,Stream Stop,Stream Commit和Stream Abort)自协议版本2起可用。
以下消息(Begin Prepare,Prepare,Commit Prepared,Rollback Prepared,Stream Prepare)自协议版本3起可用。
标识消息为预备事务回滚消息。
标志; 目前未使用。
预备事务的结束 LSN。
回滚预备事务的结束 LSN。
预备事务的时间戳。该值是自 PostgreSQL 纪元(2000-01-01)以来的微秒数。
事务的回滚时间戳。该值是自PostgreSQL纪元(2000-01-01)以来的微秒数。
事务的Xid。
预备事务的用户定义 GID。
以上消息共享以下消息部分。
如果您发现文档中有不正确的内容、与您使用特定功能的经验不符或需要进一步说明,请使用此表单来报告文档问题。