-- -- Testing we handle rollbacks properly -- CREATE TABLE t(a int, b int) USING cstore_tableam; BEGIN; INSERT INTO t SELECT i, i+1 FROM generate_series(1, 10) i; ROLLBACK; SELECT count(*) FROM t; count ------- 0 (1 row) -- check stripe metadata also have been rolled-back SELECT count(*) FROM cstore.cstore_stripes a, pg_class b WHERE a.relfilenode = b.relfilenode AND b.relname = 't'; count ------- 0 (1 row) INSERT INTO t SELECT i, i+1 FROM generate_series(1, 10) i; SELECT count(*) FROM t; count ------- 10 (1 row) SELECT count(*) FROM cstore.cstore_stripes a, pg_class b WHERE a.relfilenode = b.relfilenode AND b.relname = 't'; count ------- 1 (1 row) -- savepoint rollback BEGIN; SAVEPOINT s0; INSERT INTO t SELECT i, i+1 FROM generate_series(1, 10) i; SAVEPOINT s1; INSERT INTO t SELECT i, i+1 FROM generate_series(1, 10) i; SELECT count(*) FROM t; count ------- 30 (1 row) ROLLBACK TO SAVEPOINT s1; SELECT count(*) FROM t; count ------- 20 (1 row) ROLLBACK TO SAVEPOINT s0; SELECT count(*) FROM t; count ------- 10 (1 row) INSERT INTO t SELECT i, i+1 FROM generate_series(1, 10) i; COMMIT; SELECT count(*) FROM t; count ------- 20 (1 row) SELECT count(*) FROM cstore.cstore_stripes a, pg_class b WHERE a.relfilenode = b.relfilenode AND b.relname = 't'; count ------- 2 (1 row) DROP TABLE t;