-- predictability SET synchronous_commit = on; SELECT 'init' FROM pg_create_logical_replication_slot('regression_slot', 'test_decoding'); ?column? ---------- init (1 row) CREATE TABLE xact_test(data text); INSERT INTO xact_test VALUES ('before-test'); -- bug #13844, xids in non-decoded records need to be inspected BEGIN; -- perform operation in xact that creates and logs xid, but isn't decoded SELECT * FROM xact_test FOR UPDATE; data ------------- before-test (1 row) SAVEPOINT foo; -- and now actually insert in subxact, xid is expected to be known INSERT INTO xact_test VALUES ('after-assignment'); COMMIT; -- and now show those changes SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1'); data --------------------------------------------------------------- BEGIN table public.xact_test: INSERT: data[text]:'before-test' COMMIT BEGIN table public.xact_test: INSERT: data[text]:'after-assignment' COMMIT (6 rows) -- bug #14279, do not propagate null snapshot from subtransaction BEGIN; -- first insert INSERT INTO xact_test VALUES ('main-txn'); SAVEPOINT foo; -- now perform operation in subxact that creates and logs xid, but isn't decoded SELECT 1 FROM xact_test FOR UPDATE LIMIT 1; ?column? ---------- 1 (1 row) COMMIT; -- and now show those changes SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1'); data ------------------------------------------------------- BEGIN table public.xact_test: INSERT: data[text]:'main-txn' COMMIT (3 rows) DROP TABLE xact_test; SELECT pg_drop_replication_slot('regression_slot'); pg_drop_replication_slot -------------------------- (1 row)