blob: 0a25705b2cfeeac8780dbdb0990294efa69ca94a [file] [log] [blame]
--
-- Tests for some likely failure cases with combo cmin/cmax mechanism
--
CREATE TEMP TABLE combocidtest (a int, foobar int);
BEGIN;
-- a few dummy ops to push up the CommandId counter
SELECT count(*) from combocidtest;
SELECT count(*) from combocidtest;
SELECT count(*) from combocidtest;
SELECT count(*) from combocidtest;
SELECT count(*) from combocidtest;
SELECT count(*) from combocidtest;
SELECT count(*) from combocidtest;
SELECT count(*) from combocidtest;
SELECT count(*) from combocidtest;
SELECT count(*) from combocidtest;
INSERT INTO combocidtest VALUES (1,1);
INSERT INTO combocidtest VALUES (2,2);
SELECT ctid,cmin,* FROM combocidtest;
SAVEPOINT s1;
UPDATE combocidtest SET foobar = foobar + 10;
-- here we should see only updated tuples
SELECT ctid,cmin,* FROM combocidtest;
ROLLBACK TO s1;
-- now we should see old tuples, but with combo CIDs starting at 0
SELECT ctid,cmin,* FROM combocidtest;
COMMIT;
-- combo data is not there anymore, but should still see tuples
SELECT ctid,cmin,* FROM combocidtest;
-- Test combo cids with portals
BEGIN;
INSERT INTO combocidtest VALUES (3,333);
DECLARE c CURSOR FOR SELECT ctid,cmin,* FROM combocidtest ORDER BY a;
DELETE FROM combocidtest;
FETCH ALL FROM c;
ROLLBACK;
SELECT ctid,cmin,* FROM combocidtest ORDER BY a;
-- check behavior with locked tuples
BEGIN;
-- a few dummy ops to push up the CommandId counter
SELECT count(*) from combocidtest;
SELECT count(*) from combocidtest;
SELECT count(*) from combocidtest;
SELECT count(*) from combocidtest;
SELECT count(*) from combocidtest;
SELECT count(*) from combocidtest;
SELECT count(*) from combocidtest;
SELECT count(*) from combocidtest;
SELECT count(*) from combocidtest;
SELECT count(*) from combocidtest;
INSERT INTO combocidtest VALUES (3,444);
SELECT ctid,cmin,* FROM combocidtest ORDER BY a;
SAVEPOINT s1;
-- this doesn't affect cmin
SELECT ctid,cmin,* FROM combocidtest ORDER BY a FOR UPDATE;
SELECT ctid,cmin,* FROM combocidtest ORDER BY a;
-- but this does
UPDATE combocidtest SET foobar = foobar + 10;
SELECT ctid,cmin,* FROM combocidtest ORDER BY a;
ROLLBACK TO s1;
SELECT ctid,cmin,* FROM combocidtest ORDER BY a;
COMMIT;
SELECT ctid,cmin,* FROM combocidtest ORDER BY a;