1 # ALTER TABLE - Enable and disable triggers with concurrent reads
3 # ENABLE/DISABLE TRIGGER uses ShareRowExclusiveLock so we mix writes with
4 # it to see what works or waits.
8 CREATE TABLE a (i int PRIMARY KEY);
9 INSERT INTO a VALUES (0), (1), (2), (3);
10 CREATE FUNCTION f() RETURNS TRIGGER LANGUAGE plpgsql AS 'BEGIN RETURN NULL; END;';
11 CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f();
22 step "s1b" { ALTER TABLE a DISABLE TRIGGER t; }
23 step "s1c" { ALTER TABLE a ENABLE TRIGGER t; }
24 step "s1d" { COMMIT; }
28 step "s2b" { SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; }
29 step "s2c" { INSERT INTO a VALUES (0); }
30 step "s2d" { COMMIT; }