Fix a bug causing fts3 to incorrectly return SQLITE_CORRUPT.

FossilOrigin-Name: 099195b14829f375055345b8322905ccd073d442
This commit is contained in:
dan 2010-12-02 17:39:26 +00:00
parent 3ed4afef3a
commit 4d8d27813c
4 changed files with 13 additions and 10 deletions

View File

@ -1052,7 +1052,7 @@ static int fts3ScanInteriorNode(
*/
zCsr += sqlite3Fts3GetVarint(zCsr, &iChild);
zCsr += sqlite3Fts3GetVarint(zCsr, &iChild);
if( zCsr>=zEnd ){
if( zCsr>zEnd ){
return SQLITE_CORRUPT;
}

View File

@ -1,5 +1,5 @@
C Exclude\sa\stest\scase\sfrom\sthe\sinmemory_journal\spermutation\sof\smultiplex.test.
D 2010-12-02T14:47:06
C Fix\sa\sbug\scausing\sfts3\sto\sincorrectly\sreturn\sSQLITE_CORRUPT.
D 2010-12-02T17:39:26
F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
F Makefile.in 4547616ad2286053af6ccccefa242dc925e49bf0
F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@ -61,7 +61,7 @@ F ext/fts2/mkfts2amal.tcl 974d5d438cb3f7c4a652639262f82418c1e4cff0
F ext/fts3/README.syntax a19711dc5458c20734b8e485e75fb1981ec2427a
F ext/fts3/README.tokenizers 998756696647400de63d5ba60e9655036cb966e9
F ext/fts3/README.txt 8c18f41574404623b76917b9da66fcb0ab38328d
F ext/fts3/fts3.c c354e8a4110c781cecfcba2f25026087159d5e47
F ext/fts3/fts3.c bb233da09f1ec8e52717167cd42b7c7cbd98a58c
F ext/fts3/fts3.h 3a10a0af180d502cecc50df77b1b22df142817fe
F ext/fts3/fts3Int.h a6c69c1c5e2c8c19172ddff42d262c087dcd7337
F ext/fts3/fts3_expr.c 5f49e0deaf723724b08100bb3ff40aab02ad0c93
@ -452,7 +452,7 @@ F test/fts3malloc.test 9c8cc3f885bb4dfc66d0460c52f68f45e4710d1b
F test/fts3matchinfo.test ae910aa666285e14743a80799214bfb3f1aab8f2
F test/fts3near.test 2e318ee434d32babd27c167142e2b94ddbab4844
F test/fts3query.test ef79d31fdb355d094baec1c1b24b60439a1fb8a2
F test/fts3rnd.test 707533ce943f490443ce5e696236bb1675a37635
F test/fts3rnd.test 2b1a579be557ab8ac54a51b39caa4aa8043cc4ad
F test/fts3shared.test 8bb266521d7c5495c0ae522bb4d376ad5387d4a2
F test/fts3snippet.test a12f22a3ba4dd59751a57c79b031d07ab5f51ddd
F test/fts4aa.test eadf85621c0a113d4c7ad3ccbf8441130e007b8f
@ -893,7 +893,7 @@ F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff
F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224
F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f
P a94b9a395e0be9549d8c28e2b86b995c73c7b671
R 741b538e8e95750c9262dc17abfd3a28
P 474196d6452f5868a712a9b0116d5f64c90d67c1
R adbfa1a9f70157ddb61fd4c028295042
U dan
Z 849f041b0ecb0da6b497679389cd2d3a
Z ed86013c21e878d00fdc8f86e5e497fd

View File

@ -1 +1 @@
474196d6452f5868a712a9b0116d5f64c90d67c1
099195b14829f375055345b8322905ccd073d442

View File

@ -306,6 +306,10 @@ foreach nodesize {50 500 1000 2000} {
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
@ -379,7 +383,6 @@ foreach nodesize {50 500 1000 2000} {
set terms [list [random_term] [random_term] [random_term]]
set nNear 11
set match [join $terms " NEAR/$nNear "]
set fts3 [execsql { SELECT docid FROM t1 WHERE t1 MATCH $match }]
do_select_test fts3rnd-1.$nodesize.$iTest.7.$i {
SELECT docid FROM t1 WHERE t1 MATCH $match
} [simple_near $terms $nNear]