{"Entry":{"collection":"decode","key":"test_decoding","name":"test_decoding","aliases":[],"metadata":{"aliases":[],"category":"Testing and examples","content_hash":"a1b90f20b336448cd0dab98bbbc209fb456cb9f0e72d650ae2b75691f17ee413","imported_at":"2026-09-30T00:40:37.26777+08:00","name":"test_decoding","name_zh":"Testing and examples","slug":"test_decoding","summary":"A test and example output plugin that renders logical changes in a textual format."}},"Definition":{"Collection":"decode","Key":"test_decoding","SourceDatabase":"center","Version":"18","SourceTable":"logical_decoding_plugin","SourceKey":"test_decoding","SourceRevision":"555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f","Facts":{"callbacks":{"begin_cb":"pg_decode_begin_txn","begin_prepare_cb":"pg_decode_begin_prepare_txn","change_cb":"pg_decode_change","commit_cb":"pg_decode_commit_txn","commit_prepared_cb":"pg_decode_commit_prepared_txn","filter_by_origin_cb":"pg_decode_filter","filter_prepare_cb":"pg_decode_filter_prepare","message_cb":"pg_decode_message","prepare_cb":"pg_decode_prepare_txn","rollback_prepared_cb":"pg_decode_rollback_prepared_txn","shutdown_cb":"pg_decode_shutdown","startup_cb":"pg_decode_startup","stream_abort_cb":"pg_decode_stream_abort","stream_change_cb":"pg_decode_stream_change","stream_commit_cb":"pg_decode_stream_commit","stream_message_cb":"pg_decode_stream_message","stream_prepare_cb":"pg_decode_stream_prepare","stream_start_cb":"pg_decode_stream_start","stream_stop_cb":"pg_decode_stream_stop","stream_truncate_cb":"pg_decode_stream_truncate","truncate_cb":"pg_decode_truncate"},"comparison_data":{"callbacks":{"begin_cb":"pg_decode_begin_txn","begin_prepare_cb":"pg_decode_begin_prepare_txn","change_cb":"pg_decode_change","commit_cb":"pg_decode_commit_txn","commit_prepared_cb":"pg_decode_commit_prepared_txn","filter_by_origin_cb":"pg_decode_filter","filter_prepare_cb":"pg_decode_filter_prepare","message_cb":"pg_decode_message","prepare_cb":"pg_decode_prepare_txn","rollback_prepared_cb":"pg_decode_rollback_prepared_txn","shutdown_cb":"pg_decode_shutdown","startup_cb":"pg_decode_startup","stream_abort_cb":"pg_decode_stream_abort","stream_change_cb":"pg_decode_stream_change","stream_commit_cb":"pg_decode_stream_commit","stream_message_cb":"pg_decode_stream_message","stream_prepare_cb":"pg_decode_stream_prepare","stream_start_cb":"pg_decode_stream_start","stream_stop_cb":"pg_decode_stream_stop","stream_truncate_cb":"pg_decode_stream_truncate","truncate_cb":"pg_decode_truncate"},"options":[],"protocol_versions":{},"source_options":["force-binary","include-rewrites","include-timestamp","include-xids","only-local","skip-empty-xacts","stream-changes"]},"comparison_hash":"465d2c6d5759db47dd963a4b8f5bcb847943413cfd5afb7eb4fd0bd7b894b83e","description":["A test and example output plugin that renders logical changes in a textual format."],"evidence_kind":"source and documentation","facts":[{"label":"Interface family","value":"Logical-decoding output plugin"},{"label":"Handler or routine","value":"_PG_output_plugin_init"},{"label":"Recorded callbacks","value":"21"}],"manual_html":"\u003cdiv class=\"sect1\" id=\"TEST-DECODING\"\u003e\n\u003cdiv class=\"titlepage\"\u003e\n\u003cdiv\u003e\n\u003cdiv\u003e\n\u003ch2 class=\"title\"\u003eF.45. test_decoding — SQL-based test/example module for WAL logical decoding \u003c/h2\u003e\n\u003c/div\u003e\n\u003c/div\u003e\n\u003c/div\u003e\n\u003cp\u003e\u003ccode class=\"filename\"\u003etest_decoding\u003c/code\u003e is an example of a logical decoding output plugin. It doesn't do anything especially useful, but can serve as a starting point for developing your own output plugin.\u003c/p\u003e\n\u003cp\u003e\u003ccode class=\"filename\"\u003etest_decoding\u003c/code\u003e receives WAL through the logical decoding mechanism and decodes it into text representations of the operations performed.\u003c/p\u003e\n\u003cp\u003eTypical output from this plugin, used over the SQL logical decoding interface, might be:\u003c/p\u003e\n\u003cpre class=\"programlisting\"\u003epostgres=# SELECT * FROM pg_logical_slot_get_changes('test_slot', NULL, NULL, 'include-xids', '0');\n   lsn     | xid |                       data\n-----------+-----+--------------------------------------------------\n 0/16D30F8 | 691 | BEGIN\n 0/16D32A0 | 691 | table public.data: INSERT: id[int4]:2 data[text]:'arg'\n 0/16D32A0 | 691 | table public.data: INSERT: id[int4]:3 data[text]:'demo'\n 0/16D32A0 | 691 | COMMIT\n 0/16D32D8 | 692 | BEGIN\n 0/16D3398 | 692 | table public.data: DELETE: id[int4]:2\n 0/16D3398 | 692 | table public.data: DELETE: id[int4]:3\n 0/16D3398 | 692 | COMMIT\n(8 rows)\n\u003c/pre\u003e\n\u003cp\u003eWe can also get the changes of the in-progress transaction, and the typical output might be:\u003c/p\u003e\n\u003cpre class=\"programlisting\"\u003epostgres[33712]=#* SELECT * FROM pg_logical_slot_get_changes('test_slot', NULL, NULL, 'stream-changes', '1');\n    lsn    | xid |                       data\n-----------+-----+--------------------------------------------------\n 0/16B21F8 | 503 | opening a streamed block for transaction TXN 503\n 0/16B21F8 | 503 | streaming change for TXN 503\n 0/16B2300 | 503 | streaming change for TXN 503\n 0/16B2408 | 503 | streaming change for TXN 503\n 0/16BEBA0 | 503 | closing a streamed block for transaction TXN 503\n 0/16B21F8 | 503 | opening a streamed block for transaction TXN 503\n 0/16BECA8 | 503 | streaming change for TXN 503\n 0/16BEDB0 | 503 | streaming change for TXN 503\n 0/16BEEB8 | 503 | streaming change for TXN 503\n 0/16BEBA0 | 503 | closing a streamed block for transaction TXN 503\n(10 rows)\n\u003c/pre\u003e\n\u003c/div\u003e","manual_path":"/docs/18/test-decoding.html","related":[{"label":"Logical decoding output interface","url":"/docs/18/logicaldecoding-output-plugin.html"},{"label":"Existing extension catalogue identity","url":"/e/test_decoding/"}],"release":{"channel":"stable","label":"18.6","major":"18","ref":"PostgreSQL 18.6 source archive","revision":"555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f","source_snapshot_utc":"","source_url":"https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2"},"runtime_verified":false,"sections":[{"paragraphs":["The matrix records callbacks actually registered in this source build. Registration identifies an implemented interface hook; options, query shape, privileges and provider rules determine whether an operation is allowed.","The complete same-version manual below retains configuration, constraints and examples. No runtime capability test is claimed."],"title":"Interface and capability boundaries"},{"paragraphs":["Callback presence and protocol versions are separate from client negotiation and enabled plugin options. Streaming and two-phase processing require the matching protocol and configuration.","test_decoding is an example/test output format; pgoutput implements the logical-replication protocol. Their output contracts are not interchangeable."],"title":"Output and protocol boundaries"},{"code":"{\n\tcb-\u003estartup_cb = pg_decode_startup;\n\tcb-\u003ebegin_cb = pg_decode_begin_txn;\n\tcb-\u003echange_cb = pg_decode_change;\n\tcb-\u003etruncate_cb = pg_decode_truncate;\n\tcb-\u003ecommit_cb = pg_decode_commit_txn;\n\tcb-\u003efilter_by_origin_cb = pg_decode_filter;\n\tcb-\u003eshutdown_cb = pg_decode_shutdown;\n\tcb-\u003emessage_cb = pg_decode_message;\n\tcb-\u003efilter_prepare_cb = pg_decode_filter_prepare;\n\tcb-\u003ebegin_prepare_cb = pg_decode_begin_prepare_txn;\n\tcb-\u003eprepare_cb = pg_decode_prepare_txn;\n\tcb-\u003ecommit_prepared_cb = pg_decode_commit_prepared_txn;\n\tcb-\u003erollback_prepared_cb = pg_decode_rollback_prepared_txn;\n\tcb-\u003estream_start_cb = pg_decode_stream_start;\n\tcb-\u003estream_stop_cb = pg_decode_stream_stop;\n\tcb-\u003estream_abort_cb = pg_decode_stream_abort;\n\tcb-\u003estream_prepare_cb = pg_decode_stream_prepare;\n\tcb-\u003estream_commit_cb = pg_decode_stream_commit;\n\tcb-\u003estream_change_cb = pg_decode_stream_change;\n\tcb-\u003estream_message_cb = pg_decode_stream_message;\n\tcb-\u003estream_truncate_cb = pg_decode_stream_truncate;\n}","title":"Registered implementation in core source"}],"sources":[{"label":"PostgreSQL 18 English manual","path":"test-decoding.html","sha256":"630f953dd8c232a410627e4993be253b13665bb1b04ca1be26c871afd7c3eebe","url":"/docs/18/test-decoding.html"},{"archive_sha256":"555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f","label":"contrib/test_decoding/test_decoding.c:132","line":132,"path":"contrib/test_decoding/test_decoding.c","sha256":"3110af5e2b768a3311f20a32ac9d90c7a18f437e0ceaef69fbee51cc28900357","url":"https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2"},{"label":"PostgreSQL 18 English manual","path":"logicaldecoding-output-plugin.html","sha256":"e5b3d13adfcc9e33f24524cb09d93eb91a1292fdb3124234002ccccf93f45738","url":"/docs/18/logicaldecoding-output-plugin.html"}],"tables":[{"columns":[{"key":"feature","label":"Interface operation"},{"key":"state","label":"Source observation"},{"key":"callback","label":"Callback"},{"key":"implementation","label":"Implementation"}],"key":"callbacks","rows":[{"callback":"begin_cb","feature":"Begin transaction","implementation":"pg_decode_begin_txn","state":"Handler registered; conditions apply"},{"callback":"change_cb","feature":"Row changes","implementation":"pg_decode_change","state":"Handler registered; conditions apply"},{"callback":"commit_cb","feature":"Commit","implementation":"pg_decode_commit_txn","state":"Handler registered; conditions apply"},{"callback":"truncate_cb","feature":"TRUNCATE","implementation":"pg_decode_truncate","state":"Handler registered; conditions apply"},{"callback":"message_cb","feature":"Logical messages","implementation":"pg_decode_message","state":"Handler registered; conditions apply"},{"callback":"stream_start_cb","feature":"Start streamed transaction","implementation":"pg_decode_stream_start","state":"Handler registered; conditions apply"},{"callback":"stream_change_cb","feature":"Stream row changes","implementation":"pg_decode_stream_change","state":"Handler registered; conditions apply"},{"callback":"prepare_cb","feature":"Prepare transaction","implementation":"pg_decode_prepare_txn","state":"Handler registered; conditions apply"},{"callback":"commit_prepared_cb","feature":"Commit prepared","implementation":"pg_decode_commit_prepared_txn","state":"Handler registered; conditions apply"},{"callback":"rollback_prepared_cb","feature":"Rollback prepared","implementation":"pg_decode_rollback_prepared_txn","state":"Handler registered; conditions apply"}],"title":"Registered interface handlers"},{"caption":"Extracted from the option parser; names alone do not describe defaults, accepted values or protocol requirements.","columns":[{"key":"name","label":"Source option name"}],"key":"source-options","rows":[{"name":"force-binary"},{"name":"include-rewrites"},{"name":"include-timestamp"},{"name":"include-xids"},{"name":"only-local"},{"name":"skip-empty-xacts"},{"name":"stream-changes"}],"title":"Option names recognized by this plugin build"}]},"ManualEvidence":{"manual_path":"/docs/18/test-decoding.html","release":{"channel":"stable","label":"18.6","major":"18","ref":"PostgreSQL 18.6 source archive","revision":"555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f","source_snapshot_utc":"","source_url":"https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2"},"sources":[{"label":"PostgreSQL 18 English manual","path":"test-decoding.html","sha256":"630f953dd8c232a410627e4993be253b13665bb1b04ca1be26c871afd7c3eebe","url":"/docs/18/test-decoding.html"},{"archive_sha256":"555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f","label":"contrib/test_decoding/test_decoding.c:132","line":132,"path":"contrib/test_decoding/test_decoding.c","sha256":"3110af5e2b768a3311f20a32ac9d90c7a18f437e0ceaef69fbee51cc28900357","url":"https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2"},{"label":"PostgreSQL 18 English manual","path":"logicaldecoding-output-plugin.html","sha256":"e5b3d13adfcc9e33f24524cb09d93eb91a1292fdb3124234002ccccf93f45738","url":"/docs/18/logicaldecoding-output-plugin.html"}]},"MeasuredEvidence":{"runtime_verified":false}},"Text":{"Collection":"decode","Key":"test_decoding","SourceDatabase":"center","Version":"18","Locale":"en","Title":"test_decoding","Summary":"A test and example output plugin that renders logical changes in a textual format.","BodyHTML":"\u003cdiv id=\"TEST-DECODING\"\u003e\n\u003cdiv\u003e\n\u003cdiv\u003e\n\u003cdiv\u003e\n\u003ch2\u003eF.45. test_decoding — SQL-based test/example module for WAL logical decoding \u003c/h2\u003e\n\u003c/div\u003e\n\u003c/div\u003e\n\u003c/div\u003e\n\u003cp\u003e\u003ccode\u003etest_decoding\u003c/code\u003e is an example of a logical decoding output plugin. It doesn\u0026#39;t do anything especially useful, but can serve as a starting point for developing your own output plugin.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003etest_decoding\u003c/code\u003e receives WAL through the logical decoding mechanism and decodes it into text representations of the operations performed.\u003c/p\u003e\n\u003cp\u003eTypical output from this plugin, used over the SQL logical decoding interface, might be:\u003c/p\u003e\n\u003cpre\u003epostgres=# SELECT * FROM pg_logical_slot_get_changes(\u0026#39;test_slot\u0026#39;, NULL, NULL, \u0026#39;include-xids\u0026#39;, \u0026#39;0\u0026#39;);\n   lsn     | xid |                       data\n-----------+-----+--------------------------------------------------\n 0/16D30F8 | 691 | BEGIN\n 0/16D32A0 | 691 | table public.data: INSERT: id[int4]:2 data[text]:\u0026#39;arg\u0026#39;\n 0/16D32A0 | 691 | table public.data: INSERT: id[int4]:3 data[text]:\u0026#39;demo\u0026#39;\n 0/16D32A0 | 691 | COMMIT\n 0/16D32D8 | 692 | BEGIN\n 0/16D3398 | 692 | table public.data: DELETE: id[int4]:2\n 0/16D3398 | 692 | table public.data: DELETE: id[int4]:3\n 0/16D3398 | 692 | COMMIT\n(8 rows)\n\u003c/pre\u003e\n\u003cp\u003eWe can also get the changes of the in-progress transaction, and the typical output might be:\u003c/p\u003e\n\u003cpre\u003epostgres[33712]=#* SELECT * FROM pg_logical_slot_get_changes(\u0026#39;test_slot\u0026#39;, NULL, NULL, \u0026#39;stream-changes\u0026#39;, \u0026#39;1\u0026#39;);\n    lsn    | xid |                       data\n-----------+-----+--------------------------------------------------\n 0/16B21F8 | 503 | opening a streamed block for transaction TXN 503\n 0/16B21F8 | 503 | streaming change for TXN 503\n 0/16B2300 | 503 | streaming change for TXN 503\n 0/16B2408 | 503 | streaming change for TXN 503\n 0/16BEBA0 | 503 | closing a streamed block for transaction TXN 503\n 0/16B21F8 | 503 | opening a streamed block for transaction TXN 503\n 0/16BECA8 | 503 | streaming change for TXN 503\n 0/16BEDB0 | 503 | streaming change for TXN 503\n 0/16BEEB8 | 503 | streaming change for TXN 503\n 0/16BEBA0 | 503 | closing a streamed block for transaction TXN 503\n(10 rows)\n\u003c/pre\u003e\n\u003c/div\u003e","SourceRevision":"555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f","ContentHash":"655c5dcac00500d60cea99dca1043d077e19052055e46a32b466ae8494a3df26","Payload":{"description":["A test and example output plugin that renders logical changes in a textual format."],"manual_html":"\u003cdiv class=\"sect1\" id=\"TEST-DECODING\"\u003e\n\u003cdiv class=\"titlepage\"\u003e\n\u003cdiv\u003e\n\u003cdiv\u003e\n\u003ch2 class=\"title\"\u003eF.45. test_decoding — SQL-based test/example module for WAL logical decoding \u003c/h2\u003e\n\u003c/div\u003e\n\u003c/div\u003e\n\u003c/div\u003e\n\u003cp\u003e\u003ccode class=\"filename\"\u003etest_decoding\u003c/code\u003e is an example of a logical decoding output plugin. It doesn't do anything especially useful, but can serve as a starting point for developing your own output plugin.\u003c/p\u003e\n\u003cp\u003e\u003ccode class=\"filename\"\u003etest_decoding\u003c/code\u003e receives WAL through the logical decoding mechanism and decodes it into text representations of the operations performed.\u003c/p\u003e\n\u003cp\u003eTypical output from this plugin, used over the SQL logical decoding interface, might be:\u003c/p\u003e\n\u003cpre class=\"programlisting\"\u003epostgres=# SELECT * FROM pg_logical_slot_get_changes('test_slot', NULL, NULL, 'include-xids', '0');\n   lsn     | xid |                       data\n-----------+-----+--------------------------------------------------\n 0/16D30F8 | 691 | BEGIN\n 0/16D32A0 | 691 | table public.data: INSERT: id[int4]:2 data[text]:'arg'\n 0/16D32A0 | 691 | table public.data: INSERT: id[int4]:3 data[text]:'demo'\n 0/16D32A0 | 691 | COMMIT\n 0/16D32D8 | 692 | BEGIN\n 0/16D3398 | 692 | table public.data: DELETE: id[int4]:2\n 0/16D3398 | 692 | table public.data: DELETE: id[int4]:3\n 0/16D3398 | 692 | COMMIT\n(8 rows)\n\u003c/pre\u003e\n\u003cp\u003eWe can also get the changes of the in-progress transaction, and the typical output might be:\u003c/p\u003e\n\u003cpre class=\"programlisting\"\u003epostgres[33712]=#* SELECT * FROM pg_logical_slot_get_changes('test_slot', NULL, NULL, 'stream-changes', '1');\n    lsn    | xid |                       data\n-----------+-----+--------------------------------------------------\n 0/16B21F8 | 503 | opening a streamed block for transaction TXN 503\n 0/16B21F8 | 503 | streaming change for TXN 503\n 0/16B2300 | 503 | streaming change for TXN 503\n 0/16B2408 | 503 | streaming change for TXN 503\n 0/16BEBA0 | 503 | closing a streamed block for transaction TXN 503\n 0/16B21F8 | 503 | opening a streamed block for transaction TXN 503\n 0/16BECA8 | 503 | streaming change for TXN 503\n 0/16BEDB0 | 503 | streaming change for TXN 503\n 0/16BEEB8 | 503 | streaming change for TXN 503\n 0/16BEBA0 | 503 | closing a streamed block for transaction TXN 503\n(10 rows)\n\u003c/pre\u003e\n\u003c/div\u003e","related":[{"label":"Logical decoding output interface","url":"/docs/18/logicaldecoding-output-plugin.html"},{"label":"Existing extension catalogue identity","url":"/e/test_decoding/"}],"sections":[{"paragraphs":["The matrix records callbacks actually registered in this source build. Registration identifies an implemented interface hook; options, query shape, privileges and provider rules determine whether an operation is allowed.","The complete same-version manual below retains configuration, constraints and examples. No runtime capability test is claimed."],"title":"Interface and capability boundaries"},{"paragraphs":["Callback presence and protocol versions are separate from client negotiation and enabled plugin options. Streaming and two-phase processing require the matching protocol and configuration.","test_decoding is an example/test output format; pgoutput implements the logical-replication protocol. Their output contracts are not interchangeable."],"title":"Output and protocol boundaries"},{"code":"{\n\tcb-\u003estartup_cb = pg_decode_startup;\n\tcb-\u003ebegin_cb = pg_decode_begin_txn;\n\tcb-\u003echange_cb = pg_decode_change;\n\tcb-\u003etruncate_cb = pg_decode_truncate;\n\tcb-\u003ecommit_cb = pg_decode_commit_txn;\n\tcb-\u003efilter_by_origin_cb = pg_decode_filter;\n\tcb-\u003eshutdown_cb = pg_decode_shutdown;\n\tcb-\u003emessage_cb = pg_decode_message;\n\tcb-\u003efilter_prepare_cb = pg_decode_filter_prepare;\n\tcb-\u003ebegin_prepare_cb = pg_decode_begin_prepare_txn;\n\tcb-\u003eprepare_cb = pg_decode_prepare_txn;\n\tcb-\u003ecommit_prepared_cb = pg_decode_commit_prepared_txn;\n\tcb-\u003erollback_prepared_cb = pg_decode_rollback_prepared_txn;\n\tcb-\u003estream_start_cb = pg_decode_stream_start;\n\tcb-\u003estream_stop_cb = pg_decode_stream_stop;\n\tcb-\u003estream_abort_cb = pg_decode_stream_abort;\n\tcb-\u003estream_prepare_cb = pg_decode_stream_prepare;\n\tcb-\u003estream_commit_cb = pg_decode_stream_commit;\n\tcb-\u003estream_change_cb = pg_decode_stream_change;\n\tcb-\u003estream_message_cb = pg_decode_stream_message;\n\tcb-\u003estream_truncate_cb = pg_decode_stream_truncate;\n}","title":"Registered implementation in core source"}],"tables":[{"columns":[{"key":"feature","label":"Interface operation"},{"key":"state","label":"Source observation"},{"key":"callback","label":"Callback"},{"key":"implementation","label":"Implementation"}],"key":"callbacks","rows":[{"callback":"begin_cb","feature":"Begin transaction","implementation":"pg_decode_begin_txn","state":"Handler registered; conditions apply"},{"callback":"change_cb","feature":"Row changes","implementation":"pg_decode_change","state":"Handler registered; conditions apply"},{"callback":"commit_cb","feature":"Commit","implementation":"pg_decode_commit_txn","state":"Handler registered; conditions apply"},{"callback":"truncate_cb","feature":"TRUNCATE","implementation":"pg_decode_truncate","state":"Handler registered; conditions apply"},{"callback":"message_cb","feature":"Logical messages","implementation":"pg_decode_message","state":"Handler registered; conditions apply"},{"callback":"stream_start_cb","feature":"Start streamed transaction","implementation":"pg_decode_stream_start","state":"Handler registered; conditions apply"},{"callback":"stream_change_cb","feature":"Stream row changes","implementation":"pg_decode_stream_change","state":"Handler registered; conditions apply"},{"callback":"prepare_cb","feature":"Prepare transaction","implementation":"pg_decode_prepare_txn","state":"Handler registered; conditions apply"},{"callback":"commit_prepared_cb","feature":"Commit prepared","implementation":"pg_decode_commit_prepared_txn","state":"Handler registered; conditions apply"},{"callback":"rollback_prepared_cb","feature":"Rollback prepared","implementation":"pg_decode_rollback_prepared_txn","state":"Handler registered; conditions apply"}],"title":"Registered interface handlers"},{"caption":"Extracted from the option parser; names alone do not describe defaults, accepted values or protocol requirements.","columns":[{"key":"name","label":"Source option name"}],"key":"source-options","rows":[{"name":"force-binary"},{"name":"include-rewrites"},{"name":"include-timestamp"},{"name":"include-xids"},{"name":"only-local"},{"name":"skip-empty-xacts"},{"name":"stream-changes"}],"title":"Option names recognized by this plugin build"}]}},"RequestedLocale":"zh-Hans","Fallback":true,"Versions":["10","11","12","13","14","15","16","17","18","19","20"],"Locales":["en"],"Signatures":null,"Spellings":null,"SQLState":null,"Evidence":null}
