limbo/testing/rollback.test
Pere Diaz Bou 156027836e
Some checks failed
Run long fuzz tests on Btree / run-long-tests (push) Has been cancelled
Run long fuzz tests on Btree / simple-stress-test (push) Has been cancelled
add another test
2025-06-25 14:01:53 +02:00

72 lines
1.8 KiB
Tcl
Executable file

#!/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}