本节介绍每个逻辑复制消息的详细格式。 这些消息由复制插槽SQL接口返回或由walsender发送。对于walsender, 它们被封装在复制协议WAL消息中,如第 52.4 节中所述, 并且通常遵循与物理复制相同的消息流。
将消息标识为开始消息。
事务的结束LSN。
提交事务的时间戳。自PostgreSQL纪元(2000-01-01)以来的数值是微秒数。
事务的Xid。
将消息标识为提交消息。
标志;目前未使用(必须为0)。
提交的LSN。
事务的结束LSN。
提交事务的时间戳。自PostgreSQL纪元(2000-01-01)以来的数值是微秒数。
将消息标识为原始消息。
源服务器上提交的LSN。
起始的名称。
请注意,单个事务内可能有多个Origin消息。
将消息标识为关系消息。
关系的ID。
命名空间(pg_catalog的空字符串)。
关系名称。
该关系的副本标识设置(与pg_class
中的relreplident相同)。
列数。
接下来,每列显示以下消息部分:
列的标志。当前可以是0表示没有标记或1表示将列标记为关键字的一部分。
列的名称。
列的数据类型的ID。
列的类型修饰符(atttypmod).
将消息标识为类型消息。
数据类型的ID。
命名空间(pg_catalog的空字符串)。
数据类型的名称。
将消息标识为插入消息。
与关系消息中的ID对应的关系的ID。
将以下TupleData消息标识为新元组。
TupleData消息部分表示新元组的内容。
将消息标识为更新消息。
与关系消息中的ID对应的关系的ID。
将以下TupleData子消息标识为键。该字段是可选的, 并且只有在更新改变了REPLICA IDENTITY索引一部分的任何一列中的数据时才存在。
将以下TupleData子消息标识为旧元组。此字段是可选的, 并且仅当发生更新的表的REPLICA IDENTITY设置为FULL时才存在。
TupleData消息部分表示旧元组或主键的内容。 只有在前面的'O'或'K'部分存在时才存在。
将以下TupleData消息标识为新元组。
TupleData消息部分表示新元组的内容。
更新消息可以包含'K'消息部分或者'O'消息部分或者都不包含它们,但不同时包括它们两者。
将消息标识为删除消息。
与关系消息中的ID对应的关系的ID。
将以下TupleData子消息标识为键。 如果发生删除的表使用索引作为REPLICA IDENTITY,则此字段存在。
将以下TupleData消息标识为旧元组。 如果发生删除的表的REPLICA IDENTITY设置为FULL,则此字段存在。
TupleData消息部分,表示旧元组或主键的内容,具体取决于前一个字段。
删除消息可能包含'K'消息部分或'O'消息部分,但不会同时包含这两个部分。
以下消息部分由上述消息共享。
列数。
接下来,为每列显示以下子消息之一:
将数据标识为NULL值。
或者
识别未更改的TOASTed值(实际值未发送)。
或者
将数据标识为文本格式的值。
列值的长度。
n 该列的值,以文本格式显示。(未来版本可能支持其他格式。)
n是上面的长度。