OLD | NEW |
| (Empty) |
1 # 2006 October 31 (scaaarey) | |
2 # | |
3 # The author disclaims copyright to this source code. | |
4 # | |
5 #************************************************************************* | |
6 # This file implements regression tests for SQLite library. The focus | |
7 # here is testing correct handling of excessively long terms. | |
8 # | |
9 # $Id: fts2h.test,v 1.1 2006/11/29 21:03:01 shess Exp $ | |
10 # | |
11 | |
12 set testdir [file dirname $argv0] | |
13 source $testdir/tester.tcl | |
14 | |
15 # If SQLITE_ENABLE_FTS2 is defined, omit this file. | |
16 ifcapable !fts2 { | |
17 finish_test | |
18 return | |
19 } | |
20 | |
21 # Generate a term of len copies of char. | |
22 proc bigterm {char len} { | |
23 for {set term ""} {$len>0} {incr len -1} { | |
24 append term $char | |
25 } | |
26 return $term | |
27 } | |
28 | |
29 # Generate a document of bigterms based on characters from the list | |
30 # chars. | |
31 proc bigtermdoc {chars len} { | |
32 set doc "" | |
33 foreach char $chars { | |
34 append doc " " [bigterm $char $len] | |
35 } | |
36 return $doc | |
37 } | |
38 | |
39 set len 5000 | |
40 set doc1 [bigtermdoc {a b c d} $len] | |
41 set doc2 [bigtermdoc {b d e f} $len] | |
42 set doc3 [bigtermdoc {a c e} $len] | |
43 | |
44 set aterm [bigterm a $len] | |
45 set bterm [bigterm b $len] | |
46 set xterm [bigterm x $len] | |
47 | |
48 db eval { | |
49 CREATE VIRTUAL TABLE t1 USING fts2(content); | |
50 INSERT INTO t1 (rowid, content) VALUES(1, $doc1); | |
51 INSERT INTO t1 (rowid, content) VALUES(2, $doc2); | |
52 INSERT INTO t1 (rowid, content) VALUES(3, $doc3); | |
53 } | |
54 | |
55 # No hits at all. Returns empty doclists from termSelect(). | |
56 do_test fts2h-1.1 { | |
57 execsql {SELECT rowid FROM t1 WHERE t1 MATCH 'something'} | |
58 } {} | |
59 | |
60 do_test fts2h-1.2 { | |
61 execsql {SELECT rowid FROM t1 WHERE t1 MATCH $aterm} | |
62 } {1 3} | |
63 | |
64 do_test fts2h-1.2 { | |
65 execsql {SELECT rowid FROM t1 WHERE t1 MATCH $xterm} | |
66 } {} | |
67 | |
68 do_test fts2h-1.3 { | |
69 execsql "SELECT rowid FROM t1 WHERE t1 MATCH '$aterm -$xterm'" | |
70 } {1 3} | |
71 | |
72 do_test fts2h-1.4 { | |
73 execsql "SELECT rowid FROM t1 WHERE t1 MATCH '\"$aterm $bterm\"'" | |
74 } {1} | |
75 | |
76 finish_test | |
OLD | NEW |