Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Add a couple of extra tests. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | fts3-prefix-search |
Files: | files | file ages | folders |
SHA1: |
aefd46dfae7e06fbaf4f2b9a86a7f2ac |
User & Date: | dan 2011-06-14 11:32:50.766 |
Context
2011-06-14
| ||
11:50 | Merge fts3-prefix-search branch with trunk. (check-in: b1f9c1e0ac user: dan tags: trunk) | |
11:32 | Add a couple of extra tests. (Closed-Leaf check-in: aefd46dfae user: dan tags: fts3-prefix-search) | |
09:00 | Fix another bug caused by NEAR/matchinfo/order=DESC interaction. (check-in: 04907fbade user: dan tags: fts3-prefix-search) | |
Changes
Changes to test/fts3auto.test.
︙ | ︙ | |||
17 18 19 20 21 22 23 | source $testdir/malloc_common.tcl set testprefix fts3auto set sfep $sqlite_fts3_enable_parentheses set sqlite_fts3_enable_parentheses 1 #-------------------------------------------------------------------------- | | > | > > > | 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | source $testdir/malloc_common.tcl set testprefix fts3auto set sfep $sqlite_fts3_enable_parentheses set sqlite_fts3_enable_parentheses 1 #-------------------------------------------------------------------------- # Start of Tcl infrastructure used by tests. The entry points are: # # do_fts3query_test # fts3_make_deferrable # fts3_zero_long_segments # # # do_fts3query_test TESTNAME ?OPTIONS? TABLE MATCHEXPR # # This proc runs several test cases on FTS3/4 table $TABLE using match # expression $MATCHEXPR. All documents in $TABLE must be formatted so that # they can be "tokenized" using the Tcl list commands (llength, lindex etc.). # The name and column names used by $TABLE must not require any quoting or # escaping when used in SQL statements. |
︙ | ︙ | |||
98 99 100 101 102 103 104 105 106 107 108 109 110 111 | " $matchinfo_desc do_execsql_test $tn$title.4 " SELECT docid, mit(matchinfo($tbl, 'x')) FROM $tbl WHERE $tbl MATCH '$match' ORDER BY docid ASC " $matchinfo_asc } proc mit {blob} { set scan(littleEndian) i* set scan(bigEndian) I* binary scan $blob $scan($::tcl_platform(byteOrder)) r return $r | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 | " $matchinfo_desc do_execsql_test $tn$title.4 " SELECT docid, mit(matchinfo($tbl, 'x')) FROM $tbl WHERE $tbl MATCH '$match' ORDER BY docid ASC " $matchinfo_asc } # fts3_make_deferrable TABLE TOKEN # proc fts3_make_deferrable {tbl token} { set stmt [sqlite3_prepare db "SELECT * FROM $tbl" -1 dummy] set name [sqlite3_column_name $stmt 0] sqlite3_finalize $stmt set nRow [db one "SELECT count(*) FROM $tbl"] set pgsz [db one "PRAGMA page_size"] execsql BEGIN for {set i 0} {$i < ($nRow * $pgsz * 1.2)/100} {incr i} { set doc [string repeat "$token " 100] execsql "INSERT INTO $tbl ($name) VALUES(\$doc)" } execsql "INSERT INTO $tbl ($name) VALUES('aaaaaaa ${token}aaaaa')" execsql COMMIT return [expr $nRow*$pgsz] } # fts3_zero_long_segments TABLE ?LIMIT? # proc fts3_zero_long_segments {tbl limit} { execsql " UPDATE ${tbl}_segments SET block = zeroblob(length(block)) WHERE length(block)>$limit " return [db changes] } proc mit {blob} { set scan(littleEndian) i* set scan(bigEndian) I* binary scan $blob $scan($::tcl_platform(byteOrder)) r return $r |
︙ | ︙ | |||
410 411 412 413 414 415 416 | do_fts3query_test 2.$tn.2.$tn2 t1 $expr } } #-------------------------------------------------------------------------- # Some test cases involving deferred tokens. # | < < < < < < < < < < < | < < < | | | > | < < < | | | > > > | | < < | | < < | | < | | | | | > > > > > | > | > > > > | > > > > > | 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 | do_fts3query_test 2.$tn.2.$tn2 t1 $expr } } #-------------------------------------------------------------------------- # Some test cases involving deferred tokens. # foreach {tn create} { 1 "fts4(x)" 2 "fts4(x, order=DESC)" } { catchsql { DROP TABLE t1 } execsql "CREATE VIRTUAL TABLE t1 USING $create" do_execsql_test 3.$tn.1 { INSERT INTO t1(docid, x) VALUES(-2, 'a b c d e f g h i j k'); INSERT INTO t1(docid, x) VALUES(-1, 'b c d e f g h i j k a'); INSERT INTO t1(docid, x) VALUES(0, 'c d e f g h i j k a b'); INSERT INTO t1(docid, x) VALUES(1, 'd e f g h i j k a b c'); INSERT INTO t1(docid, x) VALUES(2, 'e f g h i j k a b c d'); INSERT INTO t1(docid, x) VALUES(3, 'f g h i j k a b c d e'); INSERT INTO t1(docid, x) VALUES(4, 'a c e g i k'); INSERT INTO t1(docid, x) VALUES(5, 'a d g j'); INSERT INTO t1(docid, x) VALUES(6, 'c a b'); } set limit [fts3_make_deferrable t1 c] do_fts3query_test 3.$tn.2.1 t1 {a OR c} do_test 3.$tn.3 { fts3_zero_long_segments t1 $limit } {1} foreach {tn2 expr def} { 1 {a NEAR c} {} 2 {a AND c} c 3 {"a c"} c 4 {"c a"} c 5 {"a c" NEAR/1 g} {} 6 {"a c" NEAR/0 g} {} } { do_fts3query_test 3.$tn.4.$tn2 -deferred $def t1 $expr } } #-------------------------------------------------------------------------- # foreach {tn create} { 1 "fts4(x, y)" 2 "fts4(x, y, order=DESC)" 3 "fts4(x, y, order=DESC, prefix=2)" } { execsql [subst { DROP TABLE t1; CREATE VIRTUAL TABLE t1 USING $create; INSERT INTO t1 VALUES('one two five four five', ''); INSERT INTO t1 VALUES('', 'one two five four five'); INSERT INTO t1 VALUES('one two', 'five four five'); }] do_fts3query_test 4.$tn.1.1 t1 {one AND five} do_fts3query_test 4.$tn.1.2 t1 {one NEAR five} do_fts3query_test 4.$tn.1.3 t1 {one NEAR/1 five} do_fts3query_test 4.$tn.1.4 t1 {one NEAR/2 five} do_fts3query_test 4.$tn.1.5 t1 {one NEAR/3 five} do_test 4.$tn.2 { set limit [fts3_make_deferrable t1 five] execsql { INSERT INTO t1(t1) VALUES('optimize') } expr {[fts3_zero_long_segments t1 $limit]>0} } {1} do_fts3query_test 4.$tn.3.1 -deferred five t1 {one AND five} do_fts3query_test 4.$tn.3.2 -deferred five t1 {one NEAR five} do_fts3query_test 4.$tn.3.3 -deferred five t1 {one NEAR/1 five} do_fts3query_test 4.$tn.3.4 -deferred five t1 {one NEAR/2 five} do_fts3query_test 4.$tn.3.5 -deferred five t1 {one NEAR/3 five} do_fts3query_test 4.$tn.4.1 -deferred fi* t1 {on* AND fi*} do_fts3query_test 4.$tn.4.2 -deferred fi* t1 {on* NEAR fi*} do_fts3query_test 4.$tn.4.3 -deferred fi* t1 {on* NEAR/1 fi*} do_fts3query_test 4.$tn.4.4 -deferred fi* t1 {on* NEAR/2 fi*} do_fts3query_test 4.$tn.4.5 -deferred fi* t1 {on* NEAR/3 fi*} } set sqlite_fts3_enable_parentheses $sfep finish_test |