From: drh Date: Mon, 11 Feb 2019 22:50:01 +0000 (+0000) Subject: Do not invoke btreeComputeFreeSpace() when not necessary. X-Git-Tag: version-3.28.0~188^2~1 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=8357c662b3b0110b7ba0eda82d9fbb787dd20b03;p=thirdparty%2Fsqlite.git Do not invoke btreeComputeFreeSpace() when not necessary. FossilOrigin-Name: f11b0ed47402034378ded2c60b82841b81cd1319cdb72d1ef052faef29a5294d --- diff --git a/manifest b/manifest index 1cfcf11052..1a0efad9ac 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Improvements\sto\scomments.\s\sNo\schanges\sto\scode. -D 2019-02-11T19:27:36.989 +C Do\snot\sinvoke\sbtreeComputeFreeSpace()\swhen\snot\snecessary. +D 2019-02-11T22:50:01.937 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F Makefile.in 178d8eb6840771149cee40b322d1b3be30d330198c522c903c1b66fb5a1bfca4 @@ -455,7 +455,7 @@ F src/auth.c 0fac71038875693a937e506bceb492c5f136dd7b1249fbd4ae70b4e8da14f9df F src/backup.c 78d3cecfbe28230a3a9a1793e2ead609f469be43e8f486ca996006be551857ab F src/bitvec.c 17ea48eff8ba979f1f5b04cc484c7bb2be632f33 F src/btmutex.c 8acc2f464ee76324bf13310df5692a262b801808984c1b79defb2503bbafadb6 -F src/btree.c 47812e0c85425f27c6c51c26a43f04f3adc182ec7ead668329d4f1b1105f43ff +F src/btree.c 70ac9dc86196416147baa94969c71372d1e3dacaca54602bda9c516b02f6da82 F src/btree.h 63b94fb38ce571c15eb6a3661815561b501d23d5948b2d1e951fbd7a2d04e8d3 F src/btreeInt.h d7520b98e72f9a7e2a3140cc476df461fa8a34a3d56258184f8c26f70248cef9 F src/build.c 906ca6663b9dcd413e72ae9c44dd51e596d8336b04d52e678a7501e71c20cab2 @@ -1804,7 +1804,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 480a5090befdc29eaeb6f0b22831c980d6ee92438d9b2e766de68b037ded38b8 -R f2a2d10c39d9bff959dca395bf0124e2 +P 16eb0fc8f8cce51eaa5305ebc9f3bd8c8d935dd3ebebab6820e5629f9292eec2 +R 42eb74538b26ea8a320f8b836f86ea2e U drh -Z eb3347596121c04ba47ec98ac52bc64e +Z 326f7ed87f29a92b24fc21835b66ed1d diff --git a/manifest.uuid b/manifest.uuid index 5c2ee95672..3f6605229b 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -16eb0fc8f8cce51eaa5305ebc9f3bd8c8d935dd3ebebab6820e5629f9292eec2 \ No newline at end of file +f11b0ed47402034378ded2c60b82841b81cd1319cdb72d1ef052faef29a5294d \ No newline at end of file diff --git a/src/btree.c b/src/btree.c index 9d76c21a51..43d6d161a9 100644 --- a/src/btree.c +++ b/src/btree.c @@ -7396,6 +7396,7 @@ static void copyNodeContent(MemPage *pFrom, MemPage *pTo, int *pRC){ */ pTo->isInit = 0; rc = btreeInitPage(pTo); + if( rc==SQLITE_OK ) rc = btreeComputeFreeSpace(pTo); if( rc!=SQLITE_OK ){ *pRC = rc; return; @@ -8294,10 +8295,7 @@ static int balance(BtCursor *pCur){ int iPage = pCur->iPage; MemPage *pPage = pCur->pPage; - if( pPage->nFree<0 ){ - rc = btreeComputeFreeSpace(pPage); - if( rc ) break; - } + assert( pPage->nFree>=0 ); if( iPage==0 ){ if( pPage->nOverflow ){ /* The root page of the b-tree is overfull. In this case call the