pg_logical_emit_message()

用于发出逻辑解码消息的函数

pg_logical_emit_message() 是一个用于将逻辑解码消息发送到 WAL 的系统函数。

pg_logical_emit_message()PostgreSQL 9.6 中添加。

用法

PostgreSQL 17 及更高版本

pg_logical_emit_message ( transactional boolean, prefix text, content text, flush boolean ) → pg_lsn
pg_logical_emit_message ( transactional boolean, prefix text, content bytea, flush boolean ) → pg_lsn

PostgreSQL 16 及更早版本

pg_logical_emit_message ( transactional boolean, prefix text, content text ) → pg_lsn
pg_logical_emit_message ( transactional boolean, prefix text, content bytea ) → pg_lsn

此函数可用于通过 WAL 以 textbytea 格式将任意消息传递给逻辑解码插件。

为了帮助插件过滤消息,可以提供 prefix 值,通常为插件扩展的名称。请注意,这纯粹是建议性的,每个插件都可以自行决定是否读取该消息。前缀可以提供为空值。

变更历史

示例

pg_logical_emit_message() 的基本用法示例

postgres=# SELECT pg_logical_emit_message(false, 'foo', 'bar');
 pg_logical_emit_message 
-------------------------
 0/14A24B0
(1 row)

相应的 WAL 记录是

rmgr: LogicalMessage len (rec/tot):     57/    57, tx:          0, lsn: 0/014A2470, prev 0/014A22C8, desc: MESSAGE non-transactional, prefix "foo"; payload (3 bytes): 62 61 72

前缀和内容都可以提供为空字符串

postgres=# SELECT pg_logical_emit_message(false, '', '');
 pg_logical_emit_message 
-------------------------
 0/2002960
(1 row)

分类

逻辑复制系统函数

反馈

提交任何关于 "pg_logical_emit_message()" 的评论、建议或更正 此处