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.1.1 2012/02/21 17:04:16 misho 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
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>