diff --git a/src/test/isolation/expected/skip-locked.out b/src/test/isolation/expected/skip-locked.out index 3dc5768384..c243a0d8f2 100644 --- a/src/test/isolation/expected/skip-locked.out +++ b/src/test/isolation/expected/skip-locked.out @@ -1,561 +1,1541 @@ Parsed test spec with 2 sessions -starting permutation: s1a s1b s1c s2a s2b s2c -step s1a: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; +starting permutation: s1dc s1f s1u s1c s2dc s2f s2u s2c +step s1dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s1f: FETCH curs; id|data|status --+----+------ 1|foo |NEW (1 row) -step s1b: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; +step s1u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s1c: COMMIT; +step s2dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s2f: FETCH curs; +id|data|status +--+----+------ + 1|foo |NEW +(1 row) + +step s2u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s2c: COMMIT; + +starting permutation: s1dc s1f s1u s2dc s1c s2f s2u s2c +step s1dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s1f: FETCH curs; id|data|status --+----+------ 1|foo |NEW (1 row) +step s1u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s2dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; step s1c: COMMIT; -step s2a: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; +step s2f: FETCH curs; +id|data|status +--+----+------ + 1|foo |NEW +(1 row) + +step s2u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s2c: COMMIT; + +starting permutation: s1dc s1f s1u s2dc s2f s1c s2u s2c +step s1dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s1f: FETCH curs; id|data|status --+----+------ 1|foo |NEW (1 row) -step s2b: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; +step s1u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s2dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s2f: FETCH curs; id|data|status --+----+------ 1|foo |NEW (1 row) +step s1c: COMMIT; +step s2u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer step s2c: COMMIT; -starting permutation: s1a s1b s2a s1c s2b s2c -step s1a: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; +starting permutation: s1dc s1f s1u s2dc s2f s2u s1c s2c +step s1dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s1f: FETCH curs; id|data|status --+----+------ 1|foo |NEW (1 row) -step s1b: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; +step s1u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s2dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s2f: FETCH curs; id|data|status --+----+------ 1|foo |NEW (1 row) -step s2a: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; +step s2u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s1c: COMMIT; +step s2c: COMMIT; + +starting permutation: s1dc s1f s1u s2dc s2f s2u s2c s1c +step s1dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s1f: FETCH curs; id|data|status --+----+------ - 2|bar |NEW + 1|foo |NEW +(1 row) + +step s1u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s2dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s2f: FETCH curs; +id|data|status +--+----+------ + 1|foo |NEW +(1 row) + +step s2u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s2c: COMMIT; +step s1c: COMMIT; + +starting permutation: s1dc s1f s2dc s1u s1c s2f s2u s2c +step s1dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s1f: FETCH curs; +id|data|status +--+----+------ + 1|foo |NEW (1 row) +step s2dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s1u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer step s1c: COMMIT; -step s2b: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; +step s2f: FETCH curs; +id|data|status +--+----+------ + 1|foo |NEW +(1 row) + +step s2u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s2c: COMMIT; + +starting permutation: s1dc s1f s2dc s1u s2f s1c s2u s2c +step s1dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s1f: FETCH curs; +id|data|status +--+----+------ + 1|foo |NEW +(1 row) + +step s2dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s1u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s2f: FETCH curs; +id|data|status +--+----+------ + 1|foo |NEW +(1 row) + +step s1c: COMMIT; +step s2u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s2c: COMMIT; + +starting permutation: s1dc s1f s2dc s1u s2f s2u s1c s2c +step s1dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s1f: FETCH curs; +id|data|status +--+----+------ + 1|foo |NEW +(1 row) + +step s2dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s1u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s2f: FETCH curs; id|data|status --+----+------ 1|foo |NEW (1 row) +step s2u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s1c: COMMIT; step s2c: COMMIT; -starting permutation: s1a s1b s2a s2b s1c s2c -step s1a: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; +starting permutation: s1dc s1f s2dc s1u s2f s2u s2c s1c +step s1dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s1f: FETCH curs; id|data|status --+----+------ 1|foo |NEW (1 row) -step s1b: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; +step s2dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s1u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s2f: FETCH curs; id|data|status --+----+------ 1|foo |NEW (1 row) -step s2a: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; +step s2u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s2c: COMMIT; +step s1c: COMMIT; + +starting permutation: s1dc s1f s2dc s2f s1u s1c s2u s2c +step s1dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s1f: FETCH curs; +id|data|status +--+----+------ + 1|foo |NEW +(1 row) + +step s2dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s2f: FETCH curs; id|data|status --+----+------ 2|bar |NEW (1 row) -step s2b: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; +step s1u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s1c: COMMIT; +step s2u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s2c: COMMIT; + +starting permutation: s1dc s1f s2dc s2f s1u s2u s1c s2c +step s1dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s1f: FETCH curs; +id|data|status +--+----+------ + 1|foo |NEW +(1 row) + +step s2dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s2f: FETCH curs; id|data|status --+----+------ 2|bar |NEW (1 row) +step s1u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s2u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer step s1c: COMMIT; step s2c: COMMIT; -starting permutation: s1a s1b s2a s2b s2c s1c -step s1a: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; +starting permutation: s1dc s1f s2dc s2f s1u s2u s2c s1c +step s1dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s1f: FETCH curs; id|data|status --+----+------ 1|foo |NEW (1 row) -step s1b: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; +step s2dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s2f: FETCH curs; +id|data|status +--+----+------ + 2|bar |NEW +(1 row) + +step s1u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s2u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s2c: COMMIT; +step s1c: COMMIT; + +starting permutation: s1dc s1f s2dc s2f s2u s1u s1c s2c +step s1dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s1f: FETCH curs; id|data|status --+----+------ 1|foo |NEW (1 row) -step s2a: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; +step s2dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s2f: FETCH curs; id|data|status --+----+------ 2|bar |NEW (1 row) -step s2b: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; +step s2u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s1u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s1c: COMMIT; +step s2c: COMMIT; + +starting permutation: s1dc s1f s2dc s2f s2u s1u s2c s1c +step s1dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s1f: FETCH curs; +id|data|status +--+----+------ + 1|foo |NEW +(1 row) + +step s2dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s2f: FETCH curs; id|data|status --+----+------ 2|bar |NEW (1 row) +step s2u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s1u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer step s2c: COMMIT; step s1c: COMMIT; -starting permutation: s1a s2a s1b s1c s2b s2c -step s1a: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; +starting permutation: s1dc s1f s2dc s2f s2u s2c s1u s1c +step s1dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s1f: FETCH curs; id|data|status --+----+------ 1|foo |NEW (1 row) -step s2a: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; +step s2dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s2f: FETCH curs; id|data|status --+----+------ 2|bar |NEW (1 row) -step s1b: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; +step s2u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s2c: COMMIT; +step s1u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s1c: COMMIT; + +starting permutation: s1dc s2dc s1f s1u s1c s2f s2u s2c +step s1dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s2dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s1f: FETCH curs; id|data|status --+----+------ 1|foo |NEW (1 row) +step s1u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer step s1c: COMMIT; -step s2b: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; +step s2f: FETCH curs; id|data|status --+----+------ 1|foo |NEW (1 row) +step s2u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer step s2c: COMMIT; -starting permutation: s1a s2a s1b s2b s1c s2c -step s1a: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; +starting permutation: s1dc s2dc s1f s1u s2f s1c s2u s2c +step s1dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s2dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s1f: FETCH curs; id|data|status --+----+------ 1|foo |NEW (1 row) -step s2a: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; +step s1u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s2f: FETCH curs; +id|data|status +--+----+------ + 1|foo |NEW +(1 row) + +step s1c: COMMIT; +step s2u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s2c: COMMIT; + +starting permutation: s1dc s2dc s1f s1u s2f s2u s1c s2c +step s1dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s2dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s1f: FETCH curs; +id|data|status +--+----+------ + 1|foo |NEW +(1 row) + +step s1u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s2f: FETCH curs; +id|data|status +--+----+------ + 1|foo |NEW +(1 row) + +step s2u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s1c: COMMIT; +step s2c: COMMIT; + +starting permutation: s1dc s2dc s1f s1u s2f s2u s2c s1c +step s1dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s2dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s1f: FETCH curs; +id|data|status +--+----+------ + 1|foo |NEW +(1 row) + +step s1u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s2f: FETCH curs; +id|data|status +--+----+------ + 1|foo |NEW +(1 row) + +step s2u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s2c: COMMIT; +step s1c: COMMIT; + +starting permutation: s1dc s2dc s1f s2f s1u s1c s2u s2c +step s1dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s2dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s1f: FETCH curs; +id|data|status +--+----+------ + 1|foo |NEW +(1 row) + +step s2f: FETCH curs; id|data|status --+----+------ 2|bar |NEW (1 row) -step s1b: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; +step s1u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s1c: COMMIT; +step s2u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s2c: COMMIT; + +starting permutation: s1dc s2dc s1f s2f s1u s2u s1c s2c +step s1dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s2dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s1f: FETCH curs; id|data|status --+----+------ 1|foo |NEW (1 row) -step s2b: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; +step s2f: FETCH curs; id|data|status --+----+------ 2|bar |NEW (1 row) +step s1u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s2u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer step s1c: COMMIT; step s2c: COMMIT; -starting permutation: s1a s2a s1b s2b s2c s1c -step s1a: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; +starting permutation: s1dc s2dc s1f s2f s1u s2u s2c s1c +step s1dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s2dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s1f: FETCH curs; +id|data|status +--+----+------ + 1|foo |NEW +(1 row) + +step s2f: FETCH curs; +id|data|status +--+----+------ + 2|bar |NEW +(1 row) + +step s1u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s2u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s2c: COMMIT; +step s1c: COMMIT; + +starting permutation: s1dc s2dc s1f s2f s2u s1u s1c s2c +step s1dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s2dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s1f: FETCH curs; id|data|status --+----+------ 1|foo |NEW (1 row) -step s2a: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; +step s2f: FETCH curs; id|data|status --+----+------ 2|bar |NEW (1 row) -step s1b: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; +step s2u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s1u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s1c: COMMIT; +step s2c: COMMIT; + +starting permutation: s1dc s2dc s1f s2f s2u s1u s2c s1c +step s1dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s2dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s1f: FETCH curs; id|data|status --+----+------ 1|foo |NEW (1 row) -step s2b: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; +step s2f: FETCH curs; id|data|status --+----+------ 2|bar |NEW (1 row) +step s2u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s1u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer step s2c: COMMIT; step s1c: COMMIT; -starting permutation: s1a s2a s2b s1b s1c s2c -step s1a: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; +starting permutation: s1dc s2dc s1f s2f s2u s2c s1u s1c +step s1dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s2dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s1f: FETCH curs; id|data|status --+----+------ 1|foo |NEW (1 row) -step s2a: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; +step s2f: FETCH curs; id|data|status --+----+------ 2|bar |NEW (1 row) -step s2b: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; +step s2u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s2c: COMMIT; +step s1u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s1c: COMMIT; + +starting permutation: s1dc s2dc s2f s1f s1u s1c s2u s2c +step s1dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s2dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s2f: FETCH curs; +id|data|status +--+----+------ + 1|foo |NEW +(1 row) + +step s1f: FETCH curs; id|data|status --+----+------ 2|bar |NEW (1 row) -step s1b: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; +step s1u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s1c: COMMIT; +step s2u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s2c: COMMIT; + +starting permutation: s1dc s2dc s2f s1f s1u s2u s1c s2c +step s1dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s2dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s2f: FETCH curs; id|data|status --+----+------ 1|foo |NEW (1 row) +step s1f: FETCH curs; +id|data|status +--+----+------ + 2|bar |NEW +(1 row) + +step s1u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s2u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer step s1c: COMMIT; step s2c: COMMIT; -starting permutation: s1a s2a s2b s1b s2c s1c -step s1a: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; +starting permutation: s1dc s2dc s2f s1f s1u s2u s2c s1c +step s1dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s2dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s2f: FETCH curs; id|data|status --+----+------ 1|foo |NEW (1 row) -step s2a: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; +step s1f: FETCH curs; id|data|status --+----+------ 2|bar |NEW (1 row) -step s2b: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; +step s1u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s2u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s2c: COMMIT; +step s1c: COMMIT; + +starting permutation: s1dc s2dc s2f s1f s2u s1u s1c s2c +step s1dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s2dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s2f: FETCH curs; +id|data|status +--+----+------ + 1|foo |NEW +(1 row) + +step s1f: FETCH curs; id|data|status --+----+------ 2|bar |NEW (1 row) -step s1b: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; +step s2u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s1u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s1c: COMMIT; +step s2c: COMMIT; + +starting permutation: s1dc s2dc s2f s1f s2u s1u s2c s1c +step s1dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s2dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s2f: FETCH curs; id|data|status --+----+------ 1|foo |NEW (1 row) +step s1f: FETCH curs; +id|data|status +--+----+------ + 2|bar |NEW +(1 row) + +step s2u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s1u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer step s2c: COMMIT; step s1c: COMMIT; -starting permutation: s1a s2a s2b s2c s1b s1c -step s1a: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; +starting permutation: s1dc s2dc s2f s1f s2u s2c s1u s1c +step s1dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s2dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s2f: FETCH curs; id|data|status --+----+------ 1|foo |NEW (1 row) -step s2a: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; +step s1f: FETCH curs; id|data|status --+----+------ 2|bar |NEW (1 row) -step s2b: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; +step s2u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s2c: COMMIT; +step s1u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s1c: COMMIT; + +starting permutation: s1dc s2dc s2f s2u s1f s1u s1c s2c +step s1dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s2dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s2f: FETCH curs; id|data|status --+----+------ - 2|bar |NEW + 1|foo |NEW (1 row) +step s2u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s1f: FETCH curs; +id|data|status +--+----+------ + 1|foo |NEW +(1 row) + +step s1u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s1c: COMMIT; step s2c: COMMIT; -step s1b: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; + +starting permutation: s1dc s2dc s2f s2u s1f s1u s2c s1c +step s1dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s2dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s2f: FETCH curs; id|data|status --+----+------ 1|foo |NEW (1 row) +step s2u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s1f: FETCH curs; +id|data|status +--+----+------ + 1|foo |NEW +(1 row) + +step s1u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s2c: COMMIT; step s1c: COMMIT; -starting permutation: s2a s1a s1b s1c s2b s2c -step s2a: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; +starting permutation: s1dc s2dc s2f s2u s1f s2c s1u s1c +step s1dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s2dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s2f: FETCH curs; id|data|status --+----+------ 1|foo |NEW (1 row) -step s1a: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; +step s2u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s1f: FETCH curs; id|data|status --+----+------ - 2|bar |NEW + 1|foo |NEW (1 row) -step s1b: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; +step s2c: COMMIT; +step s1u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s1c: COMMIT; + +starting permutation: s1dc s2dc s2f s2u s2c s1f s1u s1c +step s1dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s2dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s2f: FETCH curs; id|data|status --+----+------ - 2|bar |NEW + 1|foo |NEW +(1 row) + +step s2u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s2c: COMMIT; +step s1f: FETCH curs; +id|data|status +--+----+------ + 1|foo |NEW +(1 row) + +step s1u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s1c: COMMIT; + +starting permutation: s2dc s1dc s1f s1u s1c s2f s2u s2c +step s2dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s1dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s1f: FETCH curs; +id|data|status +--+----+------ + 1|foo |NEW (1 row) +step s1u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer step s1c: COMMIT; -step s2b: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; +step s2f: FETCH curs; id|data|status --+----+------ 1|foo |NEW (1 row) +step s2u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer step s2c: COMMIT; -starting permutation: s2a s1a s1b s2b s1c s2c -step s2a: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; +starting permutation: s2dc s1dc s1f s1u s2f s1c s2u s2c +step s2dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s1dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s1f: FETCH curs; id|data|status --+----+------ 1|foo |NEW (1 row) -step s1a: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; +step s1u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s2f: FETCH curs; id|data|status --+----+------ - 2|bar |NEW + 1|foo |NEW +(1 row) + +step s1c: COMMIT; +step s2u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s2c: COMMIT; + +starting permutation: s2dc s1dc s1f s1u s2f s2u s1c s2c +step s2dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s1dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s1f: FETCH curs; +id|data|status +--+----+------ + 1|foo |NEW +(1 row) + +step s1u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s2f: FETCH curs; +id|data|status +--+----+------ + 1|foo |NEW +(1 row) + +step s2u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s1c: COMMIT; +step s2c: COMMIT; + +starting permutation: s2dc s1dc s1f s1u s2f s2u s2c s1c +step s2dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s1dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s1f: FETCH curs; +id|data|status +--+----+------ + 1|foo |NEW (1 row) -step s1b: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; +step s1u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s2f: FETCH curs; +id|data|status +--+----+------ + 1|foo |NEW +(1 row) + +step s2u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s2c: COMMIT; +step s1c: COMMIT; + +starting permutation: s2dc s1dc s1f s2f s1u s1c s2u s2c +step s2dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s1dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s1f: FETCH curs; +id|data|status +--+----+------ + 1|foo |NEW +(1 row) + +step s2f: FETCH curs; id|data|status --+----+------ 2|bar |NEW (1 row) -step s2b: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; +step s1u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s1c: COMMIT; +step s2u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s2c: COMMIT; + +starting permutation: s2dc s1dc s1f s2f s1u s2u s1c s2c +step s2dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s1dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s1f: FETCH curs; id|data|status --+----+------ 1|foo |NEW (1 row) +step s2f: FETCH curs; +id|data|status +--+----+------ + 2|bar |NEW +(1 row) + +step s1u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s2u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer step s1c: COMMIT; step s2c: COMMIT; -starting permutation: s2a s1a s1b s2b s2c s1c -step s2a: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; +starting permutation: s2dc s1dc s1f s2f s1u s2u s2c s1c +step s2dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s1dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s1f: FETCH curs; id|data|status --+----+------ 1|foo |NEW (1 row) -step s1a: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; +step s2f: FETCH curs; id|data|status --+----+------ 2|bar |NEW (1 row) -step s1b: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; +step s1u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s2u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s2c: COMMIT; +step s1c: COMMIT; + +starting permutation: s2dc s1dc s1f s2f s2u s1u s1c s2c +step s2dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s1dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s1f: FETCH curs; +id|data|status +--+----+------ + 1|foo |NEW +(1 row) + +step s2f: FETCH curs; id|data|status --+----+------ 2|bar |NEW (1 row) -step s2b: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; +step s2u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s1u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s1c: COMMIT; +step s2c: COMMIT; + +starting permutation: s2dc s1dc s1f s2f s2u s1u s2c s1c +step s2dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s1dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s1f: FETCH curs; +id|data|status +--+----+------ + 1|foo |NEW +(1 row) + +step s2f: FETCH curs; +id|data|status +--+----+------ + 2|bar |NEW +(1 row) + +step s2u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s1u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s2c: COMMIT; +step s1c: COMMIT; + +starting permutation: s2dc s1dc s1f s2f s2u s2c s1u s1c +step s2dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s1dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s1f: FETCH curs; id|data|status --+----+------ 1|foo |NEW (1 row) +step s2f: FETCH curs; +id|data|status +--+----+------ + 2|bar |NEW +(1 row) + +step s2u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer step s2c: COMMIT; +step s1u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer step s1c: COMMIT; -starting permutation: s2a s1a s2b s1b s1c s2c -step s2a: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; +starting permutation: s2dc s1dc s2f s1f s1u s1c s2u s2c +step s2dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s1dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s2f: FETCH curs; id|data|status --+----+------ 1|foo |NEW (1 row) -step s1a: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; +step s1f: FETCH curs; id|data|status --+----+------ 2|bar |NEW (1 row) -step s2b: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; +step s1u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s1c: COMMIT; +step s2u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s2c: COMMIT; + +starting permutation: s2dc s1dc s2f s1f s1u s2u s1c s2c +step s2dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s1dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s2f: FETCH curs; id|data|status --+----+------ 1|foo |NEW (1 row) -step s1b: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; +step s1f: FETCH curs; id|data|status --+----+------ 2|bar |NEW (1 row) +step s1u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s2u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer step s1c: COMMIT; step s2c: COMMIT; -starting permutation: s2a s1a s2b s1b s2c s1c -step s2a: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; +starting permutation: s2dc s1dc s2f s1f s1u s2u s2c s1c +step s2dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s1dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s2f: FETCH curs; id|data|status --+----+------ 1|foo |NEW (1 row) -step s1a: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; +step s1f: FETCH curs; id|data|status --+----+------ 2|bar |NEW (1 row) -step s2b: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; +step s1u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s2u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s2c: COMMIT; +step s1c: COMMIT; + +starting permutation: s2dc s1dc s2f s1f s2u s1u s1c s2c +step s2dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s1dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s2f: FETCH curs; id|data|status --+----+------ 1|foo |NEW (1 row) -step s1b: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; +step s1f: FETCH curs; id|data|status --+----+------ 2|bar |NEW (1 row) +step s2u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s1u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s1c: COMMIT; +step s2c: COMMIT; + +starting permutation: s2dc s1dc s2f s1f s2u s1u s2c s1c +step s2dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s1dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s2f: FETCH curs; +id|data|status +--+----+------ + 1|foo |NEW +(1 row) + +step s1f: FETCH curs; +id|data|status +--+----+------ + 2|bar |NEW +(1 row) + +step s2u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s1u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer step s2c: COMMIT; step s1c: COMMIT; -starting permutation: s2a s1a s2b s2c s1b s1c -step s2a: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; +starting permutation: s2dc s1dc s2f s1f s2u s2c s1u s1c +step s2dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s1dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s2f: FETCH curs; id|data|status --+----+------ 1|foo |NEW (1 row) -step s1a: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; +step s1f: FETCH curs; id|data|status --+----+------ 2|bar |NEW (1 row) -step s2b: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; +step s2u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s2c: COMMIT; +step s1u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s1c: COMMIT; + +starting permutation: s2dc s1dc s2f s2u s1f s1u s1c s2c +step s2dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s1dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s2f: FETCH curs; +id|data|status +--+----+------ + 1|foo |NEW +(1 row) + +step s2u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s1f: FETCH curs; id|data|status --+----+------ 1|foo |NEW (1 row) +step s1u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s1c: COMMIT; step s2c: COMMIT; -step s1b: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; + +starting permutation: s2dc s1dc s2f s2u s1f s1u s2c s1c +step s2dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s1dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s2f: FETCH curs; id|data|status --+----+------ 1|foo |NEW (1 row) +step s2u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s1f: FETCH curs; +id|data|status +--+----+------ + 1|foo |NEW +(1 row) + +step s1u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s2c: COMMIT; step s1c: COMMIT; -starting permutation: s2a s2b s1a s1b s1c s2c -step s2a: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; +starting permutation: s2dc s1dc s2f s2u s1f s2c s1u s1c +step s2dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s1dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s2f: FETCH curs; id|data|status --+----+------ 1|foo |NEW (1 row) -step s2b: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; +step s2u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s1f: FETCH curs; id|data|status --+----+------ 1|foo |NEW (1 row) -step s1a: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; +step s2c: COMMIT; +step s1u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s1c: COMMIT; + +starting permutation: s2dc s1dc s2f s2u s2c s1f s1u s1c +step s2dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s1dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s2f: FETCH curs; +id|data|status +--+----+------ + 1|foo |NEW +(1 row) + +step s2u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s2c: COMMIT; +step s1f: FETCH curs; +id|data|status +--+----+------ + 1|foo |NEW +(1 row) + +step s1u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s1c: COMMIT; + +starting permutation: s2dc s2f s1dc s1f s1u s1c s2u s2c +step s2dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s2f: FETCH curs; +id|data|status +--+----+------ + 1|foo |NEW +(1 row) + +step s1dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s1f: FETCH curs; id|data|status --+----+------ 2|bar |NEW (1 row) -step s1b: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; +step s1u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s1c: COMMIT; +step s2u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s2c: COMMIT; + +starting permutation: s2dc s2f s1dc s1f s1u s2u s1c s2c +step s2dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s2f: FETCH curs; +id|data|status +--+----+------ + 1|foo |NEW +(1 row) + +step s1dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s1f: FETCH curs; id|data|status --+----+------ 2|bar |NEW (1 row) +step s1u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s2u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer step s1c: COMMIT; step s2c: COMMIT; -starting permutation: s2a s2b s1a s1b s2c s1c -step s2a: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; +starting permutation: s2dc s2f s1dc s1f s1u s2u s2c s1c +step s2dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s2f: FETCH curs; id|data|status --+----+------ 1|foo |NEW (1 row) -step s2b: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; +step s1dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s1f: FETCH curs; +id|data|status +--+----+------ + 2|bar |NEW +(1 row) + +step s1u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s2u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s2c: COMMIT; +step s1c: COMMIT; + +starting permutation: s2dc s2f s1dc s1f s2u s1u s1c s2c +step s2dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s2f: FETCH curs; id|data|status --+----+------ 1|foo |NEW (1 row) -step s1a: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; +step s1dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s1f: FETCH curs; id|data|status --+----+------ 2|bar |NEW (1 row) -step s1b: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; +step s2u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s1u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s1c: COMMIT; +step s2c: COMMIT; + +starting permutation: s2dc s2f s1dc s1f s2u s1u s2c s1c +step s2dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s2f: FETCH curs; +id|data|status +--+----+------ + 1|foo |NEW +(1 row) + +step s1dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s1f: FETCH curs; id|data|status --+----+------ 2|bar |NEW (1 row) +step s2u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s1u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer step s2c: COMMIT; step s1c: COMMIT; -starting permutation: s2a s2b s1a s2c s1b s1c -step s2a: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; +starting permutation: s2dc s2f s1dc s1f s2u s2c s1u s1c +step s2dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s2f: FETCH curs; id|data|status --+----+------ 1|foo |NEW (1 row) -step s2b: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; +step s1dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s1f: FETCH curs; +id|data|status +--+----+------ + 2|bar |NEW +(1 row) + +step s2u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s2c: COMMIT; +step s1u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s1c: COMMIT; + +starting permutation: s2dc s2f s1dc s2u s1f s1u s1c s2c +step s2dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s2f: FETCH curs; id|data|status --+----+------ 1|foo |NEW (1 row) -step s1a: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; +step s1dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s2u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s1f: FETCH curs; id|data|status --+----+------ - 2|bar |NEW + 1|foo |NEW (1 row) +step s1u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s1c: COMMIT; step s2c: COMMIT; -step s1b: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; + +starting permutation: s2dc s2f s1dc s2u s1f s1u s2c s1c +step s2dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s2f: FETCH curs; id|data|status --+----+------ 1|foo |NEW (1 row) +step s1dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s2u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s1f: FETCH curs; +id|data|status +--+----+------ + 1|foo |NEW +(1 row) + +step s1u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s2c: COMMIT; step s1c: COMMIT; -starting permutation: s2a s2b s2c s1a s1b s1c -step s2a: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; +starting permutation: s2dc s2f s1dc s2u s1f s2c s1u s1c +step s2dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s2f: FETCH curs; +id|data|status +--+----+------ + 1|foo |NEW +(1 row) + +step s1dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s2u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s1f: FETCH curs; id|data|status --+----+------ 1|foo |NEW (1 row) -step s2b: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; +step s2c: COMMIT; +step s1u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s1c: COMMIT; + +starting permutation: s2dc s2f s1dc s2u s2c s1f s1u s1c +step s2dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s2f: FETCH curs; id|data|status --+----+------ 1|foo |NEW (1 row) +step s1dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s2u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer step s2c: COMMIT; -step s1a: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; +step s1f: FETCH curs; id|data|status --+----+------ 1|foo |NEW (1 row) -step s1b: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; +step s1u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s1c: COMMIT; + +starting permutation: s2dc s2f s2u s1dc s1f s1u s1c s2c +step s2dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s2f: FETCH curs; +id|data|status +--+----+------ + 1|foo |NEW +(1 row) + +step s2u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s1dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s1f: FETCH curs; +id|data|status +--+----+------ + 1|foo |NEW +(1 row) + +step s1u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s1c: COMMIT; +step s2c: COMMIT; + +starting permutation: s2dc s2f s2u s1dc s1f s1u s2c s1c +step s2dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s2f: FETCH curs; +id|data|status +--+----+------ + 1|foo |NEW +(1 row) + +step s2u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s1dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s1f: FETCH curs; +id|data|status +--+----+------ + 1|foo |NEW +(1 row) + +step s1u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s2c: COMMIT; +step s1c: COMMIT; + +starting permutation: s2dc s2f s2u s1dc s1f s2c s1u s1c +step s2dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s2f: FETCH curs; +id|data|status +--+----+------ + 1|foo |NEW +(1 row) + +step s2u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s1dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s1f: FETCH curs; +id|data|status +--+----+------ + 1|foo |NEW +(1 row) + +step s2c: COMMIT; +step s1u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s1c: COMMIT; + +starting permutation: s2dc s2f s2u s1dc s2c s1f s1u s1c +step s2dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s2f: FETCH curs; +id|data|status +--+----+------ + 1|foo |NEW +(1 row) + +step s2u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s1dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s2c: COMMIT; +step s1f: FETCH curs; +id|data|status +--+----+------ + 1|foo |NEW +(1 row) + +step s1u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s1c: COMMIT; + +starting permutation: s2dc s2f s2u s2c s1dc s1f s1u s1c +step s2dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s2f: FETCH curs; +id|data|status +--+----+------ + 1|foo |NEW +(1 row) + +step s2u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer +step s2c: COMMIT; +step s1dc: DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; +step s1f: FETCH curs; id|data|status --+----+------ 1|foo |NEW (1 row) +step s1u: UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; +ERROR: operator does not exist: text + integer step s1c: COMMIT; diff --git a/src/test/isolation/specs/skip-locked.spec b/src/test/isolation/specs/skip-locked.spec index 12168f8f8a..b035f17b8a 100644 --- a/src/test/isolation/specs/skip-locked.spec +++ b/src/test/isolation/specs/skip-locked.spec @@ -17,12 +17,14 @@ teardown session s1 setup { BEGIN; } -step s1a { SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; } -step s1b { SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; } +step s1dc { DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; } +step s1f { FETCH curs; } +step s1u { UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; } step s1c { COMMIT; } session s2 setup { BEGIN; } -step s2a { SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; } -step s2b { SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; } +step s2dc { DECLARE curs CURSOR FOR SELECT * FROM queue LIMIT 1 FOR UPDATE SKIP LOCKED; } +step s2f { FETCH curs; } +step s2u { UPDATE queue SET status = status + 1 WHERE CURRENT OF curs; } step s2c { COMMIT; }