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

Commit 964ca6b

Browse files
committed
[test] [refer #PGPRO-2887] Inherit tests for global temp tables.
1 parent 33975bb commit 964ca6b

File tree

2 files changed

+290
-0
lines changed

2 files changed

+290
-0
lines changed
Lines changed: 217 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,217 @@
1+
Parsed test spec with 2 sessions
2+
3+
starting permutation: s1_insert_p s1_insert_c s2_insert_c s1_select_p s1_select_c s2_select_p s2_select_c
4+
step s1_insert_p: INSERT INTO inh_global_parent VALUES (1), (2);
5+
step s1_insert_c: INSERT INTO inh_global_temp_child_s1 VALUES (3), (4);
6+
step s2_insert_c: INSERT INTO inh_global_temp_child_s2 VALUES (5), (6);
7+
step s1_select_p: SELECT a FROM inh_global_parent;
8+
a
9+
10+
1
11+
2
12+
3
13+
4
14+
step s1_select_c: SELECT a FROM inh_global_temp_child_s1;
15+
a
16+
17+
3
18+
4
19+
step s2_select_p: SELECT a FROM inh_global_parent;
20+
a
21+
22+
1
23+
2
24+
5
25+
6
26+
step s2_select_c: SELECT a FROM inh_global_temp_child_s2;
27+
a
28+
29+
5
30+
6
31+
32+
starting permutation: s1_insert_p s1_insert_c s2_insert_c s1_update_p s1_update_c s1_select_p s1_select_c s2_select_p s2_select_c
33+
step s1_insert_p: INSERT INTO inh_global_parent VALUES (1), (2);
34+
step s1_insert_c: INSERT INTO inh_global_temp_child_s1 VALUES (3), (4);
35+
step s2_insert_c: INSERT INTO inh_global_temp_child_s2 VALUES (5), (6);
36+
step s1_update_p: UPDATE inh_global_parent SET a = 11 WHERE a = 1;
37+
step s1_update_c: UPDATE inh_global_parent SET a = 13 WHERE a IN (3, 5);
38+
step s1_select_p: SELECT a FROM inh_global_parent;
39+
a
40+
41+
2
42+
11
43+
4
44+
13
45+
step s1_select_c: SELECT a FROM inh_global_temp_child_s1;
46+
a
47+
48+
4
49+
13
50+
step s2_select_p: SELECT a FROM inh_global_parent;
51+
a
52+
53+
2
54+
11
55+
5
56+
6
57+
step s2_select_c: SELECT a FROM inh_global_temp_child_s2;
58+
a
59+
60+
5
61+
6
62+
63+
starting permutation: s1_insert_p s1_insert_c s2_insert_c s2_update_c s1_select_p s1_select_c s2_select_p s2_select_c
64+
step s1_insert_p: INSERT INTO inh_global_parent VALUES (1), (2);
65+
step s1_insert_c: INSERT INTO inh_global_temp_child_s1 VALUES (3), (4);
66+
step s2_insert_c: INSERT INTO inh_global_temp_child_s2 VALUES (5), (6);
67+
step s2_update_c: UPDATE inh_global_parent SET a = 15 WHERE a IN (3, 5);
68+
step s1_select_p: SELECT a FROM inh_global_parent;
69+
a
70+
71+
1
72+
2
73+
3
74+
4
75+
step s1_select_c: SELECT a FROM inh_global_temp_child_s1;
76+
a
77+
78+
3
79+
4
80+
step s2_select_p: SELECT a FROM inh_global_parent;
81+
a
82+
83+
1
84+
2
85+
6
86+
15
87+
step s2_select_c: SELECT a FROM inh_global_temp_child_s2;
88+
a
89+
90+
6
91+
15
92+
93+
starting permutation: s1_insert_p s1_insert_c s2_insert_c s1_delete_p s1_delete_c s1_select_p s1_select_c s2_select_p s2_select_c
94+
step s1_insert_p: INSERT INTO inh_global_parent VALUES (1), (2);
95+
step s1_insert_c: INSERT INTO inh_global_temp_child_s1 VALUES (3), (4);
96+
step s2_insert_c: INSERT INTO inh_global_temp_child_s2 VALUES (5), (6);
97+
step s1_delete_p: DELETE FROM inh_global_parent WHERE a = 2;
98+
step s1_delete_c: DELETE FROM inh_global_parent WHERE a IN (4, 6);
99+
step s1_select_p: SELECT a FROM inh_global_parent;
100+
a
101+
102+
1
103+
3
104+
step s1_select_c: SELECT a FROM inh_global_temp_child_s1;
105+
a
106+
107+
3
108+
step s2_select_p: SELECT a FROM inh_global_parent;
109+
a
110+
111+
1
112+
5
113+
6
114+
step s2_select_c: SELECT a FROM inh_global_temp_child_s2;
115+
a
116+
117+
5
118+
6
119+
120+
starting permutation: s1_insert_p s1_insert_c s2_insert_c s2_delete_c s1_select_p s1_select_c s2_select_p s2_select_c
121+
step s1_insert_p: INSERT INTO inh_global_parent VALUES (1), (2);
122+
step s1_insert_c: INSERT INTO inh_global_temp_child_s1 VALUES (3), (4);
123+
step s2_insert_c: INSERT INTO inh_global_temp_child_s2 VALUES (5), (6);
124+
step s2_delete_c: DELETE FROM inh_global_parent WHERE a IN (4, 6);
125+
step s1_select_p: SELECT a FROM inh_global_parent;
126+
a
127+
128+
1
129+
2
130+
3
131+
4
132+
step s1_select_c: SELECT a FROM inh_global_temp_child_s1;
133+
a
134+
135+
3
136+
4
137+
step s2_select_p: SELECT a FROM inh_global_parent;
138+
a
139+
140+
1
141+
2
142+
5
143+
step s2_select_c: SELECT a FROM inh_global_temp_child_s2;
144+
a
145+
146+
5
147+
148+
starting permutation: s1_insert_p s1_insert_c s2_insert_c s1_truncate_p s1_select_p s1_select_c s2_select_p s2_select_c
149+
step s1_insert_p: INSERT INTO inh_global_parent VALUES (1), (2);
150+
step s1_insert_c: INSERT INTO inh_global_temp_child_s1 VALUES (3), (4);
151+
step s2_insert_c: INSERT INTO inh_global_temp_child_s2 VALUES (5), (6);
152+
step s1_truncate_p: TRUNCATE inh_global_parent;
153+
step s1_select_p: SELECT a FROM inh_global_parent;
154+
a
155+
156+
step s1_select_c: SELECT a FROM inh_global_temp_child_s1;
157+
a
158+
159+
step s2_select_p: SELECT a FROM inh_global_parent;
160+
a
161+
162+
5
163+
6
164+
step s2_select_c: SELECT a FROM inh_global_temp_child_s2;
165+
a
166+
167+
5
168+
6
169+
170+
starting permutation: s1_insert_p s1_insert_c s2_insert_c s2_truncate_p s1_select_p s1_select_c s2_select_p s2_select_c
171+
step s1_insert_p: INSERT INTO inh_global_parent VALUES (1), (2);
172+
step s1_insert_c: INSERT INTO inh_global_temp_child_s1 VALUES (3), (4);
173+
step s2_insert_c: INSERT INTO inh_global_temp_child_s2 VALUES (5), (6);
174+
step s2_truncate_p: TRUNCATE inh_global_parent;
175+
step s1_select_p: SELECT a FROM inh_global_parent;
176+
a
177+
178+
3
179+
4
180+
step s1_select_c: SELECT a FROM inh_global_temp_child_s1;
181+
a
182+
183+
3
184+
4
185+
step s2_select_p: SELECT a FROM inh_global_parent;
186+
a
187+
188+
step s2_select_c: SELECT a FROM inh_global_temp_child_s2;
189+
a
190+
191+
192+
starting permutation: s1_insert_p s1_insert_c s2_insert_c s1_begin s1_truncate_p s2_select_p s1_commit
193+
step s1_insert_p: INSERT INTO inh_global_parent VALUES (1), (2);
194+
step s1_insert_c: INSERT INTO inh_global_temp_child_s1 VALUES (3), (4);
195+
step s2_insert_c: INSERT INTO inh_global_temp_child_s2 VALUES (5), (6);
196+
step s1_begin: BEGIN;
197+
step s1_truncate_p: TRUNCATE inh_global_parent;
198+
step s2_select_p: SELECT a FROM inh_global_parent; <waiting ...>
199+
step s1_commit: COMMIT;
200+
step s2_select_p: <... completed>
201+
a
202+
203+
5
204+
6
205+
206+
starting permutation: s1_insert_p s1_insert_c s2_insert_c s1_begin s1_truncate_p s2_select_c s1_commit
207+
step s1_insert_p: INSERT INTO inh_global_parent VALUES (1), (2);
208+
step s1_insert_c: INSERT INTO inh_global_temp_child_s1 VALUES (3), (4);
209+
step s2_insert_c: INSERT INTO inh_global_temp_child_s2 VALUES (5), (6);
210+
step s1_begin: BEGIN;
211+
step s1_truncate_p: TRUNCATE inh_global_parent;
212+
step s2_select_c: SELECT a FROM inh_global_temp_child_s2;
213+
a
214+
215+
5
216+
6
217+
step s1_commit: COMMIT;
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
# This is a copy of the inherit-temp test with little changes for global temporary tables.
2+
#
3+
4+
setup
5+
{
6+
CREATE TABLE inh_global_parent (a int);
7+
}
8+
9+
teardown
10+
{
11+
DROP TABLE inh_global_parent;
12+
}
13+
14+
# Session 1 executes actions which act directly on both the parent and
15+
# its child. Abbreviation "c" is used for queries working on the child
16+
# and "p" on the parent.
17+
session "s1"
18+
setup
19+
{
20+
CREATE GLOBAL TEMPORARY TABLE inh_global_temp_child_s1 () INHERITS (inh_global_parent);
21+
}
22+
step "s1_begin" { BEGIN; }
23+
step "s1_truncate_p" { TRUNCATE inh_global_parent; }
24+
step "s1_select_p" { SELECT a FROM inh_global_parent; }
25+
step "s1_select_c" { SELECT a FROM inh_global_temp_child_s1; }
26+
step "s1_insert_p" { INSERT INTO inh_global_parent VALUES (1), (2); }
27+
step "s1_insert_c" { INSERT INTO inh_global_temp_child_s1 VALUES (3), (4); }
28+
step "s1_update_p" { UPDATE inh_global_parent SET a = 11 WHERE a = 1; }
29+
step "s1_update_c" { UPDATE inh_global_parent SET a = 13 WHERE a IN (3, 5); }
30+
step "s1_delete_p" { DELETE FROM inh_global_parent WHERE a = 2; }
31+
step "s1_delete_c" { DELETE FROM inh_global_parent WHERE a IN (4, 6); }
32+
step "s1_commit" { COMMIT; }
33+
teardown
34+
{
35+
DROP TABLE inh_global_temp_child_s1;
36+
}
37+
38+
# Session 2 executes actions on the parent which act only on the child.
39+
session "s2"
40+
setup
41+
{
42+
CREATE GLOBAL TEMPORARY TABLE inh_global_temp_child_s2 () INHERITS (inh_global_parent);
43+
}
44+
step "s2_truncate_p" { TRUNCATE inh_global_parent; }
45+
step "s2_select_p" { SELECT a FROM inh_global_parent; }
46+
step "s2_select_c" { SELECT a FROM inh_global_temp_child_s2; }
47+
step "s2_insert_c" { INSERT INTO inh_global_temp_child_s2 VALUES (5), (6); }
48+
step "s2_update_c" { UPDATE inh_global_parent SET a = 15 WHERE a IN (3, 5); }
49+
step "s2_delete_c" { DELETE FROM inh_global_parent WHERE a IN (4, 6); }
50+
teardown
51+
{
52+
DROP TABLE inh_global_temp_child_s2;
53+
}
54+
55+
# Check INSERT behavior across sessions
56+
permutation "s1_insert_p" "s1_insert_c" "s2_insert_c" "s1_select_p" "s1_select_c" "s2_select_p" "s2_select_c"
57+
58+
# Check UPDATE behavior across sessions
59+
permutation "s1_insert_p" "s1_insert_c" "s2_insert_c" "s1_update_p" "s1_update_c" "s1_select_p" "s1_select_c" "s2_select_p" "s2_select_c"
60+
permutation "s1_insert_p" "s1_insert_c" "s2_insert_c" "s2_update_c" "s1_select_p" "s1_select_c" "s2_select_p" "s2_select_c"
61+
62+
# Check DELETE behavior across sessions
63+
permutation "s1_insert_p" "s1_insert_c" "s2_insert_c" "s1_delete_p" "s1_delete_c" "s1_select_p" "s1_select_c" "s2_select_p" "s2_select_c"
64+
permutation "s1_insert_p" "s1_insert_c" "s2_insert_c" "s2_delete_c" "s1_select_p" "s1_select_c" "s2_select_p" "s2_select_c"
65+
66+
# Check TRUNCATE behavior across sessions
67+
permutation "s1_insert_p" "s1_insert_c" "s2_insert_c" "s1_truncate_p" "s1_select_p" "s1_select_c" "s2_select_p" "s2_select_c"
68+
permutation "s1_insert_p" "s1_insert_c" "s2_insert_c" "s2_truncate_p" "s1_select_p" "s1_select_c" "s2_select_p" "s2_select_c"
69+
70+
# TRUNCATE on a parent tree does not block access to temporary child relation
71+
# of another session, and blocks when scanning the parent.
72+
permutation "s1_insert_p" "s1_insert_c" "s2_insert_c" "s1_begin" "s1_truncate_p" "s2_select_p" "s1_commit"
73+
permutation "s1_insert_p" "s1_insert_c" "s2_insert_c" "s1_begin" "s1_truncate_p" "s2_select_c" "s1_commit"

0 commit comments

Comments
 (0)