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

     1  # 2007 Aug 10
     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  # This test script reproduces the problem reported by ticket #2565,
    13  # A database corruption bug that occurs in auto_vacuum mode when
    14  # the soft_heap_limit is set low enough to be triggered.
    15  #
    16  # $Id: softheap1.test,v 1.5 2008/07/08 17:13:59 danielk1977 Exp $
    17  
    18  
    19  set testdir [file dirname $argv0]
    20  source $testdir/tester.tcl
    21  
    22  ifcapable !integrityck {
    23    finish_test
    24    return
    25  }
    26  
    27  # EVIDENCE-OF: R-26343-45930 This pragma invokes the
    28  # sqlite3_soft_heap_limit64() interface with the argument N, if N is
    29  # specified and is a non-negative integer.
    30  #
    31  # EVIDENCE-OF: R-64451-07163 The soft_heap_limit pragma always returns
    32  # the same integer that would be returned by the
    33  # sqlite3_soft_heap_limit64(-1) C-language function.
    34  #
    35  do_test softheap1-1.0 {
    36    execsql {PRAGMA soft_heap_limit}
    37  } [sqlite3_soft_heap_limit -1]
    38  do_test softheap1-1.1 {
    39    execsql {PRAGMA soft_heap_limit=123456; PRAGMA soft_heap_limit;}
    40  } {123456 123456}
    41  do_test softheap1-1.2 {
    42    sqlite3_soft_heap_limit -1
    43  } {123456}
    44  do_test softheap1-1.3 {
    45    execsql {PRAGMA soft_heap_limit(-1); PRAGMA soft_heap_limit;}
    46  } {123456 123456}
    47  do_test softheap1-1.4 {
    48    execsql {PRAGMA soft_heap_limit(0); PRAGMA soft_heap_limit;}
    49  } {0 0}
    50  
    51  sqlite3_soft_heap_limit 5000
    52  do_test softheap1-2.0 {
    53    execsql {PRAGMA soft_heap_limit}
    54  } {5000}
    55  do_test softheap1-2.1 {
    56    execsql {
    57      PRAGMA auto_vacuum=1;
    58      CREATE TABLE t1(x);
    59      INSERT INTO t1 VALUES(hex(randomblob(1000)));
    60      BEGIN;
    61    }
    62    execsql {
    63      CREATE TABLE t2 AS SELECT * FROM t1;
    64    }
    65    execsql {
    66      ROLLBACK;
    67    }
    68    execsql {
    69      PRAGMA integrity_check;
    70    }
    71  } {ok}
    72  
    73  sqlite3_soft_heap_limit $cmdlinearg(soft-heap-limit)
    74  finish_test