Fix problem with some fts5 aux function APIs with (locale=, detail=none/column) tables.
FossilOrigin-Name: bf116dec6fb20cce69099cb8c031b0de511195482919a99ccfb3c498e9bf8125
This commit is contained in:
@@ -2231,14 +2231,21 @@ static int fts5CsrPoslist(
|
||||
int i;
|
||||
aPopulator = sqlite3Fts5ExprClearPoslists(pCsr->pExpr, bLive);
|
||||
if( aPopulator==0 ) rc = SQLITE_NOMEM;
|
||||
if( rc==SQLITE_OK ){
|
||||
rc = fts5SeekCursor(pCsr, 0);
|
||||
}
|
||||
for(i=0; i<pConfig->nCol && rc==SQLITE_OK; i++){
|
||||
int n; const char *z;
|
||||
rc = fts5ApiColumnText((Fts5Context*)pCsr, i, &z, &n);
|
||||
sqlite3_value *pVal = sqlite3_column_value(pCsr->pStmt, i+1);
|
||||
const char *z = 0;
|
||||
int n = 0;
|
||||
int bReset = 0;
|
||||
rc = sqlite3Fts5ExtractText(pConfig, pVal, 1, &bReset, &z, &n);
|
||||
if( rc==SQLITE_OK ){
|
||||
rc = sqlite3Fts5ExprPopulatePoslists(
|
||||
pConfig, pCsr->pExpr, aPopulator, i, z, n
|
||||
);
|
||||
}
|
||||
if( bReset ) sqlite3Fts5ClearLocale(pConfig);
|
||||
}
|
||||
sqlite3_free(aPopulator);
|
||||
|
||||
|
||||
@@ -414,5 +414,35 @@ do_execsql_test 8.1 {
|
||||
a eb eulav osla sihT te the token yam
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
# Test that position-lists (used by xInst, xPhraseFirst etc.) work with
|
||||
# locales and modes other than detail=full.
|
||||
#
|
||||
|
||||
foreach {tn detail} {
|
||||
1 detail=full
|
||||
2 detail=none
|
||||
3 detail=column
|
||||
} {
|
||||
reset_db
|
||||
sqlite3_fts5_create_tokenizer -v2 db tcl tcl_create
|
||||
do_execsql_test 9.$tn.0 "
|
||||
CREATE VIRTUAL TABLE ft USING fts5(tt, locale=1, tokenize=tcl, $detail);
|
||||
"
|
||||
do_execsql_test 9.$tn.1 {
|
||||
CREATE VIRTUAL TABLE vocab USING fts5vocab('ft', instance);
|
||||
INSERT INTO ft(rowid, tt) VALUES
|
||||
(-1, fts5_locale('second', 'it is an ancient mariner'));
|
||||
}
|
||||
|
||||
do_execsql_test 9.$tn.2 {
|
||||
SELECT DISTINCT term FROM vocab
|
||||
} {an it mariner}
|
||||
|
||||
do_execsql_test 9.$tn.3 {
|
||||
SELECT highlight(ft, 0, '[', ']') FROM ft('mariner')
|
||||
} {{it is an ancient [mariner]}}
|
||||
}
|
||||
|
||||
finish_test
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
C Fix\sfurther\sissues\sto\sdo\swith\sfts5\slocale\ssupport.
|
||||
D 2024-08-12T17:03:37.726
|
||||
C Fix\sproblem\swith\ssome\sfts5\saux\sfunction\sAPIs\swith\s(locale=,\sdetail=none/column)\stables.
|
||||
D 2024-08-12T17:28:13.218
|
||||
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
|
||||
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
|
||||
F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
|
||||
@@ -100,7 +100,7 @@ F ext/fts5/fts5_config.c 187f7ffa5eddd6539ffa592de85e95b18be951728491390121bb215
|
||||
F ext/fts5/fts5_expr.c 3a24c6ab5b7545312a5ec03085ae705ede820a08f9a63f1d72829ed4a35da6f6
|
||||
F ext/fts5/fts5_hash.c adda4272be401566a6e0ba1acbe70ee5cb97fce944bc2e04dc707152a0ec91b1
|
||||
F ext/fts5/fts5_index.c eb9a0dda3bc6ef969a6be8d2746af56856e67251810ddba08622b45be8477abe
|
||||
F ext/fts5/fts5_main.c 4fe8349b812a9fde8e44ac5568f19d713ccc4790eb3ecb692f6551729c481b2b
|
||||
F ext/fts5/fts5_main.c b3194ee180859067fc8651d3c4e40d7f24877eb9cd820618d938d1a6d0974493
|
||||
F ext/fts5/fts5_storage.c 5bf88213ff5911625c142ac332ddba10dcd0869e757f91f2a3d27f27ba595992
|
||||
F ext/fts5/fts5_tcl.c 50c7e16753fde0c4d80d8abd00a4ed2b0e998d5d3899a484510d01923c5da43b
|
||||
F ext/fts5/fts5_test_mi.c 08c11ec968148d4cb4119d96d819f8c1f329812c568bac3684f5464be177d3ee
|
||||
@@ -186,7 +186,7 @@ F ext/fts5/test/fts5interrupt.test 20d04204d3e341b104c0c24a41596b6393a3a81eba104
|
||||
F ext/fts5/test/fts5lastrowid.test f36298a1fb9f988bde060a274a7ce638faa9c38a31400f8d2d27ea9373e0c4a1
|
||||
F ext/fts5/test/fts5leftjoin.test c0b4cafb9661379e576dc4405c0891d8fcc2782680740513c4d1fc114b43d4ad
|
||||
F ext/fts5/test/fts5limits.test 8ab67cf5d311c124b6ceb0062d0297767176df4572d955fce79fa43004dff01c
|
||||
F ext/fts5/test/fts5locale.test 8e893b5a764d181260f5f862dc529fcdb42315b2d683317043d4609f13f88a02
|
||||
F ext/fts5/test/fts5locale.test 1f08fb39af3c0cb49ce48ec1212308db4b0105a38ff1a6864c8ef73abffb5431
|
||||
F ext/fts5/test/fts5matchinfo.test 877520582feb86bbfd95ab780099bcba4526f18ac75ee34979144cf86ba3a5a3
|
||||
F ext/fts5/test/fts5merge.test 2654df0bcdb2d117c2d38b6aeb0168061be01c643f9e9194b36c43a2970e8082
|
||||
F ext/fts5/test/fts5merge2.test 3ebad1a59d6ad3fb66eff6523a09e95dc6367cbefb3cd73196801dea0425c8e2
|
||||
@@ -2207,8 +2207,8 @@ F vsixtest/vsixtest.tcl 6195aba1f12a5e10efc2b8c0009532167be5e301abe5b31385638080
|
||||
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
|
||||
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
|
||||
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
|
||||
P 3291ce3a3359a80e51e4546a3d7a187cbe4c7530fca6632f0bb2728525efe212
|
||||
R 5bdde041363e74c68796cadade4d8480
|
||||
P e626123580065986f7df50b6140f00048944becce179b9391fbf09f97ac55485
|
||||
R 7d41bee88044e0297d8070928920af0c
|
||||
U dan
|
||||
Z 098e7ed7a851f6658bf54618988e8ebd
|
||||
Z 30446f621f4abd678975f659d5345d71
|
||||
# Remove this line to create a well-formed Fossil manifest.
|
||||
|
||||
+1
-1
@@ -1 +1 @@
|
||||
e626123580065986f7df50b6140f00048944becce179b9391fbf09f97ac55485
|
||||
bf116dec6fb20cce69099cb8c031b0de511195482919a99ccfb3c498e9bf8125
|
||||
|
||||
Reference in New Issue
Block a user