From: dan Date: Fri, 20 Dec 2019 19:41:01 +0000 (+0000) Subject: Fix two more cases in fts5 where sqlite3_value_bytes() was being called before sqlite... X-Git-Tag: version-3.31.0~190 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=42ae633ab92023e93c0c4b1f365595f9b88e2b3b;p=thirdparty%2Fsqlite.git Fix two more cases in fts5 where sqlite3_value_bytes() was being called before sqlite3_value_text(). Fix for e431c355. FossilOrigin-Name: a1ba9a37d7a68a6d31f8197c6350589ebe6a12f4e3c193a178dd7ead8bcd565a --- diff --git a/ext/fts5/fts5_storage.c b/ext/fts5/fts5_storage.c index 397d419ed9..22f90c0ef8 100644 --- a/ext/fts5/fts5_storage.c +++ b/ext/fts5/fts5_storage.c @@ -613,10 +613,11 @@ int sqlite3Fts5StorageRebuild(Fts5Storage *p){ for(ctx.iCol=0; rc==SQLITE_OK && ctx.iColnCol; ctx.iCol++){ ctx.szCol = 0; if( pConfig->abUnindexed[ctx.iCol]==0 ){ + const char *zText = (const char*)sqlite3_column_text(pScan, ctx.iCol+1); + int nText = sqlite3_column_bytes(pScan, ctx.iCol+1); rc = sqlite3Fts5Tokenize(pConfig, FTS5_TOKENIZE_DOCUMENT, - (const char*)sqlite3_column_text(pScan, ctx.iCol+1), - sqlite3_column_bytes(pScan, ctx.iCol+1), + zText, nText, (void*)&ctx, fts5StorageInsertCallback ); @@ -911,10 +912,11 @@ int sqlite3Fts5StorageIntegrity(Fts5Storage *p){ rc = sqlite3Fts5TermsetNew(&ctx.pTermset); } if( rc==SQLITE_OK ){ + const char *zText = (const char*)sqlite3_column_text(pScan, i+1); + int nText = sqlite3_column_bytes(pScan, i+1); rc = sqlite3Fts5Tokenize(pConfig, FTS5_TOKENIZE_DOCUMENT, - (const char*)sqlite3_column_text(pScan, i+1), - sqlite3_column_bytes(pScan, i+1), + zText, nText, (void*)&ctx, fts5StorageIntegrityCallback ); diff --git a/ext/fts5/test/fts5integrity.test b/ext/fts5/test/fts5integrity.test index e8135b078f..5b0cc95866 100644 --- a/ext/fts5/test/fts5integrity.test +++ b/ext/fts5/test/fts5integrity.test @@ -218,12 +218,19 @@ do_execsql_test 7.0 { INSERT INTO vt0 VALUES (x'46f0'); SELECT quote(c0) FROM vt0; } {X'46F0'} - do_execsql_test 7.1 { - UPDATE vt0 SET c0=''; + INSERT INTO vt0(vt0) VALUES('integrity-check'); } - do_execsql_test 7.2 { + INSERT INTO vt0(vt0) VALUES('rebuild'); +} +do_execsql_test 7.3 { + INSERT INTO vt0(vt0) VALUES('integrity-check'); +} +do_execsql_test 7.4 { + UPDATE vt0 SET c0=''; +} +do_execsql_test 7.5 { INSERT INTO vt0(vt0) VALUES('integrity-check'); } diff --git a/manifest b/manifest index f072e0a0e7..0a2cc8d36f 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Export\sthe\spublic\sRBU\sentry\spoints\sfrom\sthe\sWin32\sDLL. -D 2019-12-20T17:41:15.560 +C Fix\stwo\smore\scases\sin\sfts5\swhere\ssqlite3_value_bytes()\swas\sbeing\scalled\sbefore\ssqlite3_value_text().\sFix\sfor\se431c355. +D 2019-12-20T19:41:01.504 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@ -118,7 +118,7 @@ F ext/fts5/fts5_expr.c 2be456484786333d559dc2987a00f2750981fab91d52db8452a804627 F ext/fts5/fts5_hash.c 1cc0095646f5f3b46721aa112fb4f9bf29ae175cb5338f89dcec66ed97acfe75 F ext/fts5/fts5_index.c 99b77ae1f503978ca76985bcfff7345c822aed8bbaa8edb3747f804f614685b5 F ext/fts5/fts5_main.c 9db1f173d299466aeff89bd949fb1eb0a181265726fb56f11e07ea292dcc9a73 -F ext/fts5/fts5_storage.c 517aae1a606c33a5197dfda53bf9eef194e3636818a4cf52324bf91bf70dcd47 +F ext/fts5/fts5_storage.c 3ecda8edadc1f62a355d6789776be0da609f8658c50d72e422674093ab7e1528 F ext/fts5/fts5_tcl.c 39bcbae507f594aad778172fa914cad0f585bf92fd3b078c686e249282db0d95 F ext/fts5/fts5_test_mi.c 08c11ec968148d4cb4119d96d819f8c1f329812c568bac3684f5464be177d3ee F ext/fts5/fts5_test_tok.c f96c6e193c466711d6d7828d5f190407fe7ab897062d371426dd3036f01258e7 @@ -182,7 +182,7 @@ F ext/fts5/test/fts5first.test 3fcf2365c00a15fc9704233674789a3b95131d12de18a9b99 F ext/fts5/test/fts5full.test e1701a112354e0ff9a1fdffb0c940c576530c33732ee20ac5e8361777070d717 F ext/fts5/test/fts5fuzz1.test 238d8c45f3b81342aa384de3e581ff2fa330bf922a7b69e484bbc06051a1080e F ext/fts5/test/fts5hash.test a4cf51acad99bfc43c16fb74f9d22495dc221ae0701fc5e908ca963a9b26a02b -F ext/fts5/test/fts5integrity.test dea2ea1977a67256aa8346514dccd8f477863edaebf305486ab45dd004b646fd +F ext/fts5/test/fts5integrity.test 1bcd3c04c5ad6bc0370278281682be5d51a0f4522ef5b60b005fa1c0c7b1b433 F ext/fts5/test/fts5interrupt.test 09613247b273a99889808ef852898177e671406fe71fdde7ea00e78ea283d227 F ext/fts5/test/fts5lastrowid.test be98fe3e03235296585b72daad7aed5717ba0062bae5e5c18dd6e04e194c6b28 F ext/fts5/test/fts5leftjoin.test c0b4cafb9661379e576dc4405c0891d8fcc2782680740513c4d1fc114b43d4ad @@ -1852,7 +1852,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P dc5f1d282d1e75f8a3791b0c95cb8f143b2a956323cb6c889d76d20db7f89257 -R 8d20ce65ce8b3a258ac21b4b684c5925 -U mistachkin -Z a0bcb3089620c4d448f1bba178e307bd +P e62d1791f428b7a9bb14a59483f12d8ee08afbf4061a5e3be8f64787444301e7 +R 83476bba8ae2cf801d14b711beef14b7 +U dan +Z cc23e8046b671a0f1fdecd77a8b35986 diff --git a/manifest.uuid b/manifest.uuid index 54eb94f691..22681e8a21 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -e62d1791f428b7a9bb14a59483f12d8ee08afbf4061a5e3be8f64787444301e7 \ No newline at end of file +a1ba9a37d7a68a6d31f8197c6350589ebe6a12f4e3c193a178dd7ead8bcd565a \ No newline at end of file