#!/usr/bin/env tclsh set testdir [file dirname $argv0] source $testdir/tester.tcl do_execsql_test_on_specific_db {:memory:} simple-rollback { create table t (x); insert into t values (1); begin; insert into t values (2); rollback; select * from t; } {1} do_execsql_test_on_specific_db {:memory:} simple-rollback-2 { create table t (x); begin; insert into t values (1); insert into t values (2); rollback; select * from t; } {} do_execsql_test_on_specific_db {:memory:} rollback-after-update { create table t (x); insert into t values (1); insert into t values (2); begin; update t set x = x + 10; rollback; select * from t; } {1 2} do_execsql_test_on_specific_db {:memory:} rollback-after-delete { create table t (x); insert into t values (1); insert into t values (2); insert into t values (3); begin; delete from t where x = 2; rollback; select * from t order by x; } {1 2 3} do_execsql_test_on_specific_db {:memory:} rollback-mixed-operations { create table t (x); insert into t values (1); insert into t values (2); begin; insert into t values (3); update t set x = x + 10 where x = 1; delete from t where x = 2; rollback; select * from t order by x; } {1 2} # The point of this test was to test we drop dirty pages after rollback by inserting into another table so that # pages used are different. do_execsql_test_on_specific_db {:memory:} insert-after-rollback { create table t (x); create table t2 (x); insert into t values (1); insert into t values (2); begin; insert into t values (3); update t set x = x + 10 where x = 1; delete from t where x = 2; rollback; insert into t2 values (1); select * from t2 order by x; } {1}