| # Project Manager test |
| # |
| # Ensure that the person who is on the project as a manager |
| # is flagged as a project manager in the person table. |
| # |
| # Any overlap between the transactions must cause a serialization failure. |
| |
| setup |
| { |
| CREATE TABLE person (person_id int NOT NULL PRIMARY KEY, name text NOT NULL, is_project_manager bool NOT NULL); |
| INSERT INTO person VALUES (1, 'Robert Haas', true); |
| CREATE TABLE project (project_no int NOT NULL PRIMARY KEY, description text NOT NULL, project_manager int NOT NULL); |
| } |
| |
| teardown |
| { |
| DROP TABLE person, project; |
| } |
| |
| session s1 |
| setup { BEGIN ISOLATION LEVEL SERIALIZABLE; } |
| step rx1 { SELECT count(*) FROM person WHERE person_id = 1 AND is_project_manager; } |
| step wy1 { INSERT INTO project VALUES (101, 'Build Great Wall', 1); } |
| step c1 { COMMIT; } |
| |
| session s2 |
| setup { BEGIN ISOLATION LEVEL SERIALIZABLE; } |
| step ry2 { SELECT count(*) FROM project WHERE project_manager = 1; } |
| step wx2 { UPDATE person SET is_project_manager = false WHERE person_id = 1; } |
| step c2 { COMMIT; } |