Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(81)

Side by Side Diff: third_party/sqlite/src/test/fallocate.test

Issue 6990047: Import SQLite 3.7.6.3. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « third_party/sqlite/src/test/expr.test ('k') | third_party/sqlite/src/test/filectrl.test » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 # 2010 July 28
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
13 set testdir [file dirname $argv0]
14 source $testdir/tester.tcl
15
16 file_control_chunksize_test db main [expr 1024*1024]
17
18 do_test fallocate-1.1 {
19 execsql {
20 PRAGMA page_size = 1024;
21 PRAGMA auto_vacuum = 1;
22 CREATE TABLE t1(a, b);
23 }
24 file size test.db
25 } [expr 1*1024*1024]
26
27 do_test fallocate-1.2 {
28 execsql { INSERT INTO t1 VALUES(1, zeroblob(1024*900)) }
29 file size test.db
30 } [expr 1*1024*1024]
31
32 do_test fallocate-1.3 {
33 execsql { INSERT INTO t1 VALUES(2, zeroblob(1024*900)) }
34 file size test.db
35 } [expr 2*1024*1024]
36
37 do_test fallocate-1.4 {
38 execsql { DELETE FROM t1 WHERE a = 1 }
39 file size test.db
40 } [expr 1*1024*1024]
41
42 do_test fallocate-1.5 {
43 execsql { DELETE FROM t1 WHERE a = 2 }
44 file size test.db
45 } [expr 1*1024*1024]
46
47 do_test fallocate-1.6 {
48 execsql { PRAGMA freelist_count }
49 } {0}
50
51 # Start a write-transaction and read the "database file size" field from
52 # the journal file. This field should be set to the number of pages in
53 # the database file based on the size of the file on disk, not the actual
54 # logical size of the database within the file.
55 #
56 # We need to check this to verify that if in the unlikely event a rollback
57 # causes a database file to grow, the database grows to its previous size
58 # on disk, not to the minimum size required to hold the database image.
59 #
60 do_test fallocate-1.7 {
61 execsql { BEGIN; INSERT INTO t1 VALUES(1, 2); }
62 if {[permutation] != "inmemory_journal"} {
63 hexio_get_int [hexio_read test.db-journal 16 4]
64 } else {
65 set {} 1024
66 }
67 } {1024}
68 do_test fallocate-1.8 { execsql { COMMIT } } {}
69
70
71 #-------------------------------------------------------------------------
72 # The following tests - fallocate-2.* - test that things work in WAL
73 # mode as well.
74 #
75 set skipwaltests [expr {
76 [permutation]=="journaltest" || [permutation]=="inmemory_journal"
77 }]
78 ifcapable !wal { set skipwaltests 1 }
79
80 if {!$skipwaltests} {
81 db close
82 file delete -force test.db
83 sqlite3 db test.db
84 file_control_chunksize_test db main [expr 32*1024]
85
86 do_test fallocate-2.1 {
87 execsql {
88 PRAGMA page_size = 1024;
89 PRAGMA journal_mode = WAL;
90 CREATE TABLE t1(a, b);
91 }
92 file size test.db
93 } [expr 32*1024]
94
95 do_test fallocate-2.2 {
96 execsql { INSERT INTO t1 VALUES(1, zeroblob(35*1024)) }
97 execsql { PRAGMA wal_checkpoint }
98 file size test.db
99 } [expr 64*1024]
100
101 do_test fallocate-2.3 {
102 execsql { DELETE FROM t1 }
103 execsql { VACUUM }
104 file size test.db
105 } [expr 64*1024]
106
107 do_test fallocate-2.4 {
108 execsql { PRAGMA wal_checkpoint }
109 file size test.db
110 } [expr 32*1024]
111
112 do_test fallocate-2.5 {
113 execsql {
114 INSERT INTO t1 VALUES(2, randomblob(35*1024));
115 PRAGMA wal_checkpoint;
116 INSERT INTO t1 VALUES(3, randomblob(128));
117 DELETE FROM t1 WHERE a = 2;
118 VACUUM;
119 }
120 file size test.db
121 } [expr 64*1024]
122
123 do_test fallocate-2.6 {
124 sqlite3 db2 test.db
125 execsql { BEGIN ; SELECT count(a) FROM t1 } db2
126 execsql {
127 INSERT INTO t1 VALUES(4, randomblob(128));
128 PRAGMA wal_checkpoint;
129 }
130 file size test.db
131 } [expr 64*1024]
132
133 do_test fallocate-2.7 {
134 execsql { SELECT count(b) FROM t1 } db2
135 } {1}
136
137 do_test fallocate-2.8 {
138 execsql { COMMIT } db2
139 execsql { PRAGMA wal_checkpoint }
140 file size test.db
141 } [expr 32*1024]
142 }
143
144
145 finish_test
146
OLDNEW
« no previous file with comments | « third_party/sqlite/src/test/expr.test ('k') | third_party/sqlite/src/test/filectrl.test » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698