# 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; }