@@ -55,6 +55,9 @@ SELECT * FROM global_temptest2;
55
55
-----
56
56
(0 rows)
57
57
58
+ DROP TABLE global_temptest2;
59
+ DROP TABLE global_temptest1;
60
+ -- Unsupported ON COMMIT and foreign key combination
58
61
BEGIN;
59
62
CREATE GLOBAL TEMP TABLE global_temptest3(col int PRIMARY KEY) ON COMMIT DELETE ROWS;
60
63
CREATE GLOBAL TEMP TABLE global_temptest4(col int REFERENCES global_temptest3);
@@ -245,3 +248,76 @@ SELECT NEXTVAL( 'test_sequence' );
245
248
246
249
DROP TABLE global_temp_table;
247
250
DROP SEQUENCE test_sequence;
251
+ -- Test two phase commit
252
+ CREATE TABLE global_temptest_persistent(col int);
253
+ CREATE GLOBAL TEMP TABLE global_temptest(col int);
254
+ INSERT INTO global_temptest VALUES (1);
255
+ BEGIN;
256
+ INSERT INTO global_temptest VALUES (2);
257
+ SELECT * FROM global_temptest;
258
+ col
259
+ -----
260
+ 1
261
+ 2
262
+ (2 rows)
263
+
264
+ PREPARE TRANSACTION 'global_temp1';
265
+ -- We can't see anything from an uncommitted transaction
266
+ SELECT * FROM global_temptest;
267
+ col
268
+ -----
269
+ 1
270
+ (1 row)
271
+
272
+ BEGIN;
273
+ INSERT INTO global_temptest VALUES (3);
274
+ INSERT INTO global_temptest_persistent SELECT * FROM global_temptest;
275
+ PREPARE TRANSACTION 'global_temp2';
276
+ COMMIT PREPARED 'global_temp1';
277
+ -- 1, 2
278
+ SELECT * FROM global_temptest;
279
+ col
280
+ -----
281
+ 1
282
+ 2
283
+ (2 rows)
284
+
285
+ -- Nothing
286
+ SELECT * FROM global_temptest_persistent;
287
+ col
288
+ -----
289
+ (0 rows)
290
+
291
+ \c
292
+ -- The temp table is empty now.
293
+ SELECT * FROM global_temptest;
294
+ col
295
+ -----
296
+ (0 rows)
297
+
298
+ -- Still nothing in global_temptest_persistent table;
299
+ SELECT * FROM global_temptest_persistent;
300
+ col
301
+ -----
302
+ (0 rows)
303
+
304
+ INSERT INTO global_temptest VALUES (4);
305
+ COMMIT PREPARED 'global_temp2';
306
+ -- Only 4
307
+ SELECT * FROM global_temptest;
308
+ col
309
+ -----
310
+ 4
311
+ (1 row)
312
+
313
+ -- 1, 3
314
+ SELECT * FROM global_temptest_persistent;
315
+ col
316
+ -----
317
+ 1
318
+ 3
319
+ (2 rows)
320
+
321
+ \c
322
+ DROP TABLE global_temptest;
323
+ DROP TABLE global_temptest_persistent;
0 commit comments