| 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
 | 
| 
 |