File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / sqlite3 / test / tkt2920.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: # 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.1.1 2012/02/21 17:04:16 misho 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>