Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(32)

Unified Diff: third_party/sqlite/sqlite-src-3080704/test/trans.test

Issue 2363173002: [sqlite] Remove obsolete reference version 3.8.7.4. (Closed)
Patch Set: Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/sqlite/sqlite-src-3080704/test/trans.test
diff --git a/third_party/sqlite/sqlite-src-3080704/test/trans.test b/third_party/sqlite/sqlite-src-3080704/test/trans.test
deleted file mode 100644
index bbaedc5450c65c74586ef7fa61f5be6570fb488c..0000000000000000000000000000000000000000
--- a/third_party/sqlite/sqlite-src-3080704/test/trans.test
+++ /dev/null
@@ -1,956 +0,0 @@
-# 2001 September 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.
-#
-#***********************************************************************
-# This file implements regression tests for SQLite library. The
-# focus of this script is database locks.
-#
-# $Id: trans.test,v 1.41 2009/04/28 16:37:59 danielk1977 Exp $
-
-
-set testdir [file dirname $argv0]
-source $testdir/tester.tcl
-
-# Create several tables to work with.
-#
-wal_set_journal_mode
-do_test trans-1.0 {
- execsql {
- CREATE TABLE one(a int PRIMARY KEY, b text);
- INSERT INTO one VALUES(1,'one');
- INSERT INTO one VALUES(2,'two');
- INSERT INTO one VALUES(3,'three');
- SELECT b FROM one ORDER BY a;
- }
-} {one two three}
-integrity_check trans-1.0.1
-do_test trans-1.1 {
- execsql {
- CREATE TABLE two(a int PRIMARY KEY, b text);
- INSERT INTO two VALUES(1,'I');
- INSERT INTO two VALUES(5,'V');
- INSERT INTO two VALUES(10,'X');
- SELECT b FROM two ORDER BY a;
- }
-} {I V X}
-do_test trans-1.9 {
- sqlite3 altdb test.db
- execsql {SELECT b FROM one ORDER BY a} altdb
-} {one two three}
-do_test trans-1.10 {
- execsql {SELECT b FROM two ORDER BY a} altdb
-} {I V X}
-integrity_check trans-1.11
-wal_check_journal_mode trans-1.12
-
-# Basic transactions
-#
-do_test trans-2.1 {
- set v [catch {execsql {BEGIN}} msg]
- lappend v $msg
-} {0 {}}
-do_test trans-2.2 {
- set v [catch {execsql {END}} msg]
- lappend v $msg
-} {0 {}}
-do_test trans-2.3 {
- set v [catch {execsql {BEGIN TRANSACTION}} msg]
- lappend v $msg
-} {0 {}}
-do_test trans-2.4 {
- set v [catch {execsql {COMMIT TRANSACTION}} msg]
- lappend v $msg
-} {0 {}}
-do_test trans-2.5 {
- set v [catch {execsql {BEGIN TRANSACTION 'foo'}} msg]
- lappend v $msg
-} {0 {}}
-do_test trans-2.6 {
- set v [catch {execsql {ROLLBACK TRANSACTION 'foo'}} msg]
- lappend v $msg
-} {0 {}}
-do_test trans-2.10 {
- execsql {
- BEGIN;
- SELECT a FROM one ORDER BY a;
- SELECT a FROM two ORDER BY a;
- END;
- }
-} {1 2 3 1 5 10}
-integrity_check trans-2.11
-wal_check_journal_mode trans-2.12
-
-# Check the locking behavior
-#
-do_test trans-3.1 {
- execsql {
- BEGIN;
- UPDATE one SET a = 0 WHERE 0;
- SELECT a FROM one ORDER BY a;
- }
-} {1 2 3}
-do_test trans-3.2 {
- catchsql {
- SELECT a FROM two ORDER BY a;
- } altdb
-} {0 {1 5 10}}
-
-do_test trans-3.3 {
- catchsql {
- SELECT a FROM one ORDER BY a;
- } altdb
-} {0 {1 2 3}}
-do_test trans-3.4 {
- catchsql {
- INSERT INTO one VALUES(4,'four');
- }
-} {0 {}}
-do_test trans-3.5 {
- catchsql {
- SELECT a FROM two ORDER BY a;
- } altdb
-} {0 {1 5 10}}
-do_test trans-3.6 {
- catchsql {
- SELECT a FROM one ORDER BY a;
- } altdb
-} {0 {1 2 3}}
-do_test trans-3.7 {
- catchsql {
- INSERT INTO two VALUES(4,'IV');
- }
-} {0 {}}
-do_test trans-3.8 {
- catchsql {
- SELECT a FROM two ORDER BY a;
- } altdb
-} {0 {1 5 10}}
-do_test trans-3.9 {
- catchsql {
- SELECT a FROM one ORDER BY a;
- } altdb
-} {0 {1 2 3}}
-do_test trans-3.10 {
- execsql {END TRANSACTION}
-} {}
-
-do_test trans-3.11 {
- set v [catch {execsql {
- SELECT a FROM two ORDER BY a;
- } altdb} msg]
- lappend v $msg
-} {0 {1 4 5 10}}
-do_test trans-3.12 {
- set v [catch {execsql {
- SELECT a FROM one ORDER BY a;
- } altdb} msg]
- lappend v $msg
-} {0 {1 2 3 4}}
-do_test trans-3.13 {
- set v [catch {execsql {
- SELECT a FROM two ORDER BY a;
- } db} msg]
- lappend v $msg
-} {0 {1 4 5 10}}
-do_test trans-3.14 {
- set v [catch {execsql {
- SELECT a FROM one ORDER BY a;
- } db} msg]
- lappend v $msg
-} {0 {1 2 3 4}}
-integrity_check trans-3.15
-wal_check_journal_mode trans-3.16
-
-do_test trans-4.1 {
- set v [catch {execsql {
- COMMIT;
- } db} msg]
- lappend v $msg
-} {1 {cannot commit - no transaction is active}}
-do_test trans-4.2 {
- set v [catch {execsql {
- ROLLBACK;
- } db} msg]
- lappend v $msg
-} {1 {cannot rollback - no transaction is active}}
-do_test trans-4.3 {
- catchsql {
- BEGIN TRANSACTION;
- UPDATE two SET a = 0 WHERE 0;
- SELECT a FROM two ORDER BY a;
- } db
-} {0 {1 4 5 10}}
-do_test trans-4.4 {
- catchsql {
- SELECT a FROM two ORDER BY a;
- } altdb
-} {0 {1 4 5 10}}
-do_test trans-4.5 {
- catchsql {
- SELECT a FROM one ORDER BY a;
- } altdb
-} {0 {1 2 3 4}}
-do_test trans-4.6 {
- catchsql {
- BEGIN TRANSACTION;
- SELECT a FROM one ORDER BY a;
- } db
-} {1 {cannot start a transaction within a transaction}}
-do_test trans-4.7 {
- catchsql {
- SELECT a FROM two ORDER BY a;
- } altdb
-} {0 {1 4 5 10}}
-do_test trans-4.8 {
- catchsql {
- SELECT a FROM one ORDER BY a;
- } altdb
-} {0 {1 2 3 4}}
-do_test trans-4.9 {
- set v [catch {execsql {
- END TRANSACTION;
- SELECT a FROM two ORDER BY a;
- } db} msg]
- lappend v $msg
-} {0 {1 4 5 10}}
-do_test trans-4.10 {
- set v [catch {execsql {
- SELECT a FROM two ORDER BY a;
- } altdb} msg]
- lappend v $msg
-} {0 {1 4 5 10}}
-do_test trans-4.11 {
- set v [catch {execsql {
- SELECT a FROM one ORDER BY a;
- } altdb} msg]
- lappend v $msg
-} {0 {1 2 3 4}}
-integrity_check trans-4.12
-wal_check_journal_mode trans-4.13
-wal_check_journal_mode trans-4.14 altdb
-do_test trans-4.98 {
- altdb close
- execsql {
- DROP TABLE one;
- DROP TABLE two;
- }
-} {}
-integrity_check trans-4.99
-
-# Check out the commit/rollback behavior of the database
-#
-do_test trans-5.1 {
- execsql {SELECT name FROM sqlite_master WHERE type='table' ORDER BY name}
-} {}
-do_test trans-5.2 {
- execsql {BEGIN TRANSACTION}
- execsql {SELECT name FROM sqlite_master WHERE type='table' ORDER BY name}
-} {}
-do_test trans-5.3 {
- execsql {CREATE TABLE one(a text, b int)}
- execsql {SELECT name FROM sqlite_master WHERE type='table' ORDER BY name}
-} {one}
-do_test trans-5.4 {
- execsql {SELECT a,b FROM one ORDER BY b}
-} {}
-do_test trans-5.5 {
- execsql {INSERT INTO one(a,b) VALUES('hello', 1)}
- execsql {SELECT a,b FROM one ORDER BY b}
-} {hello 1}
-do_test trans-5.6 {
- execsql {ROLLBACK}
- execsql {SELECT name FROM sqlite_master WHERE type='table' ORDER BY name}
-} {}
-do_test trans-5.7 {
- set v [catch {
- execsql {SELECT a,b FROM one ORDER BY b}
- } msg]
- lappend v $msg
-} {1 {no such table: one}}
-
-# Test commits and rollbacks of table CREATE TABLEs, CREATE INDEXs
-# DROP TABLEs and DROP INDEXs
-#
-do_test trans-5.8 {
- execsql {
- SELECT name fROM sqlite_master
- WHERE type='table' OR type='index'
- ORDER BY name
- }
-} {}
-do_test trans-5.9 {
- execsql {
- BEGIN TRANSACTION;
- CREATE TABLE t1(a int, b int, c int);
- SELECT name fROM sqlite_master
- WHERE type='table' OR type='index'
- ORDER BY name;
- }
-} {t1}
-do_test trans-5.10 {
- execsql {
- CREATE INDEX i1 ON t1(a);
- SELECT name fROM sqlite_master
- WHERE type='table' OR type='index'
- ORDER BY name;
- }
-} {i1 t1}
-do_test trans-5.11 {
- execsql {
- COMMIT;
- SELECT name fROM sqlite_master
- WHERE type='table' OR type='index'
- ORDER BY name;
- }
-} {i1 t1}
-do_test trans-5.12 {
- execsql {
- BEGIN TRANSACTION;
- CREATE TABLE t2(a int, b int, c int);
- CREATE INDEX i2a ON t2(a);
- CREATE INDEX i2b ON t2(b);
- DROP TABLE t1;
- SELECT name fROM sqlite_master
- WHERE type='table' OR type='index'
- ORDER BY name;
- }
-} {i2a i2b t2}
-do_test trans-5.13 {
- execsql {
- ROLLBACK;
- SELECT name fROM sqlite_master
- WHERE type='table' OR type='index'
- ORDER BY name;
- }
-} {i1 t1}
-do_test trans-5.14 {
- execsql {
- BEGIN TRANSACTION;
- DROP INDEX i1;
- SELECT name fROM sqlite_master
- WHERE type='table' OR type='index'
- ORDER BY name;
- }
-} {t1}
-do_test trans-5.15 {
- execsql {
- ROLLBACK;
- SELECT name fROM sqlite_master
- WHERE type='table' OR type='index'
- ORDER BY name;
- }
-} {i1 t1}
-do_test trans-5.16 {
- execsql {
- BEGIN TRANSACTION;
- DROP INDEX i1;
- CREATE TABLE t2(x int, y int, z int);
- CREATE INDEX i2x ON t2(x);
- CREATE INDEX i2y ON t2(y);
- INSERT INTO t2 VALUES(1,2,3);
- SELECT name fROM sqlite_master
- WHERE type='table' OR type='index'
- ORDER BY name;
- }
-} {i2x i2y t1 t2}
-do_test trans-5.17 {
- execsql {
- COMMIT;
- SELECT name fROM sqlite_master
- WHERE type='table' OR type='index'
- ORDER BY name;
- }
-} {i2x i2y t1 t2}
-do_test trans-5.18 {
- execsql {
- SELECT * FROM t2;
- }
-} {1 2 3}
-do_test trans-5.19 {
- execsql {
- SELECT x FROM t2 WHERE y=2;
- }
-} {1}
-do_test trans-5.20 {
- execsql {
- BEGIN TRANSACTION;
- DROP TABLE t1;
- DROP TABLE t2;
- SELECT name fROM sqlite_master
- WHERE type='table' OR type='index'
- ORDER BY name;
- }
-} {}
-do_test trans-5.21 {
- set r [catch {execsql {
- SELECT * FROM t2
- }} msg]
- lappend r $msg
-} {1 {no such table: t2}}
-do_test trans-5.22 {
- execsql {
- ROLLBACK;
- SELECT name fROM sqlite_master
- WHERE type='table' OR type='index'
- ORDER BY name;
- }
-} {i2x i2y t1 t2}
-do_test trans-5.23 {
- execsql {
- SELECT * FROM t2;
- }
-} {1 2 3}
-integrity_check trans-5.23
-
-
-# Try to DROP and CREATE tables and indices with the same name
-# within a transaction. Make sure ROLLBACK works.
-#
-do_test trans-6.1 {
- execsql2 {
- INSERT INTO t1 VALUES(1,2,3);
- BEGIN TRANSACTION;
- DROP TABLE t1;
- CREATE TABLE t1(p,q,r);
- ROLLBACK;
- SELECT * FROM t1;
- }
-} {a 1 b 2 c 3}
-do_test trans-6.2 {
- execsql2 {
- INSERT INTO t1 VALUES(1,2,3);
- BEGIN TRANSACTION;
- DROP TABLE t1;
- CREATE TABLE t1(p,q,r);
- COMMIT;
- SELECT * FROM t1;
- }
-} {}
-do_test trans-6.3 {
- execsql2 {
- INSERT INTO t1 VALUES(1,2,3);
- SELECT * FROM t1;
- }
-} {p 1 q 2 r 3}
-do_test trans-6.4 {
- execsql2 {
- BEGIN TRANSACTION;
- DROP TABLE t1;
- CREATE TABLE t1(a,b,c);
- INSERT INTO t1 VALUES(4,5,6);
- SELECT * FROM t1;
- DROP TABLE t1;
- }
-} {a 4 b 5 c 6}
-do_test trans-6.5 {
- execsql2 {
- ROLLBACK;
- SELECT * FROM t1;
- }
-} {p 1 q 2 r 3}
-do_test trans-6.6 {
- execsql2 {
- BEGIN TRANSACTION;
- DROP TABLE t1;
- CREATE TABLE t1(a,b,c);
- INSERT INTO t1 VALUES(4,5,6);
- SELECT * FROM t1;
- DROP TABLE t1;
- }
-} {a 4 b 5 c 6}
-do_test trans-6.7 {
- catchsql {
- COMMIT;
- SELECT * FROM t1;
- }
-} {1 {no such table: t1}}
-
-# Repeat on a table with an automatically generated index.
-#
-do_test trans-6.10 {
- execsql2 {
- CREATE TABLE t1(a unique,b,c);
- INSERT INTO t1 VALUES(1,2,3);
- BEGIN TRANSACTION;
- DROP TABLE t1;
- CREATE TABLE t1(p unique,q,r);
- ROLLBACK;
- SELECT * FROM t1;
- }
-} {a 1 b 2 c 3}
-do_test trans-6.11 {
- execsql2 {
- BEGIN TRANSACTION;
- DROP TABLE t1;
- CREATE TABLE t1(p unique,q,r);
- COMMIT;
- SELECT * FROM t1;
- }
-} {}
-do_test trans-6.12 {
- execsql2 {
- INSERT INTO t1 VALUES(1,2,3);
- SELECT * FROM t1;
- }
-} {p 1 q 2 r 3}
-do_test trans-6.13 {
- execsql2 {
- BEGIN TRANSACTION;
- DROP TABLE t1;
- CREATE TABLE t1(a unique,b,c);
- INSERT INTO t1 VALUES(4,5,6);
- SELECT * FROM t1;
- DROP TABLE t1;
- }
-} {a 4 b 5 c 6}
-do_test trans-6.14 {
- execsql2 {
- ROLLBACK;
- SELECT * FROM t1;
- }
-} {p 1 q 2 r 3}
-do_test trans-6.15 {
- execsql2 {
- BEGIN TRANSACTION;
- DROP TABLE t1;
- CREATE TABLE t1(a unique,b,c);
- INSERT INTO t1 VALUES(4,5,6);
- SELECT * FROM t1;
- DROP TABLE t1;
- }
-} {a 4 b 5 c 6}
-do_test trans-6.16 {
- catchsql {
- COMMIT;
- SELECT * FROM t1;
- }
-} {1 {no such table: t1}}
-
-do_test trans-6.20 {
- execsql {
- CREATE TABLE t1(a integer primary key,b,c);
- INSERT INTO t1 VALUES(1,-2,-3);
- INSERT INTO t1 VALUES(4,-5,-6);
- SELECT * FROM t1;
- }
-} {1 -2 -3 4 -5 -6}
-do_test trans-6.21 {
- execsql {
- CREATE INDEX i1 ON t1(b);
- SELECT * FROM t1 WHERE b<1;
- }
-} {4 -5 -6 1 -2 -3}
-do_test trans-6.22 {
- execsql {
- BEGIN TRANSACTION;
- DROP INDEX i1;
- SELECT * FROM t1 WHERE b<1;
- ROLLBACK;
- }
-} {1 -2 -3 4 -5 -6}
-do_test trans-6.23 {
- execsql {
- SELECT * FROM t1 WHERE b<1;
- }
-} {4 -5 -6 1 -2 -3}
-do_test trans-6.24 {
- execsql {
- BEGIN TRANSACTION;
- DROP TABLE t1;
- ROLLBACK;
- SELECT * FROM t1 WHERE b<1;
- }
-} {4 -5 -6 1 -2 -3}
-
-do_test trans-6.25 {
- execsql {
- BEGIN TRANSACTION;
- DROP INDEX i1;
- CREATE INDEX i1 ON t1(c);
- SELECT * FROM t1 WHERE b<1;
- }
-} {1 -2 -3 4 -5 -6}
-do_test trans-6.26 {
- execsql {
- SELECT * FROM t1 WHERE c<1;
- }
-} {4 -5 -6 1 -2 -3}
-do_test trans-6.27 {
- execsql {
- ROLLBACK;
- SELECT * FROM t1 WHERE b<1;
- }
-} {4 -5 -6 1 -2 -3}
-do_test trans-6.28 {
- execsql {
- SELECT * FROM t1 WHERE c<1;
- }
-} {1 -2 -3 4 -5 -6}
-
-# The following repeats steps 6.20 through 6.28, but puts a "unique"
-# constraint the first field of the table in order to generate an
-# automatic index.
-#
-do_test trans-6.30 {
- execsql {
- BEGIN TRANSACTION;
- DROP TABLE t1;
- CREATE TABLE t1(a int unique,b,c);
- COMMIT;
- INSERT INTO t1 VALUES(1,-2,-3);
- INSERT INTO t1 VALUES(4,-5,-6);
- SELECT * FROM t1 ORDER BY a;
- }
-} {1 -2 -3 4 -5 -6}
-do_test trans-6.31 {
- execsql {
- CREATE INDEX i1 ON t1(b);
- SELECT * FROM t1 WHERE b<1;
- }
-} {4 -5 -6 1 -2 -3}
-do_test trans-6.32 {
- execsql {
- BEGIN TRANSACTION;
- DROP INDEX i1;
- SELECT * FROM t1 WHERE b<1;
- ROLLBACK;
- }
-} {1 -2 -3 4 -5 -6}
-do_test trans-6.33 {
- execsql {
- SELECT * FROM t1 WHERE b<1;
- }
-} {4 -5 -6 1 -2 -3}
-do_test trans-6.34 {
- execsql {
- BEGIN TRANSACTION;
- DROP TABLE t1;
- ROLLBACK;
- SELECT * FROM t1 WHERE b<1;
- }
-} {4 -5 -6 1 -2 -3}
-
-do_test trans-6.35 {
- execsql {
- BEGIN TRANSACTION;
- DROP INDEX i1;
- CREATE INDEX i1 ON t1(c);
- SELECT * FROM t1 WHERE b<1;
- }
-} {1 -2 -3 4 -5 -6}
-do_test trans-6.36 {
- execsql {
- SELECT * FROM t1 WHERE c<1;
- }
-} {4 -5 -6 1 -2 -3}
-do_test trans-6.37 {
- execsql {
- DROP INDEX i1;
- SELECT * FROM t1 WHERE c<1;
- }
-} {1 -2 -3 4 -5 -6}
-do_test trans-6.38 {
- execsql {
- ROLLBACK;
- SELECT * FROM t1 WHERE b<1;
- }
-} {4 -5 -6 1 -2 -3}
-do_test trans-6.39 {
- execsql {
- SELECT * FROM t1 WHERE c<1;
- }
-} {1 -2 -3 4 -5 -6}
-integrity_check trans-6.40
-
-# Test to make sure rollback restores the database back to its original
-# state.
-#
-do_test trans-7.1 {
- execsql {BEGIN}
- for {set i 0} {$i<1000} {incr i} {
- set r1 [expr {rand()}]
- set r2 [expr {rand()}]
- set r3 [expr {rand()}]
- execsql "INSERT INTO t2 VALUES($r1,$r2,$r3)"
- }
- execsql {COMMIT}
- set ::checksum [execsql {SELECT md5sum(x,y,z) FROM t2}]
- set ::checksum2 [
- execsql {SELECT md5sum(type,name,tbl_name,rootpage,sql) FROM sqlite_master}
- ]
- execsql {SELECT count(*) FROM t2}
-} {1001}
-do_test trans-7.2 {
- execsql {SELECT md5sum(x,y,z) FROM t2}
-} $checksum
-do_test trans-7.2.1 {
- execsql {SELECT md5sum(type,name,tbl_name,rootpage,sql) FROM sqlite_master}
-} $checksum2
-do_test trans-7.3 {
- execsql {
- BEGIN;
- DELETE FROM t2;
- ROLLBACK;
- SELECT md5sum(x,y,z) FROM t2;
- }
-} $checksum
-do_test trans-7.4 {
- execsql {
- BEGIN;
- INSERT INTO t2 SELECT * FROM t2;
- ROLLBACK;
- SELECT md5sum(x,y,z) FROM t2;
- }
-} $checksum
-do_test trans-7.5 {
- execsql {
- BEGIN;
- DELETE FROM t2;
- ROLLBACK;
- SELECT md5sum(x,y,z) FROM t2;
- }
-} $checksum
-do_test trans-7.6 {
- execsql {
- BEGIN;
- INSERT INTO t2 SELECT * FROM t2;
- ROLLBACK;
- SELECT md5sum(x,y,z) FROM t2;
- }
-} $checksum
-do_test trans-7.7 {
- execsql {
- BEGIN;
- CREATE TABLE t3 AS SELECT * FROM t2;
- INSERT INTO t2 SELECT * FROM t3;
- ROLLBACK;
- SELECT md5sum(x,y,z) FROM t2;
- }
-} $checksum
-do_test trans-7.8 {
- execsql {SELECT md5sum(type,name,tbl_name,rootpage,sql) FROM sqlite_master}
-} $checksum2
-ifcapable tempdb {
- do_test trans-7.9 {
- execsql {
- BEGIN;
- CREATE TEMP TABLE t3 AS SELECT * FROM t2;
- INSERT INTO t2 SELECT * FROM t3;
- ROLLBACK;
- SELECT md5sum(x,y,z) FROM t2;
- }
- } $checksum
-}
-do_test trans-7.10 {
- execsql {SELECT md5sum(type,name,tbl_name,rootpage,sql) FROM sqlite_master}
-} $checksum2
-ifcapable tempdb {
- do_test trans-7.11 {
- execsql {
- BEGIN;
- CREATE TEMP TABLE t3 AS SELECT * FROM t2;
- INSERT INTO t2 SELECT * FROM t3;
- DROP INDEX i2x;
- DROP INDEX i2y;
- CREATE INDEX i3a ON t3(x);
- ROLLBACK;
- SELECT md5sum(x,y,z) FROM t2;
- }
- } $checksum
-}
-do_test trans-7.12 {
- execsql {SELECT md5sum(type,name,tbl_name,rootpage,sql) FROM sqlite_master}
-} $checksum2
-ifcapable tempdb {
- do_test trans-7.13 {
- execsql {
- BEGIN;
- DROP TABLE t2;
- ROLLBACK;
- SELECT md5sum(x,y,z) FROM t2;
- }
- } $checksum
-}
-do_test trans-7.14 {
- execsql {SELECT md5sum(type,name,tbl_name,rootpage,sql) FROM sqlite_master}
-} $checksum2
-integrity_check trans-7.15
-wal_check_journal_mode trans-7.16
-
-# Arrange for another process to begin modifying the database but abort
-# and die in the middle of the modification. Then have this process read
-# the database. This process should detect the journal file and roll it
-# back. Verify that this happens correctly.
-#
-set fd [open test.tcl w]
-puts $fd {
- sqlite3_test_control_pending_byte 0x0010000
- sqlite3 db test.db
- db eval {
- PRAGMA default_cache_size=20;
- BEGIN;
- CREATE TABLE t3 AS SELECT * FROM t2;
- DELETE FROM t2;
- }
- sqlite_abort
-}
-close $fd
-do_test trans-8.1 {
- catch {exec [info nameofexec] test.tcl}
- execsql {SELECT md5sum(x,y,z) FROM t2}
-} $checksum
-do_test trans-8.2 {
- execsql {SELECT md5sum(type,name,tbl_name,rootpage,sql) FROM sqlite_master}
-} $checksum2
-integrity_check trans-8.3
-set fd [open test.tcl w]
-puts $fd {
- sqlite3_test_control_pending_byte 0x0010000
- sqlite3 db test.db
- db eval {
- PRAGMA journal_mode=persist;
- PRAGMA default_cache_size=20;
- BEGIN;
- CREATE TABLE t3 AS SELECT * FROM t2;
- DELETE FROM t2;
- }
- sqlite_abort
-}
-close $fd
-do_test trans-8.4 {
- catch {exec [info nameofexec] test.tcl}
- execsql {SELECT md5sum(x,y,z) FROM t2}
-} $checksum
-do_test trans-8.5 {
- execsql {SELECT md5sum(type,name,tbl_name,rootpage,sql) FROM sqlite_master}
-} $checksum2
-integrity_check trans-8.6
-wal_check_journal_mode trans-8.7
-
-# In the following sequence of tests, compute the MD5 sum of the content
-# of a table, make lots of modifications to that table, then do a rollback.
-# Verify that after the rollback, the MD5 checksum is unchanged.
-#
-do_test trans-9.1 {
- execsql {
- PRAGMA default_cache_size=10;
- }
- db close
- sqlite3 db test.db
- execsql {
- BEGIN;
- CREATE TABLE t3(x TEXT);
- INSERT INTO t3 VALUES(randstr(10,400));
- INSERT INTO t3 VALUES(randstr(10,400));
- INSERT INTO t3 SELECT randstr(10,400) FROM t3;
- INSERT INTO t3 SELECT randstr(10,400) FROM t3;
- INSERT INTO t3 SELECT randstr(10,400) FROM t3;
- INSERT INTO t3 SELECT randstr(10,400) FROM t3;
- INSERT INTO t3 SELECT randstr(10,400) FROM t3;
- INSERT INTO t3 SELECT randstr(10,400) FROM t3;
- INSERT INTO t3 SELECT randstr(10,400) FROM t3;
- INSERT INTO t3 SELECT randstr(10,400) FROM t3;
- INSERT INTO t3 SELECT randstr(10,400) FROM t3;
- COMMIT;
- SELECT count(*) FROM t3;
- }
-} {1024}
-wal_check_journal_mode trans-9.1.1
-
-# The following procedure computes a "signature" for table "t3". If
-# T3 changes in any way, the signature should change.
-#
-# This is used to test ROLLBACK. We gather a signature for t3, then
-# make lots of changes to t3, then rollback and take another signature.
-# The two signatures should be the same.
-#
-proc signature {} {
- return [db eval {SELECT count(*), md5sum(x) FROM t3}]
-}
-
-# Repeat the following group of tests 20 times for quick testing and
-# 40 times for full testing. Each iteration of the test makes table
-# t3 a little larger, and thus takes a little longer, so doing 40 tests
-# is more than 2.0 times slower than doing 20 tests. Considerably more.
-#
-# Also, if temporary tables are stored in memory and the test pcache
-# is in use, only 20 iterations. Otherwise the test pcache runs out
-# of page slots and SQLite reports "out of memory".
-#
-if {[info exists G(isquick)] || (
- $TEMP_STORE==3 && [regexp {^pcache[[:digit:]]*$} [permutation]]
-) } {
- set limit 20
-} elseif {[info exists G(issoak)]} {
- set limit 100
-} else {
- set limit 40
-}
-
-# Do rollbacks. Make sure the signature does not change.
-#
-for {set i 2} {$i<=$limit} {incr i} {
- set ::sig [signature]
- set cnt [lindex $::sig 0]
- if {$i%2==0} {
- execsql {PRAGMA fullfsync=ON}
- } else {
- execsql {PRAGMA fullfsync=OFF}
- }
- set sqlite_sync_count 0
- set sqlite_fullsync_count 0
- do_test trans-9.$i.1-$cnt {
- execsql {
- BEGIN;
- DELETE FROM t3 WHERE random()%10!=0;
- INSERT INTO t3 SELECT randstr(10,10)||x FROM t3;
- INSERT INTO t3 SELECT randstr(10,10)||x FROM t3;
- ROLLBACK;
- }
- signature
- } $sig
- do_test trans-9.$i.2-$cnt {
- execsql {
- BEGIN;
- DELETE FROM t3 WHERE random()%10!=0;
- INSERT INTO t3 SELECT randstr(10,10)||x FROM t3;
- DELETE FROM t3 WHERE random()%10!=0;
- INSERT INTO t3 SELECT randstr(10,10)||x FROM t3;
- ROLLBACK;
- }
- signature
- } $sig
- if {$i<$limit} {
- do_test trans-9.$i.3-$cnt {
- execsql {
- INSERT INTO t3 SELECT randstr(10,400) FROM t3 WHERE random()%10==0;
- }
- } {}
- catch flush_async_queue
- if {$tcl_platform(platform)=="unix"} {
- do_test trans-9.$i.4-$cnt {
- expr {$sqlite_sync_count>0}
- } 1
- ifcapable pager_pragmas {
- do_test trans-9.$i.5-$cnt {
- expr {$sqlite_fullsync_count>0}
- } [expr {$i%2==0}]
- } else {
- do_test trans-9.$i.5-$cnt {
- expr {$sqlite_fullsync_count==0}
- } {1}
- }
- }
- }
-
- wal_check_journal_mode trans-9.$i.6-$cnt
- set ::pager_old_format 0
-}
-
-finish_test
« no previous file with comments | « third_party/sqlite/sqlite-src-3080704/test/trace2.test ('k') | third_party/sqlite/sqlite-src-3080704/test/trans2.test » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698