|
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: fts3ah.test,v 1.1 2007/08/20 17:38:42 shess Exp $ |
|
10 # |
|
11 |
|
12 set testdir [file dirname $argv0] |
|
13 source $testdir/tester.tcl |
|
14 |
|
15 # If SQLITE_ENABLE_FTS3 is defined, omit this file. |
|
16 ifcapable !fts3 { |
|
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 fts3(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 fts3ah-1.1 { |
|
57 execsql {SELECT rowid FROM t1 WHERE t1 MATCH 'something'} |
|
58 } {} |
|
59 |
|
60 do_test fts3ah-1.2 { |
|
61 execsql {SELECT rowid FROM t1 WHERE t1 MATCH $aterm} |
|
62 } {1 3} |
|
63 |
|
64 do_test fts3ah-1.2 { |
|
65 execsql {SELECT rowid FROM t1 WHERE t1 MATCH $xterm} |
|
66 } {} |
|
67 |
|
68 do_test fts3ah-1.3 { |
|
69 execsql "SELECT rowid FROM t1 WHERE t1 MATCH '$aterm -$xterm'" |
|
70 } {1 3} |
|
71 |
|
72 do_test fts3ah-1.4 { |
|
73 execsql "SELECT rowid FROM t1 WHERE t1 MATCH '\"$aterm $bterm\"'" |
|
74 } {1} |
|
75 |
|
76 finish_test |