| -- 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) |
| |