Annotation of embedaddon/sqlite3/test/tkt2920.test, revision 1.1.1.1

1.1       misho       1: # 2008 Feb 1
                      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 #2920 is fixed.
                     13: #
                     14: # $Id: tkt2920.test,v 1.1 2008/02/02 02:48:52 drh Exp $
                     15: #
                     16: 
                     17: set testdir [file dirname $argv0]
                     18: source $testdir/tester.tcl
                     19: 
                     20: # Create a database file that is full.
                     21: #
                     22: do_test tkt2920-1.1 {
                     23:   db eval {
                     24:     PRAGMA page_size=1024;
                     25:     PRAGMA max_page_count=40;
                     26:     PRAGMA auto_vacuum=0;
                     27:     CREATE TABLE filler (fill);
                     28:   }
                     29:   file size test.db
                     30: } {2048}
                     31: do_test tkt2920-1.2 {
                     32:   db eval BEGIN
                     33:   for {set i 0} {$i<34} {incr i} {
                     34:     db eval {INSERT INTO filler VALUES(randomblob(1024))}
                     35:   }
                     36:   db eval COMMIT
                     37: }  {}
                     38: 
                     39: # Try to add a single new page to the full database.  We get
                     40: # a disk full error.  But this does not corrupt the database.
                     41: #
                     42: do_test tkt2920-1.3 {
                     43:   db eval BEGIN
                     44:   catchsql {
                     45:      INSERT INTO filler VALUES(randomblob(1024))
                     46:   }
                     47: } {1 {database or disk is full}}
                     48: integrity_check tkt2920-1.4
                     49: 
                     50: # Increase the maximum size of the database file by 1 page,
                     51: # but then try to add a two-page record.  This also fails.
                     52: #
                     53: do_test tkt2920-1.5 {
                     54:   db eval {PRAGMA max_page_count=41}
                     55:   catchsql {
                     56:      INSERT INTO filler VALUES(randomblob(2048))
                     57:   }
                     58: } {1 {database or disk is full}}
                     59: integrity_check tkt2920-1.6
                     60: 
                     61: # Increase the maximum size of the database by one more page.
                     62: # This time the insert works.
                     63: #
                     64: do_test tkt2920-1.7 {
                     65:   db eval {PRAGMA max_page_count=42}
                     66:   catchsql {
                     67:      INSERT INTO filler VALUES(randomblob(2048))
                     68:   }
                     69: } {0 {}}
                     70: integrity_check tkt2920-1.8
                     71: 
                     72: # The previous errors cancelled the transaction.
                     73: #
                     74: do_test tkt2920-1.9 {
                     75:   catchsql {COMMIT}
                     76: } {1 {cannot commit - no transaction is active}}
                     77: 
                     78: finish_test

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>