80 lines
2.8 KiB
Python
80 lines
2.8 KiB
Python
# ALTER TABLE - Enable and disable triggers with concurrent reads
|
|
#
|
|
# ENABLE/DISABLE TRIGGER uses ShareRowExclusiveLock so we mix writes with
|
|
# it to see what works or waits.
|
|
|
|
setup
|
|
{
|
|
CREATE TABLE a (i int PRIMARY KEY);
|
|
INSERT INTO a VALUES (0), (1), (2), (3);
|
|
CREATE FUNCTION f() RETURNS TRIGGER LANGUAGE plpgsql AS 'BEGIN RETURN NULL; END;';
|
|
CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f();
|
|
}
|
|
|
|
teardown
|
|
{
|
|
DROP TABLE a;
|
|
DROP FUNCTION f();
|
|
}
|
|
|
|
session s1
|
|
step s1a { BEGIN; }
|
|
step s1b { ALTER TABLE a DISABLE TRIGGER t; }
|
|
step s1c { ALTER TABLE a ENABLE TRIGGER t; }
|
|
step s1d { COMMIT; }
|
|
|
|
session s2
|
|
step s2a { BEGIN; }
|
|
step s2b { SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; }
|
|
step s2c { INSERT INTO a VALUES (0); }
|
|
step s2d { COMMIT; }
|
|
|
|
permutation s1a s1b s1c s1d s2a s2b s2c s2d
|
|
permutation s1a s1b s1c s2a s1d s2b s2c s2d
|
|
permutation s1a s1b s1c s2a s2b s1d s2c s2d
|
|
permutation s1a s1b s1c s2a s2b s2c s1d s2d
|
|
permutation s1a s1b s2a s1c s1d s2b s2c s2d
|
|
permutation s1a s1b s2a s1c s2b s1d s2c s2d
|
|
permutation s1a s1b s2a s1c s2b s2c s1d s2d
|
|
permutation s1a s1b s2a s2b s1c s1d s2c s2d
|
|
permutation s1a s1b s2a s2b s1c s2c s1d s2d
|
|
permutation s1a s1b s2a s2b s2c s1c s1d s2d
|
|
permutation s1a s2a s1b s1c s1d s2b s2c s2d
|
|
permutation s1a s2a s1b s1c s2b s1d s2c s2d
|
|
permutation s1a s2a s1b s1c s2b s2c s1d s2d
|
|
permutation s1a s2a s1b s2b s1c s1d s2c s2d
|
|
permutation s1a s2a s1b s2b s1c s2c s1d s2d
|
|
permutation s1a s2a s1b s2b s2c s1c s1d s2d
|
|
permutation s1a s2a s2b s1b s1c s1d s2c s2d
|
|
permutation s1a s2a s2b s1b s1c s2c s1d s2d
|
|
permutation s1a s2a s2b s1b s2c s1c s1d s2d
|
|
permutation s1a s2a s2b s2c s1b s1c s1d s2d
|
|
permutation s1a s2a s2b s2c s1b s1c s2d s1d
|
|
permutation s1a s2a s2b s2c s1b s2d s1c s1d
|
|
permutation s1a s2a s2b s2c s2d s1b s1c s1d
|
|
permutation s2a s1a s1b s1c s1d s2b s2c s2d
|
|
permutation s2a s1a s1b s1c s2b s1d s2c s2d
|
|
permutation s2a s1a s1b s1c s2b s2c s1d s2d
|
|
permutation s2a s1a s1b s2b s1c s1d s2c s2d
|
|
permutation s2a s1a s1b s2b s1c s2c s1d s2d
|
|
permutation s2a s1a s1b s2b s2c s1c s1d s2d
|
|
permutation s2a s1a s2b s1b s1c s1d s2c s2d
|
|
permutation s2a s1a s2b s1b s1c s2c s1d s2d
|
|
permutation s2a s1a s2b s1b s2c s1c s1d s2d
|
|
permutation s2a s1a s2b s2c s1b s1c s1d s2d
|
|
permutation s2a s1a s2b s2c s1b s1c s2d s1d
|
|
permutation s2a s1a s2b s2c s1b s2d s1c s1d
|
|
permutation s2a s1a s2b s2c s2d s1b s1c s1d
|
|
permutation s2a s2b s1a s1b s1c s1d s2c s2d
|
|
permutation s2a s2b s1a s1b s1c s2c s1d s2d
|
|
permutation s2a s2b s1a s1b s2c s1c s1d s2d
|
|
permutation s2a s2b s1a s2c s1b s1c s1d s2d
|
|
permutation s2a s2b s1a s2c s1b s1c s2d s1d
|
|
permutation s2a s2b s1a s2c s1b s2d s1c s1d
|
|
permutation s2a s2b s1a s2c s2d s1b s1c s1d
|
|
permutation s2a s2b s2c s1a s1b s1c s1d s2d
|
|
permutation s2a s2b s2c s1a s1b s1c s2d s1d
|
|
permutation s2a s2b s2c s1a s1b s2d s1c s1d
|
|
permutation s2a s2b s2c s1a s2d s1b s1c s1d
|
|
permutation s2a s2b s2c s2d s1a s1b s1c s1d
|