From f8a488bb6b89b1657badfff3e77add3be8fc9333 Mon Sep 17 00:00:00 2001 From: dan Date: Mon, 14 Jan 2019 15:35:15 +0000 Subject: [PATCH] Fix a problem causing a crash if an fts5vocab table was created to query an fts3/4 FTS index. FossilOrigin-Name: 9cd64ce453e4435d80117b8610c22a0a4b53cd6e84b39815e70e684f6b0295c8 --- ext/fts5/fts5_main.c | 12 ++++++------ ext/fts5/test/fts5vocab2.test | 32 ++++++++++++++++++++++++++++++++ manifest | 14 +++++++------- manifest.uuid | 2 +- 4 files changed, 46 insertions(+), 14 deletions(-) diff --git a/ext/fts5/fts5_main.c b/ext/fts5/fts5_main.c index 6fc5a90311..07934ebdfc 100644 --- a/ext/fts5/fts5_main.c +++ b/ext/fts5/fts5_main.c @@ -2244,13 +2244,13 @@ Fts5Index *sqlite3Fts5IndexFromCsrid( Fts5Config **ppConfig /* OUT: Configuration object */ ){ Fts5Cursor *pCsr; - Fts5Table *pTab; - pCsr = fts5CursorFromCsrid(pGlobal, iCsrId); - pTab = (Fts5Table*)pCsr->base.pVtab; - *ppConfig = pTab->pConfig; - - return pTab->pIndex; + if( pCsr ){ + Fts5Table *pTab = (Fts5Table*)pCsr->base.pVtab; + *ppConfig = pTab->pConfig; + return pTab->pIndex; + } + return 0; } /* diff --git a/ext/fts5/test/fts5vocab2.test b/ext/fts5/test/fts5vocab2.test index f906b7ce90..45d657146f 100644 --- a/ext/fts5/test/fts5vocab2.test +++ b/ext/fts5/test/fts5vocab2.test @@ -202,4 +202,36 @@ do_execsql_test 3.5 { SELECT * FROM v1; } {} +#------------------------------------------------------------------------- +# +reset_db +do_execsql_test 4.0 { + CREATE VIRTUAL TABLE v1 USING fts5vocab(nosuchtable, col); +} + +do_catchsql_test 4.1 { + SELECT * FROM v1 WHERE term=='nosuchterm'; +} {1 {no such fts5 table: main.nosuchtable}} + +do_execsql_test 4.2.1 { + CREATE TABLE nosuchtable(nosuchtable, y, z); +} +do_catchsql_test 4.2.2 { + SELECT * FROM v1 WHERE term=='nosuchterm'; +} {1 {no such fts5 table: main.nosuchtable}} + +ifcapable fts3 { + do_execsql_test 4.3.1 { + DROP TABLE nosuchtable; + CREATE VIRTUAL TABLE nosuchtable USING fts3(a, b); + } {} + do_catchsql_test 4.3.2 { + SELECT * FROM v1 WHERE term=='nosuchterm'; + } {1 {no such fts5 table: main.nosuchtable}} + do_catchsql_test 4.3.3 { + INSERT INTO nosuchtable VALUES('id', '*id'); + SELECT * FROM v1 WHERE term=='nosuchterm'; + } {1 {no such fts5 table: main.nosuchtable}} +} + finish_test diff --git a/manifest b/manifest index c7dab056d4..e2f5a2b408 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Fix\sa\sproblem\swith\squerying\sa\scorrupt\sfts3\sdatabase. -D 2019-01-14T15:09:00.865 +C Fix\sa\sproblem\scausing\sa\scrash\sif\san\sfts5vocab\stable\swas\screated\sto\squery\san\nfts3/4\sFTS\sindex. +D 2019-01-14T15:35:15.573 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F Makefile.in 45a3fef4d325ac0220c2172aeec4e4321da351f073f3b8e8ddea655f49ef6f2b @@ -116,7 +116,7 @@ F ext/fts5/fts5_config.c eeec97cb0237991e7fa3bbae07b5cc354e3f238b661200c11228fe1 F ext/fts5/fts5_expr.c 188d1dca5a262a0708efc5deb809f1aa6ecea4158986a439d2670cfe72d10b65 F ext/fts5/fts5_hash.c d415f5ad332b051f0ade564bcf1762c4467cc49b2ba8ea5873d8744c705d8d42 F ext/fts5/fts5_index.c ba68cfbd786ff50d84c23c841ac44063a5f939b37ae9e320bcbaf2baabc34608 -F ext/fts5/fts5_main.c 90062ccfc54031ff97660e277d868ec080c5b46e42d784856385b12645e60ed6 +F ext/fts5/fts5_main.c ea863c28474f9a3903f37f27fc1894fa0a4eb786435f0b95575fa496d0886e22 F ext/fts5/fts5_storage.c 00db5029ee470172c1a79d7182808b678ee21b7ea1f63618bcb0591bf8cf7f8a F ext/fts5/fts5_tcl.c 39bcbae507f594aad778172fa914cad0f585bf92fd3b078c686e249282db0d95 F ext/fts5/fts5_test_mi.c 08c11ec968148d4cb4119d96d819f8c1f329812c568bac3684f5464be177d3ee @@ -218,7 +218,7 @@ F ext/fts5/test/fts5unindexed.test 9021af86a0fb9fc616f7a69a996db0116e7936d0db638 F ext/fts5/test/fts5update.test 3f0e75ba7640adfdb89953ce9d5a807cb7525c60cf3ebaaa15257510773e66c8 F ext/fts5/test/fts5version.test c8f2cc105f0abf0224965f93e584633dee3e06c91478bc67e468f7cfdf97fd6a F ext/fts5/test/fts5vocab.test 26e069050d6fb389e67f7a9402421948233152ae433e6b8da47cf15d3b5a8d26 -F ext/fts5/test/fts5vocab2.test 5472d6cd852fe848876892c48a754c82af018bf08ca16f1f167db59dc64586f7 +F ext/fts5/test/fts5vocab2.test e0fdc3a3095f6eda68ac9bf9a443ff929a124d46f00af19933604085712e9d47 F ext/fts5/tool/fts5speed.tcl b0056f91a55b2d1a3684ec05729de92b042e2f85 F ext/fts5/tool/fts5txt2db.tcl 526a9979c963f1c54fd50976a05a502e533a4c59 F ext/fts5/tool/loadfts5.tcl 95b03429ee6b138645703c6ca192c3ac96eaf093 @@ -1798,7 +1798,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 ddc3697efd61830fad55c6bf7f9115f4a7f53e08838eba5a82e1406c7a721665 -R 323e1cd08a3be7f38cddf21d9d1321a4 +P 65e50706a017751d72d0f9c7f575955194977decd0acf13aaca90c3cb925f20e +R 13fb83cbbd4ed093aa980d87f465f513 U dan -Z 3562fb49b192c80a18f1b43105c29727 +Z de4b903b843670f3eeae239fb952f2f8 diff --git a/manifest.uuid b/manifest.uuid index d7aaa4c8bb..18b7701301 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -65e50706a017751d72d0f9c7f575955194977decd0acf13aaca90c3cb925f20e \ No newline at end of file +9cd64ce453e4435d80117b8610c22a0a4b53cd6e84b39815e70e684f6b0295c8 \ No newline at end of file -- 2.47.2