123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- # 2008 Feb 1
- #
- # The author disclaims copyright to this source code. In place of
- # a legal notice, here is a blessing:
- #
- # May you do good and not evil.
- # May you find forgiveness for yourself and forgive others.
- # May you share freely, never taking more than you give.
- #
- #***********************************************************************
- #
- # This file is to test that ticket #2920 is fixed.
- #
- # $Id: tkt2920.test,v 1.1 2008/02/02 02:48:52 drh Exp $
- #
- set testdir [file dirname $argv0]
- source $testdir/tester.tcl
- # Create a database file that is full.
- #
- do_test tkt2920-1.1 {
- db eval {
- PRAGMA page_size=1024;
- PRAGMA max_page_count=40;
- PRAGMA auto_vacuum=0;
- CREATE TABLE filler (fill);
- }
- file size test.db
- } {2048}
- do_test tkt2920-1.2 {
- db eval BEGIN
- for {set i 0} {$i<34} {incr i} {
- db eval {INSERT INTO filler VALUES(randomblob(1024))}
- }
- db eval COMMIT
- } {}
- # Try to add a single new page to the full database. We get
- # a disk full error. But this does not corrupt the database.
- #
- do_test tkt2920-1.3 {
- db eval BEGIN
- catchsql {
- INSERT INTO filler VALUES(randomblob(1024))
- }
- } {1 {database or disk is full}}
- integrity_check tkt2920-1.4
- # Increase the maximum size of the database file by 1 page,
- # but then try to add a two-page record. This also fails.
- #
- do_test tkt2920-1.5 {
- db eval {PRAGMA max_page_count=41}
- catchsql {
- INSERT INTO filler VALUES(randomblob(2048))
- }
- } {1 {database or disk is full}}
- integrity_check tkt2920-1.6
- # Increase the maximum size of the database by one more page.
- # This time the insert works.
- #
- do_test tkt2920-1.7 {
- db eval {PRAGMA max_page_count=42}
- catchsql {
- INSERT INTO filler VALUES(randomblob(2048))
- }
- } {0 {}}
- integrity_check tkt2920-1.8
- # The previous errors cancelled the transaction.
- #
- do_test tkt2920-1.9 {
- catchsql {COMMIT}
- } {1 {cannot commit - no transaction is active}}
- finish_test
|