# 2006 October 31 (scaaarey) # # The author disclaims copyright to this source code. # #************************************************************************* # This file implements regression tests for SQLite library. The focus # here is testing correct handling of excessively long terms. # # $Id: fts2h.test,v 1.1.1.1 2012/02/21 17:04:16 misho Exp $ # set testdir [file dirname $argv0] source $testdir/tester.tcl # If SQLITE_ENABLE_FTS2 is defined, omit this file. ifcapable !fts2 { finish_test return } # Generate a term of len copies of char. proc bigterm {char len} { for {set term ""} {$len>0} {incr len -1} { append term $char } return $term } # Generate a document of bigterms based on characters from the list # chars. proc bigtermdoc {chars len} { set doc "" foreach char $chars { append doc " " [bigterm $char $len] } return $doc } set len 5000 set doc1 [bigtermdoc {a b c d} $len] set doc2 [bigtermdoc {b d e f} $len] set doc3 [bigtermdoc {a c e} $len] set aterm [bigterm a $len] set bterm [bigterm b $len] set xterm [bigterm x $len] db eval { CREATE VIRTUAL TABLE t1 USING fts2(content); INSERT INTO t1 (rowid, content) VALUES(1, $doc1); INSERT INTO t1 (rowid, content) VALUES(2, $doc2); INSERT INTO t1 (rowid, content) VALUES(3, $doc3); } # No hits at all. Returns empty doclists from termSelect(). do_test fts2h-1.1 { execsql {SELECT rowid FROM t1 WHERE t1 MATCH 'something'} } {} do_test fts2h-1.2 { execsql {SELECT rowid FROM t1 WHERE t1 MATCH $aterm} } {1 3} do_test fts2h-1.2 { execsql {SELECT rowid FROM t1 WHERE t1 MATCH $xterm} } {} do_test fts2h-1.3 { execsql "SELECT rowid FROM t1 WHERE t1 MATCH '$aterm -$xterm'" } {1 3} do_test fts2h-1.4 { execsql "SELECT rowid FROM t1 WHERE t1 MATCH '\"$aterm $bterm\"'" } {1} finish_test