Consistently use "superuser" instead of "super user"
[pgsql.git] / src / test / regress / expected / combocid.out
blob2bf080b2ae26036372f85b3b644cf9b0373bd486
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
143 -- test for bug reported in
144 -- CABRT9RC81YUf1=jsmWopcKJEro=VoeG2ou6sPwyOUTx_qteRsg@mail.gmail.com
145 CREATE TABLE IF NOT EXISTS testcase(
146         id int PRIMARY KEY,
147         balance numeric
149 INSERT INTO testcase VALUES (1, 0);
150 BEGIN;
151 SELECT * FROM testcase WHERE testcase.id = 1 FOR UPDATE;
152  id | balance 
153 ----+---------
154   1 |       0
155 (1 row)
157 UPDATE testcase SET balance = balance + 400 WHERE id=1;
158 SAVEPOINT subxact;
159 UPDATE testcase SET balance = balance - 100 WHERE id=1;
160 ROLLBACK TO SAVEPOINT subxact;
161 -- should return one tuple
162 SELECT * FROM testcase WHERE id = 1 FOR UPDATE;
163  id | balance 
164 ----+---------
165   1 |     400
166 (1 row)
168 ROLLBACK;
169 DROP TABLE testcase;