OLD | NEW |
| (Empty) |
1 # 2009 June 17 | |
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 # $Id: tkt3918.test,v 1.1 2009/06/17 11:13:28 danielk1977 Exp $ | |
13 | |
14 set testdir [file dirname $argv0] | |
15 source $testdir/tester.tcl | |
16 | |
17 do_test tkt3918.1 { | |
18 execsql { | |
19 PRAGMA page_size = 1024; | |
20 PRAGMA auto_vacuum = incremental; | |
21 CREATE TABLE t1(i, x); | |
22 } | |
23 } {} | |
24 do_test tkt3918.2 { | |
25 execsql { | |
26 INSERT INTO t1 VALUES(1, randstr(1000,1000)); | |
27 INSERT INTO t1 VALUES(2, zeroblob(248*1020 + 100)); | |
28 INSERT INTO t1 VALUES(3, zeroblob(2*1020 + 100)); | |
29 } | |
30 } {} | |
31 | |
32 # This set of statements sets up the free list so that the | |
33 # first free-list trunk page contains only a single leaf. | |
34 # The leaf page is also the last page in the database. The | |
35 # second free-list trunk page contains, amongst other things, | |
36 # page number 4. | |
37 do_test tkt3918.3 { | |
38 execsql { | |
39 DELETE FROM t1 WHERE i = 2; | |
40 DELETE FROM t1 WHERE i = 1; | |
41 DELETE FROM t1 WHERE i = 3; | |
42 } | |
43 } {} | |
44 | |
45 # Incrementally vacuum the database to reduce its size by a single | |
46 # page. This will remove the single leaf from the first page in | |
47 # the linked list of free-list trunk pages. | |
48 do_test tkt3918.4 { | |
49 execsql { PRAGMA incremental_vacuum = 1 } | |
50 } {} | |
51 | |
52 # Create another table. This operation will attempt to extract | |
53 # page 4 from the database free-list. Bug 3918 caused sqlite to | |
54 # incorrectly report corruption here. | |
55 do_test tkt3918.5 { | |
56 execsql { CREATE TABLE t2(a, b) } | |
57 } {} | |
58 | |
59 finish_test | |
OLD | NEW |