Fix xslt_process() to ensure that it inserts a NULL terminator after the
[PostgreSQL.git] / src / test / regress / expected / prepared_xacts_1.out
blob991a11bdfa96468f534fce4bce00981ff60ae5da
1 --
2 -- PREPARED TRANSACTIONS (two-phase commit)
3 --
4 -- We can't readily test persistence of prepared xacts within the
5 -- regression script framework, unfortunately.  Note that a crash
6 -- isn't really needed ... stopping and starting the postmaster would
7 -- be enough, but we can't even do that here.
8 -- create a simple table that we'll use in the tests
9 CREATE TABLE pxtest1 (foobar VARCHAR(10));
10 INSERT INTO pxtest1 VALUES ('aaa');
11 -- Test PREPARE TRANSACTION
12 BEGIN;
13 UPDATE pxtest1 SET foobar = 'bbb' WHERE foobar = 'aaa';
14 SELECT * FROM pxtest1;
15  foobar 
16 --------
17  bbb
18 (1 row)
20 PREPARE TRANSACTION 'foo1';
21 ERROR:  prepared transactions are disabled
22 HINT:  Set max_prepared_transactions to a nonzero value.
23 SELECT * FROM pxtest1;
24  foobar 
25 --------
26  aaa
27 (1 row)
29 -- Test pg_prepared_xacts system view
30 SELECT gid FROM pg_prepared_xacts;
31  gid 
32 -----
33 (0 rows)
35 -- Test ROLLBACK PREPARED
36 ROLLBACK PREPARED 'foo1';
37 ERROR:  prepared transaction with identifier "foo1" does not exist
38 SELECT * FROM pxtest1;
39  foobar 
40 --------
41  aaa
42 (1 row)
44 SELECT gid FROM pg_prepared_xacts;
45  gid 
46 -----
47 (0 rows)
49 -- Test COMMIT PREPARED
50 BEGIN;
51 INSERT INTO pxtest1 VALUES ('ddd');
52 SELECT * FROM pxtest1;
53  foobar 
54 --------
55  aaa
56  ddd
57 (2 rows)
59 PREPARE TRANSACTION 'foo2';
60 ERROR:  prepared transactions are disabled
61 HINT:  Set max_prepared_transactions to a nonzero value.
62 SELECT * FROM pxtest1;
63  foobar 
64 --------
65  aaa
66 (1 row)
68 COMMIT PREPARED 'foo2';
69 ERROR:  prepared transaction with identifier "foo2" does not exist
70 SELECT * FROM pxtest1;
71  foobar 
72 --------
73  aaa
74 (1 row)
76 -- Test duplicate gids
77 BEGIN;
78 UPDATE pxtest1 SET foobar = 'eee' WHERE foobar = 'ddd';
79 SELECT * FROM pxtest1;
80  foobar 
81 --------
82  aaa
83 (1 row)
85 PREPARE TRANSACTION 'foo3';
86 ERROR:  prepared transactions are disabled
87 HINT:  Set max_prepared_transactions to a nonzero value.
88 SELECT gid FROM pg_prepared_xacts;
89  gid 
90 -----
91 (0 rows)
93 BEGIN;
94 INSERT INTO pxtest1 VALUES ('fff');
95 SELECT * FROM pxtest1;
96  foobar 
97 --------
98  aaa
99  fff
100 (2 rows)
102 -- This should fail, because the gid foo3 is already in use
103 PREPARE TRANSACTION 'foo3';
104 ERROR:  prepared transactions are disabled
105 HINT:  Set max_prepared_transactions to a nonzero value.
106 SELECT * FROM pxtest1;
107  foobar 
108 --------
109  aaa
110 (1 row)
112 ROLLBACK PREPARED 'foo3';
113 ERROR:  prepared transaction with identifier "foo3" does not exist
114 SELECT * FROM pxtest1;
115  foobar 
116 --------
117  aaa
118 (1 row)
120 -- Clean up
121 DROP TABLE pxtest1;
122 -- Test subtransactions
123 BEGIN;
124   CREATE TABLE pxtest2 (a int);
125   INSERT INTO pxtest2 VALUES (1);
126   SAVEPOINT a;
127     INSERT INTO pxtest2 VALUES (2);
128   ROLLBACK TO a;
129   SAVEPOINT b;
130   INSERT INTO pxtest2 VALUES (3);
131 PREPARE TRANSACTION 'regress-one';
132 ERROR:  prepared transactions are disabled
133 HINT:  Set max_prepared_transactions to a nonzero value.
134 CREATE TABLE pxtest3(fff int);
135 -- Test shared invalidation
136 BEGIN;
137   DROP TABLE pxtest3;
138   CREATE TABLE pxtest4 (a int);
139   INSERT INTO pxtest4 VALUES (1);
140   INSERT INTO pxtest4 VALUES (2);
141   DECLARE foo CURSOR FOR SELECT * FROM pxtest4;
142   -- Fetch 1 tuple, keeping the cursor open
143   FETCH 1 FROM foo;
144  a 
147 (1 row)
149 PREPARE TRANSACTION 'regress-two';
150 ERROR:  prepared transactions are disabled
151 HINT:  Set max_prepared_transactions to a nonzero value.
152 -- No such cursor
153 FETCH 1 FROM foo;
154 ERROR:  cursor "foo" does not exist
155 -- Table doesn't exist, the creation hasn't been committed yet
156 SELECT * FROM pxtest2;
157 ERROR:  relation "pxtest2" does not exist
158 LINE 1: SELECT * FROM pxtest2;
159                       ^
160 -- There should be two prepared transactions
161 SELECT gid FROM pg_prepared_xacts;
162  gid 
163 -----
164 (0 rows)
166 -- pxtest3 should be locked because of the pending DROP
167 set statement_timeout to 2000;
168 SELECT * FROM pxtest3;
169  fff 
170 -----
171 (0 rows)
173 reset statement_timeout;
174 -- Disconnect, we will continue testing in a different backend
175 \c -
176 -- There should still be two prepared transactions
177 SELECT gid FROM pg_prepared_xacts;
178  gid 
179 -----
180 (0 rows)
182 -- pxtest3 should still be locked because of the pending DROP
183 set statement_timeout to 2000;
184 SELECT * FROM pxtest3;
185  fff 
186 -----
187 (0 rows)
189 reset statement_timeout;
190 -- Commit table creation
191 COMMIT PREPARED 'regress-one';
192 ERROR:  prepared transaction with identifier "regress-one" does not exist
193 \d pxtest2
194 SELECT * FROM pxtest2;
195 ERROR:  relation "pxtest2" does not exist
196 LINE 1: SELECT * FROM pxtest2;
197                       ^
198 -- There should be one prepared transaction
199 SELECT gid FROM pg_prepared_xacts;
200  gid 
201 -----
202 (0 rows)
204 -- Commit table drop
205 COMMIT PREPARED 'regress-two';
206 ERROR:  prepared transaction with identifier "regress-two" does not exist
207 SELECT * FROM pxtest3;
208  fff 
209 -----
210 (0 rows)
212 -- There should be no prepared transactions
213 SELECT gid FROM pg_prepared_xacts;
214  gid 
215 -----
216 (0 rows)
218 -- Clean up
219 DROP TABLE pxtest2;
220 ERROR:  table "pxtest2" does not exist
221 DROP TABLE pxtest3;  -- will still be there if prepared xacts are disabled
222 DROP TABLE pxtest4;
223 ERROR:  table "pxtest4" does not exist