]> granicus.if.org Git - postgresql/blob - src/test/regress/sql/combocid.sql
Combine cmin and cmax fields of HeapTupleHeaders into a single field, by
[postgresql] / src / test / regress / sql / combocid.sql
1 --
2 -- Tests for some likely failure cases with combo cmin/cmax mechanism
3 --
4 CREATE TEMP TABLE combocidtest (foobar int);
5
6 BEGIN;
7
8 -- a few dummy ops to push up the CommandId counter
9 SELECT 1;
10 SELECT 1;
11 SELECT 1;
12 SELECT 1;
13 SELECT 1;
14 SELECT 1;
15 SELECT 1;
16 SELECT 1;
17 SELECT 1;
18 SELECT 1;
19
20 INSERT INTO combocidtest VALUES (1);
21 INSERT INTO combocidtest VALUES (2);
22
23 SELECT ctid,cmin,* FROM combocidtest;
24
25 SAVEPOINT s1;
26
27 UPDATE combocidtest SET foobar = foobar + 10;
28
29 -- here we should see only updated tuples
30 SELECT ctid,cmin,* FROM combocidtest;
31
32 ROLLBACK TO s1;
33
34 -- now we should see old tuples, but with combo CIDs starting at 0
35 SELECT ctid,cmin,* FROM combocidtest;
36
37 COMMIT;
38
39 -- combo data is not there anymore, but should still see tuples
40 SELECT ctid,cmin,* FROM combocidtest;
41
42 -- Test combo cids with portals
43 BEGIN;
44
45 INSERT INTO combocidtest VALUES (333);
46
47 DECLARE c CURSOR FOR SELECT ctid,cmin,* FROM combocidtest;
48
49 DELETE FROM combocidtest;
50
51 FETCH ALL FROM c;
52
53 ROLLBACK;
54
55 SELECT ctid,cmin,* FROM combocidtest;
56
57 -- check behavior with locked tuples
58 BEGIN;
59
60 -- a few dummy ops to push up the CommandId counter
61 SELECT 1;
62 SELECT 1;
63 SELECT 1;
64 SELECT 1;
65 SELECT 1;
66 SELECT 1;
67 SELECT 1;
68 SELECT 1;
69 SELECT 1;
70 SELECT 1;
71
72 INSERT INTO combocidtest VALUES (444);
73
74 SELECT ctid,cmin,* FROM combocidtest;
75
76 SAVEPOINT s1;
77
78 -- this doesn't affect cmin
79 SELECT ctid,cmin,* FROM combocidtest FOR UPDATE;
80 SELECT ctid,cmin,* FROM combocidtest;
81
82 -- but this does
83 UPDATE combocidtest SET foobar = foobar + 10;
84
85 SELECT ctid,cmin,* FROM combocidtest;
86
87 ROLLBACK TO s1;
88
89 SELECT ctid,cmin,* FROM combocidtest;
90
91 COMMIT;
92
93 SELECT ctid,cmin,* FROM combocidtest;