Add a regression test for contrib/tcn.

Just whittling down the list of contrib modules with zero coverage.

Discussion: https://postgr.es/m/909667.1659222591@sss.pgh.pa.us
This commit is contained in:
Tom Lane 2022-08-01 19:18:37 -04:00
parent b592422095
commit 418ec32072
4 changed files with 50 additions and 0 deletions

6
contrib/tcn/.gitignore vendored Normal file
View File

@ -0,0 +1,6 @@
# Generated subdirectories
/log/
/results/
/output_iso/
/tmp_check/
/tmp_check_iso/

View File

@ -6,6 +6,8 @@ EXTENSION = tcn
DATA = tcn--1.0.sql
PGFILEDESC = "tcn - trigger function notifying listeners"
ISOLATION = tcn
ifdef USE_PGXS
PG_CONFIG = pg_config
PGXS := $(shell $(PG_CONFIG) --pgxs)

View File

@ -0,0 +1,13 @@
Parsed test spec with 1 sessions
starting permutation: listen insert insert2 update delete
step listen: LISTEN mychannel;
step insert: INSERT INTO mytable VALUES(1, 'one');
s1: NOTIFY "mychannel" with payload ""mytable",I,"key"='1'" from s1
step insert2: INSERT INTO mytable VALUES(2, 'two');
s1: NOTIFY "mychannel" with payload ""mytable",I,"key"='2'" from s1
step update: UPDATE mytable SET value = 'foo' WHERE key = 2;
s1: NOTIFY "mychannel" with payload ""mytable",U,"key"='2'" from s1
step delete: DELETE FROM mytable;
s1: NOTIFY "mychannel" with payload ""mytable",D,"key"='1'" from s1
s1: NOTIFY "mychannel" with payload ""mytable",D,"key"='2'" from s1

View File

@ -0,0 +1,29 @@
# Tests for contrib/tcn
# These tests use only self-notifies within a single session,
# which are convenient because they minimize timing concerns.
# Whether the NOTIFY mechanism works across sessions is not
# really tcn's problem.
setup
{
CREATE EXTENSION tcn;
CREATE TABLE mytable (key int PRIMARY KEY, value text);
CREATE TRIGGER tcntrig AFTER INSERT OR UPDATE OR DELETE ON mytable
FOR EACH ROW EXECUTE FUNCTION triggered_change_notification(mychannel);
}
teardown
{
DROP TABLE mytable;
}
session s1
step listen { LISTEN mychannel; }
step insert { INSERT INTO mytable VALUES(1, 'one'); }
step insert2 { INSERT INTO mytable VALUES(2, 'two'); }
step update { UPDATE mytable SET value = 'foo' WHERE key = 2; }
step delete { DELETE FROM mytable; }
permutation listen insert insert2 update delete