OLD | NEW |
| (Empty) |
1 # 2014 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 # This file implements regression tests for SQLite library. The | |
12 # focus of this script is testing the FTS5 module. | |
13 # | |
14 # | |
15 | |
16 source [file join [file dirname [info script]] fts5_common.tcl] | |
17 set testprefix fts5ad | |
18 | |
19 # If SQLITE_ENABLE_FTS5 is defined, omit this file. | |
20 ifcapable !fts5 { | |
21 finish_test | |
22 return | |
23 } | |
24 | |
25 do_execsql_test 1.0 { | |
26 CREATE VIRTUAL TABLE yy USING fts5(x, y); | |
27 INSERT INTO yy VALUES('Changes the result to be', 'the list of all matching'); | |
28 INSERT INTO yy VALUES('indices (or all matching', 'values if -inline is'); | |
29 INSERT INTO yy VALUES('specified as well.) If', 'indices are returned, the'); | |
30 } {} | |
31 | |
32 foreach {tn match res} { | |
33 1 {c*} {1} | |
34 2 {i*} {3 2} | |
35 3 {t*} {3 1} | |
36 4 {r*} {3 1} | |
37 } { | |
38 do_execsql_test 1.$tn { | |
39 SELECT rowid FROM yy WHERE yy MATCH $match ORDER BY rowid DESC | |
40 } $res | |
41 } | |
42 | |
43 foreach {tn match res} { | |
44 5 {c*} {1} | |
45 6 {i*} {2 3} | |
46 7 {t*} {1 3} | |
47 8 {r*} {1 3} | |
48 } { | |
49 do_execsql_test 1.$tn { | |
50 SELECT rowid FROM yy WHERE yy MATCH $match | |
51 } $res | |
52 } | |
53 | |
54 foreach {T create} { | |
55 2 { | |
56 CREATE VIRTUAL TABLE t1 USING fts5(a, b); | |
57 INSERT INTO t1(t1, rank) VALUES('pgsz', 32); | |
58 } | |
59 | |
60 3 { | |
61 CREATE VIRTUAL TABLE t1 USING fts5(a, b, prefix=1,2,3,4,5); | |
62 INSERT INTO t1(t1, rank) VALUES('pgsz', 32); | |
63 } | |
64 | |
65 4 { | |
66 CREATE VIRTUAL TABLE t1 USING fts5(a, b); | |
67 INSERT INTO t1(t1, rank) VALUES('pgsz', 32); | |
68 BEGIN; | |
69 } | |
70 | |
71 5 { | |
72 CREATE VIRTUAL TABLE t1 USING fts5(a, b, prefix=1,2,3,4,5); | |
73 INSERT INTO t1(t1, rank) VALUES('pgsz', 32); | |
74 BEGIN; | |
75 } | |
76 | |
77 } { | |
78 | |
79 do_test $T.1 { | |
80 execsql { DROP TABLE IF EXISTS t1 } | |
81 execsql $create | |
82 } {} | |
83 | |
84 do_test $T.1 { | |
85 foreach {rowid a b} { | |
86 0 {fghij uvwxyz klmn pq uvwx} {klmn f fgh uv fghij klmno} | |
87 1 {uv f abcd abcd fghi} {pq klm uv uv fgh uv a} | |
88 2 {klmn klm pqrs fghij uv} {f k uvw ab abcd pqr uv} | |
89 3 {ab pqrst a fghi ab pqr fg} {k klmno a fg abcd} | |
90 4 {abcd pqrst uvwx a fgh} {f klmno fghij kl pqrst} | |
91 5 {uvwxyz k abcde u a} {uv k k kl klmn} | |
92 6 {uvwxyz k klmn pqrst uv} {fghi pqrs abcde u k} | |
93 7 {uvwxy klmn u p pqrst fgh} {p f fghi abcd uvw kl uv} | |
94 8 {f klmno pqrst uvwxy pqrst} {uv abcde klm pq pqr} | |
95 9 {f abcde a uvwxyz pqrst} {fghij abc k uvwx pqr fghij uvwxy} | |
96 10 {ab uv f fg pqrst uvwxy} {fgh p uv k abc klm uvw} | |
97 11 {pq klmno a uvw abcde uvwxyz} {fghij pq uvwxyz pqr fghi} | |
98 12 {fgh u pq fgh uvw} {uvw pqr f uvwxy uvwx} | |
99 13 {uvwx klmn f fgh abcd pqr} {uvw k fg uv klm abcd} | |
100 14 {ab uvwx pqrst pqr uvwxyz pqrs} {uvwxyz abcde ab ab uvw abcde} | |
101 15 {abc abcde uvwxyz abc kl k pqr} {klm k k klmno u fgh} | |
102 16 {fghi abcd fghij uv uvwxyz ab uv} {klmn pqr a uvw fghi} | |
103 17 {abc pqrst fghi uvwx uvw klmn fghi} {ab fg pqr pqrs p} | |
104 18 {pqr kl a fghij fgh fg kl} {pqr uvwxyz uvw abcd uvwxyz} | |
105 19 {fghi fghi pqr kl fghi f} {klmn u u klmno klmno} | |
106 20 {abc pqrst klmno kl pq uvwxy} {abc k fghi pqrs klm} | |
107 21 {a pqr uvwxyz uv fghi a fgh} {abc pqrs pqrst pq klm} | |
108 22 {klm abc uvwxyz klm pqrst} {fghij k pq pqr u klm fghij} | |
109 23 {p klm uv p a a} {uvwxy klmn uvw abcde pq} | |
110 24 {uv fgh fg pq uvwxy u uvwxy} {pqrs a uvw p uvwx uvwxyz fg} | |
111 25 {fghij fghi klmn abcd pq kl} {fghi abcde pqrs abcd fgh uvwxy} | |
112 26 {pq fgh a abc klmno klmn} {fgh p k p fg fghij} | |
113 27 {fg pq kl uvwx fghij pqrst klmn} {abcd uvw abcd fghij f fghij} | |
114 28 {uvw fghi p fghij pq fgh uvwx} {k fghij abcd uvwx pqr fghi} | |
115 29 {klm pq abcd pq f uvwxy} {pqrst p fghij pqr p} | |
116 30 {ab uvwx fg uvwx klmn klm} {klmn klmno fghij klmn klm} | |
117 31 {pq k pqr abcd a pqrs} {abcd abcd uvw a abcd klmno ab} | |
118 32 {pqrst u abc pq klm} {abc kl uvwxyz fghij u fghi p} | |
119 33 {f uvwxy u k f uvw uvwx} {pqrs uvw fghi fg pqrst klm} | |
120 34 {pqrs pq fghij uvwxyz pqr} {ab abc abc uvw f pq f} | |
121 35 {uvwxy ab uvwxy klmno kl pqrs} {abcde uvw pqrs uvwx k k} | |
122 36 {uvwxyz k ab abcde abc uvw} {uvw abcde uvw klmn uv klmn} | |
123 37 {k kl uv abcde uvwx fg u} {u abc uvwxy k fg abcd} | |
124 38 {fghi pqrst fghi pqr pqrst uvwx} {u uv uvwx fghi abcde} | |
125 39 {k pqrst k uvw fg pqrst fghij} {uvwxy ab kl klmn uvwxyz abcde} | |
126 40 {fg uvwxy pqrs klmn uvwxyz klm p} {k uv ab fghij fgh k pqrs} | |
127 41 {uvwx abc f pq uvwxy k} {ab uvwxyz abc f fghij} | |
128 42 {uvwxy klmno uvwxyz uvwxyz pqrst} {uv kl kl klmno k f abcde} | |
129 43 {abcde ab pqrs fg f fgh} {abc fghij fghi k k} | |
130 44 {uvw abcd a ab pqrst klmn fg} {pqrst u uvwx pqrst fghij f pqrst} | |
131 45 {uvwxy p kl uvwxyz ab pqrst fghi} {abc f pqr fg a k} | |
132 46 {u p f a fgh} {a kl pq uv f} | |
133 47 {pqrs abc fghij fg abcde ab a} {p ab uv pqrs kl fghi abcd} | |
134 48 {abcde uvwxy pqrst uv abc pqr uvwx} {uvwxy klm uvwxy uvwx k} | |
135 49 {fgh klm abcde klmno u} {a f fghij f uvwxyz abc u} | |
136 50 {uv uvw uvwxyz uvwxyz uv ab} {uvwx pq fg u k uvwxy} | |
137 51 {uvwxy pq p kl fghi} {pqrs fghi pqrs abcde uvwxyz ab} | |
138 52 {pqr p uvwxy kl pqrs klmno fghij} {ab abcde abc pqrst pqrs uv} | |
139 53 {fgh pqrst p a klmno} {ab ab pqrst pqr kl pqrst} | |
140 54 {abcd klm ab uvw a fg u} {f pqr f abcd uv} | |
141 55 {u fg uvwxyz k uvw} {abc pqrs f fghij fg pqrs uvwxy} | |
142 56 {klm fg p fghi fg a} {uv a fghi uvwxyz a fghi} | |
143 57 {uvwxy k abcde fgh f fghi} {f kl klmn f fghi klm} | |
144 58 {klm k fgh uvw fgh fghi} {klmno uvwx u pqrst u} | |
145 59 {fghi pqr pqrst p uvw fghij} {uv pqrst pqrs pq fghij klm} | |
146 60 {uvwx klm uvwxy uv klmn} {p a a abc klmn ab k} | |
147 61 {uvwxy uvwx klm uvwx klm} {pqrs ab ab uvwxyz fg} | |
148 62 {kl uv uv uvw fg kl k} {abcde uvw fgh uvwxy klm} | |
149 63 {a abc fgh u klm abcd} {fgh pqr uv klmn fghij} | |
150 64 {klmn k klmn klmno pqrs pqr} {fg kl abcde klmno uvwxy kl pq} | |
151 65 {uvwxyz klm fghi abc abcde kl} {uvwxy uvw uvwxyz uvwxyz pq pqrst} | |
152 66 {pq klm abc pqrst fgh f} {u abcde pqrst abcde fg} | |
153 67 {u pqrst kl u uvw klmno} {u pqr pqrs fgh u p} | |
154 68 {abc fghi uvwxy fgh k pq} {uv p uvwx uvwxyz ab} | |
155 69 {klmno f uvwxyz uvwxy klmn fg ab} {fgh kl a pqr abcd pqr} | |
156 70 {fghi pqrst pqrst uv a} {uvwxy k p uvw uvwx a} | |
157 71 {a fghij f p uvw} {klm fg abcd abcde klmno pqrs} | |
158 72 {uv uvwx uvwx uvw klm} {uv fghi klmno uvwxy uvw} | |
159 73 {kl uvwxy ab f pq klm u} {uvwxy klmn klm abcd pq fg k} | |
160 74 {uvw pqrst abcd uvwxyz ab} {fgh fgh klmn abc pq} | |
161 75 {uvwxyz klm pq abcd klmno pqr uvwxyz} {kl f a fg pqr klmn} | |
162 76 {uvw uvwxy pqr k pqrst kl} {uvwxy abc uvw uvw u} | |
163 77 {fgh klm u uvwxyz f uvwxy abcde} {uv abcde klmno u u ab} | |
164 78 {klmno abc pq pqr fgh} {p uv abcd fgh abc u k} | |
165 79 {fg pqr uvw pq uvwx} {uv uvw fghij pqrs fg p} | |
166 80 {abcd pqrs uvwx uvwxy uvwx} {u uvw pqrst pqr abcde pqrs kl} | |
167 81 {uvwxyz klm pq uvwxy fghij} {p pq klm fghij u a a} | |
168 82 {uvwx k uvwxyz klmno pqrst kl} {abcde p f pqrst abcd uvwxyz p} | |
169 83 {abcd abcde klm pqrst uvwxyz} {uvw pqrst u p uvwxyz a pqrs} | |
170 84 {k klm abc uv uvwxy klm klmn} {k abc pqr a abc p kl} | |
171 85 {klmn abcd pqrs p pq klm a} {klmn kl ab uvw pq} | |
172 86 {klmn a pqrs abc uvw pqrst} {a pqr kl klm a k f} | |
173 87 {pqrs ab uvwx uvwxy a pqr f} {fg klm uvwx pqr pqr} | |
174 88 {klmno ab k kl u uvwxyz} {uv kl uvw fghi uv uvw} | |
175 89 {pq fghi pqrst klmn uvwxy abc pqrs} {fg f f fg abc abcde klm} | |
176 90 {kl a k fghi uvwx fghi u} {ab uvw pqr fg a p abc} | |
177 91 {uvwx pqrs klmno ab fgh uvwx} {pqr uvwx abc kl f klmno kl} | |
178 92 {fghij pq pqrs fghij f pqrst} {u abcde fg pq pqr fgh k} | |
179 93 {fgh u pqrs abcde klmno abc} {abc fg pqrst pqr abcde} | |
180 94 {uvwx p abc f pqr p} {k pqrs kl klm abc fghi klm} | |
181 95 {kl p klmno uvwxyz klmn} {fghi ab a fghi pqrs kl} | |
182 96 {pqr fgh pq uvwx a} {uvw klm klmno fg uvwxy uvwx} | |
183 97 {fg abc uvwxyz fghi pqrst pq} {abc k a ab abcde f} | |
184 98 {uvwxy fghi uvwxy u abcde abcde uvw} {klmn uvwx pqrs uvw uvwxy abcde} | |
185 99 {pq fg fghi uvwx uvwx fghij uvwxy} {klmn klmn f abc fg a} | |
186 } { | |
187 execsql { | |
188 INSERT INTO t1(rowid, a, b) VALUES($rowid, $a, $b); | |
189 } | |
190 } | |
191 } {} | |
192 | |
193 proc prefix_query {prefixlist} { | |
194 set ret [list] | |
195 db eval {SELECT rowid, a, b FROM t1 ORDER BY rowid DESC} { | |
196 set bMatch 1 | |
197 foreach pref $prefixlist { | |
198 if { [lsearch -glob $a $pref]<0 && [lsearch -glob $b $pref]<0 } { | |
199 set bMatch 0 | |
200 break | |
201 } | |
202 } | |
203 if {$bMatch} { lappend ret $rowid } | |
204 } | |
205 return $ret | |
206 } | |
207 | |
208 do_execsql_test $T.integrity { | |
209 INSERT INTO t1(t1) VALUES('integrity-check'); | |
210 } | |
211 | |
212 foreach {bAsc sql} { | |
213 1 {SELECT rowid FROM t1 WHERE t1 MATCH $prefix} | |
214 0 {SELECT rowid FROM t1 WHERE t1 MATCH $prefix ORDER BY rowid DESC} | |
215 } { | |
216 foreach {tn prefix} { | |
217 1 {a*} 2 {ab*} 3 {abc*} 4 {abcd*} 5 {abcde*} | |
218 6 {f*} 7 {fg*} 8 {fgh*} 9 {fghi*} 10 {fghij*} | |
219 11 {k*} 12 {kl*} 13 {klm*} 14 {klmn*} 15 {klmno*} | |
220 16 {p*} 17 {pq*} 18 {pqr*} 19 {pqrs*} 20 {pqrst*} | |
221 21 {u*} 22 {uv*} 23 {uvw*} 24 {uvwx*} 25 {uvwxy*} 26 {uvwxyz*} | |
222 27 {x*} | |
223 28 {a f*} 29 {a* f*} 30 {a* fghij*} | |
224 } { | |
225 set res [prefix_query $prefix] | |
226 if {$bAsc} { | |
227 set res [lsort -integer -increasing $res] | |
228 } | |
229 set n [llength $res] | |
230 if {$T==5} breakpoint | |
231 do_execsql_test $T.$bAsc.$tn.$n $sql $res | |
232 } | |
233 } | |
234 | |
235 catchsql COMMIT | |
236 } | |
237 | |
238 finish_test | |
239 | |
OLD | NEW |