| Index: third_party/sqlite/test/savepoint4.test
|
| ===================================================================
|
| --- third_party/sqlite/test/savepoint4.test (revision 56608)
|
| +++ third_party/sqlite/test/savepoint4.test (working copy)
|
| @@ -1,169 +0,0 @@
|
| -# 2008 December 15
|
| -#
|
| -# The author disclaims copyright to this source code. In place of
|
| -# a legal notice, here is a blessing:
|
| -#
|
| -# May you do good and not evil.
|
| -# May you find forgiveness for yourself and forgive others.
|
| -# May you share freely, never taking more than you give.
|
| -#
|
| -#***********************************************************************
|
| -#
|
| -# $Id: savepoint4.test,v 1.7 2009/06/09 15:25:33 danielk1977 Exp $
|
| -
|
| -set testdir [file dirname $argv0]
|
| -source $testdir/tester.tcl
|
| -
|
| -ifcapable !crashtest {
|
| - finish_test
|
| - return
|
| -}
|
| -
|
| -proc signature {} {
|
| - return [db eval {SELECT count(*), md5sum(x) FROM t1}]
|
| -}
|
| -
|
| -set ITERATIONS 25 ;# Number of iterations for savepoint4-1
|
| -set ITERATIONS2 13 ;# Number of iterations for savepoint4-2
|
| -expr srand(0)
|
| -
|
| -do_test savepoint4-1 {
|
| - execsql {
|
| - PRAGMA cache_size=10;
|
| - BEGIN;
|
| - CREATE TABLE t1(x TEXT);
|
| - INSERT INTO t1 VALUES(randstr(10,400));
|
| - INSERT INTO t1 VALUES(randstr(10,400));
|
| - INSERT INTO t1 SELECT randstr(10,400) FROM t1;
|
| - INSERT INTO t1 SELECT randstr(10,400) FROM t1;
|
| - INSERT INTO t1 SELECT randstr(10,400) FROM t1;
|
| - INSERT INTO t1 SELECT randstr(10,400) FROM t1;
|
| - INSERT INTO t1 SELECT randstr(10,400) FROM t1;
|
| - INSERT INTO t1 SELECT randstr(10,400) FROM t1;
|
| - INSERT INTO t1 SELECT randstr(10,400) FROM t1;
|
| - INSERT INTO t1 SELECT randstr(10,400) FROM t1;
|
| - INSERT INTO t1 SELECT randstr(10,400) FROM t1;
|
| - COMMIT;
|
| - SELECT count(*) FROM t1;
|
| - }
|
| -} {1024}
|
| -
|
| -
|
| -unset -nocomplain ::sig
|
| -
|
| -for {set ii 1} {$ii<=$ITERATIONS} {incr ii} {
|
| - set ::sig [signature]
|
| -
|
| - for {set iDelay 1 ; set crashed 1} {$crashed} {incr iDelay} {
|
| -
|
| - do_test savepoint4-1.$ii.1.$iDelay {
|
| - set ret [crashsql -delay $iDelay -file test.db-journal {
|
| - PRAGMA cache_size = 20;
|
| - SAVEPOINT one;
|
| - DELETE FROM t1 WHERE random()%2==0;
|
| - SAVEPOINT two;
|
| - INSERT INTO t1 SELECT randstr(10,10)||x FROM t1;
|
| - ROLLBACK TO two;
|
| - UPDATE t1 SET x = randstr(10, 400) WHERE random()%10;
|
| - RELEASE two;
|
| - ROLLBACK TO one;
|
| - RELEASE one;
|
| - }]
|
| - signature
|
| - } $::sig
|
| -
|
| - set crashed [lindex $ret 0]
|
| - integrity_check savepoint4-1.$ii.1.$iDelay.integrity
|
| - }
|
| -
|
| - do_test savepoint4-1.$ii.2 {
|
| - execsql {
|
| - DELETE FROM t1 WHERE random()%10==0;
|
| - INSERT INTO t1 SELECT randstr(10,10)||x FROM t1 WHERE random()%9==0;
|
| - }
|
| - } {}
|
| -}
|
| -
|
| -do_test savepoint4-2 {
|
| - execsql {
|
| - PRAGMA cache_size=10;
|
| - DROP TABLE IF EXISTS t1;
|
| - BEGIN;
|
| - CREATE TABLE t1(x TEXT);
|
| - CREATE INDEX i1 ON t1(x);
|
| - INSERT INTO t1 VALUES(randstr(10,400));
|
| - INSERT INTO t1 VALUES(randstr(10,400));
|
| - INSERT INTO t1 SELECT randstr(10,400) FROM t1;
|
| - INSERT INTO t1 SELECT randstr(10,400) FROM t1;
|
| - INSERT INTO t1 SELECT randstr(10,400) FROM t1;
|
| - INSERT INTO t1 SELECT randstr(10,400) FROM t1;
|
| - INSERT INTO t1 SELECT randstr(10,400) FROM t1;
|
| - INSERT INTO t1 SELECT randstr(10,400) FROM t1;
|
| - INSERT INTO t1 SELECT randstr(10,400) FROM t1;
|
| - COMMIT;
|
| - SELECT count(*) FROM t1;
|
| - }
|
| -} {256}
|
| -
|
| -for {set ii 1} {$ii<=$ITERATIONS2} {incr ii} {
|
| - set ::sig [signature]
|
| - set file test.db-journal
|
| -
|
| - for {set iDelay 1 ; set crashed 1} {$crashed} {incr iDelay} {
|
| -
|
| - do_test savepoint4-2.$ii.1.$iDelay {
|
| -
|
| - set ret [crashsql -delay $iDelay -file $file {
|
| - SAVEPOINT one;
|
| - INSERT INTO t1 SELECT * FROM t1 WHERE rowid<50;
|
| - ROLLBACK TO one;
|
| - INSERT INTO t1 SELECT * FROM t1 WHERE rowid<50;
|
| - SAVEPOINT two;
|
| - DELETE FROM t1 WHERE (random()%10)==0;
|
| - SAVEPOINT three;
|
| - DELETE FROM t1 WHERE (random()%10)==0;
|
| - SAVEPOINT four;
|
| - DELETE FROM t1 WHERE (random()%10)==0;
|
| - RELEASE two;
|
| -
|
| - SAVEPOINT three;
|
| - UPDATE t1 SET x = substr(x||x, 12, 100000) WHERE (rowid%12)==0;
|
| - SAVEPOINT four;
|
| - UPDATE t1 SET x = substr(x||x, 14, 100000) WHERE (rowid%14)==0;
|
| - ROLLBACK TO three;
|
| - UPDATE t1 SET x = substr(x||x, 13, 100000) WHERE (rowid%13)==0;
|
| - RELEASE three;
|
| -
|
| - DELETE FROM t1 WHERE rowid > (
|
| - SELECT rowid FROM t1 ORDER BY rowid ASC LIMIT 1 OFFSET 256
|
| - );
|
| - RELEASE one;
|
| - }]
|
| -
|
| - set crashed [lindex $ret 0]
|
| - if {$crashed} {
|
| - signature
|
| - } else {
|
| - set ::sig
|
| - }
|
| - } $::sig
|
| -
|
| - integrity_check savepoint4-2.$ii.1.$iDelay.integrity
|
| -
|
| - if {$crashed == 0 && $file == "test.db-journal"} {
|
| - set crashed 1
|
| - set iDelay 0
|
| - set file test.db
|
| - set ::sig [signature]
|
| - }
|
| - }
|
| -
|
| - do_test savepoint4-2.$ii.2 {
|
| - execsql {
|
| - DELETE FROM t1 WHERE random()%10==0;
|
| - INSERT INTO t1 SELECT randstr(10,10)||x FROM t1 WHERE random()%9==0;
|
| - }
|
| - } {}
|
| -}
|
| -
|
| -finish_test
|
|
|