| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | if {![info exists testdir]} { |
| | set testdir [file join [file dirname [info script]] .. .. test] |
| | } |
| | source [file join [file dirname [info script]] session_common.tcl] |
| | source $testdir/tester.tcl |
| | ifcapable !session {finish_test; return} |
| | set testprefix sessionfault3 |
| |
|
| | do_execsql_test 1.0 { |
| | CREATE TABLE t1(a, b, PRIMARY KEY(a)); |
| | INSERT INTO t1 VALUES(1, 2); |
| | INSERT INTO t1 VALUES(3, 4); |
| | INSERT INTO t1 VALUES('five', 'six'); |
| | } |
| |
|
| | set C1 [changeset_from_sql { |
| | INSERT INTO t1 VALUES('seven', 'eight'); |
| | UPDATE t1 SET b=6 WHERE a='five'; |
| | DELETE FROM t1 WHERE a=1; |
| | }] |
| |
|
| | do_execsql_test 1.1 { |
| | ALTER TABLE t1 ADD COLUMN d DEFAULT 123; |
| | ALTER TABLE t1 ADD COLUMN e DEFAULT 'string'; |
| | } |
| |
|
| | set C2 [changeset_from_sql { |
| | UPDATE t1 SET e='new value' WHERE a='seven'; |
| | INSERT INTO t1 VALUES(0, 0, 0, 0); |
| | }] |
| |
|
| | do_faultsim_test 1 -faults oom* -prep { |
| | sqlite3changegroup G |
| | } -body { |
| | G schema db main |
| | G add $::C1 |
| | G add $::C2 |
| | G output |
| | set {} {} |
| | } -test { |
| | catch { G delete } |
| | faultsim_test_result {0 {}} {1 SQLITE_NOMEM} |
| | } |
| |
|
| | |
| | reset_db |
| | do_execsql_test 2.0 { |
| | CREATE TABLE t1(a INTEGER PRIMARY KEY, b); |
| | INSERT INTO t1 VALUES(1, 'one'); |
| | INSERT INTO t1 VALUES(2, 'two'); |
| | ALTER TABLE t1 ADD COLUMN c DEFAULT 'abcdefghijklmnopqrstuvwxyz'; |
| | } |
| | faultsim_save_and_close |
| |
|
| | do_faultsim_test 2 -faults oom-t* -prep { |
| | faultsim_restore_and_reopen |
| | db eval {SELECT * FROM sqlite_schema} |
| | } -body { |
| | sqlite3session S db main |
| | S attach * |
| | execsql { |
| | DELETE FROM t1 WHERE a = 1; |
| | } |
| | } -test { |
| | faultsim_test_result {0 {}} {1 SQLITE_NOMEM} |
| | catch { S delete } |
| | } |
| |
|
| | finish_test |
| |
|