From ce874d9dd8afee20e5bd547b9cc17d1803168aa0 Mon Sep 17 00:00:00 2001 From: David Christensen Date: Tue, 20 Oct 2020 10:17:58 -0500 Subject: [PATCH] Add isolation test for FETCH FIRST ROW WITH TIES FOR UPDATE SKIP LOCKED --- src/test/isolation/expected/skip-locked-5.out | 14 +++++++++ src/test/isolation/isolation_schedule | 1 + src/test/isolation/specs/skip-locked-5.spec | 29 +++++++++++++++++++ 3 files changed, 44 insertions(+) create mode 100644 src/test/isolation/expected/skip-locked-5.out create mode 100644 src/test/isolation/specs/skip-locked-5.spec diff --git a/src/test/isolation/expected/skip-locked-5.out b/src/test/isolation/expected/skip-locked-5.out new file mode 100644 index 0000000000..87fc2d8aa1 --- /dev/null +++ b/src/test/isolation/expected/skip-locked-5.out @@ -0,0 +1,14 @@ +Parsed test spec with 2 sessions + +starting permutation: s1a s2a s1b s2b +step s1a: SELECT * FROM foo ORDER BY batch FETCH FIRST ROW WITH TIES FOR UPDATE SKIP LOCKED; +id batch + +1 1 +2 1 +step s2a: SELECT * FROM foo ORDER BY batch FETCH FIRST ROW WITH TIES FOR UPDATE SKIP LOCKED; +id batch + +3 2 +step s1b: COMMIT; +step s2b: COMMIT; diff --git a/src/test/isolation/isolation_schedule b/src/test/isolation/isolation_schedule index aa386ab1a2..9e32b00149 100644 --- a/src/test/isolation/isolation_schedule +++ b/src/test/isolation/isolation_schedule @@ -64,6 +64,7 @@ test: skip-locked test: skip-locked-2 test: skip-locked-3 test: skip-locked-4 +test: skip-locked-5 test: drop-index-concurrently-1 test: multiple-cic test: alter-table-1 diff --git a/src/test/isolation/specs/skip-locked-5.spec b/src/test/isolation/specs/skip-locked-5.spec new file mode 100644 index 0000000000..83bb3de00f --- /dev/null +++ b/src/test/isolation/specs/skip-locked-5.spec @@ -0,0 +1,29 @@ +# Test SKIP LOCKED with FETCH FIRST ROW WITH TIES + +setup +{ + CREATE TABLE foo ( + id int PRIMARY KEY, + batch int NOT NULL + ); + INSERT INTO foo VALUES (1, 1), (2, 1), (3, 2), (4, 3); +} + +teardown +{ + DROP TABLE foo; +} + +session "s1" +setup { BEGIN; } +step "s1a" { SELECT * FROM foo ORDER BY batch FETCH FIRST ROW WITH TIES FOR UPDATE SKIP LOCKED; } +step "s1b" { COMMIT; } + +session "s2" +setup { BEGIN; } +step "s2a" { SELECT * FROM foo ORDER BY batch FETCH FIRST ROW WITH TIES FOR UPDATE SKIP LOCKED; } +step "s2b" { COMMIT; } + +# s1 returns the two rows associated with batch 1 and takes the lock; s2 should skip those two rows due to being locked and should return the batch 2 row. +permutation "s1a" "s2a" "s1b" "s2b" + -- 2.24.3 (Apple Git-128)