gitlab.com/CoiaPrant/sqlite3@v1.19.1/testdata/tcl/tkt3762.test (about)

     1  # 2009 March 28
     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  # Ticket #3762:  Make sure that an incremental vacuum that reduces the
    13  # size of the database file such that if a pointer-map page is eliminated
    14  # it can be correctly rolled back.
    15  #
    16  # That ticket #3762 has been fixed has already been verified by the
    17  # savepoint6.test test script.  But this script is simplier and a
    18  # redundant test never hurts.
    19  #
    20  # $Id: tkt3762.test,v 1.1 2009/03/31 00:50:36 drh Exp $
    21  
    22  set testdir [file dirname $argv0]
    23  source $testdir/tester.tcl
    24  
    25  do_test tkt3762-1.1 {
    26    db eval {
    27      PRAGMA auto_vacuum=INCREMENTAL;
    28      PRAGMA page_size=1024;
    29      PRAGMA cache_size=10;
    30      CREATE TABLE t1(x);
    31      INSERT INTO t1 VALUES(zeroblob(900));
    32      INSERT INTO t1 VALUES(zeroblob(900));
    33      INSERT INTO t1 SELECT x FROM t1;
    34      INSERT INTO t1 SELECT x FROM t1;
    35      INSERT INTO t1 SELECT x FROM t1;
    36      INSERT INTO t1 SELECT x FROM t1;
    37      INSERT INTO t1 SELECT x FROM t1;
    38      INSERT INTO t1 SELECT x FROM t1;
    39      INSERT INTO t1 SELECT x FROM t1;
    40      DELETE FROM t1 WHERE rowid>202;
    41      VACUUM;
    42      
    43      BEGIN;
    44      DELETE FROM t1 WHERE rowid IN (10,11,12) ;
    45      PRAGMA incremental_vacuum(10);
    46      UPDATE t1 SET x=zeroblob(900) WHERE rowid BETWEEN 100 AND 110;
    47      INSERT INTO t1 VALUES(zeroblob(39000));
    48      SELECT count(*) FROM t1;
    49      ROLLBACK;
    50    }
    51    db eval {PRAGMA integrity_check}
    52  } {ok}
    53  
    54  finish_test