at 25.11-pre 1.4 kB view raw
1CREATE TABLE table2_with_pk (a SERIAL, b VARCHAR(30), c TIMESTAMP NOT NULL, PRIMARY KEY(a, c)); 2CREATE TABLE table2_without_pk (a SERIAL, b NUMERIC(5,2), c TEXT); 3 4SELECT 'init' FROM pg_create_logical_replication_slot('test_slot', 'wal2json'); 5 6BEGIN; 7INSERT INTO table2_with_pk (b, c) VALUES('Backup and Restore', '2018-03-27 12:05:29.914496'); 8INSERT INTO table2_with_pk (b, c) VALUES('Tuning', '2018-03-27 12:05:29.914496'); 9INSERT INTO table2_with_pk (b, c) VALUES('Replication', '2018-03-27 12:05:29.914496'); 10 11-- Avoid printing wal LSNs since they're not reproducible, so harder to assert on 12\o /dev/null 13SELECT pg_logical_emit_message(true, 'wal2json', 'this message will be delivered'); 14SELECT pg_logical_emit_message(true, 'pgoutput', 'this message will be filtered'); 15\o 16 17DELETE FROM table2_with_pk WHERE a < 3; 18\o /dev/null 19SELECT pg_logical_emit_message(false, 'wal2json', 'this non-transactional message will be delivered even if you rollback the transaction'); 20\o 21 22INSERT INTO table2_without_pk (b, c) VALUES(2.34, 'Tapir'); 23-- it is not added to stream because there isn't a pk or a replica identity 24UPDATE table2_without_pk SET c = 'Anta' WHERE c = 'Tapir'; 25COMMIT; 26 27SELECT data FROM pg_logical_slot_get_changes('test_slot', NULL, NULL, 'pretty-print', '1', 'add-msg-prefixes', 'wal2json'); 28SELECT 'stop' FROM pg_drop_replication_slot('test_slot'); 29 30DROP TABLE table2_with_pk; 31DROP TABLE table2_without_pk;