1
0
mirror of https://github.com/sqlite/sqlite.git synced 2026-01-06 08:01:16 +03:00

Different approach to querying a tokendata=1 table. Saves cpu and memory.

FossilOrigin-Name: c523f40895866e6fc979a26483dbea8206126b4bbdf4b73b77263c09e13c855e
This commit is contained in:
dan
2023-12-01 20:09:59 +00:00
parent 89fcfbb424
commit b5effc0605
9 changed files with 541 additions and 90 deletions

View File

@@ -3003,6 +3003,7 @@ static int fts5ExprPopulatePoslistsCb(
Fts5Expr *pExpr = p->pExpr;
int i;
int nQuery = nToken;
i64 iRowid = pExpr->pRoot->iRowid;
UNUSED_PARAM2(iUnused1, iUnused2);
@@ -3025,7 +3026,7 @@ static int fts5ExprPopulatePoslistsCb(
int iCol = p->iOff>>32;
int iTokOff = p->iOff & 0x7FFFFFFF;
rc = sqlite3Fts5IndexIterWriteTokendata(
pT->pIter, pToken, nToken, iCol, iTokOff
pT->pIter, pToken, nToken, iRowid, iCol, iTokOff
);
}
if( rc ) return rc;
@@ -3210,6 +3211,7 @@ int sqlite3Fts5ExprInstToken(
){
Fts5ExprPhrase *pPhrase = 0;
Fts5IndexIter *pIter = 0;
i64 iRowid = pExpr->pRoot->iRowid;
if( iPhrase<0 || iPhrase>=pExpr->nPhrase ){
return SQLITE_RANGE;
@@ -3220,6 +3222,6 @@ int sqlite3Fts5ExprInstToken(
}
pIter = pPhrase->aTerm[iToken].pIter;
return sqlite3Fts5IterToken(pIter, iCol, iOff+iToken, ppOut, pnOut);
return sqlite3Fts5IterToken(pIter, iRowid, iCol, iOff+iToken, ppOut, pnOut);
}