Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Test to force edge cases in query logic. Basically, exercise code to handle lack of hits correctly. (CVS 3485) |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
2cb59033662f25677169e2e63b871fb0 |
User & Date: | shess 2006-10-25 20:27:40.000 |
Context
2006-10-25
| ||
21:00 | Replace the DocList and DocListReader structures. The new structures distinguish reading from a static buffer from writing to a dynamic buffer. This allows n-way doclist merging, and in-place merging of segment leaf nodes, which together cut segment merge times in half. (CVS 3486) (check-in: af5bfb986e user: shess tags: trunk) | |
20:27 | Test to force edge cases in query logic. Basically, exercise code to handle lack of hits correctly. (CVS 3485) (check-in: 2cb5903366 user: shess tags: trunk) | |
05:21 |
Don't store empty segments. When inserting empty strings, the code
was writing out a segment made up of a single leaf node containing the
\0 header. LeafReader assumed that leaf nodes always contained at
least one term, so assertions would fail.
While it would be possible to support reading and merging empty segments, there's no reason to do so. While this change could have been done in writeZeroSegment(), I put it in leafWriterFlush() so that it would work right if segmentMerge() created an empty segment, which could happen with future changes to how deleted documents are handled. (CVS 3484) (check-in: fed79beec7 user: shess tags: trunk) | |
Changes
Added test/fts2g.test.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 | # 2006 October 19 # # The author disclaims copyright to this source code. # #************************************************************************* # This file implements regression tests for SQLite library. The focus # of this script is testing handling of edge cases for various doclist # merging functions in the FTS2 module query logic. # # $Id: fts2g.test,v 1.1 2006/10/25 20:27:40 shess Exp $ # set testdir [file dirname $argv0] source $testdir/tester.tcl # If SQLITE_ENABLE_FTS2 is defined, omit this file. ifcapable !fts2 { finish_test return } db eval { CREATE VIRTUAL TABLE t1 USING fts2(content); INSERT INTO t1 (rowid, content) VALUES(1, 'this is a test'); } # No hits at all. Returns empty doclists from termSelect(). do_test fts2g-1.1 { execsql {SELECT rowid FROM t1 WHERE t1 MATCH 'something'} } {} # Empty left in docListExceptMerge(). do_test fts2g-1.2 { execsql {SELECT rowid FROM t1 WHERE t1 MATCH '-this something'} } {} # Empty right in docListExceptMerge(). do_test fts2g-1.3 { execsql {SELECT rowid FROM t1 WHERE t1 MATCH 'this -something'} } {1} # Empty left in docListPhraseMerge(). do_test fts2g-1.4 { execsql {SELECT rowid FROM t1 WHERE t1 MATCH '"this something"'} } {} # Empty right in docListPhraseMerge(). do_test fts2g-1.5 { execsql {SELECT rowid FROM t1 WHERE t1 MATCH '"something is"'} } {} # Empty left in docListOrMerge(). do_test fts2g-1.6 { execsql {SELECT rowid FROM t1 WHERE t1 MATCH 'something OR this'} } {1} # Empty right in docListOrMerge(). do_test fts2g-1.7 { execsql {SELECT rowid FROM t1 WHERE t1 MATCH 'this OR something'} } {1} # Empty left in docListAndMerge(). do_test fts2g-1.8 { execsql {SELECT rowid FROM t1 WHERE t1 MATCH 'something this'} } {} # Empty right in docListAndMerge(). do_test fts2g-1.9 { execsql {SELECT rowid FROM t1 WHERE t1 MATCH 'this something'} } {} # No support for all-except queries. do_test fts2g-1.10 { catchsql {SELECT rowid FROM t1 WHERE t1 MATCH '-this -something'} } {1 {SQL logic error or missing database}} finish_test |