| Index: third_party/sqlite/src/test/corrupt2.test
|
| diff --git a/third_party/sqlite/src/test/corrupt2.test b/third_party/sqlite/src/test/corrupt2.test
|
| index acda25436d8a3c4c204e107cb2d5c52b262f14af..bdbc0165f47ceaf16b8115155e12fafcd13638fd 100644
|
| --- a/third_party/sqlite/src/test/corrupt2.test
|
| +++ b/third_party/sqlite/src/test/corrupt2.test
|
| @@ -18,6 +18,15 @@
|
| set testdir [file dirname $argv0]
|
| source $testdir/tester.tcl
|
|
|
| +# Do not use a codec for tests in this file, as the database file is
|
| +# manipulated directly using tcl scripts (using the [hexio_write] command).
|
| +#
|
| +do_not_use_codec
|
| +
|
| +set presql ""
|
| +catch { set presql "$::G(perm:presql);" }
|
| +unset -nocomplain ::G(perm:presql)
|
| +
|
| # The following tests - corrupt2-1.* - create some databases corrupted in
|
| # specific ways and ensure that SQLite detects them as corrupt.
|
| #
|
| @@ -41,9 +50,10 @@ do_test corrupt2-1.2 {
|
| close $f
|
|
|
| sqlite3 db2 corrupt.db
|
| - catchsql {
|
| + catchsql "
|
| + $::presql
|
| SELECT * FROM sqlite_master;
|
| - } db2
|
| + " db2
|
| } {1 {file is encrypted or is not a database}}
|
|
|
| do_test corrupt2-1.3 {
|
| @@ -60,9 +70,10 @@ do_test corrupt2-1.3 {
|
| close $f
|
|
|
| sqlite3 db2 corrupt.db
|
| - catchsql {
|
| + catchsql "
|
| + $::presql
|
| SELECT * FROM sqlite_master;
|
| - } db2
|
| + " db2
|
| } {1 {file is encrypted or is not a database}}
|
|
|
| do_test corrupt2-1.4 {
|
| @@ -79,9 +90,10 @@ do_test corrupt2-1.4 {
|
| close $f
|
|
|
| sqlite3 db2 corrupt.db
|
| - catchsql {
|
| + catchsql "
|
| + $::presql
|
| SELECT * FROM sqlite_master;
|
| - } db2
|
| + " db2
|
| } {1 {database disk image is malformed}}
|
|
|
| do_test corrupt2-1.5 {
|
| @@ -101,9 +113,10 @@ do_test corrupt2-1.5 {
|
| close $f
|
|
|
| sqlite3 db2 corrupt.db
|
| - catchsql {
|
| + catchsql "
|
| + $::presql
|
| SELECT * FROM sqlite_master;
|
| - } db2
|
| + " db2
|
| } {1 {database disk image is malformed}}
|
| db2 close
|
|
|
| @@ -115,7 +128,8 @@ do_test corrupt2-2.1 {
|
| copy_file test.db corrupt.db
|
|
|
| sqlite3 db2 corrupt.db
|
| - execsql {
|
| + execsql "
|
| + $::presql
|
| CREATE INDEX a1 ON abc(a);
|
| CREATE INDEX a2 ON abc(b);
|
| PRAGMA writable_schema = 1;
|
| @@ -123,13 +137,14 @@ do_test corrupt2-2.1 {
|
| SET name = 'a3', sql = 'CREATE INDEX a3' || substr(sql, 16, 10000)
|
| WHERE type = 'index';
|
| PRAGMA writable_schema = 0;
|
| - } db2
|
| + " db2
|
|
|
| db2 close
|
| sqlite3 db2 corrupt.db
|
| - catchsql {
|
| + catchsql "
|
| + $::presql
|
| SELECT * FROM sqlite_master;
|
| - } db2
|
| + " db2
|
| } {1 {malformed database schema (a3) - index a3 already exists}}
|
|
|
| db2 close
|
| @@ -139,7 +154,8 @@ do_test corrupt2-3.1 {
|
| file delete -force corrupt.db-journal
|
| sqlite3 db2 corrupt.db
|
|
|
| - execsql {
|
| + execsql "
|
| + $::presql
|
| PRAGMA auto_vacuum = 1;
|
| PRAGMA page_size = 1024;
|
| CREATE TABLE t1(a, b, c);
|
| @@ -149,7 +165,7 @@ do_test corrupt2-3.1 {
|
| INSERT INTO t2 SELECT * FROM t2;
|
| INSERT INTO t2 SELECT * FROM t2;
|
| INSERT INTO t2 SELECT * FROM t2;
|
| - } db2
|
| + " db2
|
|
|
| db2 close
|
|
|
| @@ -168,9 +184,10 @@ do_test corrupt2-3.1 {
|
| close $fd
|
|
|
| sqlite3 db2 corrupt.db
|
| - catchsql {
|
| + catchsql "
|
| + $::presql
|
| DROP TABLE t1;
|
| - } db2
|
| + " db2
|
| } {1 {database disk image is malformed}}
|
|
|
| do_test corrupt2-4.1 {
|
| @@ -187,7 +204,8 @@ do_test corrupt2-5.1 {
|
| file delete -force corrupt.db-journal
|
| sqlite3 db2 corrupt.db
|
|
|
| - execsql {
|
| + execsql "
|
| + $::presql
|
| PRAGMA auto_vacuum = 0;
|
| PRAGMA page_size = 1024;
|
| CREATE TABLE t1(a, b, c);
|
| @@ -198,7 +216,7 @@ do_test corrupt2-5.1 {
|
| INSERT INTO t2 SELECT * FROM t2;
|
| INSERT INTO t2 SELECT * FROM t2;
|
| INSERT INTO t1 SELECT * FROM t2;
|
| - } db2
|
| + " db2
|
|
|
| db2 close
|
|
|
| @@ -219,6 +237,7 @@ do_test corrupt2-5.1 {
|
| close $fd
|
|
|
| sqlite3 db2 corrupt.db
|
| + db2 eval $::presql
|
| db2 eval {SELECT rowid FROM t1} {
|
| set result [db2 eval {pragma integrity_check}]
|
| break
|
| @@ -242,6 +261,7 @@ proc corruption_test {args} {
|
| file delete -force corrupt.db-journal
|
|
|
| sqlite3 db corrupt.db
|
| + db eval $::presql
|
| eval $A(-tclprep)
|
| db eval $A(-sqlprep)
|
| db close
|
| @@ -276,7 +296,7 @@ ifcapable autovacuum {
|
| hexio_write corrupt.db [expr 1024*5] 00000008
|
| } -test {
|
| do_test corrupt2-6.1 {
|
| - catchsql { pragma incremental_vacuum = 1 }
|
| + catchsql " $::presql pragma incremental_vacuum = 1 "
|
| } {1 {database disk image is malformed}}
|
| }
|
|
|
| @@ -297,7 +317,7 @@ ifcapable autovacuum {
|
| hexio_write corrupt.db [expr 1024*2 + 8] 00000009
|
| } -test {
|
| do_test corrupt2-6.2 {
|
| - catchsql { pragma incremental_vacuum = 1 }
|
| + catchsql " $::presql pragma incremental_vacuum = 1 "
|
| } {1 {database disk image is malformed}}
|
| }
|
|
|
| @@ -318,7 +338,7 @@ ifcapable autovacuum {
|
| hexio_write corrupt.db [expr 1024 + ($nPage-3)*5] 010000000
|
| } -test {
|
| do_test corrupt2-6.3 {
|
| - catchsql { pragma incremental_vacuum = 1 }
|
| + catchsql " $::presql pragma incremental_vacuum = 1 "
|
| } {1 {database disk image is malformed}}
|
| }
|
|
|
| @@ -334,12 +354,14 @@ ifcapable autovacuum {
|
| seek $fd 0 end
|
| puts -nonewline $fd [string repeat x $nAppend]
|
| close $fd
|
| + hexio_write corrupt.db 28 00000000
|
| } -test {
|
| do_test corrupt2-6.4 {
|
| - catchsql {
|
| + catchsql "
|
| + $::presql
|
| BEGIN EXCLUSIVE;
|
| COMMIT;
|
| - }
|
| + "
|
| } {1 {database disk image is malformed}}
|
| }
|
| }
|
| @@ -373,7 +395,7 @@ corruption_test -sqlprep $sqlprep -corrupt {
|
| close $fd
|
| } -test {
|
| do_test corrupt2-7.1 {
|
| - catchsql { SELECT b FROM t1 ORDER BY b ASC }
|
| + catchsql " $::presql SELECT b FROM t1 ORDER BY b ASC "
|
| } {1 {database disk image is malformed}}
|
| }
|
|
|
| @@ -394,7 +416,7 @@ corruption_test -sqlprep $sqlprep -corrupt {
|
| close $fd
|
| } -test {
|
| do_test corrupt2-7.1 {
|
| - catchsql { SELECT b FROM t1 ORDER BY b DESC }
|
| + catchsql " $::presql SELECT b FROM t1 ORDER BY b DESC "
|
| } {1 {database disk image is malformed}}
|
| }
|
|
|
| @@ -412,7 +434,7 @@ corruption_test -sqlprep $sqlprep -corrupt {
|
| close $fd
|
| } -test {
|
| do_test corrupt2-8.1 {
|
| - catchsql { SELECT * FROM t1 WHERE rowid=1000 }
|
| + catchsql " $::presql SELECT * FROM t1 WHERE rowid=1000 "
|
| } {1 {database disk image is malformed}}
|
| }
|
|
|
| @@ -440,7 +462,7 @@ corruption_test -sqlprep {
|
| close $fd
|
| } -test {
|
| do_test corrupt2-9.1 {
|
| - catchsql { SELECT sql FROM sqlite_master }
|
| + catchsql " $::presql SELECT sql FROM sqlite_master "
|
| } {1 {database disk image is malformed}}
|
| }
|
|
|
| @@ -451,7 +473,7 @@ corruption_test -sqlprep {
|
| UPDATE sqlite_master SET rootpage = NULL WHERE name = 't2';
|
| } -test {
|
| do_test corrupt2-10.1 {
|
| - catchsql { SELECT * FROM t2 }
|
| + catchsql " $::presql SELECT * FROM t2 "
|
| } {1 {malformed database schema (t2)}}
|
| do_test corrupt2-10.2 {
|
| sqlite3_errcode db
|
| @@ -476,7 +498,7 @@ corruption_test -sqlprep {
|
| hexio_write corrupt.db 24 12345678
|
| } -test {
|
| do_test corrupt2-11.1 {
|
| - catchsql { PRAGMA incremental_vacuum }
|
| + catchsql " $::presql PRAGMA incremental_vacuum "
|
| } {1 {database disk image is malformed}}
|
| }
|
| corruption_test -sqlprep {
|
| @@ -497,7 +519,7 @@ corruption_test -sqlprep {
|
| hexio_write corrupt.db 24 12345678
|
| } -test {
|
| do_test corrupt2-12.1 {
|
| - catchsql { PRAGMA incremental_vacuum }
|
| + catchsql " $::presql PRAGMA incremental_vacuum "
|
| } {1 {database disk image is malformed}}
|
| }
|
|
|
| @@ -515,13 +537,14 @@ ifcapable autovacuum {
|
| INSERT INTO t1 VALUES(NULL, randstr(50,50));
|
| }
|
| for {set ii 0} {$ii < 10} {incr ii} {
|
| - db eval { INSERT INTO t1 SELECT NULL, randstr(50,50) FROM t1 }
|
| + db eval " $::presql INSERT INTO t1 SELECT NULL, randstr(50,50) FROM t1 "
|
| }
|
| } -corrupt {
|
| do_test corrupt2-13.1 {
|
| file size corrupt.db
|
| } $::sqlite_pending_byte
|
| hexio_write corrupt.db [expr $::sqlite_pending_byte+1023] 00
|
| + hexio_write corrupt.db 28 00000000
|
| } -test {
|
| do_test corrupt2-13.2 {
|
| file size corrupt.db
|
|
|