xlog-lock-updated.spec

text/plain

Filename: xlog-lock-updated.spec
Type: text/plain
Part: 0
Message: Re: foreign key locks
setup
{
  CREATE TABLE foo (
	key		serial PRIMARY KEY,
	value	int
  );

  INSERT INTO foo SELECT value FROM generate_series(1, 226) AS value;
}

teardown
{
  DROP TABLE foo;
}

session "s1"
step "s1b"	{ BEGIN ISOLATION LEVEL REPEATABLE READ; }
step "s1s"	{ SELECT * FROM foo LIMIT 0; }	# obtain snapshot
step "s1l"	{ SELECT * FROM foo WHERE key = 1 FOR KEY SHARE; } # obtain lock
step "s1c"	{ COMMIT; }

session "s2"
step "s2b"  { BEGIN; }
step "s2u"	{ UPDATE foo SET value = 2 WHERE key = 1; }
step "s2c"	{ COMMIT; }

session "s3"
step "s3ck" { CHECKPOINT; }

permutation "s1b" "s1s" "s2b" "s2u" "s3ck" "s1l" "s1c" "s2c"