-- origin tx INSERTINTO origin_tbl(data) VALUES ('will be replicated and decoded and decoded again'); INSERTINTO target_tbl(data) SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
-- as is normal, the insert into target_tbl shows up SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
INSERTINTO origin_tbl(data) VALUES ('will be replicated, but not decoded again');
-- mark session as replaying SELECT pg_replication_origin_session_setup('regress_test_decoding: regression_slot');
-- ensure we prevent duplicate setup SELECT pg_replication_origin_session_setup('regress_test_decoding: regression_slot');
SELECT''FROM pg_logical_emit_message(false, 'test', 'this message will not be decoded');
-- check replication progress for the session is correct SELECT pg_replication_origin_session_progress(false); SELECT pg_replication_origin_session_progress(true);
-- check replication progress identified by name is correct SELECT pg_replication_origin_progress('regress_test_decoding: regression_slot', false); SELECT pg_replication_origin_progress('regress_test_decoding: regression_slot', true);
-- ensure reset requires previously setup state SELECT pg_replication_origin_session_reset();
-- and magically the replayed xact will be filtered! SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1', 'only-local', '1');
--but new original changes still show up INSERTINTO origin_tbl(data) VALUES ('will be replicated'); SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1', 'only-local', '1');
-- Set of transactions with no origin LSNs and commit timestamps set for -- this session. SELECT'init'FROM pg_create_logical_replication_slot('regression_slot_no_lsn', 'test_decoding'); SELECT pg_replication_origin_create('regress_test_decoding: regression_slot_no_lsn'); -- mark session as replaying SELECT pg_replication_origin_session_setup('regress_test_decoding: regression_slot_no_lsn'); -- Simple transactions
BEGIN; INSERTINTO origin_tbl(data) VALUES ('no_lsn, commit'); COMMIT;
BEGIN; INSERTINTO origin_tbl(data) VALUES ('no_lsn, rollback');
ROLLBACK; -- 2PC transactions
BEGIN; INSERTINTO origin_tbl(data) VALUES ('no_lsn, commit prepared');
PREPARE TRANSACTION 'replorigin_prepared'; COMMIT PREPARED 'replorigin_prepared';
BEGIN; INSERTINTO origin_tbl(data) VALUES ('no_lsn, rollback prepared');
PREPARE TRANSACTION 'replorigin_prepared';
ROLLBACK PREPARED 'replorigin_prepared'; SELECT local_id, external_id,
remote_lsn <> '0/0'AS valid_remote_lsn,
local_lsn <> '0/0'AS valid_local_lsn FROM pg_replication_origin_status; SELECT data FROM pg_logical_slot_get_changes('regression_slot_no_lsn', NULL, NULL, 'skip-empty-xacts', '1', 'include-xids', '0'); -- Clean up SELECT pg_replication_origin_session_reset(); SELECT pg_drop_replication_slot('regression_slot_no_lsn'); SELECT pg_replication_origin_drop('regress_test_decoding: regression_slot_no_lsn');
-- Test that the pgoutput correctly filters changes corresponding to the provided origin value. SELECT'init'FROM pg_create_logical_replication_slot('regression_slot', 'pgoutput'); CREATE PUBLICATION pub FORTABLE target_tbl; SELECT pg_replication_origin_create('regress_test_decoding: regression_slot');
-- mark session as replaying SELECT pg_replication_origin_session_setup('regress_test_decoding: regression_slot');
INSERTINTO target_tbl(data) VALUES ('test data');
-- The replayed change will be filtered. SELECT count(*) = 0FROM pg_logical_slot_peek_binary_changes('regression_slot', NULL, NULL, 'proto_version', '4', 'publication_names', 'pub', 'origin', 'none');
-- The replayed change will be output if the origin value is not specified. SELECT count(*) != 0FROM pg_logical_slot_peek_binary_changes('regression_slot', NULL, NULL, 'proto_version', '4', 'publication_names', 'pub');
-- Clean up SELECT pg_replication_origin_session_reset(); SELECT pg_drop_replication_slot('regression_slot'); SELECT pg_replication_origin_drop('regress_test_decoding: regression_slot'); DROP PUBLICATION pub;
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.14 Sekunden
(vorverarbeitet am 2026-08-08)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.