mirror of
https://github.com/postgres/postgres.git
synced 2026-03-10 10:11:28 -04:00
This is a necessary prerequisite for forthcoming changes to allow deadlock scenarios to be tested by the isolation tester. It is also a good idea on general principle, since these scenarios add no useful test coverage not provided by other scenarios, but do to take time to execute.
311 lines
8.1 KiB
Text
311 lines
8.1 KiB
Text
Parsed test spec with 2 sessions
|
|
|
|
starting permutation: s1a s1b s1c s2a s2b s2c s2d
|
|
step s1a: BEGIN;
|
|
step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f();
|
|
step s1c: COMMIT;
|
|
step s2a: BEGIN;
|
|
step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE;
|
|
i
|
|
|
|
1
|
|
step s2c: UPDATE a SET i = 4 WHERE i = 3;
|
|
step s2d: COMMIT;
|
|
|
|
starting permutation: s1a s1b s2a s1c s2b s2c s2d
|
|
step s1a: BEGIN;
|
|
step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f();
|
|
step s2a: BEGIN;
|
|
step s1c: COMMIT;
|
|
step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE;
|
|
i
|
|
|
|
1
|
|
step s2c: UPDATE a SET i = 4 WHERE i = 3;
|
|
step s2d: COMMIT;
|
|
|
|
starting permutation: s1a s1b s2a s2b s1c s2c s2d
|
|
step s1a: BEGIN;
|
|
step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f();
|
|
step s2a: BEGIN;
|
|
step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE;
|
|
i
|
|
|
|
1
|
|
step s1c: COMMIT;
|
|
step s2c: UPDATE a SET i = 4 WHERE i = 3;
|
|
step s2d: COMMIT;
|
|
|
|
starting permutation: s1a s1b s2a s2b s2c s1c s2d
|
|
step s1a: BEGIN;
|
|
step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f();
|
|
step s2a: BEGIN;
|
|
step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE;
|
|
i
|
|
|
|
1
|
|
step s2c: UPDATE a SET i = 4 WHERE i = 3; <waiting ...>
|
|
step s1c: COMMIT;
|
|
step s2c: <... completed>
|
|
step s2d: COMMIT;
|
|
|
|
starting permutation: s1a s2a s1b s1c s2b s2c s2d
|
|
step s1a: BEGIN;
|
|
step s2a: BEGIN;
|
|
step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f();
|
|
step s1c: COMMIT;
|
|
step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE;
|
|
i
|
|
|
|
1
|
|
step s2c: UPDATE a SET i = 4 WHERE i = 3;
|
|
step s2d: COMMIT;
|
|
|
|
starting permutation: s1a s2a s1b s2b s1c s2c s2d
|
|
step s1a: BEGIN;
|
|
step s2a: BEGIN;
|
|
step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f();
|
|
step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE;
|
|
i
|
|
|
|
1
|
|
step s1c: COMMIT;
|
|
step s2c: UPDATE a SET i = 4 WHERE i = 3;
|
|
step s2d: COMMIT;
|
|
|
|
starting permutation: s1a s2a s1b s2b s2c s1c s2d
|
|
step s1a: BEGIN;
|
|
step s2a: BEGIN;
|
|
step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f();
|
|
step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE;
|
|
i
|
|
|
|
1
|
|
step s2c: UPDATE a SET i = 4 WHERE i = 3; <waiting ...>
|
|
step s1c: COMMIT;
|
|
step s2c: <... completed>
|
|
step s2d: COMMIT;
|
|
|
|
starting permutation: s1a s2a s2b s1b s1c s2c s2d
|
|
step s1a: BEGIN;
|
|
step s2a: BEGIN;
|
|
step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE;
|
|
i
|
|
|
|
1
|
|
step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f();
|
|
step s1c: COMMIT;
|
|
step s2c: UPDATE a SET i = 4 WHERE i = 3;
|
|
step s2d: COMMIT;
|
|
|
|
starting permutation: s1a s2a s2b s1b s2c s1c s2d
|
|
step s1a: BEGIN;
|
|
step s2a: BEGIN;
|
|
step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE;
|
|
i
|
|
|
|
1
|
|
step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f();
|
|
step s2c: UPDATE a SET i = 4 WHERE i = 3; <waiting ...>
|
|
step s1c: COMMIT;
|
|
step s2c: <... completed>
|
|
step s2d: COMMIT;
|
|
|
|
starting permutation: s1a s2a s2b s2c s1b s2d s1c
|
|
step s1a: BEGIN;
|
|
step s2a: BEGIN;
|
|
step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE;
|
|
i
|
|
|
|
1
|
|
step s2c: UPDATE a SET i = 4 WHERE i = 3;
|
|
step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f(); <waiting ...>
|
|
step s2d: COMMIT;
|
|
step s1b: <... completed>
|
|
step s1c: COMMIT;
|
|
|
|
starting permutation: s1a s2a s2b s2c s2d s1b s1c
|
|
step s1a: BEGIN;
|
|
step s2a: BEGIN;
|
|
step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE;
|
|
i
|
|
|
|
1
|
|
step s2c: UPDATE a SET i = 4 WHERE i = 3;
|
|
step s2d: COMMIT;
|
|
step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f();
|
|
step s1c: COMMIT;
|
|
|
|
starting permutation: s2a s1a s1b s1c s2b s2c s2d
|
|
step s2a: BEGIN;
|
|
step s1a: BEGIN;
|
|
step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f();
|
|
step s1c: COMMIT;
|
|
step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE;
|
|
i
|
|
|
|
1
|
|
step s2c: UPDATE a SET i = 4 WHERE i = 3;
|
|
step s2d: COMMIT;
|
|
|
|
starting permutation: s2a s1a s1b s2b s1c s2c s2d
|
|
step s2a: BEGIN;
|
|
step s1a: BEGIN;
|
|
step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f();
|
|
step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE;
|
|
i
|
|
|
|
1
|
|
step s1c: COMMIT;
|
|
step s2c: UPDATE a SET i = 4 WHERE i = 3;
|
|
step s2d: COMMIT;
|
|
|
|
starting permutation: s2a s1a s1b s2b s2c s1c s2d
|
|
step s2a: BEGIN;
|
|
step s1a: BEGIN;
|
|
step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f();
|
|
step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE;
|
|
i
|
|
|
|
1
|
|
step s2c: UPDATE a SET i = 4 WHERE i = 3; <waiting ...>
|
|
step s1c: COMMIT;
|
|
step s2c: <... completed>
|
|
step s2d: COMMIT;
|
|
|
|
starting permutation: s2a s1a s2b s1b s1c s2c s2d
|
|
step s2a: BEGIN;
|
|
step s1a: BEGIN;
|
|
step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE;
|
|
i
|
|
|
|
1
|
|
step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f();
|
|
step s1c: COMMIT;
|
|
step s2c: UPDATE a SET i = 4 WHERE i = 3;
|
|
step s2d: COMMIT;
|
|
|
|
starting permutation: s2a s1a s2b s1b s2c s1c s2d
|
|
step s2a: BEGIN;
|
|
step s1a: BEGIN;
|
|
step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE;
|
|
i
|
|
|
|
1
|
|
step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f();
|
|
step s2c: UPDATE a SET i = 4 WHERE i = 3; <waiting ...>
|
|
step s1c: COMMIT;
|
|
step s2c: <... completed>
|
|
step s2d: COMMIT;
|
|
|
|
starting permutation: s2a s1a s2b s2c s1b s2d s1c
|
|
step s2a: BEGIN;
|
|
step s1a: BEGIN;
|
|
step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE;
|
|
i
|
|
|
|
1
|
|
step s2c: UPDATE a SET i = 4 WHERE i = 3;
|
|
step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f(); <waiting ...>
|
|
step s2d: COMMIT;
|
|
step s1b: <... completed>
|
|
step s1c: COMMIT;
|
|
|
|
starting permutation: s2a s1a s2b s2c s2d s1b s1c
|
|
step s2a: BEGIN;
|
|
step s1a: BEGIN;
|
|
step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE;
|
|
i
|
|
|
|
1
|
|
step s2c: UPDATE a SET i = 4 WHERE i = 3;
|
|
step s2d: COMMIT;
|
|
step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f();
|
|
step s1c: COMMIT;
|
|
|
|
starting permutation: s2a s2b s1a s1b s1c s2c s2d
|
|
step s2a: BEGIN;
|
|
step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE;
|
|
i
|
|
|
|
1
|
|
step s1a: BEGIN;
|
|
step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f();
|
|
step s1c: COMMIT;
|
|
step s2c: UPDATE a SET i = 4 WHERE i = 3;
|
|
step s2d: COMMIT;
|
|
|
|
starting permutation: s2a s2b s1a s1b s2c s1c s2d
|
|
step s2a: BEGIN;
|
|
step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE;
|
|
i
|
|
|
|
1
|
|
step s1a: BEGIN;
|
|
step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f();
|
|
step s2c: UPDATE a SET i = 4 WHERE i = 3; <waiting ...>
|
|
step s1c: COMMIT;
|
|
step s2c: <... completed>
|
|
step s2d: COMMIT;
|
|
|
|
starting permutation: s2a s2b s1a s2c s1b s2d s1c
|
|
step s2a: BEGIN;
|
|
step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE;
|
|
i
|
|
|
|
1
|
|
step s1a: BEGIN;
|
|
step s2c: UPDATE a SET i = 4 WHERE i = 3;
|
|
step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f(); <waiting ...>
|
|
step s2d: COMMIT;
|
|
step s1b: <... completed>
|
|
step s1c: COMMIT;
|
|
|
|
starting permutation: s2a s2b s1a s2c s2d s1b s1c
|
|
step s2a: BEGIN;
|
|
step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE;
|
|
i
|
|
|
|
1
|
|
step s1a: BEGIN;
|
|
step s2c: UPDATE a SET i = 4 WHERE i = 3;
|
|
step s2d: COMMIT;
|
|
step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f();
|
|
step s1c: COMMIT;
|
|
|
|
starting permutation: s2a s2b s2c s1a s1b s2d s1c
|
|
step s2a: BEGIN;
|
|
step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE;
|
|
i
|
|
|
|
1
|
|
step s2c: UPDATE a SET i = 4 WHERE i = 3;
|
|
step s1a: BEGIN;
|
|
step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f(); <waiting ...>
|
|
step s2d: COMMIT;
|
|
step s1b: <... completed>
|
|
step s1c: COMMIT;
|
|
|
|
starting permutation: s2a s2b s2c s1a s2d s1b s1c
|
|
step s2a: BEGIN;
|
|
step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE;
|
|
i
|
|
|
|
1
|
|
step s2c: UPDATE a SET i = 4 WHERE i = 3;
|
|
step s1a: BEGIN;
|
|
step s2d: COMMIT;
|
|
step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f();
|
|
step s1c: COMMIT;
|
|
|
|
starting permutation: s2a s2b s2c s2d s1a s1b s1c
|
|
step s2a: BEGIN;
|
|
step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE;
|
|
i
|
|
|
|
1
|
|
step s2c: UPDATE a SET i = 4 WHERE i = 3;
|
|
step s2d: COMMIT;
|
|
step s1a: BEGIN;
|
|
step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f();
|
|
step s1c: COMMIT;
|