File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / sqlite3 / test / tkt3918.test
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue Feb 21 17:04:16 2012 UTC (12 years, 10 months ago) by misho
Branches: sqlite3, MAIN
CVS tags: v3_7_10, HEAD
sqlite3

    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.1.1 2012/02/21 17:04:16 misho 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>