31 lines
1018 B
Ruby
31 lines
1018 B
Ruby
# 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; }
|