1Parsed test spec with 2 sessions
2
3starting permutation: insert1 insert2 c1 select2 c2
4step insert1: INSERT INTO upsert(key, payload) VALUES('FooFoo', 'insert1') ON CONFLICT (lower(key)) DO UPDATE set key = EXCLUDED.key, payload = upsert.payload || ' updated by insert1';
5step insert2: INSERT INTO upsert(key, payload) VALUES('FOOFOO', 'insert2') ON CONFLICT (lower(key)) DO UPDATE set key = EXCLUDED.key, payload = upsert.payload || ' updated by insert2'; <waiting ...>
6step c1: COMMIT;
7step insert2: <... completed>
8step select2: SELECT * FROM upsert;
9key   |payload
10------+--------------------------
11FOOFOO|insert1 updated by insert2
12(1 row)
13
14step c2: COMMIT;
15
16starting permutation: insert1 insert2 a1 select2 c2
17step insert1: INSERT INTO upsert(key, payload) VALUES('FooFoo', 'insert1') ON CONFLICT (lower(key)) DO UPDATE set key = EXCLUDED.key, payload = upsert.payload || ' updated by insert1';
18step insert2: INSERT INTO upsert(key, payload) VALUES('FOOFOO', 'insert2') ON CONFLICT (lower(key)) DO UPDATE set key = EXCLUDED.key, payload = upsert.payload || ' updated by insert2'; <waiting ...>
19step a1: ABORT;
20step insert2: <... completed>
21step select2: SELECT * FROM upsert;
22key   |payload
23------+-------
24FOOFOO|insert2
25(1 row)
26
27step c2: COMMIT;
28