CoolFace
Modelpublic

AryaWu/sqlite

sourceHugging Faceupdated 9mo agoView on Hugging Face
0likes
incrcorrupt.test127 linesDownload Raw Back to test
1# 2001 October 122#3# The author disclaims copyright to this source code.  In place of4# a legal notice, here is a blessing:5#6#    May you do good and not evil.7#    May you find forgiveness for yourself and forgive others.8#    May you share freely, never taking more than you give.9#10#***********************************************************************11# Test that "PRAGMA incremental_vacuum" detects and reports database12# corruption properly. And that "PRAGMA auto_vacuum = INCREMENTAL"13# does as well.14#15 16set testdir [file dirname $argv0]17source $testdir/tester.tcl18set testprefix incrcorrupt19 20# If this build of the library does not support auto-vacuum, omit this21# whole file.22ifcapable {!autovacuum} {23  finish_test24  return25}26 27do_execsql_test 1.0 {28  PRAGMA auto_vacuum = 2;29  CREATE TABLE t1(a PRIMARY KEY, b);30 31  WITH data(i) AS (32    SELECT 1 UNION ALL SELECT i+1 FROM data33  )34  INSERT INTO t1 SELECT i, randomblob(600) FROM data LIMIT 20;35  PRAGMA page_count;36} {24}37 38do_execsql_test 1.1 {39  PRAGMA incremental_vacuum;40} {}41 42do_test 1.2 {43  db_save44  hexio_write test.db 36 0000001945  catchsql { PRAGMA incremental_vacuum; }46} {1 {database disk image is malformed}}47 48do_test 1.3 {49  set stmt [sqlite3_prepare_v2 db "PRAGMA incremental_vacuum" -1 dummy]50  sqlite3_step $stmt51} {SQLITE_CORRUPT}52do_test 1.4 { sqlite3_errcode db } {SQLITE_CORRUPT}53do_test 1.5 { sqlite3_errmsg db } {database disk image is malformed}54do_test 1.6 { sqlite3_finalize $stmt } {SQLITE_CORRUPT}55do_test 1.7 { sqlite3_errcode db } {SQLITE_CORRUPT}56do_test 1.8 { sqlite3_errmsg db } {database disk image is malformed}57 58do_test 1.9 {59  set stmt [sqlite3_prepare_v2 db "PRAGMA incremental_vacuum" -1 dummy]60  sqlite3_step $stmt61} {SQLITE_CORRUPT}62do_test 1.10 { sqlite3_errcode db } {SQLITE_CORRUPT}63do_test 1.11 { sqlite3_errmsg db } {database disk image is malformed}64 65do_test 1.12 {66  set stmt2 [sqlite3_prepare_v2 db "SELECT 1" -1 dummy]67  sqlite3_finalize $stmt268} {SQLITE_OK}69do_test 1.13 { sqlite3_errcode db } {SQLITE_OK}70do_test 1.14 { sqlite3_errmsg db } {not an error}71 72do_test 1.15 { sqlite3_finalize $stmt } {SQLITE_CORRUPT}73do_test 1.16 { sqlite3_errcode db } {SQLITE_CORRUPT}74do_test 1.17 { sqlite3_errmsg db } {database disk image is malformed}75 76#-------------------------------------------------------------------------77#78reset_db79 80do_execsql_test 2.1 {81  PRAGMA auto_vacuum = 1;82  CREATE TABLE t1(a PRIMARY KEY, b);83  WITH data(i) AS (84    SELECT 1 UNION ALL SELECT i+1 FROM data85  )86  INSERT INTO t1 SELECT i, randomblob(600) FROM data LIMIT 20;87  PRAGMA page_count;88} {24}89 90do_test 2.2 {91  db_save92  set fd [open test.db r+]93  chan truncate $fd [expr 22*1024]94  close $fd95  catchsql { PRAGMA incremental_vacuum; }96} {1 {database disk image is malformed}}97 98do_test 2.3 {99  set stmt [sqlite3_prepare_v2 db "PRAGMA auto_vacuum = INCREMENTAL" -1 dummy]100  sqlite3_step $stmt101} {SQLITE_CORRUPT}102do_test 2.4 { sqlite3_errcode db } {SQLITE_CORRUPT}103do_test 2.5 { sqlite3_errmsg db } {database disk image is malformed}104do_test 2.6 { sqlite3_finalize $stmt } {SQLITE_CORRUPT}105do_test 2.7 { sqlite3_errcode db } {SQLITE_CORRUPT}106do_test 2.8 { sqlite3_errmsg db } {database disk image is malformed}107 108do_test 2.9 {109  set stmt [sqlite3_prepare_v2 db "PRAGMA auto_vacuum = INCREMENTAL" -1 dummy]110  sqlite3_step $stmt111} {SQLITE_CORRUPT}112do_test 2.10 { sqlite3_errcode db } {SQLITE_CORRUPT}113do_test 2.11 { sqlite3_errmsg db } {database disk image is malformed}114 115do_test 2.12 {116  set stmt2 [sqlite3_prepare_v2 db "SELECT 1" -1 dummy]117  sqlite3_finalize $stmt2118} {SQLITE_OK}119do_test 2.13 { sqlite3_errcode db } {SQLITE_OK}120do_test 2.14 { sqlite3_errmsg db } {not an error}121 122do_test 2.15 { sqlite3_finalize $stmt } {SQLITE_CORRUPT}123do_test 2.16 { sqlite3_errcode db } {SQLITE_CORRUPT}124do_test 2.17 { sqlite3_errmsg db } {database disk image is malformed}125 126finish_test127