受支持版本: 当前版本 (18) / 17 / 16 / 15 / 14
开发版本: 19 / devel
此文档适用于不受支持的 PostgreSQL 版本。
您可能需要查看当前版本的相同页面,或上面列出的其他受支持版本。

F.47. test_decoding — 用于 WAL 逻辑解码的基于 SQL 的测试/示例模块 #

test_decoding 是一个逻辑解码输出插件示例。它本身并没有什么特别有用的功能,但可作为开发自定义输出插件的起点。

test_decoding 通过逻辑解码机制接收 WAL,并将其解码为所执行操作的文本表示形式。

通过 SQL 逻辑解码接口使用该插件时,其典型输出可能如下:

postgres=# SELECT * FROM pg_logical_slot_get_changes('test_slot', NULL, NULL, 'include-xids', '0');
    lsn     | xid |                       data
------------+-----+--------------------------------------------------
 0/016D30F8 | 691 | BEGIN
 0/016D32A0 | 691 | table public.data: INSERT: id[int4]:2 data[text]:'arg'
 0/016D32A0 | 691 | table public.data: INSERT: id[int4]:3 data[text]:'demo'
 0/016D32A0 | 691 | COMMIT
 0/016D32D8 | 692 | BEGIN
 0/016D3398 | 692 | table public.data: DELETE: id[int4]:2
 0/016D3398 | 692 | table public.data: DELETE: id[int4]:3
 0/016D3398 | 692 | COMMIT
(8 rows)

我们还可以获取进行中事务的变更,其典型输出可能如下:

postgres[33712]=#* SELECT * FROM pg_logical_slot_get_changes('test_slot', NULL, NULL, 'stream-changes', '1');
    lsn     | xid |                       data
------------+-----+--------------------------------------------------
 0/016B21F8 | 503 | opening a streamed block for transaction TXN 503
 0/016B21F8 | 503 | streaming change for TXN 503
 0/016B2300 | 503 | streaming change for TXN 503
 0/016B2408 | 503 | streaming change for TXN 503
 0/016BEBA0 | 503 | closing a streamed block for transaction TXN 503
 0/016B21F8 | 503 | opening a streamed block for transaction TXN 503
 0/016BECA8 | 503 | streaming change for TXN 503
 0/016BEDB0 | 503 | streaming change for TXN 503
 0/016BEEB8 | 503 | streaming change for TXN 503
 0/016BEBA0 | 503 | closing a streamed block for transaction TXN 503
(10 rows)