mirror of https://github.com/postgres/postgres
This allows creating temporary replication slots that are removed automatically at the end of the session or on error. From: Petr Jelinek <petr.jelinek@2ndquadrant.com>pull/18/head
parent
e7f051b8f9
commit
a924c327e2
@ -0,0 +1,58 @@ |
|||||||
|
SELECT 'init' FROM pg_create_logical_replication_slot('regression_slot_p', 'test_decoding'); |
||||||
|
?column? |
||||||
|
---------- |
||||||
|
init |
||||||
|
(1 row) |
||||||
|
|
||||||
|
SELECT 'init' FROM pg_create_logical_replication_slot('regression_slot_t', 'test_decoding', true); |
||||||
|
?column? |
||||||
|
---------- |
||||||
|
init |
||||||
|
(1 row) |
||||||
|
|
||||||
|
SELECT pg_drop_replication_slot('regression_slot_p'); |
||||||
|
pg_drop_replication_slot |
||||||
|
-------------------------- |
||||||
|
|
||||||
|
(1 row) |
||||||
|
|
||||||
|
SELECT 'init' FROM pg_create_logical_replication_slot('regression_slot_p', 'test_decoding', false); |
||||||
|
?column? |
||||||
|
---------- |
||||||
|
init |
||||||
|
(1 row) |
||||||
|
|
||||||
|
-- reconnect to clean temp slots |
||||||
|
\c |
||||||
|
SELECT pg_drop_replication_slot('regression_slot_p'); |
||||||
|
pg_drop_replication_slot |
||||||
|
-------------------------- |
||||||
|
|
||||||
|
(1 row) |
||||||
|
|
||||||
|
-- should fail because the temporary slot was dropped automatically |
||||||
|
SELECT pg_drop_replication_slot('regression_slot_t'); |
||||||
|
ERROR: replication slot "regression_slot_t" does not exist |
||||||
|
-- test switching between slots in a session |
||||||
|
SELECT 'init' FROM pg_create_logical_replication_slot('regression_slot1', 'test_decoding', true); |
||||||
|
?column? |
||||||
|
---------- |
||||||
|
init |
||||||
|
(1 row) |
||||||
|
|
||||||
|
SELECT 'init' FROM pg_create_logical_replication_slot('regression_slot2', 'test_decoding', true); |
||||||
|
?column? |
||||||
|
---------- |
||||||
|
init |
||||||
|
(1 row) |
||||||
|
|
||||||
|
SELECT * FROM pg_logical_slot_get_changes('regression_slot1', NULL, NULL); |
||||||
|
location | xid | data |
||||||
|
----------+-----+------ |
||||||
|
(0 rows) |
||||||
|
|
||||||
|
SELECT * FROM pg_logical_slot_get_changes('regression_slot2', NULL, NULL); |
||||||
|
location | xid | data |
||||||
|
----------+-----+------ |
||||||
|
(0 rows) |
||||||
|
|
@ -0,0 +1,20 @@ |
|||||||
|
SELECT 'init' FROM pg_create_logical_replication_slot('regression_slot_p', 'test_decoding'); |
||||||
|
SELECT 'init' FROM pg_create_logical_replication_slot('regression_slot_t', 'test_decoding', true); |
||||||
|
|
||||||
|
SELECT pg_drop_replication_slot('regression_slot_p'); |
||||||
|
SELECT 'init' FROM pg_create_logical_replication_slot('regression_slot_p', 'test_decoding', false); |
||||||
|
|
||||||
|
-- reconnect to clean temp slots |
||||||
|
\c |
||||||
|
|
||||||
|
SELECT pg_drop_replication_slot('regression_slot_p'); |
||||||
|
|
||||||
|
-- should fail because the temporary slot was dropped automatically |
||||||
|
SELECT pg_drop_replication_slot('regression_slot_t'); |
||||||
|
|
||||||
|
|
||||||
|
-- test switching between slots in a session |
||||||
|
SELECT 'init' FROM pg_create_logical_replication_slot('regression_slot1', 'test_decoding', true); |
||||||
|
SELECT 'init' FROM pg_create_logical_replication_slot('regression_slot2', 'test_decoding', true); |
||||||
|
SELECT * FROM pg_logical_slot_get_changes('regression_slot1', NULL, NULL); |
||||||
|
SELECT * FROM pg_logical_slot_get_changes('regression_slot2', NULL, NULL); |
Loading…
Reference in new issue