diff --git a/ext/fts3/fts3.c b/ext/fts3/fts3.c index 892fc36d33..b4324448d2 100644 --- a/ext/fts3/fts3.c +++ b/ext/fts3/fts3.c @@ -5831,7 +5831,8 @@ static int fts3EvalGatherStats( fts3EvalRestart(pCsr, pRoot, &rc); do { fts3EvalNextRow(pCsr, pRoot, &rc); - assert( pRoot->bEof==0 ); + assert_fts3_nc( pRoot->bEof==0 ); + if( pRoot->bEof ) rc = FTS_CORRUPT_VTAB; }while( pRoot->iDocid!=iDocid && rc==SQLITE_OK ); } } diff --git a/manifest b/manifest index af6c36a8f2..10918c5b51 100644 --- a/manifest +++ b/manifest @@ -1,6 +1,7 @@ B d2aac001204621062e6cb3230ce2ac1b4545cb83b3ebb6bfebccee4d51162e97 -C Merge\ssupport\sfor\spartial\sintegrity\schecks. -D 2020-07-23T09:14:25.312 +C Merge\sfixes\sfrom\strunk. +D 2020-07-23T14:27:51.261 +F ext/fts3/fts3.c a571f1edf85ef07e94ad716d581cdd9875df444dfcfa6f81f0ea818f98d45189 F src/analyze.c 5cffff3d355858cd22bfc6e20ac7203510d2e1cc935086eb06f4abb2f579f628 F src/btree.c 312780d344ab1c205b6571ef38757c7d5ea1cec539802cdd5a508381dd71be88 F src/btree.h 7af72bbb4863c331c8f6753277ab40ee67d2a2125a63256d5c25489722ec162b @@ -10,7 +11,7 @@ F src/main.c eb8169cb49d36ef3481ed8f39459a4d1d61f07bd71ec26e6ee0b5da4ab73d49c F src/pager.c a5f65ff2cd73b8d381cc7b338cac382ca6978d578fa0b84fdaa11d3cdc3c3e18 F src/pragma.c bdb600be936f66b9fe69d26dfbba4528beaaf4f95c479c85b328a92484e0bf71 F src/prepare.c 28193f0b7fc377e14682c56b10b9dd75cf7e41eb25b8ff1ce5a4536e680e1193 -F src/select.c 0e75d64091200a2a8fdc02abafe176a0c2e9b2654c4cc34564f25f0b408e91de +F src/select.c 9ccea209a9fc03fbf35027b0a1c23276ecb4782d54820b751bddadd0c4536237 F src/sqliteInt.h ec260b2441d94ef0b5be424c323cf255ae30d23e2fb2bd1c42a3a59c2fbafedb F src/test1.c f5cb6544a38edf0fb214384c9f7a5ab2b04b0094223b0854c004d18b8f0a7f34 F src/util.c 9ae0b629657ca10abde2f27f5dc3e545cb66d298d111bac062b236a099f8df2d @@ -22,12 +23,12 @@ F src/wherecode.c 8064fe5c042824853a9b1fda670054a51a49033a6c79059988c97751ccf808 F test/corrupt3.test 2520432b1fbf99994841e69804a3c59fb828183f4d09b85a1631bc7adca17e31 F test/corruptL.test ddd255069ec87976587956c7afc1932005d7ee5eaf4fe426a8994d945b883770 F test/dbfuzz001.test 55e1a3504f8dea84155e09912fe3b1c3ad77e0b1a938ec42ca03b8e51b321e30 -F test/fts3corrupt4.test b352268a7092e5581b1c3fb29b7f19b424fefbc1edfd3bb9ee4eeb0d4beef970 +F test/fts3corrupt4.test e4662d37f02248301d8b58778eac380663e09a17a38dd5d6bb5ea4c927b9a575 F test/pager1.test 4fba160bf450cea19f6bf1d6483ef467545bac6405570e176c83c2c4b5d6d0d5 F test/pragma.test 50b91bedea9324d3ab48e793f908ee7d2c7dcf84bfa2281e792838be59641ec8 F test/tester.tcl 6417cbb60c4169804e2e1b36ce1a840c9f33d0b0d97956e058f3cc49ed3904f0 F tool/showdb.c 49e810f5c414c792b5bf38cd5557ca9639713ebfef32aaff32faf7cb7ccce513 -P e4a92688fca31335bf15933dec10ecba04cf340ee2f726fd36d46d4c76660eee 65dd321432e8f80bc1cb11be8ca06656b41ac997a74a5eb271c797cf0fbb764e -R e4d9af4b2c8b3592cb28dca1e5ada87e +P b5443b47af95f4f0ef527bee90f186ee25faa5df197dbcc3e14d48eee095e4aa 6a3111cd0693bb51191d55a32ecd436341638d54ecb2df0778de681b4969241b +R 1b00c8242d3f600970e583cfc7570b95 U drh -Z 84df909394c97f14dff1300a1886c42c +Z cacdc819c65ba00b73b8abfe1f5251b5 diff --git a/manifest.uuid b/manifest.uuid index e1472e3485..d6c2672b7c 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -b5443b47af95f4f0ef527bee90f186ee25faa5df197dbcc3e14d48eee095e4aa \ No newline at end of file +dd39418ee47529cc3ffbe01eccf31f1304a266a196bf81a2a2cb2e650c195b97 \ No newline at end of file diff --git a/src/select.c b/src/select.c index 4fcbeedb8d..33c39b6934 100644 --- a/src/select.c +++ b/src/select.c @@ -1129,13 +1129,10 @@ static void selectInnerLoop( } case SRT_Upfrom: { -#ifdef SQLITE_ENABLE_UPDATE_DELETE_LIMIT if( pSort ){ pushOntoSorter( pParse, pSort, p, regResult, regOrig, nResultCol, nPrefixReg); - }else -#endif - { + }else{ int i2 = pDest->iSDParm2; int r1 = sqlite3GetTempReg(pParse); @@ -1587,7 +1584,6 @@ static void generateSortTail( break; } #endif -#ifdef SQLITE_ENABLE_UPDATE_DELETE_LIMIT case SRT_Upfrom: { int i2 = pDest->iSDParm2; int r1 = sqlite3GetTempReg(pParse); @@ -1599,7 +1595,6 @@ static void generateSortTail( } break; } -#endif default: { assert( eDest==SRT_Output || eDest==SRT_Coroutine ); testcase( eDest==SRT_Output ); diff --git a/test/fts3corrupt4.test b/test/fts3corrupt4.test index 3a4b961511..bddcc9f5de 100644 --- a/test/fts3corrupt4.test +++ b/test/fts3corrupt4.test @@ -6284,4 +6284,18 @@ do_catchsql_test 46.2 { set sqlite_fts3_enable_parentheses $saved extra_schema_checks 1 +#------------------------------------------------------------------------- +reset_db +do_execsql_test 47.1 { + CREATE VIRTUAL TABLE t1 USING fts3(a,b,c); +} +do_execsql_test 47.2 { + INSERT INTO t1_segdir VALUES(0,0,0,0,0,X'000130120106000106000106001f030001030001030000083230313630363039090107000107000107000001340901050001050001050000013509010400010400010400010730303030303030091c0400010400010400000662696e6172793c0301020200030102020003010202000301020200030102020003010202000301020200030102020003010202000301020200030102020003010202000008636f6d70696c657209010200010200010200000664627374617409070300010300010300010465627567090402000102000102000006656e61626c653f07020001020001020001020001020001020001020001020001020001020001020001020001010001020001020001020001020001020001020001020001020001087874656e73696f6e091f0400010400010400000466747334090a0300010300010300030135090d03000103000103000003676363090103000103000103000106656f706f6c790910030001030001030000056a736f6e310913030001030001030000046c6f6164091f030001030001030000036d6178091c02000102000102000105656d6f7279091c03000103000103000304737973350916030001030001030000066e6f636173653c02010202000301020200030102020003010202000301020200030102020003010202000301020200030102020003010202000301020200030102020000046f6d6974091f020001020001020000057274726565091903000103000103000302696d3c01010202000301020200030102020003010202000301020200030102020003010202000301a202000301020200030102020003010202000301020200000a746872656164736166650922020001020001020000047674616209070400010400010400000178b401010101020001010102000101010200010101020001010102000101010200010101020001010102000101010200010101020001010102000101010200010101020001010102000101010200010101020001010102000101010200010101020001010102000101010200010101020001010102000101010200010101020001010102000101010200010101020001010102000101010200010101020001010102000101010200010101020001010102000101010200'); + INSERT INTO t1_segdir VALUES(0,1,0,0,0,X'0001300425061b000008323031363036303903250700000134032505000001350325040001073030303030303003251a000008636f6d70696c657203250200000664627374617403250a00010465627567032508000006656e61626c650925090504040404040001087874656e73696f6e03251d0000046674733403250d0003013503250f000003676363032503000106656f706f6c790325110000056a736f6e310325130000046c6f616403251c0000036d6178032518000105656d6f7279032519000304737973350325150000046f6d697403251b000005727472656503251700000a7468726561647361666503251e0000047674616333250b00'); +} + +do_catchsql_test 47.3 { + SELECT matchinfo(t1) FROM t1 WHERE t1 MATCH '"json1 enable"'; +} {1 {database disk image is malformed}} + finish_test