postgresql/src/test/isolation/specs/read-write-unique-3.spec

34 lines
679 B
Ruby

# Read-write-unique test.
# From bug report 9301.
setup
{
CREATE TABLE test (
key integer UNIQUE,
val text
);
CREATE OR REPLACE FUNCTION insert_unique(k integer, v text) RETURNS void
LANGUAGE SQL AS $$
INSERT INTO test (key, val) SELECT k, v WHERE NOT EXISTS (SELECT key FROM test WHERE key = k);
$$;
}
teardown
{
DROP FUNCTION insert_unique(integer, text);
DROP TABLE test;
}
session s1
setup { BEGIN ISOLATION LEVEL SERIALIZABLE; }
step rw1 { SELECT insert_unique(1, '1'); }
step c1 { COMMIT; }
session s2
setup { BEGIN ISOLATION LEVEL SERIALIZABLE; }
step rw2 { SELECT insert_unique(1, '2'); }
step c2 { COMMIT; }
permutation rw1 rw2 c1 c2