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