Annotation of embedaddon/sqlite3/test/tkt3918.test, revision 1.1
1.1 ! misho 1: # 2009 June 17
! 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: #
! 12: # $Id: tkt3918.test,v 1.1 2009/06/17 11:13:28 danielk1977 Exp $
! 13:
! 14: set testdir [file dirname $argv0]
! 15: source $testdir/tester.tcl
! 16:
! 17: do_test tkt3918.1 {
! 18: execsql {
! 19: PRAGMA page_size = 1024;
! 20: PRAGMA auto_vacuum = incremental;
! 21: CREATE TABLE t1(i, x);
! 22: }
! 23: } {}
! 24: do_test tkt3918.2 {
! 25: execsql {
! 26: INSERT INTO t1 VALUES(1, randstr(1000,1000));
! 27: INSERT INTO t1 VALUES(2, zeroblob(248*1020 + 100));
! 28: INSERT INTO t1 VALUES(3, zeroblob(2*1020 + 100));
! 29: }
! 30: } {}
! 31:
! 32: # This set of statements sets up the free list so that the
! 33: # first free-list trunk page contains only a single leaf.
! 34: # The leaf page is also the last page in the database. The
! 35: # second free-list trunk page contains, amongst other things,
! 36: # page number 4.
! 37: do_test tkt3918.3 {
! 38: execsql {
! 39: DELETE FROM t1 WHERE i = 2;
! 40: DELETE FROM t1 WHERE i = 1;
! 41: DELETE FROM t1 WHERE i = 3;
! 42: }
! 43: } {}
! 44:
! 45: # Incrementally vacuum the database to reduce its size by a single
! 46: # page. This will remove the single leaf from the first page in
! 47: # the linked list of free-list trunk pages.
! 48: do_test tkt3918.4 {
! 49: execsql { PRAGMA incremental_vacuum = 1 }
! 50: } {}
! 51:
! 52: # Create another table. This operation will attempt to extract
! 53: # page 4 from the database free-list. Bug 3918 caused sqlite to
! 54: # incorrectly report corruption here.
! 55: do_test tkt3918.5 {
! 56: execsql { CREATE TABLE t2(a, b) }
! 57: } {}
! 58:
! 59: finish_test
! 60:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>