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 79