wasCSharpSQLite – Blame information for rev 7
?pathlinks?
Rev | Author | Line No. | Line |
---|---|---|---|
1 | office | 1 | # 2010 July 07 |
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 script testing the ability of SQLite to handle database |
||
13 | # files larger than 4GB in WAL mode. |
||
14 | # |
||
15 | |||
16 | |||
17 | set testdir [file dirname $argv0] |
||
18 | source $testdir/tester.tcl |
||
19 | |||
20 | # Do not use a codec for this file, as the database is manipulated using |
||
21 | # external methods (the [fake_big_file] and [hexio_write] commands). |
||
22 | # |
||
23 | do_not_use_codec |
||
24 | |||
25 | # If SQLITE_DISABLE_LFS is defined, omit this file. |
||
26 | ifcapable !lfs { |
||
27 | finish_test |
||
28 | return |
||
29 | } |
||
30 | |||
31 | set a_string_counter 1 |
||
32 | proc a_string {n} { |
||
33 | incr ::a_string_counter |
||
34 | string range [string repeat "${::a_string_counter}." $n] 1 $n |
||
35 | } |
||
36 | db func a_string a_string |
||
37 | |||
38 | do_test walbig-1.0 { |
||
39 | execsql { |
||
40 | PRAGMA journal_mode = WAL; |
||
41 | CREATE TABLE t1(a PRIMARY KEY, b UNIQUE); |
||
42 | INSERT INTO t1 VALUES(a_string(300), a_string(500)); |
||
43 | INSERT INTO t1 SELECT a_string(300), a_string(500) FROM t1; |
||
44 | INSERT INTO t1 SELECT a_string(300), a_string(500) FROM t1; |
||
45 | INSERT INTO t1 SELECT a_string(300), a_string(500) FROM t1; |
||
46 | } |
||
47 | } {wal} |
||
48 | |||
49 | db close |
||
50 | if {[catch {fake_big_file 5000 [pwd]/test.db}]} { |
||
51 | puts "**** Unable to create a file larger than 5000 MB. *****" |
||
52 | finish_test |
||
53 | return |
||
54 | } |
||
55 | hexio_write test.db 28 00000000 |
||
56 | |||
57 | sqlite3 db test.db |
||
58 | db func a_string a_string |
||
59 | do_test walbig-1.1 { |
||
60 | execsql { INSERT INTO t1 SELECT a_string(300), a_string(500) FROM t1 } |
||
61 | } {} |
||
62 | db close |
||
63 | |||
64 | sqlite3 db test.db |
||
65 | do_test walbig-1.2 { |
||
66 | execsql { SELECT a FROM t1 ORDER BY a } |
||
67 | } [lsort [execsql { SELECT a FROM t1 ORDER BY rowid }]] |
||
68 | |||
69 | do_test walbig-1.3 { |
||
70 | execsql { SELECT b FROM t1 ORDER BY b } |
||
71 | } [lsort [execsql { SELECT b FROM t1 ORDER BY rowid }]] |
||
72 | |||
73 | finish_test |