📄 diskfull.test
字号:
# 2001 October 12## 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 file is testing for correct handling of disk full# errors.# # $Id: diskfull.test,v 1.6 2007/04/05 17:15:53 danielk1977 Exp $set testdir [file dirname $argv0]source $testdir/tester.tclset sqlite_io_error_persist 0set sqlite_io_error_hit 0set sqlite_io_error_pending 0do_test diskfull-1.1 { execsql { CREATE TABLE t1(x); INSERT INTO t1 VALUES(randstr(1000,1000)); INSERT INTO t1 SELECT * FROM t1; INSERT INTO t1 SELECT * FROM t1; INSERT INTO t1 SELECT * FROM t1; INSERT INTO t1 SELECT * FROM t1; CREATE INDEX t1i1 ON t1(x); CREATE TABLE t2 AS SELECT x AS a, x AS b FROM t1; CREATE INDEX t2i1 ON t2(b); }} {}set sqlite_diskfull_pending 0integrity_check diskfull-1.2do_test diskfull-1.3 { set sqlite_diskfull_pending 1 catchsql { INSERT INTO t1 SELECT * FROM t1; }} {1 {database or disk is full}}set sqlite_diskfull_pending 0integrity_check diskfull-1.4do_test diskfull-1.5 { set sqlite_diskfull_pending 1 catchsql { DELETE FROM t1; }} {1 {database or disk is full}}set sqlite_diskfull_pending 0set sqlite_io_error_hit 0integrity_check diskfull-1.6proc do_diskfull_test {prefix sql} { set ::go 1 set ::sql $sql set ::i 1 while {$::go} { incr ::i do_test ${prefix}.$::i.1 { set ::sqlite_diskfull_pending $::i set ::sqlite_diskfull 0 set r [catchsql $::sql] if {!$::sqlite_diskfull} { set r {1 {database or disk is full}} set ::go 0 } if {$r=="1 {disk I/O error}"} { set r {1 {database or disk is full}} } set r } {1 {database or disk is full}} set ::sqlite_diskfull_pending 0 db close sqlite3 db test.db integrity_check ${prefix}.$::i.2 }}do_diskfull_test diskfull-2 VACUUM# db close# file delete -force test.db# file delete -force test.db-journal# sqlite3 db test.db# # do_test diskfull-3.1 {# execsql {# PRAGMA default_cache_size = 10;# CREATE TABLE t3(a, b, UNIQUE(a, b));# INSERT INTO t3 VALUES( randstr(100, 100), randstr(100, 100) );# INSERT INTO t3 SELECT randstr(100, 100), randstr(100, 100) FROM t3;# INSERT INTO t3 SELECT randstr(100, 100), randstr(100, 100) FROM t3;# INSERT INTO t3 SELECT randstr(100, 100), randstr(100, 100) FROM t3;# INSERT INTO t3 SELECT randstr(100, 100), randstr(100, 100) FROM t3;# INSERT INTO t3 SELECT randstr(100, 100), randstr(100, 100) FROM t3;# INSERT INTO t3 SELECT randstr(100, 100), randstr(100, 100) FROM t3;# INSERT INTO t3 SELECT randstr(100, 100), randstr(100, 100) FROM t3;# UPDATE t3 # SET b = (SELECT a FROM t3 WHERE rowid = (SELECT max(rowid)-1 FROM t3))# WHERE rowid = (SELECT max(rowid) FROM t3);# PRAGMA cache_size;# }# } {10}# breakpoint# do_diskfull_test diskfull-3.2 {# BEGIN;# INSERT INTO t3 VALUES( randstr(100, 100), randstr(100, 100) );# UPDATE t3 SET a = b;# COMMIT;# }finish_test
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -