github.com/jdgcs/sqlite3@v1.12.1-0.20210908114423-bc5f96e4dd51/testdata/tcl/tkt2686.test (about)

     1  # 2007 Oct 3
     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 file is to test that ticket #2686 has been fixed.
    13  #
    14  # $Id: tkt2686.test,v 1.3 2008/02/02 02:48:52 drh Exp $
    15  #
    16  
    17  set testdir [file dirname $argv0]
    18  source $testdir/tester.tcl
    19  
    20  ifcapable !subquery {
    21    finish_test
    22    return
    23  }
    24  
    25  db eval {
    26    PRAGMA page_size=1024;
    27    PRAGMA max_page_count=50;
    28    PRAGMA auto_vacuum=0;
    29    CREATE TABLE filler (fill);
    30  }
    31  for {set i 1} {$i<2000} {incr i} {
    32    do_test tkt2686-$i.1 {
    33      db eval BEGIN
    34      set rc [catch {
    35        while 1 {
    36          db eval {INSERT INTO filler (fill) VALUES (randstr(1000, 10000)) }
    37        }
    38      } msg]
    39      lappend rc $msg
    40    } {1 {database or disk is full}}
    41    do_test tkt2686-$i.2 {
    42      execsql {
    43        DELETE FROM filler 
    44         WHERE rowid <= (SELECT MAX(rowid) FROM filler LIMIT 20)
    45      }
    46    } {}
    47    integrity_check tkt2686-$i.3
    48    catch {db eval COMMIT}
    49  }
    50  
    51  db close
    52  forcedelete test.db test.db-journal
    53  sqlite3 db test.db
    54  
    55  db eval {
    56    PRAGMA page_size=1024;
    57    PRAGMA max_page_count=50;
    58    PRAGMA auto_vacuum=1;
    59    CREATE TABLE filler (fill);
    60  }
    61  for {set i 10000} {$i<12000} {incr i} {
    62    do_test tkt2686-$i.1 {
    63      db eval BEGIN
    64      set rc [catch {
    65        while 1 {
    66          db eval {INSERT INTO filler (fill) VALUES (randstr(1000, 10000)) }
    67        }
    68      } msg]
    69      lappend rc $msg
    70    } {1 {database or disk is full}}
    71    do_test tkt2686-$i.2 {
    72      execsql {
    73        DELETE FROM filler 
    74         WHERE rowid <= (SELECT MAX(rowid) FROM filler LIMIT 20)
    75      }
    76    } {}
    77    integrity_check tkt2686-$i.3
    78    catch {db eval COMMIT}
    79  }
    80  
    81  finish_test