mirror of
https://github.com/sqlite/sqlite.git
synced 2025-08-08 14:02:16 +03:00
Fixes to fts3 integrity check code.
FossilOrigin-Name: d3cae986ee1a176b1b015c3cebcd58ff0c3bdf92
This commit is contained in:
14
manifest
14
manifest
@@ -1,5 +1,5 @@
|
|||||||
C Further\sOOM\stesting\sfor\sfts3\scode.\sAdd\sTcl\scode\simplementing\san\sintegrity-check\sfor\sfts3.
|
C Fixes\sto\sfts3\sintegrity\scheck\scode.
|
||||||
D 2009-11-14T11:41:01
|
D 2009-11-14T23:50:11
|
||||||
F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0
|
F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0
|
||||||
F Makefile.in 53f3dfa49f28ab5b80cb083fb7c9051e596bcfa1
|
F Makefile.in 53f3dfa49f28ab5b80cb083fb7c9051e596bcfa1
|
||||||
F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
|
F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
|
||||||
@@ -187,7 +187,7 @@ F src/test_btree.c 47cd771250f09cdc6e12dda5bc71bc0b3abc96e2
|
|||||||
F src/test_config.c 220a67047af393756f55760fdf442d935d0d88f3
|
F src/test_config.c 220a67047af393756f55760fdf442d935d0d88f3
|
||||||
F src/test_devsym.c de3c9af2bb9a8b1e44525c449e4ec3f88e3d4110
|
F src/test_devsym.c de3c9af2bb9a8b1e44525c449e4ec3f88e3d4110
|
||||||
F src/test_func.c 1c94388a23d4a9e7cd62ec79d612d1bae2451fa2
|
F src/test_func.c 1c94388a23d4a9e7cd62ec79d612d1bae2451fa2
|
||||||
F src/test_hexio.c 160dba2ad21d164cade8fd6a12db0926ca574ac8
|
F src/test_hexio.c 0853ca2986c0cad788eb322b747cc1cbc1f1d31b
|
||||||
F src/test_init.c 5d624ffd0409d424cf9adbfe1f056b200270077c
|
F src/test_init.c 5d624ffd0409d424cf9adbfe1f056b200270077c
|
||||||
F src/test_intarray.c 25b3df15cca9ddb83927e002f4885d98a63bba0d
|
F src/test_intarray.c 25b3df15cca9ddb83927e002f4885d98a63bba0d
|
||||||
F src/test_intarray.h 489edb9068bb926583445cb02589344961054207
|
F src/test_intarray.h 489edb9068bb926583445cb02589344961054207
|
||||||
@@ -375,7 +375,7 @@ F test/fts2q.test b2fbbe038b7a31a52a6079b215e71226d8c6a682
|
|||||||
F test/fts2r.test b154c30b63061d8725e320fba1a39e2201cadd5e
|
F test/fts2r.test b154c30b63061d8725e320fba1a39e2201cadd5e
|
||||||
F test/fts2token.test d8070b241a15ff13592a9ae4a8b7c171af6f445a
|
F test/fts2token.test d8070b241a15ff13592a9ae4a8b7c171af6f445a
|
||||||
F test/fts3.test f4f380d3717493605270dfa3b0fa893ea0afb18d
|
F test/fts3.test f4f380d3717493605270dfa3b0fa893ea0afb18d
|
||||||
F test/fts3_common.tcl 2a38db65c919b5aa7b88d9c204e19e3d66fd810a
|
F test/fts3_common.tcl c6493126a3847355c007bb36e0d15e496899aeb5
|
||||||
F test/fts3aa.test 5327d4c1d9b6c61021696746cc9a6cdc5bf159c0
|
F test/fts3aa.test 5327d4c1d9b6c61021696746cc9a6cdc5bf159c0
|
||||||
F test/fts3ab.test 09aeaa162aee6513d9ff336b6932211008b9d1f9
|
F test/fts3ab.test 09aeaa162aee6513d9ff336b6932211008b9d1f9
|
||||||
F test/fts3ac.test 356280144a2c92aa7b11474afadfe62a437fcd69
|
F test/fts3ac.test 356280144a2c92aa7b11474afadfe62a437fcd69
|
||||||
@@ -772,7 +772,7 @@ F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff
|
|||||||
F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224
|
F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224
|
||||||
F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
|
F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
|
||||||
F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f
|
F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f
|
||||||
P 30a92f1132801c7582007ee625c577ea2ac31cdf
|
P c27d46b33e8596b45c562c2742b05030e8899092
|
||||||
R b57a3a365be0f7386d8b2b667cc40aff
|
R 4c52d9528d06bab9b6911bfc5621469d
|
||||||
U dan
|
U dan
|
||||||
Z c9155f22386e8e971e228afde4beba2a
|
Z 07e55edf8ef0b4c5772a79580f9928fa
|
||||||
|
@@ -1 +1 @@
|
|||||||
c27d46b33e8596b45c562c2742b05030e8899092
|
d3cae986ee1a176b1b015c3cebcd58ff0c3bdf92
|
@@ -316,6 +316,19 @@ static int utf8_to_utf8(
|
|||||||
return TCL_OK;
|
return TCL_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int getFts3Varint(const char *p, sqlite_int64 *v){
|
||||||
|
const unsigned char *q = (const unsigned char *) p;
|
||||||
|
sqlite_uint64 x = 0, y = 1;
|
||||||
|
while( (*q & 0x80) == 0x80 ){
|
||||||
|
x += y * (*q++ & 0x7f);
|
||||||
|
y <<= 7;
|
||||||
|
}
|
||||||
|
x += y * (*q++);
|
||||||
|
*v = (sqlite_int64) x;
|
||||||
|
return (int) (q - (unsigned char *)p);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** USAGE: read_varint BLOB VARNAME
|
** USAGE: read_varint BLOB VARNAME
|
||||||
**
|
**
|
||||||
@@ -339,7 +352,7 @@ static int read_varint(
|
|||||||
}
|
}
|
||||||
zBlob = Tcl_GetByteArrayFromObj(objv[1], &nBlob);
|
zBlob = Tcl_GetByteArrayFromObj(objv[1], &nBlob);
|
||||||
|
|
||||||
nVal = sqlite3GetVarint(zBlob, (sqlite3_uint64 *)(&iVal));
|
nVal = getFts3Varint(zBlob, (sqlite3_uint64 *)(&iVal));
|
||||||
Tcl_ObjSetVar2(interp, objv[2], 0, Tcl_NewWideIntObj(iVal), 0);
|
Tcl_ObjSetVar2(interp, objv[2], 0, Tcl_NewWideIntObj(iVal), 0);
|
||||||
Tcl_SetObjResult(interp, Tcl_NewIntObj(nVal));
|
Tcl_SetObjResult(interp, Tcl_NewIntObj(nVal));
|
||||||
return TCL_OK;
|
return TCL_OK;
|
||||||
|
@@ -80,6 +80,10 @@ proc fts3_integrity_check {tbl} {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
foreach key [array names C] {
|
||||||
|
#puts "$key -> $C($key)"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
db eval "SELECT * FROM ${tbl}_content" E {
|
db eval "SELECT * FROM ${tbl}_content" E {
|
||||||
set iCol 0
|
set iCol 0
|
||||||
@@ -89,12 +93,17 @@ proc fts3_integrity_check {tbl} {
|
|||||||
set sql {SELECT fts3_tokenizer_test('simple', $c)}
|
set sql {SELECT fts3_tokenizer_test('simple', $c)}
|
||||||
|
|
||||||
foreach {pos term dummy} [db one $sql] {
|
foreach {pos term dummy} [db one $sql] {
|
||||||
if {$C($iDoc,$iCol,$pos) != "$term"} {
|
if {![info exists C($iDoc,$iCol,$pos)]} {
|
||||||
set es "Error at docid=$iDoc col=$iCol pos=$pos. "
|
set es "Error at docid=$iDoc col=$iCol pos=$pos. Index is missing"
|
||||||
append es "Index has \"$C($iDoc,$iCol,$pos)\", document has \"$term\""
|
|
||||||
lappend errors $es
|
lappend errors $es
|
||||||
|
} else {
|
||||||
|
if {$C($iDoc,$iCol,$pos) != "$term"} {
|
||||||
|
set es "Error at docid=$iDoc col=$iCol pos=$pos. Index "
|
||||||
|
append es "has \"$C($iDoc,$iCol,$pos)\", document has \"$term\""
|
||||||
|
lappend errors $es
|
||||||
|
}
|
||||||
|
unset C($iDoc,$iCol,$pos)
|
||||||
}
|
}
|
||||||
unset C($iDoc,$iCol,$pos)
|
|
||||||
}
|
}
|
||||||
incr iCol
|
incr iCol
|
||||||
}
|
}
|
||||||
@@ -245,7 +254,7 @@ proc fts3_read2 {tbl where varname} {
|
|||||||
} else {
|
} else {
|
||||||
db eval " SELECT block
|
db eval " SELECT block
|
||||||
FROM ${tbl}_segments
|
FROM ${tbl}_segments
|
||||||
WHERE blockid>=$start_block AND blockid<$leaves_end_block
|
WHERE blockid>=$start_block AND blockid<=$leaves_end_block
|
||||||
ORDER BY blockid
|
ORDER BY blockid
|
||||||
" {
|
" {
|
||||||
foreach {t d} [fts3_readleaf $block] { lappend a($t) $d }
|
foreach {t d} [fts3_readleaf $block] { lappend a($t) $d }
|
||||||
|
Reference in New Issue
Block a user