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

Side by Side Diff: third_party/sqlite/sqlite-src-3100200/ext/fts5/test/fts5integrity.test

Issue 1610543003: [sql] Import reference version of SQLite 3.10.2. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 11 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
OLDNEW
(Empty)
1 # 2015 Jan 13
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 # This file contains tests focused on the integrity-check procedure.
13 #
14
15 source [file join [file dirname [info script]] fts5_common.tcl]
16 set testprefix fts5integrity
17
18 # If SQLITE_ENABLE_FTS5 is defined, omit this file.
19 ifcapable !fts5 {
20 finish_test
21 return
22 }
23
24 do_execsql_test 1.0 {
25 CREATE VIRTUAL TABLE xx USING fts5(x);
26 INSERT INTO xx VALUES('term');
27 }
28 do_execsql_test 1.1 {
29 INSERT INTO xx(xx) VALUES('integrity-check');
30 }
31
32 do_execsql_test 2.0 {
33 CREATE VIRTUAL TABLE yy USING fts5(x, prefix=1);
34 INSERT INTO yy VALUES('term');
35 }
36 do_execsql_test 2.1 {
37 INSERT INTO yy(yy) VALUES('integrity-check');
38 }
39
40 #--------------------------------------------------------------------
41 #
42 do_execsql_test 3.0 {
43 CREATE VIRTUAL TABLE zz USING fts5(z);
44 INSERT INTO zz(zz, rank) VALUES('pgsz', 32);
45 INSERT INTO zz VALUES('b b b b b b b b b b b b b b');
46 INSERT INTO zz SELECT z FROM zz;
47 INSERT INTO zz SELECT z FROM zz;
48 INSERT INTO zz SELECT z FROM zz;
49 INSERT INTO zz SELECT z FROM zz;
50 INSERT INTO zz SELECT z FROM zz;
51 INSERT INTO zz SELECT z FROM zz;
52 INSERT INTO zz(zz) VALUES('optimize');
53 }
54
55 do_execsql_test 3.1 { INSERT INTO zz(zz) VALUES('integrity-check'); }
56
57 #--------------------------------------------------------------------
58 # Mess around with a docsize record. And the averages record. Then
59 # check that integrity-check picks it up.
60 #
61 do_execsql_test 4.0 {
62 CREATE VIRTUAL TABLE aa USING fts5(zz);
63 INSERT INTO aa(zz) VALUES('a b c d e');
64 INSERT INTO aa(zz) VALUES('a b c d');
65 INSERT INTO aa(zz) VALUES('a b c');
66 INSERT INTO aa(zz) VALUES('a b');
67 INSERT INTO aa(zz) VALUES('a');
68 SELECT length(sz) FROM aa_docsize;
69 } {1 1 1 1 1}
70 do_execsql_test 4.1 {
71 INSERT INTO aa(aa) VALUES('integrity-check');
72 }
73
74 do_catchsql_test 4.2 {
75 BEGIN;
76 UPDATE aa_docsize SET sz = X'44' WHERE rowid = 3;
77 INSERT INTO aa(aa) VALUES('integrity-check');
78 } {1 {database disk image is malformed}}
79
80 do_catchsql_test 4.3 {
81 ROLLBACK;
82 BEGIN;
83 UPDATE aa_data SET block = X'44' WHERE rowid = 1;
84 INSERT INTO aa(aa) VALUES('integrity-check');
85 } {1 {database disk image is malformed}}
86
87 do_catchsql_test 4.4 {
88 ROLLBACK;
89 BEGIN;
90 INSERT INTO aa_docsize VALUES(23, X'04');
91 INSERT INTO aa(aa) VALUES('integrity-check');
92 } {1 {database disk image is malformed}}
93
94 do_catchsql_test 4.5 {
95 ROLLBACK;
96 BEGIN;
97 INSERT INTO aa_docsize VALUES(23, X'00');
98 INSERT INTO aa_content VALUES(23, '');
99 INSERT INTO aa(aa) VALUES('integrity-check');
100 } {1 {database disk image is malformed}}
101
102 #db eval {SELECT rowid, fts5_decode(rowid, block) aS r FROM zz_data} {puts $r}
103 #exit
104
105 execsql { ROLLBACK }
106
107
108 #-------------------------------------------------------------------------
109 # Test that integrity-check works on a reasonably large db with many
110 # different terms.
111
112 # Document generator command.
113 proc rnddoc {n} {
114 set doc [list]
115 for {set i 0} {$i<$n} {incr i} {
116 lappend doc [format %.5d [expr int(rand()*10000)]]
117 }
118 return $doc
119 }
120 db func rnddoc rnddoc
121
122 expr srand(0)
123 do_execsql_test 5.0 {
124 CREATE VIRTUAL TABLE gg USING fts5(a, prefix="1,2,3");
125 INSERT INTO gg(gg, rank) VALUES('pgsz', 256);
126 INSERT INTO gg VALUES(rnddoc(20));
127 INSERT INTO gg SELECT rnddoc(20) FROM gg;
128 INSERT INTO gg SELECT rnddoc(20) FROM gg;
129 INSERT INTO gg SELECT rnddoc(20) FROM gg;
130 INSERT INTO gg SELECT rnddoc(20) FROM gg;
131 INSERT INTO gg SELECT rnddoc(20) FROM gg;
132 INSERT INTO gg SELECT rnddoc(20) FROM gg;
133 INSERT INTO gg SELECT rnddoc(20) FROM gg;
134 INSERT INTO gg SELECT rnddoc(20) FROM gg;
135 INSERT INTO gg SELECT rnddoc(20) FROM gg;
136 INSERT INTO gg SELECT rnddoc(20) FROM gg;
137 INSERT INTO gg SELECT rnddoc(20) FROM gg;
138 }
139
140 do_execsql_test 5.1 {
141 INSERT INTO gg(gg) VALUES('integrity-check');
142 }
143
144 do_execsql_test 5.2 {
145 INSERT INTO gg(gg) VALUES('optimize');
146 }
147
148 breakpoint
149 do_execsql_test 5.3 {
150 INSERT INTO gg(gg) VALUES('integrity-check');
151 }
152
153 finish_test
154
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698