Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Fix a bug causing fts3 to incorrectly return SQLITE_CORRUPT. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
099195b14829f375055345b8322905cc |
User & Date: | dan 2010-12-02 17:39:26.000 |
Context
2010-12-03
| ||
10:32 | Add the "valgrind" permutation. This is the same as veryquick.test except that it omits the multi-process tests that do not work under valgrind. No changes to production or existing test code. (check-in: 4953130067 user: dan tags: trunk) | |
2010-12-02
| ||
17:39 | Fix a bug causing fts3 to incorrectly return SQLITE_CORRUPT. (check-in: 099195b148 user: dan tags: trunk) | |
14:47 | Exclude a test case from the inmemory_journal permutation of multiplex.test. (check-in: 474196d645 user: dan tags: trunk) | |
Changes
Changes to ext/fts3/fts3.c.
︙ | ︙ | |||
1048 1049 1050 1051 1052 1053 1054 | ** either more than 20 bytes of allocated space following the nNode bytes of ** contents, or two zero bytes. Or, if the node is read from the %_segments ** table, then there are always 20 bytes of zeroed padding following the ** nNode bytes of content (see sqlite3Fts3ReadBlock() for details). */ zCsr += sqlite3Fts3GetVarint(zCsr, &iChild); zCsr += sqlite3Fts3GetVarint(zCsr, &iChild); | | | 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 | ** either more than 20 bytes of allocated space following the nNode bytes of ** contents, or two zero bytes. Or, if the node is read from the %_segments ** table, then there are always 20 bytes of zeroed padding following the ** nNode bytes of content (see sqlite3Fts3ReadBlock() for details). */ zCsr += sqlite3Fts3GetVarint(zCsr, &iChild); zCsr += sqlite3Fts3GetVarint(zCsr, &iChild); if( zCsr>zEnd ){ return SQLITE_CORRUPT; } while( zCsr<zEnd && (piFirst || piLast) ){ int cmp; /* memcmp() result */ int nSuffix; /* Size of term suffix */ int nPrefix = 0; /* Size of term prefix */ |
︙ | ︙ |
Changes to test/fts3rnd.test.
︙ | ︙ | |||
301 302 303 304 305 306 307 308 309 310 311 312 313 314 | set iInsert [expr {int(rand()*1000000)}] } execsql BEGIN insert_row $iInsert update_row $iUpdate delete_row $iDelete if {0==($iTest%2)} { execsql COMMIT } # Pick 10 terms from the vocabulary. Check that the results of querying # the database for the set of documents containing each of these terms # is the same as the result obtained by scanning the contents of the Tcl # array for each term. # for {set i 0} {$i < 10} {incr i} { | > > > > | 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 | set iInsert [expr {int(rand()*1000000)}] } execsql BEGIN insert_row $iInsert update_row $iUpdate delete_row $iDelete if {0==($iTest%2)} { execsql COMMIT } if {0==($iTest%2)} { do_test fts3rnd-1.$nodesize.$iTest.0 { fts3_integrity_check t1 } ok } # Pick 10 terms from the vocabulary. Check that the results of querying # the database for the set of documents containing each of these terms # is the same as the result obtained by scanning the contents of the Tcl # array for each term. # for {set i 0} {$i < 10} {incr i} { |
︙ | ︙ | |||
375 376 377 378 379 380 381 | # A 3-way NEAR query with terms as the arguments. # for {set i 0} {$i < $nRep} {incr i} { set terms [list [random_term] [random_term] [random_term]] set nNear 11 set match [join $terms " NEAR/$nNear "] | < | 379 380 381 382 383 384 385 386 387 388 389 390 391 392 | # A 3-way NEAR query with terms as the arguments. # for {set i 0} {$i < $nRep} {incr i} { set terms [list [random_term] [random_term] [random_term]] set nNear 11 set match [join $terms " NEAR/$nNear "] do_select_test fts3rnd-1.$nodesize.$iTest.7.$i { SELECT docid FROM t1 WHERE t1 MATCH $match } [simple_near $terms $nNear] } # Set operations on simple term queries. # |
︙ | ︙ |