Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commite4e940c

Browse files
author
Nikita Glukhov
committed
Add isolation tests for jsonbc
1 parent17ea8ff commite4e940c

File tree

3 files changed

+391
-0
lines changed

3 files changed

+391
-0
lines changed
Lines changed: 334 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,334 @@
1+
Parsed test spec with 2 sessions
2+
3+
starting permutation: s1rc s2rc s1ia s2ia s1sd s1sf s2sd s2sf s1ci s2ci s1sd s1sf
4+
step s1rc: SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
5+
step s2rc: SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
6+
step s1ia: INSERT INTO foo VALUES (jsonb_build_object('a', 1));
7+
step s2ia: INSERT INTO foo VALUES (jsonb_build_object('a', 2));
8+
step s1sd: SELECT id, name FROM pg_jsonbc_dict;
9+
id name
10+
11+
1 a
12+
step s1sf: SELECT * FROM foo;
13+
bar
14+
15+
{"a": 1}
16+
step s2sd: SELECT id, name FROM pg_jsonbc_dict;
17+
id name
18+
19+
1 a
20+
step s2sf: SELECT * FROM foo;
21+
bar
22+
23+
{"a": 2}
24+
step s1ci: COMMIT;
25+
step s2ci: COMMIT;
26+
step s1sd: SELECT id, name FROM pg_jsonbc_dict;
27+
id name
28+
29+
1 a
30+
step s1sf: SELECT * FROM foo;
31+
bar
32+
33+
{"a": 1}
34+
{"a": 2}
35+
36+
starting permutation: s1rc s2rc s1ia s2ia s1ci s2rb s1sd s1sf
37+
step s1rc: SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
38+
step s2rc: SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
39+
step s1ia: INSERT INTO foo VALUES (jsonb_build_object('a', 1));
40+
step s2ia: INSERT INTO foo VALUES (jsonb_build_object('a', 2));
41+
step s1ci: COMMIT;
42+
step s2rb: ROLLBACK;
43+
step s1sd: SELECT id, name FROM pg_jsonbc_dict;
44+
id name
45+
46+
1 a
47+
step s1sf: SELECT * FROM foo;
48+
bar
49+
50+
{"a": 1}
51+
52+
starting permutation: s1rc s2rc s1ia s2ia s1rb s2ci s1sd s1sf
53+
step s1rc: SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
54+
step s2rc: SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
55+
step s1ia: INSERT INTO foo VALUES (jsonb_build_object('a', 1));
56+
step s2ia: INSERT INTO foo VALUES (jsonb_build_object('a', 2));
57+
step s1rb: ROLLBACK;
58+
step s2ci: COMMIT;
59+
step s1sd: SELECT id, name FROM pg_jsonbc_dict;
60+
id name
61+
62+
1 a
63+
step s1sf: SELECT * FROM foo;
64+
bar
65+
66+
{"a": 2}
67+
68+
starting permutation: s1rc s2rc s1ia s2ia s1rb s2rb s1sd s1sf
69+
step s1rc: SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
70+
step s2rc: SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
71+
step s1ia: INSERT INTO foo VALUES (jsonb_build_object('a', 1));
72+
step s2ia: INSERT INTO foo VALUES (jsonb_build_object('a', 2));
73+
step s1rb: ROLLBACK;
74+
step s2rb: ROLLBACK;
75+
step s1sd: SELECT id, name FROM pg_jsonbc_dict;
76+
id name
77+
78+
1 a
79+
step s1sf: SELECT * FROM foo;
80+
bar
81+
82+
83+
starting permutation: s1rc s2rc s1ia s2ia s2ci s1ci s1sd s1sf
84+
step s1rc: SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
85+
step s2rc: SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
86+
step s1ia: INSERT INTO foo VALUES (jsonb_build_object('a', 1));
87+
step s2ia: INSERT INTO foo VALUES (jsonb_build_object('a', 2));
88+
step s2ci: COMMIT;
89+
step s1ci: COMMIT;
90+
step s1sd: SELECT id, name FROM pg_jsonbc_dict;
91+
id name
92+
93+
1 a
94+
step s1sf: SELECT * FROM foo;
95+
bar
96+
97+
{"a": 1}
98+
{"a": 2}
99+
100+
starting permutation: s1rc s2rc s1ia s2ia s2ci s1rb s1sd s1sf
101+
step s1rc: SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
102+
step s2rc: SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
103+
step s1ia: INSERT INTO foo VALUES (jsonb_build_object('a', 1));
104+
step s2ia: INSERT INTO foo VALUES (jsonb_build_object('a', 2));
105+
step s2ci: COMMIT;
106+
step s1rb: ROLLBACK;
107+
step s1sd: SELECT id, name FROM pg_jsonbc_dict;
108+
id name
109+
110+
1 a
111+
step s1sf: SELECT * FROM foo;
112+
bar
113+
114+
{"a": 2}
115+
116+
starting permutation: s1rc s2rc s1ia s2ia s2rb s1ci s1sd s1sf
117+
step s1rc: SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
118+
step s2rc: SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
119+
step s1ia: INSERT INTO foo VALUES (jsonb_build_object('a', 1));
120+
step s2ia: INSERT INTO foo VALUES (jsonb_build_object('a', 2));
121+
step s2rb: ROLLBACK;
122+
step s1ci: COMMIT;
123+
step s1sd: SELECT id, name FROM pg_jsonbc_dict;
124+
id name
125+
126+
1 a
127+
step s1sf: SELECT * FROM foo;
128+
bar
129+
130+
{"a": 1}
131+
132+
starting permutation: s1rc s2rc s1ia s2ia s2rb s1rb s1sd s1sf
133+
step s1rc: SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
134+
step s2rc: SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
135+
step s1ia: INSERT INTO foo VALUES (jsonb_build_object('a', 1));
136+
step s2ia: INSERT INTO foo VALUES (jsonb_build_object('a', 2));
137+
step s2rb: ROLLBACK;
138+
step s1rb: ROLLBACK;
139+
step s1sd: SELECT id, name FROM pg_jsonbc_dict;
140+
id name
141+
142+
1 a
143+
step s1sf: SELECT * FROM foo;
144+
bar
145+
146+
147+
starting permutation: s1sr s2sr s1ia s2ia s1sd s1sf s1ci s2ci s1sd s1sf
148+
step s1sr: SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
149+
step s2sr: SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
150+
step s1ia: INSERT INTO foo VALUES (jsonb_build_object('a', 1));
151+
step s2ia: INSERT INTO foo VALUES (jsonb_build_object('a', 2));
152+
step s1sd: SELECT id, name FROM pg_jsonbc_dict;
153+
id name
154+
155+
step s1sf: SELECT * FROM foo;
156+
bar
157+
158+
{"a": 1}
159+
step s1ci: COMMIT;
160+
step s2ci: COMMIT;
161+
step s1sd: SELECT id, name FROM pg_jsonbc_dict;
162+
id name
163+
164+
1 a
165+
step s1sf: SELECT * FROM foo;
166+
bar
167+
168+
{"a": 1}
169+
{"a": 2}
170+
171+
starting permutation: s1sr s2sr s1ia s2ia s1ci s2rb s1sd s1sf
172+
step s1sr: SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
173+
step s2sr: SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
174+
step s1ia: INSERT INTO foo VALUES (jsonb_build_object('a', 1));
175+
step s2ia: INSERT INTO foo VALUES (jsonb_build_object('a', 2));
176+
step s1ci: COMMIT;
177+
step s2rb: ROLLBACK;
178+
step s1sd: SELECT id, name FROM pg_jsonbc_dict;
179+
id name
180+
181+
1 a
182+
step s1sf: SELECT * FROM foo;
183+
bar
184+
185+
{"a": 1}
186+
187+
starting permutation: s1sr s2sr s1ia s2ia s1rb s2ci s1sd s1sf
188+
step s1sr: SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
189+
step s2sr: SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
190+
step s1ia: INSERT INTO foo VALUES (jsonb_build_object('a', 1));
191+
step s2ia: INSERT INTO foo VALUES (jsonb_build_object('a', 2));
192+
step s1rb: ROLLBACK;
193+
step s2ci: COMMIT;
194+
step s1sd: SELECT id, name FROM pg_jsonbc_dict;
195+
id name
196+
197+
1 a
198+
step s1sf: SELECT * FROM foo;
199+
bar
200+
201+
{"a": 2}
202+
203+
starting permutation: s1sr s2sr s1ia s2ia s1rb s2rb s1sd s1sf
204+
step s1sr: SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
205+
step s2sr: SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
206+
step s1ia: INSERT INTO foo VALUES (jsonb_build_object('a', 1));
207+
step s2ia: INSERT INTO foo VALUES (jsonb_build_object('a', 2));
208+
step s1rb: ROLLBACK;
209+
step s2rb: ROLLBACK;
210+
step s1sd: SELECT id, name FROM pg_jsonbc_dict;
211+
id name
212+
213+
1 a
214+
step s1sf: SELECT * FROM foo;
215+
bar
216+
217+
218+
starting permutation: s1sr s2sr s1ia s2ia s2ci s1ci s1sd s1sf
219+
step s1sr: SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
220+
step s2sr: SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
221+
step s1ia: INSERT INTO foo VALUES (jsonb_build_object('a', 1));
222+
step s2ia: INSERT INTO foo VALUES (jsonb_build_object('a', 2));
223+
step s2ci: COMMIT;
224+
step s1ci: COMMIT;
225+
step s1sd: SELECT id, name FROM pg_jsonbc_dict;
226+
id name
227+
228+
1 a
229+
step s1sf: SELECT * FROM foo;
230+
bar
231+
232+
{"a": 1}
233+
{"a": 2}
234+
235+
starting permutation: s1sr s2sr s1ia s2ia s2ci s1rb s1sd s1sf
236+
step s1sr: SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
237+
step s2sr: SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
238+
step s1ia: INSERT INTO foo VALUES (jsonb_build_object('a', 1));
239+
step s2ia: INSERT INTO foo VALUES (jsonb_build_object('a', 2));
240+
step s2ci: COMMIT;
241+
step s1rb: ROLLBACK;
242+
step s1sd: SELECT id, name FROM pg_jsonbc_dict;
243+
id name
244+
245+
1 a
246+
step s1sf: SELECT * FROM foo;
247+
bar
248+
249+
{"a": 2}
250+
251+
starting permutation: s1sr s2sr s1ia s2ia s2rb s1ci s1sd s1sf
252+
step s1sr: SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
253+
step s2sr: SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
254+
step s1ia: INSERT INTO foo VALUES (jsonb_build_object('a', 1));
255+
step s2ia: INSERT INTO foo VALUES (jsonb_build_object('a', 2));
256+
step s2rb: ROLLBACK;
257+
step s1ci: COMMIT;
258+
step s1sd: SELECT id, name FROM pg_jsonbc_dict;
259+
id name
260+
261+
1 a
262+
step s1sf: SELECT * FROM foo;
263+
bar
264+
265+
{"a": 1}
266+
267+
starting permutation: s1sr s2sr s1ia s2ia s2rb s1rb s1sd s1sf
268+
step s1sr: SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
269+
step s2sr: SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
270+
step s1ia: INSERT INTO foo VALUES (jsonb_build_object('a', 1));
271+
step s2ia: INSERT INTO foo VALUES (jsonb_build_object('a', 2));
272+
step s2rb: ROLLBACK;
273+
step s1rb: ROLLBACK;
274+
step s1sd: SELECT id, name FROM pg_jsonbc_dict;
275+
id name
276+
277+
1 a
278+
step s1sf: SELECT * FROM foo;
279+
bar
280+
281+
282+
starting permutation: s1sr s2sr s1ia s1ia s1ib s1ic s2ib s2ia s2ib s1ci s2ci s1sd s1sf
283+
step s1sr: SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
284+
step s2sr: SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
285+
step s1ia: INSERT INTO foo VALUES (jsonb_build_object('a', 1));
286+
step s1ia: INSERT INTO foo VALUES (jsonb_build_object('a', 1));
287+
step s1ib: INSERT INTO foo VALUES (jsonb_build_object('b', 1));
288+
step s1ic: INSERT INTO foo VALUES (jsonb_build_object('a', 1, 'b', 1, 'c', jsonb_build_object('a', 1)));
289+
step s2ib: INSERT INTO foo VALUES (jsonb_build_object('b', 2));
290+
step s2ia: INSERT INTO foo VALUES (jsonb_build_object('a', 2));
291+
step s2ib: INSERT INTO foo VALUES (jsonb_build_object('b', 2));
292+
step s1ci: COMMIT;
293+
step s2ci: COMMIT;
294+
step s1sd: SELECT id, name FROM pg_jsonbc_dict;
295+
id name
296+
297+
1 a
298+
2 b
299+
3 c
300+
step s1sf: SELECT * FROM foo;
301+
bar
302+
303+
{"a": 1}
304+
{"a": 1}
305+
{"b": 1}
306+
{"a": 1, "b": 1, "c": {"a": 1}}
307+
{"b": 2}
308+
{"a": 2}
309+
{"b": 2}
310+
311+
starting permutation: s1sr s2sr s1ic s1ic s1ia s2ic s2ib s1ci s2ci s1sd s1sf
312+
step s1sr: SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
313+
step s2sr: SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
314+
step s1ic: INSERT INTO foo VALUES (jsonb_build_object('a', 1, 'b', 1, 'c', jsonb_build_object('a', 1)));
315+
step s1ic: INSERT INTO foo VALUES (jsonb_build_object('a', 1, 'b', 1, 'c', jsonb_build_object('a', 1)));
316+
step s1ia: INSERT INTO foo VALUES (jsonb_build_object('a', 1));
317+
step s2ic: INSERT INTO foo VALUES (jsonb_build_object('a', 2, 'b', 2, 'c', jsonb_build_object('a', 2)));
318+
step s2ib: INSERT INTO foo VALUES (jsonb_build_object('b', 2));
319+
step s1ci: COMMIT;
320+
step s2ci: COMMIT;
321+
step s1sd: SELECT id, name FROM pg_jsonbc_dict;
322+
id name
323+
324+
1 a
325+
2 b
326+
3 c
327+
step s1sf: SELECT * FROM foo;
328+
bar
329+
330+
{"a": 1, "b": 1, "c": {"a": 1}}
331+
{"a": 1, "b": 1, "c": {"a": 1}}
332+
{"a": 1}
333+
{"a": 2, "b": 2, "c": {"a": 2}}
334+
{"b": 2}

‎src/test/isolation/isolation_schedule

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,3 +61,4 @@ test: create-trigger
6161
test: async-notify
6262
test: vacuum-reltuples
6363
test: timeouts
64+
test: jsonbc

‎src/test/isolation/specs/jsonbc.spec

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
setup
2+
{
3+
CREATETABLEfoo (
4+
barjsonbcompressedjsonbc
5+
);
6+
}
7+
8+
teardown
9+
{
10+
DROPTABLEfoo;
11+
}
12+
13+
session"s1"
14+
setup{BEGIN;SETdeadlock_timeout='100ms'; }
15+
step"s1rc"{SETTRANSACTIONISOLATIONLEVELREADCOMMITTED; }
16+
step"s1sr"{SETTRANSACTIONISOLATIONLEVELSERIALIZABLE; }
17+
step"s1ia"{INSERTINTOfooVALUES (jsonb_build_object('a',1)); }
18+
step"s1ib"{INSERTINTOfooVALUES (jsonb_build_object('b',1)); }
19+
step"s1ic"{INSERTINTOfooVALUES (jsonb_build_object('a',1,'b',1,'c',jsonb_build_object('a',1))); }
20+
step"s1sf"{SELECT*FROMfoo; }
21+
step"s1sd"{SELECTid,nameFROMpg_jsonbc_dict; }
22+
step"s1ci"{COMMIT; }
23+
step"s1rb"{ROLLBACK; }
24+
25+
session"s2"
26+
setup{BEGIN;SETdeadlock_timeout='100ms'; }
27+
step"s2rc"{SETTRANSACTIONISOLATIONLEVELREADCOMMITTED; }
28+
step"s2sr"{SETTRANSACTIONISOLATIONLEVELSERIALIZABLE; }
29+
step"s2ia"{INSERTINTOfooVALUES (jsonb_build_object('a',2)); }
30+
step"s2ib"{INSERTINTOfooVALUES (jsonb_build_object('b',2)); }
31+
step"s2ic"{INSERTINTOfooVALUES (jsonb_build_object('a',2,'b',2,'c',jsonb_build_object('a',2))); }
32+
step"s2sf"{SELECT*FROMfoo; }
33+
step"s2sd"{SELECTid,nameFROMpg_jsonbc_dict; }
34+
step"s2ci"{COMMIT; }
35+
step"s2rb"{ROLLBACK; }
36+
37+
permutation"s1rc""s2rc""s1ia""s2ia""s1sd""s1sf""s2sd""s2sf""s1ci""s2ci""s1sd""s1sf"
38+
permutation"s1rc""s2rc""s1ia""s2ia""s1ci""s2rb""s1sd""s1sf"
39+
permutation"s1rc""s2rc""s1ia""s2ia""s1rb""s2ci""s1sd""s1sf"
40+
permutation"s1rc""s2rc""s1ia""s2ia""s1rb""s2rb""s1sd""s1sf"
41+
permutation"s1rc""s2rc""s1ia""s2ia""s2ci""s1ci""s1sd""s1sf"
42+
permutation"s1rc""s2rc""s1ia""s2ia""s2ci""s1rb""s1sd""s1sf"
43+
permutation"s1rc""s2rc""s1ia""s2ia""s2rb""s1ci""s1sd""s1sf"
44+
permutation"s1rc""s2rc""s1ia""s2ia""s2rb""s1rb""s1sd""s1sf"
45+
46+
permutation"s1sr""s2sr""s1ia""s2ia""s1sd""s1sf""s1ci""s2ci""s1sd""s1sf"
47+
permutation"s1sr""s2sr""s1ia""s2ia""s1ci""s2rb""s1sd""s1sf"
48+
permutation"s1sr""s2sr""s1ia""s2ia""s1rb""s2ci""s1sd""s1sf"
49+
permutation"s1sr""s2sr""s1ia""s2ia""s1rb""s2rb""s1sd""s1sf"
50+
permutation"s1sr""s2sr""s1ia""s2ia""s2ci""s1ci""s1sd""s1sf"
51+
permutation"s1sr""s2sr""s1ia""s2ia""s2ci""s1rb""s1sd""s1sf"
52+
permutation"s1sr""s2sr""s1ia""s2ia""s2rb""s1ci""s1sd""s1sf"
53+
permutation"s1sr""s2sr""s1ia""s2ia""s2rb""s1rb""s1sd""s1sf"
54+
55+
permutation"s1sr""s2sr""s1ia""s1ia""s1ib""s1ic""s2ib""s2ia""s2ib""s1ci""s2ci""s1sd""s1sf"
56+
permutation"s1sr""s2sr""s1ic""s1ic""s1ia""s2ic""s2ib""s1ci""s2ci""s1sd""s1sf"

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp