]> granicus.if.org Git - postgresql/blob - src/test/regress/expected/combocid.out
Teach the system how to use hashing for UNION. (INTERSECT/EXCEPT will follow,
[postgresql] / src / test / regress / expected / combocid.out
1 --
2 -- Tests for some likely failure cases with combo cmin/cmax mechanism
3 --
4 CREATE TEMP TABLE combocidtest (foobar int);
5 BEGIN;
6 -- a few dummy ops to push up the CommandId counter
7 INSERT INTO combocidtest SELECT 1 LIMIT 0;
8 INSERT INTO combocidtest SELECT 1 LIMIT 0;
9 INSERT INTO combocidtest SELECT 1 LIMIT 0;
10 INSERT INTO combocidtest SELECT 1 LIMIT 0;
11 INSERT INTO combocidtest SELECT 1 LIMIT 0;
12 INSERT INTO combocidtest SELECT 1 LIMIT 0;
13 INSERT INTO combocidtest SELECT 1 LIMIT 0;
14 INSERT INTO combocidtest SELECT 1 LIMIT 0;
15 INSERT INTO combocidtest SELECT 1 LIMIT 0;
16 INSERT INTO combocidtest SELECT 1 LIMIT 0;
17 INSERT INTO combocidtest VALUES (1);
18 INSERT INTO combocidtest VALUES (2);
19 SELECT ctid,cmin,* FROM combocidtest;
20  ctid  | cmin | foobar 
21 -------+------+--------
22  (0,1) |   10 |      1
23  (0,2) |   11 |      2
24 (2 rows)
25
26 SAVEPOINT s1;
27 UPDATE combocidtest SET foobar = foobar + 10;
28 -- here we should see only updated tuples
29 SELECT ctid,cmin,* FROM combocidtest;
30  ctid  | cmin | foobar 
31 -------+------+--------
32  (0,3) |   12 |     11
33  (0,4) |   12 |     12
34 (2 rows)
35
36 ROLLBACK TO s1;
37 -- now we should see old tuples, but with combo CIDs starting at 0
38 SELECT ctid,cmin,* FROM combocidtest;
39  ctid  | cmin | foobar 
40 -------+------+--------
41  (0,1) |    0 |      1
42  (0,2) |    1 |      2
43 (2 rows)
44
45 COMMIT;
46 -- combo data is not there anymore, but should still see tuples
47 SELECT ctid,cmin,* FROM combocidtest;
48  ctid  | cmin | foobar 
49 -------+------+--------
50  (0,1) |    0 |      1
51  (0,2) |    1 |      2
52 (2 rows)
53
54 -- Test combo cids with portals
55 BEGIN;
56 INSERT INTO combocidtest VALUES (333);
57 DECLARE c CURSOR FOR SELECT ctid,cmin,* FROM combocidtest;
58 DELETE FROM combocidtest;
59 FETCH ALL FROM c;
60  ctid  | cmin | foobar 
61 -------+------+--------
62  (0,1) |    1 |      1
63  (0,2) |    1 |      2
64  (0,5) |    0 |    333
65 (3 rows)
66
67 ROLLBACK;
68 SELECT ctid,cmin,* FROM combocidtest;
69  ctid  | cmin | foobar 
70 -------+------+--------
71  (0,1) |    1 |      1
72  (0,2) |    1 |      2
73 (2 rows)
74
75 -- check behavior with locked tuples
76 BEGIN;
77 -- a few dummy ops to push up the CommandId counter
78 INSERT INTO combocidtest SELECT 1 LIMIT 0;
79 INSERT INTO combocidtest SELECT 1 LIMIT 0;
80 INSERT INTO combocidtest SELECT 1 LIMIT 0;
81 INSERT INTO combocidtest SELECT 1 LIMIT 0;
82 INSERT INTO combocidtest SELECT 1 LIMIT 0;
83 INSERT INTO combocidtest SELECT 1 LIMIT 0;
84 INSERT INTO combocidtest SELECT 1 LIMIT 0;
85 INSERT INTO combocidtest SELECT 1 LIMIT 0;
86 INSERT INTO combocidtest SELECT 1 LIMIT 0;
87 INSERT INTO combocidtest SELECT 1 LIMIT 0;
88 INSERT INTO combocidtest VALUES (444);
89 SELECT ctid,cmin,* FROM combocidtest;
90  ctid  | cmin | foobar 
91 -------+------+--------
92  (0,1) |    1 |      1
93  (0,2) |    1 |      2
94  (0,6) |   10 |    444
95 (3 rows)
96
97 SAVEPOINT s1;
98 -- this doesn't affect cmin
99 SELECT ctid,cmin,* FROM combocidtest FOR UPDATE;
100  ctid  | cmin | foobar 
101 -------+------+--------
102  (0,1) |    1 |      1
103  (0,2) |    1 |      2
104  (0,6) |   10 |    444
105 (3 rows)
106
107 SELECT ctid,cmin,* FROM combocidtest;
108  ctid  | cmin | foobar 
109 -------+------+--------
110  (0,1) |    1 |      1
111  (0,2) |    1 |      2
112  (0,6) |   10 |    444
113 (3 rows)
114
115 -- but this does
116 UPDATE combocidtest SET foobar = foobar + 10;
117 SELECT ctid,cmin,* FROM combocidtest;
118  ctid  | cmin | foobar 
119 -------+------+--------
120  (0,7) |   12 |     11
121  (0,8) |   12 |     12
122  (0,9) |   12 |    454
123 (3 rows)
124
125 ROLLBACK TO s1;
126 SELECT ctid,cmin,* FROM combocidtest;
127  ctid  | cmin | foobar 
128 -------+------+--------
129  (0,1) |   12 |      1
130  (0,2) |   12 |      2
131  (0,6) |    0 |    444
132 (3 rows)
133
134 COMMIT;
135 SELECT ctid,cmin,* FROM combocidtest;
136  ctid  | cmin | foobar 
137 -------+------+--------
138  (0,1) |   12 |      1
139  (0,2) |   12 |      2
140  (0,6) |    0 |    444
141 (3 rows)
142