# Here we verify that tuple lock levels conform to their documented # conflict tables. setup { DROP TABLE IF EXISTS multixact_conflict; CREATE TABLE multixact_conflict (a int primary key); INSERT INTO multixact_conflict VALUES (1); } teardown { DROP TABLE multixact_conflict; } session s1 step s1_begin { BEGIN; } step s1_lcksvpt { SELECT * FROM multixact_conflict FOR KEY SHARE; SAVEPOINT foo; } step s1_tuplock1 { SELECT * FROM multixact_conflict FOR KEY SHARE; } step s1_tuplock2 { SELECT * FROM multixact_conflict FOR SHARE; } step s1_tuplock3 { SELECT * FROM multixact_conflict FOR NO KEY UPDATE; } step s1_tuplock4 { SELECT * FROM multixact_conflict FOR UPDATE; } step s1_commit { COMMIT; } session s2 step s2_tuplock1 { SELECT * FROM multixact_conflict FOR KEY SHARE; } step s2_tuplock2 { SELECT * FROM multixact_conflict FOR SHARE; } step s2_tuplock3 { SELECT * FROM multixact_conflict FOR NO KEY UPDATE; } step s2_tuplock4 { SELECT * FROM multixact_conflict FOR UPDATE; } # The version with savepoints test the multixact cases permutation s1_begin s1_lcksvpt s1_tuplock1 s2_tuplock1 s1_commit permutation s1_begin s1_lcksvpt s1_tuplock1 s2_tuplock2 s1_commit permutation s1_begin s1_lcksvpt s1_tuplock1 s2_tuplock3 s1_commit permutation s1_begin s1_lcksvpt s1_tuplock1 s2_tuplock4 s1_commit permutation s1_begin s1_lcksvpt s1_tuplock2 s2_tuplock1 s1_commit permutation s1_begin s1_lcksvpt s1_tuplock2 s2_tuplock2 s1_commit permutation s1_begin s1_lcksvpt s1_tuplock2 s2_tuplock3 s1_commit permutation s1_begin s1_lcksvpt s1_tuplock2 s2_tuplock4 s1_commit permutation s1_begin s1_lcksvpt s1_tuplock3 s2_tuplock1 s1_commit permutation s1_begin s1_lcksvpt s1_tuplock3 s2_tuplock2 s1_commit permutation s1_begin s1_lcksvpt s1_tuplock3 s2_tuplock3 s1_commit permutation s1_begin s1_lcksvpt s1_tuplock3 s2_tuplock4 s1_commit permutation s1_begin s1_lcksvpt s1_tuplock4 s2_tuplock1 s1_commit permutation s1_begin s1_lcksvpt s1_tuplock4 s2_tuplock2 s1_commit permutation s1_begin s1_lcksvpt s1_tuplock4 s2_tuplock3 s1_commit permutation s1_begin s1_lcksvpt s1_tuplock4 s2_tuplock4 s1_commit # no multixacts here permutation s1_begin s1_tuplock1 s2_tuplock1 s1_commit permutation s1_begin s1_tuplock1 s2_tuplock2 s1_commit permutation s1_begin s1_tuplock1 s2_tuplock3 s1_commit permutation s1_begin s1_tuplock1 s2_tuplock4 s1_commit permutation s1_begin s1_tuplock2 s2_tuplock1 s1_commit permutation s1_begin s1_tuplock2 s2_tuplock2 s1_commit permutation s1_begin s1_tuplock2 s2_tuplock3 s1_commit permutation s1_begin s1_tuplock2 s2_tuplock4 s1_commit permutation s1_begin s1_tuplock3 s2_tuplock1 s1_commit permutation s1_begin s1_tuplock3 s2_tuplock2 s1_commit permutation s1_begin s1_tuplock3 s2_tuplock3 s1_commit permutation s1_begin s1_tuplock3 s2_tuplock4 s1_commit permutation s1_begin s1_tuplock4 s2_tuplock1 s1_commit permutation s1_begin s1_tuplock4 s2_tuplock2 s1_commit permutation s1_begin s1_tuplock4 s2_tuplock3 s1_commit permutation s1_begin s1_tuplock4 s2_tuplock4 s1_commit