Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 4e58860

Browse files
committed
We continue the debugging of the pg_set_backend_snapshot() function
1 parent 5350ce2 commit 4e58860

File tree

3 files changed

+229
-2
lines changed

3 files changed

+229
-2
lines changed

src/test/isolation/expected/snapfs_vacuum_table.out

Lines changed: 120 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,7 @@ step s1_sel:
174174

175175
cnt avg id name
176176

177-
67519 43308.5968838401566 000566
177+
85957 40241.7822283235566 000566
178178
step s2_sel:
179179
select * from ( select count(*) as cnt, avg( id )::float as avg from t1 ) as part1 left join ( select * from t1 where id = 566 ) as part2 on ( 1 = 1 );
180180

@@ -192,7 +192,7 @@ step s1_sel:
192192

193193
cnt avg id name
194194

195-
46077 37386.2242333485
195+
42076 49622.9888059701
196196
step s2_sel:
197197
select * from ( select count(*) as cnt, avg( id )::float as avg from t1 ) as part1 left join ( select * from t1 where id = 566 ) as part2 on ( 1 = 1 );
198198

@@ -223,6 +223,124 @@ step s1_sb_0:
223223
pg_set_backend_snapshot
224224

225225

226+
step s1_sel:
227+
select * from ( select count(*) as cnt, avg( id )::float as avg from t1 ) as part1 left join ( select * from t1 where id = 566 ) as part2 on ( 1 = 1 );
228+
229+
cnt avg id name
230+
231+
100000 50000.5 566 000566_new_upd
232+
step s2_sel:
233+
select * from ( select count(*) as cnt, avg( id )::float as avg from t1 ) as part1 left join ( select * from t1 where id = 566 ) as part2 on ( 1 = 1 );
234+
235+
cnt avg id name
236+
237+
100000 50000.5 566 000566_new_upd
238+
239+
starting permutation: s3_mk_sn s1_del s3_mk_sn s2_v s1_ins s3_mk_sn s1_upd s1_sel s2_sel s2_sb_1 s1_sel s2_sel s2_sb_2 s1_sel s2_sel s2_sb_3 s1_sel s2_sel s2_sb_0 s1_sel s2_sel
240+
step s3_mk_sn:
241+
select 1 from pg_make_snapshot();
242+
243+
?column?
244+
245+
1
246+
step s1_del:
247+
delete from t1;
248+
249+
step s3_mk_sn:
250+
select 1 from pg_make_snapshot();
251+
252+
?column?
253+
254+
1
255+
step s2_v:
256+
vacuum t1;
257+
258+
step s1_ins:
259+
insert into t1
260+
select generate_series as id, trim( to_char( generate_series, '000000' ) ) || '_new' as "name"
261+
from generate_series( 1, 100000 );
262+
263+
step s3_mk_sn:
264+
select 1 from pg_make_snapshot();
265+
266+
?column?
267+
268+
1
269+
step s1_upd:
270+
update t1 set name = name || '_upd';
271+
272+
step s1_sel:
273+
select * from ( select count(*) as cnt, avg( id )::float as avg from t1 ) as part1 left join ( select * from t1 where id = 566 ) as part2 on ( 1 = 1 );
274+
275+
cnt avg id name
276+
277+
100000 50000.5 566 000566_new_upd
278+
step s2_sel:
279+
select * from ( select count(*) as cnt, avg( id )::float as avg from t1 ) as part1 left join ( select * from t1 where id = 566 ) as part2 on ( 1 = 1 );
280+
281+
cnt avg id name
282+
283+
100000 50000.5 566 000566_new_upd
284+
step s2_sb_1:
285+
select pg_set_backend_snapshot( ( select recent_snapshot - 2 from pg_control_snapshot() ) );
286+
287+
pg_set_backend_snapshot
288+
289+
290+
step s1_sel:
291+
select * from ( select count(*) as cnt, avg( id )::float as avg from t1 ) as part1 left join ( select * from t1 where id = 566 ) as part2 on ( 1 = 1 );
292+
293+
cnt avg id name
294+
295+
100000 50000.5 566 000566_new_upd
296+
step s2_sel:
297+
select * from ( select count(*) as cnt, avg( id )::float as avg from t1 ) as part1 left join ( select * from t1 where id = 566 ) as part2 on ( 1 = 1 );
298+
299+
cnt avg id name
300+
301+
64979 41554.1216392988566 000566
302+
step s2_sb_2:
303+
select pg_set_backend_snapshot( ( select recent_snapshot - 1 from pg_control_snapshot() ) );
304+
305+
pg_set_backend_snapshot
306+
307+
308+
step s1_sel:
309+
select * from ( select count(*) as cnt, avg( id )::float as avg from t1 ) as part1 left join ( select * from t1 where id = 566 ) as part2 on ( 1 = 1 );
310+
311+
cnt avg id name
312+
313+
100000 50000.5 566 000566_new_upd
314+
step s2_sel:
315+
select * from ( select count(*) as cnt, avg( id )::float as avg from t1 ) as part1 left join ( select * from t1 where id = 566 ) as part2 on ( 1 = 1 );
316+
317+
cnt avg id name
318+
319+
43646 57474.6366906475
320+
step s2_sb_3:
321+
select pg_set_backend_snapshot( ( select recent_snapshot from pg_control_snapshot() ) );
322+
323+
pg_set_backend_snapshot
324+
325+
326+
step s1_sel:
327+
select * from ( select count(*) as cnt, avg( id )::float as avg from t1 ) as part1 left join ( select * from t1 where id = 566 ) as part2 on ( 1 = 1 );
328+
329+
cnt avg id name
330+
331+
100000 50000.5 566 000566_new_upd
332+
step s2_sel:
333+
select * from ( select count(*) as cnt, avg( id )::float as avg from t1 ) as part1 left join ( select * from t1 where id = 566 ) as part2 on ( 1 = 1 );
334+
335+
cnt avg id name
336+
337+
100000 50000.5 566 000566_new
338+
step s2_sb_0:
339+
select pg_set_backend_snapshot( 0 );
340+
341+
pg_set_backend_snapshot
342+
343+
226344
step s1_sel:
227345
select * from ( select count(*) as cnt, avg( id )::float as avg from t1 ) as part1 left join ( select * from t1 where id = 566 ) as part2 on ( 1 = 1 );
228346

src/test/isolation/specs/snapfs_vacuum_table.spec

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,5 +87,6 @@ step "s3_rc_sn_1" {
8787

8888
permutation "s3_mk_sn" "s1_del" "s3_mk_sn" "s2_v" "s1_ins" "s3_mk_sn" "s1_upd" "s1_sel" "s2_sel" "s3_sw_1" "s1_sel" "s2_sel" "s3_sw_2" "s1_sel" "s2_sel" "s3_sw_3" "s1_sel" "s2_sel" "s3_sw_0" "s1_sel" "s2_sel"
8989
permutation "s3_mk_sn" "s1_del" "s3_mk_sn" "s2_v" "s1_ins" "s3_mk_sn" "s1_upd" "s1_sel" "s2_sel" "s1_sb_1" "s1_sel" "s2_sel" "s1_sb_2" "s1_sel" "s2_sel" "s1_sb_3" "s1_sel" "s2_sel" "s1_sb_0" "s1_sel" "s2_sel"
90+
permutation "s3_mk_sn" "s1_del" "s3_mk_sn" "s2_v" "s1_ins" "s3_mk_sn" "s1_upd" "s1_sel" "s2_sel" "s2_sb_1" "s1_sel" "s2_sel" "s2_sb_2" "s1_sel" "s2_sel" "s2_sb_3" "s1_sel" "s2_sel" "s2_sb_0" "s1_sel" "s2_sel"
9091
permutation "s3_mk_sn" "s1_del" "s3_mk_sn" "s2_v" "s1_ins" "s3_mk_sn" "s1_upd" "s1_sel" "s2_sel" "s3_rc_sn" "s1_sel" "s2_sel" "s3_rc_sn" "s1_sel" "s2_sel" "s3_rc_sn" "s1_sel" "s2_sel" "s3_mk_sn"
9192
permutation "s3_mk_sn" "s1_del" "s3_mk_sn" "s2_v" "s1_ins" "s3_mk_sn" "s1_upd" "s1_sel" "s2_sel" "s3_rc_sn_1" "s1_sel" "s2_sel" "s3_mk_sn"
Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
# Vacuum checks
2+
# We are using three backends: read-write, read, snapshot.
3+
4+
setup {
5+
create table t1 as
6+
select generate_series as id, trim( to_char( generate_series, '000000' ) ) as "name"
7+
from generate_series( 1, 100000 );
8+
alter table t1 add constraint t1_pk PRIMARY KEY ( id );
9+
}
10+
11+
teardown {
12+
select pg_switch_to_snapshot( 0 );
13+
select pg_remove_snapshot( ( select recent_snapshot from pg_control_snapshot() ) );
14+
DROP TABLE t1 CASCADE;
15+
}
16+
17+
session "s1"
18+
step "s1_cr_v1" {
19+
create or replace view v1 as ( select *, 'v1' as "view" from ( select count(*) as cnt, avg( id )::float as avg from t1 ) as part1 left join ( select * from t1 where id between 564 and 568 ) as part2 on ( 1 = 1 ) );
20+
}
21+
step "s1_cr_v2" {
22+
create or replace view v2 as ( select *, 'v2' as "view" from ( select count(*) as cnt, avg( id )::float as avg from t1 ) as part1 left join ( select * from t1 where id between 1564 and 1568 ) as part2 on ( 1 = 1 ) )
23+
}
24+
step "s1_d_v1" {
25+
drop view v1;
26+
}
27+
step "s1_r_v2" {
28+
create or replace view v2 as ( select *, 'v2_replaced' as "view" from ( select count(*) as cnt, avg( id )::float as avg from t1 ) as part1 left join ( select * from t1 where id between 2564 and 2568 ) as part2 on ( 1 = 1 ) )
29+
}
30+
step "s1_sel_v1" {
31+
select * from v1 order by id;
32+
}
33+
step "s1_sel_v2" {
34+
select * from v2 order by id;
35+
}
36+
step "s1_ins" {
37+
insert into t1
38+
select generate_series as id, trim( to_char( generate_series, '000000' ) ) || '_new' as "name"
39+
from generate_series( 100001, 150000 );
40+
}
41+
step "s1_upd" {
42+
update t1 set name = name || '_upd' where id % 4 = 0;
43+
}
44+
step "s1_del" {
45+
delete from t1 where id % 4 = 1;
46+
}
47+
step "s1_sb_0" {
48+
select pg_set_backend_snapshot( 0 );
49+
}
50+
step "s1_sb_1" {
51+
select pg_set_backend_snapshot( ( select recent_snapshot - 2 from pg_control_snapshot() ) );
52+
}
53+
step "s1_sb_2" {
54+
select pg_set_backend_snapshot( ( select recent_snapshot - 1 from pg_control_snapshot() ) );
55+
}
56+
step "s1_sb_3" {
57+
select pg_set_backend_snapshot( ( select recent_snapshot from pg_control_snapshot() ) );
58+
}
59+
60+
session "s2"
61+
step "s2_sel_v1" {
62+
select * from v1 order by id;
63+
}
64+
step "s2_sel_v2" {
65+
select * from v2 order by id;
66+
}
67+
step "s2_v" {
68+
vacuum t1;
69+
}
70+
step "s2_sb_0" {
71+
select pg_set_backend_snapshot( 0 );
72+
}
73+
step "s2_sb_1" {
74+
select pg_set_backend_snapshot( ( select recent_snapshot - 2 from pg_control_snapshot() ) );
75+
}
76+
step "s2_sb_2" {
77+
select pg_set_backend_snapshot( ( select recent_snapshot - 1 from pg_control_snapshot() ) );
78+
}
79+
step "s2_sb_3" {
80+
select pg_set_backend_snapshot( ( select recent_snapshot from pg_control_snapshot() ) );
81+
}
82+
83+
session "s3"
84+
step "s3_mk_sn" {
85+
select 1 from pg_make_snapshot();
86+
}
87+
step "s3_sw_0" {
88+
select pg_switch_to_snapshot( 0 );
89+
}
90+
step "s3_sw_1" {
91+
select pg_switch_to_snapshot( ( select recent_snapshot - 2 from pg_control_snapshot() ) );
92+
}
93+
step "s3_sw_2" {
94+
select pg_switch_to_snapshot( ( select recent_snapshot - 1 from pg_control_snapshot() ) );
95+
}
96+
step "s3_sw_3" {
97+
select pg_switch_to_snapshot( ( select recent_snapshot from pg_control_snapshot() ) );
98+
}
99+
step "s3_rc_sn" {
100+
select pg_recover_to_snapshot( ( select recent_snapshot from pg_control_snapshot() ) );
101+
}
102+
step "s3_rc_sn_1" {
103+
select pg_recover_to_snapshot( ( select recent_snapshot - 2 from pg_control_snapshot() ) );
104+
}
105+
106+
#permutation "s3_mk_sn" "s1_cr_v1" "s1_ins" "s3_mk_sn" "s1_d_v1" "s1_upd" "s1_cr_v2" "s3_mk_sn" "s1_r_v2" "s1_del" "s3_sw_1" "s1_cr_v1" "s1_sel_v1" "s1_sel_v2" "s2_sel_v1" "s2_sel_v2" "s3_sw_2" "s1_sel_v1" "s1_sel_v2" "s2_sel_v1" "s2_sel_v2" "s3_sw_3" "s1_sel_v1" "s1_sel_v2" "s2_sel_v1" "s2_sel_v2" "s3_sw_0" "s1_sel_v1" "s1_sel_v2" "s2_sel_v1" "s2_sel_v2"
107+
permutation "s3_mk_sn" "s1_cr_v1" "s1_ins" "s3_mk_sn" "s1_d_v1" "s1_upd" "s1_cr_v2" "s3_mk_sn" "s1_r_v2" "s1_del" "s1_sb_1" "s1_cr_v1" "s1_sel_v1" "s1_sel_v2" "s2_sel_v1" "s2_sel_v2" "s1_sb_2" "s1_sel_v1" "s1_sel_v2" "s2_sel_v1" "s2_sel_v2" "s1_sb_3" "s1_sel_v1" "s1_sel_v2" "s2_sel_v1" "s2_sel_v2" "s1_sb_0" "s1_sel_v1" "s1_sel_v2" "s2_sel_v1" "s2_sel_v2"
108+
#permutation "s3_mk_sn" "s1_cr_v1" "s1_ins" "s3_mk_sn" "s1_d_v1" "s1_upd" "s1_cr_v2" "s3_mk_sn" "s1_r_v2" "s1_del" "s2_sb_1" "s1_cr_v1" "s1_sel_v1" "s1_sel_v2" "s2_sel_v1" "s2_sel_v2" "s2_sb_2" "s1_sel_v1" "s1_sel_v2" "s2_sel_v1" "s2_sel_v2" "s2_sb_3" "s1_sel_v1" "s1_sel_v2" "s2_sel_v1" "s2_sel_v2" "s2_sb_0" "s1_sel_v1" "s1_sel_v2" "s2_sel_v1" "s2_sel_v2"

0 commit comments

Comments
 (0)