]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Reduce the frequency of calls to sqlite3ProgressCheck().
authordrh <>
Thu, 12 Jan 2023 20:36:43 +0000 (20:36 +0000)
committerdrh <>
Thu, 12 Jan 2023 20:36:43 +0000 (20:36 +0000)
FossilOrigin-Name: 795aca4a269ea4ede547844037c218ac714c40e8bee003e4d9b786befc9cf97a

manifest
manifest.uuid
src/vdbeaux.c
src/where.c

index ff1fd93bd48059c6792f9ee2909f0ca51f4c6b4e..c92b66c4fbf233d74f7465c6139ab731051ef02d 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Fix\ssqlite3_prepare()\sso\sthat\sit\sonly\sinvokes\sthe\sprogress\shandler\son\severy\nN-th\scall\sto\ssqlite3ProgressCheck(),\swhere\sN\sis\sthe\sprogress\shandler\sstep\ncount.\s\sAlso\sfix\sfaulty\sasserts\sexposed\sby\sthe\sability\sto\sinterrupt\sin\sthe\nmiddle\sof\ssqlite3_prepare().
-D 2023-01-12T19:51:49.383
+C Reduce\sthe\sfrequency\sof\scalls\sto\ssqlite3ProgressCheck().
+D 2023-01-12T20:36:43.946
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@@ -721,7 +721,7 @@ F src/vdbe.c 238635c1c40d42d9ded72994b81d4127f99d6d09e9279bdd37f6f34f4025adee
 F src/vdbe.h 73b904a6b3bb27f308c6cc287a5751ebc7f1f89456be0ed068a12b92844c6e8c
 F src/vdbeInt.h fc15815b7bdafbb27e7f027faba2b0112e87d382c0d72241672528806ebc0db5
 F src/vdbeapi.c 4ee67890913c1d2469c68e3ad2e7ddeab57ac5924a64bbfd0906a8ea0d542c7f
-F src/vdbeaux.c 118ef7fbc1be7ef359274a731ed4120f9e3ac2f1b677ee62103d150952f4bcd2
+F src/vdbeaux.c 3f9e3b6585e7434aa11300169dd66ddf0fc963a0c6f7940bdc058335dadeb353
 F src/vdbeblob.c 5e61ce31aca17db8fb60395407457a8c1c7fb471dde405e0cd675974611dcfcd
 F src/vdbemem.c 316d518115f3720b4097f0231e2a3d6eefd06c787eccf44972f8d8f462153421
 F src/vdbesort.c 43756031ca7430f7aec3ef904824a7883c4ede783e51f280d99b9b65c0796e35
@@ -732,7 +732,7 @@ F src/vxworks.h d2988f4e5a61a4dfe82c6524dd3d6e4f2ce3cdb9
 F src/wal.c b9df133a705093da8977da5eb202eaadb844839f1c7297c08d33471f5491843d
 F src/wal.h c3aa7825bfa2fe0d85bef2db94655f99870a285778baa36307c0a16da32b226a
 F src/walker.c f890a3298418d7cba3b69b8803594fdc484ea241206a8dfa99db6dd36f8cbb3b
-F src/where.c b9abdf0481822af12d428afba4e40d18c4a2c458d4e3b0a1c735a9dfb11a4ec1
+F src/where.c 0e5dd009af01250ff3e1f3f632b7ef471cf77c6edc24ebe882433674325c20c8
 F src/whereInt.h e25203e5bfee149f5f1225ae0166cfb4f1e65490c998a024249e98bb0647377c
 F src/wherecode.c 76bca3379219880d2527493b71a3be49e696f75396d3481e4de5d4ceec7886b2
 F src/whereexpr.c 7c5671a04b00c876bec5e99fd4e6f688065feb4773160fbf76fd7900d2901777
@@ -2068,8 +2068,8 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
 F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
 F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P 79636f2d80aee70832913a78933da2a7e30cc037810b93903ebbc1925ea93fef
-R f60182bf56bc04fd2334c34bed4a50bf
+P 05461651599bb490ac6cfd893645dabab9cccedc6adcce15aee2487b2ea6027a
+R fd47709650fb2ea6d296147bce5093e6
 U drh
-Z 0bf05536c4cc204538419442d0293744
+Z 71632e3006f164270162b7992c4f1e6a
 # Remove this line to create a well-formed Fossil manifest.
index f9bbd13b5fa51a72c3b9fd668df90a5593743f7f..b7ac31ef0b6671bf66e1019a0d1977aa0fe8fe5a 100644 (file)
@@ -1 +1 @@
-05461651599bb490ac6cfd893645dabab9cccedc6adcce15aee2487b2ea6027a
\ No newline at end of file
+795aca4a269ea4ede547844037c218ac714c40e8bee003e4d9b786befc9cf97a
\ No newline at end of file
index b9ee3f82ae74d2b1af409c1e22e4c7153caf0cc6..d04d8f1e176e22dba143bc90e491d5d6e1cb6695 100644 (file)
@@ -574,7 +574,9 @@ static SQLITE_NOINLINE void resizeResolveLabel(Parse *p, Vdbe *v, int j){
     int i;
     for(i=p->nLabelAlloc; i<nNewSize; i++) p->aLabel[i] = -1;
 #endif
-    if( nNewSize>=100 ) sqlite3ProgressCheck(p);
+    if( nNewSize>=100 && (nNewSize/100)>(p->nLabelAlloc/100) ){
+      sqlite3ProgressCheck(p);
+    }
     p->nLabelAlloc = nNewSize;
     p->aLabel[j] = v->nOp;
   }
index 5d0321e7aa9c9e57be3ed483e7ee0de696758555..1f9f723cd2f90b4b8baaef1d45160ffefddc1be7 100644 (file)
@@ -2686,7 +2686,6 @@ static void whereLoopOutputAdjust(
   LogEst iReduce = 0;    /* pLoop->nOut should not exceed nRow-iReduce */
 
   assert( (pLoop->wsFlags & WHERE_AUTO_INDEX)==0 );
-  sqlite3ProgressCheck(pWC->pWInfo->pParse);
   for(i=pWC->nBase, pTerm=pWC->a; i>0; i--, pTerm++){
     assert( pTerm!=0 );
     if( (pTerm->prereqAll & notAllowed)!=0 ) continue;
@@ -2699,6 +2698,7 @@ static void whereLoopOutputAdjust(
       if( pX->iParent>=0 && (&pWC->a[pX->iParent])==pTerm ) break;
     }
     if( j<0 ){
+      sqlite3ProgressCheck(pWC->pWInfo->pParse);
       if( pLoop->maskSelf==pTerm->prereqAll ){
         /* If there are extra terms in the WHERE clause not used by an index
         ** that depend only on the table being scanned, and that will tend to
@@ -3185,7 +3185,9 @@ static int whereLoopAddBtreeIndex(
      && (pNew->u.btree.nEq<pProbe->nKeyCol ||
            pProbe->idxType!=SQLITE_IDXTYPE_PRIMARYKEY)
     ){
-      if( pNew->u.btree.nEq>3 ) sqlite3ProgressCheck(pParse);
+      if( pNew->u.btree.nEq>3 ){
+        sqlite3ProgressCheck(pParse);
+      }
       whereLoopAddBtreeIndex(pBuilder, pSrc, pProbe, nInMul+nIn);
     }
     pNew->nOut = saved_nOut;