postgresql/contrib/test_decoding/expected/messages.out
Andres Freund be65eddd80 Add required database and origin filtering for logical messages.
Logical messages, added in 3fe3511d05, during decoding failed to filter
messages emitted in other databases and messages emitted "under" a
replication origin the output plugin isn't interested in.

Add tests to verify that both types of filtering actually work. While
touching message.sql remove hunk obsoleted by d25379e.

Bump XLOG_PAGE_MAGIC because xl_logical_message changed and because
3fe3511d05 had omitted doing so. 3fe3511d05 additionally didn't bump
catversion, but 7a542700d has done so since.

Author: Petr Jelinek
Reported-By: Andres Freund
Discussion: 20160406142513.wotqy3ba3kanr423@alap3.anarazel.de
2016-04-13 17:38:54 -07:00

100 lines
2.3 KiB
Plaintext

-- predictability
SET synchronous_commit = on;
SELECT 'init' FROM pg_create_logical_replication_slot('regression_slot', 'test_decoding');
?column?
----------
init
(1 row)
SELECT 'msg1' FROM pg_logical_emit_message(true, 'test', 'msg1');
?column?
----------
msg1
(1 row)
SELECT 'msg2' FROM pg_logical_emit_message(false, 'test', 'msg2');
?column?
----------
msg2
(1 row)
BEGIN;
SELECT 'msg3' FROM pg_logical_emit_message(true, 'test', 'msg3');
?column?
----------
msg3
(1 row)
SELECT 'msg4' FROM pg_logical_emit_message(false, 'test', 'msg4');
?column?
----------
msg4
(1 row)
ROLLBACK;
BEGIN;
SELECT 'msg5' FROM pg_logical_emit_message(true, 'test', 'msg5');
?column?
----------
msg5
(1 row)
SELECT 'msg6' FROM pg_logical_emit_message(false, 'test', 'msg6');
?column?
----------
msg6
(1 row)
SELECT 'msg7' FROM pg_logical_emit_message(true, 'test', 'msg7');
?column?
----------
msg7
(1 row)
COMMIT;
SELECT 'ignorethis' FROM pg_logical_emit_message(true, 'test', 'czechtastic');
?column?
------------
ignorethis
(1 row)
SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'force-binary', '0', 'skip-empty-xacts', '1');
data
--------------------------------------------------------------------
message: transactional: 1 prefix: test, sz: 4 content:msg1
message: transactional: 0 prefix: test, sz: 4 content:msg2
message: transactional: 0 prefix: test, sz: 4 content:msg4
message: transactional: 0 prefix: test, sz: 4 content:msg6
message: transactional: 1 prefix: test, sz: 4 content:msg5
message: transactional: 1 prefix: test, sz: 4 content:msg7
message: transactional: 1 prefix: test, sz: 11 content:czechtastic
(7 rows)
-- test db filtering
\set prevdb :DBNAME
\c template1
SELECT 'otherdb1' FROM pg_logical_emit_message(false, 'test', 'otherdb1');
?column?
----------
otherdb1
(1 row)
SELECT 'otherdb2' FROM pg_logical_emit_message(true, 'test', 'otherdb2');
?column?
----------
otherdb2
(1 row)
\c :prevdb
SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'force-binary', '0', 'skip-empty-xacts', '1');
data
------
(0 rows)
SELECT 'cleanup' FROM pg_drop_replication_slot('regression_slot');
?column?
----------
cleanup
(1 row)