mirror of
https://github.com/postgres/postgres.git
synced 2025-04-20 00:42:27 +03:00
This reverts a sequence of commits, implementing features related to logical decoding and replication of sequences: - 0da92dc530c9251735fc70b20cd004d9630a1266 - 80901b32913ffa59bf157a4d88284b2b3a7511d9 - b779d7d8fdae088d70da5ed9fcd8205035676df3 - d5ed9da41d96988d905b49bebb273a9b2d6e2915 - a180c2b34de0989269fdb819bff241a249bf5380 - 75b1521dae1ff1fde17fda2e30e591f2e5d64b6a - 2d2232933b02d9396113662e44dca5f120d6830e - 002c9dd97a0c874fd1693a570383e2dd38cd40d5 - 05843b1aa49df2ecc9b97c693b755bd1b6f856a9 The implementation has issues, mostly due to combining transactional and non-transactional behavior of sequences. It's not clear how this could be fixed, but it'll require reworking significant part of the patch. Discussion: https://postgr.es/m/95345a19-d508-63d1-860a-f5c2f41e8d40@enterprisedb.com
43 lines
1.6 KiB
PL/PgSQL
43 lines
1.6 KiB
PL/PgSQL
-- test that we can insert the result of a get_changes call into a
|
|
-- logged relation. That's really not a good idea in practical terms,
|
|
-- but provides a nice test.
|
|
|
|
-- predictability
|
|
SET synchronous_commit = on;
|
|
|
|
SELECT 'init' FROM pg_create_logical_replication_slot('regression_slot', 'test_decoding');
|
|
|
|
-- slot works
|
|
SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
|
|
|
|
-- create some changes
|
|
CREATE TABLE somechange(id serial primary key);
|
|
INSERT INTO somechange DEFAULT VALUES;
|
|
|
|
CREATE TABLE changeresult AS
|
|
SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
|
|
|
|
SELECT * FROM changeresult;
|
|
|
|
INSERT INTO changeresult
|
|
SELECT data FROM pg_logical_slot_peek_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
|
|
INSERT INTO changeresult
|
|
SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
|
|
|
|
SELECT * FROM changeresult;
|
|
DROP TABLE changeresult;
|
|
DROP TABLE somechange;
|
|
|
|
-- check calling logical decoding from pl/pgsql
|
|
CREATE FUNCTION slot_changes_wrapper(slot_name name) RETURNS SETOF TEXT AS $$
|
|
BEGIN
|
|
RETURN QUERY
|
|
SELECT data FROM pg_logical_slot_peek_changes(slot_name, NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
|
|
END$$ LANGUAGE plpgsql;
|
|
|
|
SELECT * FROM slot_changes_wrapper('regression_slot');
|
|
|
|
SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
|
|
|
|
SELECT 'stop' FROM pg_drop_replication_slot('regression_slot');
|