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

Commit90247e7

Browse files
committed
Add a regression test for contrib/pgrowlocks.
Dong Wook Lee, revised a bit by meDiscussion:https://postgr.es/m/20220629055326.tdswmcjcr5jzbrsk@home-desktop
1 parente548455 commit90247e7

File tree

4 files changed

+281
-0
lines changed

4 files changed

+281
-0
lines changed

‎contrib/pgrowlocks/.gitignore

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
# Generated subdirectories
2+
/log/
3+
/results/
4+
/output_iso/
5+
/tmp_check/
6+
/tmp_check_iso/

‎contrib/pgrowlocks/Makefile

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@ EXTENSION = pgrowlocks
99
DATA = pgrowlocks--1.2.sql pgrowlocks--1.1--1.2.sql pgrowlocks--1.0--1.1.sql
1010
PGFILEDESC = "pgrowlocks - display row locking information"
1111

12+
ISOLATION = pgrowlocks
13+
ISOLATION_OPTS = --load-extension=pgrowlocks
14+
1215
ifdefUSE_PGXS
1316
PG_CONFIG = pg_config
1417
PGXS :=$(shell$(PG_CONFIG) --pgxs)
Lines changed: 233 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,233 @@
1+
Parsed test spec with 2 sessions
2+
3+
starting permutation: s1_begin s1_tuplock1 s2_rowlocks s1_commit
4+
step s1_begin: BEGIN;
5+
step s1_tuplock1: SELECT * FROM multixact_conflict FOR KEY SHARE;
6+
a|b
7+
-+-
8+
1|2
9+
3|4
10+
(2 rows)
11+
12+
step s2_rowlocks: SELECT locked_row, multi, modes FROM pgrowlocks('multixact_conflict');
13+
locked_row|multi|modes
14+
----------+-----+-----------------
15+
(0,1) |f |{"For Key Share"}
16+
(0,2) |f |{"For Key Share"}
17+
(2 rows)
18+
19+
step s1_commit: COMMIT;
20+
21+
starting permutation: s1_begin s1_tuplock2 s2_rowlocks s1_commit
22+
step s1_begin: BEGIN;
23+
step s1_tuplock2: SELECT * FROM multixact_conflict FOR SHARE;
24+
a|b
25+
-+-
26+
1|2
27+
3|4
28+
(2 rows)
29+
30+
step s2_rowlocks: SELECT locked_row, multi, modes FROM pgrowlocks('multixact_conflict');
31+
locked_row|multi|modes
32+
----------+-----+-------------
33+
(0,1) |f |{"For Share"}
34+
(0,2) |f |{"For Share"}
35+
(2 rows)
36+
37+
step s1_commit: COMMIT;
38+
39+
starting permutation: s1_begin s1_tuplock3 s2_rowlocks s1_commit
40+
step s1_begin: BEGIN;
41+
step s1_tuplock3: SELECT * FROM multixact_conflict FOR NO KEY UPDATE;
42+
a|b
43+
-+-
44+
1|2
45+
3|4
46+
(2 rows)
47+
48+
step s2_rowlocks: SELECT locked_row, multi, modes FROM pgrowlocks('multixact_conflict');
49+
locked_row|multi|modes
50+
----------+-----+---------------------
51+
(0,1) |f |{"For No Key Update"}
52+
(0,2) |f |{"For No Key Update"}
53+
(2 rows)
54+
55+
step s1_commit: COMMIT;
56+
57+
starting permutation: s1_begin s1_tuplock4 s2_rowlocks s1_commit
58+
step s1_begin: BEGIN;
59+
step s1_tuplock4: SELECT * FROM multixact_conflict FOR UPDATE;
60+
a|b
61+
-+-
62+
1|2
63+
3|4
64+
(2 rows)
65+
66+
step s2_rowlocks: SELECT locked_row, multi, modes FROM pgrowlocks('multixact_conflict');
67+
locked_row|multi|modes
68+
----------+-----+--------------
69+
(0,1) |f |{"For Update"}
70+
(0,2) |f |{"For Update"}
71+
(2 rows)
72+
73+
step s1_commit: COMMIT;
74+
75+
starting permutation: s1_begin s1_updatea s2_rowlocks s1_commit
76+
step s1_begin: BEGIN;
77+
step s1_updatea: UPDATE multixact_conflict SET a = 10 WHERE a = 1;
78+
step s2_rowlocks: SELECT locked_row, multi, modes FROM pgrowlocks('multixact_conflict');
79+
locked_row|multi|modes
80+
----------+-----+--------
81+
(0,1) |f |{Update}
82+
(1 row)
83+
84+
step s1_commit: COMMIT;
85+
86+
starting permutation: s1_begin s1_updateb s2_rowlocks s1_commit
87+
step s1_begin: BEGIN;
88+
step s1_updateb: UPDATE multixact_conflict SET b = 11 WHERE b = 4;
89+
step s2_rowlocks: SELECT locked_row, multi, modes FROM pgrowlocks('multixact_conflict');
90+
locked_row|multi|modes
91+
----------+-----+-----------------
92+
(0,2) |f |{"No Key Update"}
93+
(1 row)
94+
95+
step s1_commit: COMMIT;
96+
97+
starting permutation: s1_begin s1_lcksvpt s1_tuplock1 s2_rowlocks s1_commit
98+
step s1_begin: BEGIN;
99+
step s1_lcksvpt: SELECT * FROM multixact_conflict FOR KEY SHARE; SAVEPOINT s;
100+
a|b
101+
-+-
102+
1|2
103+
3|4
104+
(2 rows)
105+
106+
step s1_tuplock1: SELECT * FROM multixact_conflict FOR KEY SHARE;
107+
a|b
108+
-+-
109+
1|2
110+
3|4
111+
(2 rows)
112+
113+
step s2_rowlocks: SELECT locked_row, multi, modes FROM pgrowlocks('multixact_conflict');
114+
locked_row|multi|modes
115+
----------+-----+-----------------
116+
(0,1) |f |{"For Key Share"}
117+
(0,2) |f |{"For Key Share"}
118+
(2 rows)
119+
120+
step s1_commit: COMMIT;
121+
122+
starting permutation: s1_begin s1_lcksvpt s1_tuplock2 s2_rowlocks s1_commit
123+
step s1_begin: BEGIN;
124+
step s1_lcksvpt: SELECT * FROM multixact_conflict FOR KEY SHARE; SAVEPOINT s;
125+
a|b
126+
-+-
127+
1|2
128+
3|4
129+
(2 rows)
130+
131+
step s1_tuplock2: SELECT * FROM multixact_conflict FOR SHARE;
132+
a|b
133+
-+-
134+
1|2
135+
3|4
136+
(2 rows)
137+
138+
step s2_rowlocks: SELECT locked_row, multi, modes FROM pgrowlocks('multixact_conflict');
139+
locked_row|multi|modes
140+
----------+-----+-------------------
141+
(0,1) |t |{"Key Share",Share}
142+
(0,2) |t |{"Key Share",Share}
143+
(2 rows)
144+
145+
step s1_commit: COMMIT;
146+
147+
starting permutation: s1_begin s1_lcksvpt s1_tuplock3 s2_rowlocks s1_commit
148+
step s1_begin: BEGIN;
149+
step s1_lcksvpt: SELECT * FROM multixact_conflict FOR KEY SHARE; SAVEPOINT s;
150+
a|b
151+
-+-
152+
1|2
153+
3|4
154+
(2 rows)
155+
156+
step s1_tuplock3: SELECT * FROM multixact_conflict FOR NO KEY UPDATE;
157+
a|b
158+
-+-
159+
1|2
160+
3|4
161+
(2 rows)
162+
163+
step s2_rowlocks: SELECT locked_row, multi, modes FROM pgrowlocks('multixact_conflict');
164+
locked_row|multi|modes
165+
----------+-----+---------------------------------
166+
(0,1) |t |{"Key Share","For No Key Update"}
167+
(0,2) |t |{"Key Share","For No Key Update"}
168+
(2 rows)
169+
170+
step s1_commit: COMMIT;
171+
172+
starting permutation: s1_begin s1_lcksvpt s1_tuplock4 s2_rowlocks s1_commit
173+
step s1_begin: BEGIN;
174+
step s1_lcksvpt: SELECT * FROM multixact_conflict FOR KEY SHARE; SAVEPOINT s;
175+
a|b
176+
-+-
177+
1|2
178+
3|4
179+
(2 rows)
180+
181+
step s1_tuplock4: SELECT * FROM multixact_conflict FOR UPDATE;
182+
a|b
183+
-+-
184+
1|2
185+
3|4
186+
(2 rows)
187+
188+
step s2_rowlocks: SELECT locked_row, multi, modes FROM pgrowlocks('multixact_conflict');
189+
locked_row|multi|modes
190+
----------+-----+--------------------------
191+
(0,1) |t |{"Key Share","For Update"}
192+
(0,2) |t |{"Key Share","For Update"}
193+
(2 rows)
194+
195+
step s1_commit: COMMIT;
196+
197+
starting permutation: s1_begin s1_lcksvpt s1_updatea s2_rowlocks s1_commit
198+
step s1_begin: BEGIN;
199+
step s1_lcksvpt: SELECT * FROM multixact_conflict FOR KEY SHARE; SAVEPOINT s;
200+
a|b
201+
-+-
202+
1|2
203+
3|4
204+
(2 rows)
205+
206+
step s1_updatea: UPDATE multixact_conflict SET a = 10 WHERE a = 1;
207+
step s2_rowlocks: SELECT locked_row, multi, modes FROM pgrowlocks('multixact_conflict');
208+
locked_row|multi|modes
209+
----------+-----+--------------------
210+
(0,1) |t |{"Key Share",Update}
211+
(0,2) |f |{"For Key Share"}
212+
(2 rows)
213+
214+
step s1_commit: COMMIT;
215+
216+
starting permutation: s1_begin s1_lcksvpt s1_updateb s2_rowlocks s1_commit
217+
step s1_begin: BEGIN;
218+
step s1_lcksvpt: SELECT * FROM multixact_conflict FOR KEY SHARE; SAVEPOINT s;
219+
a|b
220+
-+-
221+
1|2
222+
3|4
223+
(2 rows)
224+
225+
step s1_updateb: UPDATE multixact_conflict SET b = 11 WHERE b = 4;
226+
step s2_rowlocks: SELECT locked_row, multi, modes FROM pgrowlocks('multixact_conflict');
227+
locked_row|multi|modes
228+
----------+-----+-----------------------------
229+
(0,1) |f |{"For Key Share"}
230+
(0,2) |t |{"Key Share","No Key Update"}
231+
(2 rows)
232+
233+
step s1_commit: COMMIT;
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
# Tests for contrib/pgrowlocks
2+
3+
setup {
4+
CREATETABLEmultixact_conflict (aintPRIMARYKEY,bint);
5+
INSERTINTOmultixact_conflictVALUES (1,2), (3,4);
6+
}
7+
8+
teardown {
9+
DROPTABLEmultixact_conflict;
10+
}
11+
12+
sessions1
13+
steps1_begin {BEGIN; }
14+
steps1_tuplock1 {SELECT*FROMmultixact_conflictFORKEYSHARE; }
15+
steps1_tuplock2 {SELECT*FROMmultixact_conflictFORSHARE; }
16+
steps1_tuplock3 {SELECT*FROMmultixact_conflictFORNOKEYUPDATE; }
17+
steps1_tuplock4 {SELECT*FROMmultixact_conflictFORUPDATE; }
18+
steps1_updatea {UPDATEmultixact_conflictSETa=10WHEREa=1; }
19+
steps1_updateb {UPDATEmultixact_conflictSETb=11WHEREb=4; }
20+
steps1_lcksvpt {SELECT*FROMmultixact_conflictFORKEYSHARE;SAVEPOINTs; }
21+
steps1_commit {COMMIT; }
22+
23+
sessions2
24+
steps2_rowlocks {SELECTlocked_row,multi,modesFROMpgrowlocks('multixact_conflict'); }
25+
26+
permutations1_begins1_tuplock1s2_rowlockss1_commit
27+
permutations1_begins1_tuplock2s2_rowlockss1_commit
28+
permutations1_begins1_tuplock3s2_rowlockss1_commit
29+
permutations1_begins1_tuplock4s2_rowlockss1_commit
30+
permutations1_begins1_updateas2_rowlockss1_commit
31+
permutations1_begins1_updatebs2_rowlockss1_commit
32+
33+
# test multixact cases using savepoints
34+
permutations1_begins1_lcksvpts1_tuplock1s2_rowlockss1_commit
35+
permutations1_begins1_lcksvpts1_tuplock2s2_rowlockss1_commit
36+
permutations1_begins1_lcksvpts1_tuplock3s2_rowlockss1_commit
37+
permutations1_begins1_lcksvpts1_tuplock4s2_rowlockss1_commit
38+
permutations1_begins1_lcksvpts1_updateas2_rowlockss1_commit
39+
permutations1_begins1_lcksvpts1_updatebs2_rowlockss1_commit

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp