~ubuntu-branches/ubuntu/karmic/gears/karmic

« back to all changes in this revision

Viewing changes to third_party/sqlite_google/test/diskfull.test

  • Committer: Bazaar Package Importer
  • Author(s): Stefan Lesicnik
  • Date: 2009-04-30 19:15:25 UTC
  • Revision ID: james.westby@ubuntu.com-20090430191525-0790sb5wzg8ou0xb
Tags: upstream-0.5.21.0~svn3334+dfsg
ImportĀ upstreamĀ versionĀ 0.5.21.0~svn3334+dfsg

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# 2001 October 12
 
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
# This file implements regression tests for SQLite library.  The
 
12
# focus of this file is testing for correct handling of disk full
 
13
# errors.
 
14
 
15
# $Id: diskfull.test,v 1.8 2008/07/12 14:52:20 drh Exp $
 
16
 
 
17
set testdir [file dirname $argv0]
 
18
source $testdir/tester.tcl
 
19
 
 
20
set sqlite_io_error_persist 0
 
21
set sqlite_io_error_hit 0
 
22
set sqlite_io_error_pending 0
 
23
do_test diskfull-1.1 {
 
24
  execsql {
 
25
    CREATE TABLE t1(x);
 
26
    INSERT INTO t1 VALUES(randstr(1000,1000));
 
27
    INSERT INTO t1 SELECT * FROM t1;
 
28
    INSERT INTO t1 SELECT * FROM t1;
 
29
    INSERT INTO t1 SELECT * FROM t1;
 
30
    INSERT INTO t1 SELECT * FROM t1;
 
31
    CREATE INDEX t1i1 ON t1(x);
 
32
    CREATE TABLE t2 AS SELECT x AS a, x AS b FROM t1;
 
33
    CREATE INDEX t2i1 ON t2(b);
 
34
  }
 
35
} {}
 
36
set sqlite_diskfull_pending 0
 
37
integrity_check diskfull-1.2
 
38
do_test diskfull-1.3 {
 
39
  set sqlite_diskfull_pending 1
 
40
  catchsql {
 
41
    INSERT INTO t1 SELECT * FROM t1;
 
42
  }
 
43
} {1 {database or disk is full}}
 
44
set sqlite_diskfull_pending 0
 
45
integrity_check diskfull-1.4
 
46
do_test diskfull-1.5 {
 
47
  set sqlite_diskfull_pending 1
 
48
  catchsql {
 
49
    DELETE FROM t1;
 
50
  }
 
51
} {1 {database or disk is full}}
 
52
set sqlite_diskfull_pending 0
 
53
set sqlite_io_error_hit 0
 
54
integrity_check diskfull-1.6
 
55
 
 
56
proc do_diskfull_test {prefix sql} {
 
57
  set ::go 1
 
58
  set ::sql $sql
 
59
  set ::i 1
 
60
  while {$::go} {
 
61
    incr ::i
 
62
    do_test ${prefix}.$::i.1 {
 
63
      set ::sqlite_diskfull_pending $::i
 
64
      set ::sqlite_diskfull 0
 
65
      set r [catchsql $::sql]
 
66
      if {!$::sqlite_diskfull} {
 
67
        set r {1 {database or disk is full}}
 
68
        set ::go 0
 
69
      }
 
70
      if {$r=="1 {disk I/O error}"} {
 
71
        set r {1 {database or disk is full}}
 
72
      }
 
73
      set r
 
74
    } {1 {database or disk is full}}
 
75
    set ::sqlite_diskfull_pending 0
 
76
    db close
 
77
    sqlite3 db test.db
 
78
    integrity_check ${prefix}.$::i.2
 
79
  }
 
80
}
 
81
 
 
82
do_diskfull_test diskfull-2 VACUUM
 
83
 
 
84
# db close
 
85
# file delete -force test.db
 
86
# file delete -force test.db-journal
 
87
# sqlite3 db test.db
 
88
 
89
# do_test diskfull-3.1 {
 
90
#   execsql {
 
91
#     PRAGMA default_cache_size = 10;
 
92
#     CREATE TABLE t3(a, b, UNIQUE(a, b));
 
93
#     INSERT INTO t3 VALUES( randstr(100, 100), randstr(100, 100) );
 
94
#     INSERT INTO t3 SELECT randstr(100, 100), randstr(100, 100) FROM t3;
 
95
#     INSERT INTO t3 SELECT randstr(100, 100), randstr(100, 100) FROM t3;
 
96
#     INSERT INTO t3 SELECT randstr(100, 100), randstr(100, 100) FROM t3;
 
97
#     INSERT INTO t3 SELECT randstr(100, 100), randstr(100, 100) FROM t3;
 
98
#     INSERT INTO t3 SELECT randstr(100, 100), randstr(100, 100) FROM t3;
 
99
#     INSERT INTO t3 SELECT randstr(100, 100), randstr(100, 100) FROM t3;
 
100
#     INSERT INTO t3 SELECT randstr(100, 100), randstr(100, 100) FROM t3;
 
101
#     UPDATE t3 
 
102
#     SET b = (SELECT a FROM t3 WHERE rowid = (SELECT max(rowid)-1 FROM t3))
 
103
#     WHERE rowid = (SELECT max(rowid) FROM t3);
 
104
#     PRAGMA cache_size;
 
105
#   }
 
106
# } {10}
 
107
 
108
# do_diskfull_test diskfull-3.2 {
 
109
#   BEGIN;
 
110
#     INSERT INTO t3 VALUES( randstr(100, 100), randstr(100, 100) );
 
111
#     UPDATE t3 SET a = b;
 
112
#   COMMIT;
 
113
# }
 
114
 
 
115
finish_test