OLD | NEW |
| (Empty) |
1 # 2006 October 31 | |
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 focus | |
12 # here is testing correct handling of very long terms. | |
13 # | |
14 | |
15 set testdir [file dirname $argv0] | |
16 source $testdir/tester.tcl | |
17 | |
18 # If SQLITE_ENABLE_FTS3 is not defined, omit this file. | |
19 ifcapable !fts3 { | |
20 finish_test | |
21 return | |
22 } | |
23 | |
24 # Generate a document of bigterms based on characters from the list | |
25 # chars. | |
26 proc bigtermdoc {chars len} { | |
27 set doc "" | |
28 foreach char $chars { | |
29 append doc " " [string repeat $char $len] | |
30 } | |
31 return $doc | |
32 } | |
33 | |
34 set len 5000 | |
35 set doc1 [bigtermdoc {a b c d} $len] | |
36 set doc2 [bigtermdoc {b d e f} $len] | |
37 set doc3 [bigtermdoc {a c e} $len] | |
38 | |
39 set aterm [string repeat a $len] | |
40 set bterm [string repeat b $len] | |
41 set xterm [string repeat x $len] | |
42 | |
43 db eval { | |
44 CREATE VIRTUAL TABLE t1 USING fts3(content); | |
45 INSERT INTO t1 (rowid, content) VALUES(1, $doc1); | |
46 INSERT INTO t1 (rowid, content) VALUES(2, $doc2); | |
47 INSERT INTO t1 (rowid, content) VALUES(3, $doc3); | |
48 } | |
49 | |
50 # No hits at all. Returns empty doclists from termSelect(). | |
51 do_test fts3ah-1.1 { | |
52 execsql {SELECT rowid FROM t1 WHERE t1 MATCH 'something'} | |
53 } {} | |
54 | |
55 do_test fts3ah-1.2 { | |
56 execsql {SELECT rowid FROM t1 WHERE t1 MATCH $aterm} | |
57 } {1 3} | |
58 | |
59 do_test fts3ah-1.3 { | |
60 execsql {SELECT rowid FROM t1 WHERE t1 MATCH $xterm} | |
61 } {} | |
62 | |
63 do_test fts3ah-1.4 { | |
64 execsql "SELECT rowid FROM t1 WHERE t1 MATCH '$aterm -$xterm'" | |
65 } {1 3} | |
66 | |
67 do_test fts3ah-1.5 { | |
68 execsql "SELECT rowid FROM t1 WHERE t1 MATCH '\"$aterm $bterm\"'" | |
69 } {1} | |
70 | |
71 finish_test | |
OLD | NEW |