# Test NOWAIT with multixact locks. setup { CREATE TABLE foo ( id int PRIMARY KEY, data text NOT NULL ); INSERT INTO foo VALUES (1, 'x'); } teardown { DROP TABLE foo; } session "s1" setup { BEGIN; } step "s1a" { SELECT * FROM foo FOR SHARE NOWAIT; } step "s1b" { COMMIT; } session "s2" setup { BEGIN; } step "s2a" { SELECT * FROM foo FOR SHARE NOWAIT; } step "s2b" { SELECT * FROM foo FOR UPDATE NOWAIT; } step "s2c" { COMMIT; } # s1 and s2 both get SHARE lock, creating a multixact lock, then s2 # tries to upgrade to UPDATE but aborts because it cannot acquire a # multi-xact lock permutation "s1a" "s2a" "s2b" "s1b" "s2c" # the same but with the SHARE locks acquired in a different order, so # s2 again aborts because it can't acquired a multi-xact lock permutation "s2a" "s1a" "s2b" "s1b" "s2c" # s2 acquires SHARE then UPDATE, then s1 tries to acquire SHARE but # can't so aborts because it can't acquire a regular lock permutation "s2a" "s2b" "s1a" "s1b" "s2c"