Annotation of embedaddon/sqlite3/test/autovacuum_ioerr2.test, revision 1.1
1.1 ! misho 1: # 2001 October 12
! 2: #
! 3: # The author disclaims copyright to this source code. In place of
! 4: # 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: # This file implements regression tests for SQLite library. The
! 12: # focus of this file is testing for correct handling of I/O errors
! 13: # such as writes failing because the disk is full.
! 14: #
! 15: # The tests in this file use special facilities that are only
! 16: # available in the SQLite test fixture.
! 17: #
! 18: # $Id: autovacuum_ioerr2.test,v 1.7 2008/07/12 14:52:20 drh Exp $
! 19:
! 20: set testdir [file dirname $argv0]
! 21: source $testdir/tester.tcl
! 22:
! 23: # If this build of the library does not support auto-vacuum, omit this
! 24: # whole file.
! 25: ifcapable {!autovacuum} {
! 26: finish_test
! 27: return
! 28: }
! 29:
! 30: do_ioerr_test autovacuum-ioerr2-1 -sqlprep {
! 31: PRAGMA auto_vacuum = 1;
! 32: CREATE TABLE abc(a);
! 33: INSERT INTO abc VALUES(randstr(1500,1500));
! 34: } -sqlbody {
! 35: CREATE TABLE abc2(a);
! 36: BEGIN;
! 37: DELETE FROM abc;
! 38: INSERT INTO abc VALUES(randstr(1500,1500));
! 39: CREATE TABLE abc3(a);
! 40: COMMIT;
! 41: }
! 42:
! 43: do_ioerr_test autovacuum-ioerr2-2 -tclprep {
! 44: execsql {
! 45: PRAGMA auto_vacuum = 1;
! 46: PRAGMA cache_size = 10;
! 47: BEGIN;
! 48: CREATE TABLE abc(a);
! 49: INSERT INTO abc VALUES(randstr(1100,1100)); -- Page 4 is overflow
! 50: INSERT INTO abc VALUES(randstr(1100,1100)); -- Page 5 is overflow
! 51: }
! 52: for {set i 0} {$i<150} {incr i} {
! 53: execsql {
! 54: INSERT INTO abc VALUES(randstr(100,100));
! 55: }
! 56: }
! 57: execsql COMMIT
! 58: } -sqlbody {
! 59: BEGIN;
! 60: DELETE FROM abc WHERE length(a)>100;
! 61: UPDATE abc SET a = randstr(90,90);
! 62: CREATE TABLE abc3(a);
! 63: COMMIT;
! 64: }
! 65:
! 66: do_ioerr_test autovacuum-ioerr2-3 -sqlprep {
! 67: PRAGMA auto_vacuum = 1;
! 68: CREATE TABLE abc(a);
! 69: CREATE TABLE abc2(b);
! 70: } -sqlbody {
! 71: BEGIN;
! 72: INSERT INTO abc2 VALUES(10);
! 73: DROP TABLE abc;
! 74: COMMIT;
! 75: DROP TABLE abc2;
! 76: }
! 77:
! 78: forcedelete backup.db
! 79: ifcapable subquery {
! 80: do_ioerr_test autovacuum-ioerr2-4 -tclprep {
! 81: if {![file exists backup.db]} {
! 82: sqlite3 dbb backup.db
! 83: execsql {
! 84: PRAGMA auto_vacuum = 1;
! 85: BEGIN;
! 86: CREATE TABLE abc(a);
! 87: INSERT INTO abc VALUES(randstr(1100,1100)); -- Page 4 is overflow
! 88: INSERT INTO abc VALUES(randstr(1100,1100)); -- Page 5 is overflow
! 89: } dbb
! 90: for {set i 0} {$i<2500} {incr i} {
! 91: execsql {
! 92: INSERT INTO abc VALUES(randstr(100,100));
! 93: } dbb
! 94: }
! 95: execsql {
! 96: COMMIT;
! 97: PRAGMA cache_size = 10;
! 98: } dbb
! 99: dbb close
! 100: }
! 101: db close
! 102: forcedelete test.db
! 103: forcedelete test.db-journal
! 104: forcecopy backup.db test.db
! 105: set ::DB [sqlite3 db test.db]
! 106: execsql {
! 107: PRAGMA cache_size = 10;
! 108: }
! 109: } -sqlbody {
! 110: BEGIN;
! 111: DELETE FROM abc WHERE oid < 3;
! 112: UPDATE abc SET a = randstr(100,100) WHERE oid > 2300;
! 113: UPDATE abc SET a = randstr(1100,1100) WHERE oid =
! 114: (select max(oid) from abc);
! 115: COMMIT;
! 116: }
! 117: }
! 118:
! 119: do_ioerr_test autovacuum-ioerr2-1 -sqlprep {
! 120: PRAGMA auto_vacuum = 1;
! 121: CREATE TABLE abc(a);
! 122: INSERT INTO abc VALUES(randstr(1500,1500));
! 123: } -sqlbody {
! 124: CREATE TABLE abc2(a);
! 125: BEGIN;
! 126: DELETE FROM abc;
! 127: INSERT INTO abc VALUES(randstr(1500,1500));
! 128: CREATE TABLE abc3(a);
! 129: COMMIT;
! 130: }
! 131:
! 132: finish_test
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>