mirror of
https://github.com/sqlite/sqlite.git
synced 2025-07-29 08:01:23 +03:00
Fix a performance regression in matchinfo().
FossilOrigin-Name: fa37d8eb7cd8049689068af2a80fe2cbb4a603f1
This commit is contained in:
@ -3106,9 +3106,16 @@ char *sqlite3Fts3FindPositions(
|
|||||||
assert( pExpr->isLoaded );
|
assert( pExpr->isLoaded );
|
||||||
if( pExpr->aDoclist ){
|
if( pExpr->aDoclist ){
|
||||||
char *pEnd = &pExpr->aDoclist[pExpr->nDoclist];
|
char *pEnd = &pExpr->aDoclist[pExpr->nDoclist];
|
||||||
char *pCsr = pExpr->pCurrent;
|
char *pCsr;
|
||||||
|
|
||||||
|
if( pExpr->pCurrent==0 ){
|
||||||
|
pExpr->pCurrent = pExpr->aDoclist;
|
||||||
|
pExpr->iCurrent = 0;
|
||||||
|
pExpr->pCurrent += sqlite3Fts3GetVarint(pExpr->pCurrent,&pExpr->iCurrent);
|
||||||
|
}
|
||||||
|
pCsr = pExpr->pCurrent;
|
||||||
assert( pCsr );
|
assert( pCsr );
|
||||||
|
|
||||||
while( pCsr<pEnd ){
|
while( pCsr<pEnd ){
|
||||||
if( pExpr->iCurrent<iDocid ){
|
if( pExpr->iCurrent<iDocid ){
|
||||||
fts3PoslistCopy(0, &pCsr);
|
fts3PoslistCopy(0, &pCsr);
|
||||||
|
@ -226,7 +226,7 @@ static int fts3ExprNearTrim(Fts3Expr *pExpr){
|
|||||||
** for each phrase into Fts3Expr.aDoclist[]/nDoclist. See also
|
** for each phrase into Fts3Expr.aDoclist[]/nDoclist. See also
|
||||||
** fts3ExprLoadDoclists().
|
** fts3ExprLoadDoclists().
|
||||||
*/
|
*/
|
||||||
static int fts3ExprLoadDoclistsCb1(Fts3Expr *pExpr, int iPhrase, void *ctx){
|
static int fts3ExprLoadDoclistsCb(Fts3Expr *pExpr, int iPhrase, void *ctx){
|
||||||
int rc = SQLITE_OK;
|
int rc = SQLITE_OK;
|
||||||
LoadDoclistCtx *p = (LoadDoclistCtx *)ctx;
|
LoadDoclistCtx *p = (LoadDoclistCtx *)ctx;
|
||||||
|
|
||||||
@ -246,22 +246,6 @@ static int fts3ExprLoadDoclistsCb1(Fts3Expr *pExpr, int iPhrase, void *ctx){
|
|||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
** This is an fts3ExprIterate() callback used while loading the doclists
|
|
||||||
** for each phrase into Fts3Expr.aDoclist[]/nDoclist. See also
|
|
||||||
** fts3ExprLoadDoclists().
|
|
||||||
*/
|
|
||||||
static int fts3ExprLoadDoclistsCb2(Fts3Expr *pExpr, int iPhrase, void *ctx){
|
|
||||||
UNUSED_PARAMETER(iPhrase);
|
|
||||||
UNUSED_PARAMETER(ctx);
|
|
||||||
if( pExpr->aDoclist ){
|
|
||||||
pExpr->pCurrent = pExpr->aDoclist;
|
|
||||||
pExpr->iCurrent = 0;
|
|
||||||
pExpr->pCurrent += sqlite3Fts3GetVarint(pExpr->pCurrent, &pExpr->iCurrent);
|
|
||||||
}
|
|
||||||
return SQLITE_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** Load the doclists for each phrase in the query associated with FTS3 cursor
|
** Load the doclists for each phrase in the query associated with FTS3 cursor
|
||||||
** pCsr.
|
** pCsr.
|
||||||
@ -280,10 +264,7 @@ static int fts3ExprLoadDoclists(
|
|||||||
int rc; /* Return Code */
|
int rc; /* Return Code */
|
||||||
LoadDoclistCtx sCtx = {0,0,0}; /* Context for fts3ExprIterate() */
|
LoadDoclistCtx sCtx = {0,0,0}; /* Context for fts3ExprIterate() */
|
||||||
sCtx.pCsr = pCsr;
|
sCtx.pCsr = pCsr;
|
||||||
rc = fts3ExprIterate(pCsr->pExpr, fts3ExprLoadDoclistsCb1, (void *)&sCtx);
|
rc = fts3ExprIterate(pCsr->pExpr, fts3ExprLoadDoclistsCb, (void *)&sCtx);
|
||||||
if( rc==SQLITE_OK ){
|
|
||||||
(void)fts3ExprIterate(pCsr->pExpr, fts3ExprLoadDoclistsCb2, 0);
|
|
||||||
}
|
|
||||||
if( pnPhrase ) *pnPhrase = sCtx.nPhrase;
|
if( pnPhrase ) *pnPhrase = sCtx.nPhrase;
|
||||||
if( pnToken ) *pnToken = sCtx.nToken;
|
if( pnToken ) *pnToken = sCtx.nToken;
|
||||||
return rc;
|
return rc;
|
||||||
|
26
manifest
26
manifest
@ -1,8 +1,5 @@
|
|||||||
-----BEGIN PGP SIGNED MESSAGE-----
|
C Fix\sa\sperformance\sregression\sin\smatchinfo().
|
||||||
Hash: SHA1
|
D 2010-12-10T17:06:48
|
||||||
|
|
||||||
C Add\ssupport\sfor\sthe\sSQLITE_DEFAULT_FOREIGN_KEYS\scompile-time\soption.
|
|
||||||
D 2010-12-09T19:15:17
|
|
||||||
F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
|
F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
|
||||||
F Makefile.in 4547616ad2286053af6ccccefa242dc925e49bf0
|
F Makefile.in 4547616ad2286053af6ccccefa242dc925e49bf0
|
||||||
F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
|
F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
|
||||||
@ -64,7 +61,7 @@ F ext/fts2/mkfts2amal.tcl 974d5d438cb3f7c4a652639262f82418c1e4cff0
|
|||||||
F ext/fts3/README.syntax a19711dc5458c20734b8e485e75fb1981ec2427a
|
F ext/fts3/README.syntax a19711dc5458c20734b8e485e75fb1981ec2427a
|
||||||
F ext/fts3/README.tokenizers 998756696647400de63d5ba60e9655036cb966e9
|
F ext/fts3/README.tokenizers 998756696647400de63d5ba60e9655036cb966e9
|
||||||
F ext/fts3/README.txt 8c18f41574404623b76917b9da66fcb0ab38328d
|
F ext/fts3/README.txt 8c18f41574404623b76917b9da66fcb0ab38328d
|
||||||
F ext/fts3/fts3.c 44f998657ec849362484bb389c5728e821fc8c59
|
F ext/fts3/fts3.c 28ada7d1c700e57b072b2c95d70565b05925fa46
|
||||||
F ext/fts3/fts3.h 3a10a0af180d502cecc50df77b1b22df142817fe
|
F ext/fts3/fts3.h 3a10a0af180d502cecc50df77b1b22df142817fe
|
||||||
F ext/fts3/fts3Int.h a6c69c1c5e2c8c19172ddff42d262c087dcd7337
|
F ext/fts3/fts3Int.h a6c69c1c5e2c8c19172ddff42d262c087dcd7337
|
||||||
F ext/fts3/fts3_expr.c 5f49e0deaf723724b08100bb3ff40aab02ad0c93
|
F ext/fts3/fts3_expr.c 5f49e0deaf723724b08100bb3ff40aab02ad0c93
|
||||||
@ -72,7 +69,7 @@ F ext/fts3/fts3_hash.c 3c8f6387a4a7f5305588b203fa7c887d753e1f1c
|
|||||||
F ext/fts3/fts3_hash.h 8331fb2206c609f9fc4c4735b9ab5ad6137c88ec
|
F ext/fts3/fts3_hash.h 8331fb2206c609f9fc4c4735b9ab5ad6137c88ec
|
||||||
F ext/fts3/fts3_icu.c ac494aed69835008185299315403044664bda295
|
F ext/fts3/fts3_icu.c ac494aed69835008185299315403044664bda295
|
||||||
F ext/fts3/fts3_porter.c d61cfd81fb0fd8fbcb25adcaee0ba671aefaa5c2
|
F ext/fts3/fts3_porter.c d61cfd81fb0fd8fbcb25adcaee0ba671aefaa5c2
|
||||||
F ext/fts3/fts3_snippet.c 6c87b55965124920d6461d79ea44b22cc3f307aa
|
F ext/fts3/fts3_snippet.c 3a26a835732619b62f3af1b73f96d017f8651f9f
|
||||||
F ext/fts3/fts3_tokenizer.c 055f3dc7369585350b28db1ee0f3b214dca6724d
|
F ext/fts3/fts3_tokenizer.c 055f3dc7369585350b28db1ee0f3b214dca6724d
|
||||||
F ext/fts3/fts3_tokenizer.h 13ffd9fcb397fec32a05ef5cd9e0fa659bf3dbd3
|
F ext/fts3/fts3_tokenizer.h 13ffd9fcb397fec32a05ef5cd9e0fa659bf3dbd3
|
||||||
F ext/fts3/fts3_tokenizer1.c 6e5cbaa588924ac578263a598e4fb9f5c9bb179d
|
F ext/fts3/fts3_tokenizer1.c 6e5cbaa588924ac578263a598e4fb9f5c9bb179d
|
||||||
@ -897,14 +894,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 5a52dd59ff577b071b4ed9316dc3bc753a18c8da
|
P c959945ab7129b67eb2364befb9bf5cc88a8b0bf
|
||||||
R f77079846f4aaed873cf9f6ceda77529
|
R ecceeedfad0e31364c78a099c74496b6
|
||||||
U drh
|
U dan
|
||||||
Z 52a27da9ef768b0e16942ded7463031d
|
Z 880171407a74a3cc3ca171dd325c20ce
|
||||||
-----BEGIN PGP SIGNATURE-----
|
|
||||||
Version: GnuPG v1.4.6 (GNU/Linux)
|
|
||||||
|
|
||||||
iD8DBQFNASrIoxKgR168RlERAqlaAJ9aEPuysxoQS1x9hi1oYTyTN055FACfbx1X
|
|
||||||
aPAgBUJmi1Z0CWWDapob82w=
|
|
||||||
=QBYv
|
|
||||||
-----END PGP SIGNATURE-----
|
|
||||||
|
@ -1 +1 @@
|
|||||||
c959945ab7129b67eb2364befb9bf5cc88a8b0bf
|
fa37d8eb7cd8049689068af2a80fe2cbb4a603f1
|
Reference in New Issue
Block a user