From: drh <> Date: Wed, 19 Apr 2023 15:35:45 +0000 (+0000) Subject: Do not remove pages from the cache of an in-memory database due to a X-Git-Tag: version-3.42.0~123 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=2c5c124064103fe92548c4854be5c18a4bdbe162;p=thirdparty%2Fsqlite.git Do not remove pages from the cache of an in-memory database due to a failure to acquire the page due to it being larger than the maximum page size. Fix for [forum:/forumpost/a19bb49140|forum post a19bb49140]. FossilOrigin-Name: 982b35563da685dfdf50cbe4a7ae829d3b428e03587028df7efe520f819b1dc2 --- diff --git a/manifest b/manifest index 05094c8de0..c08119f855 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Fix\sambiguity\sin\sthe\sheader\scomment\sto\sthe\ssqlite3PagerUnrefNotNull()\sroutine.\nNo\scode\schanges. -D 2023-04-19T14:26:43.117 +C Do\snot\sremove\spages\sfrom\sthe\scache\sof\san\sin-memory\sdatabase\sdue\sto\sa\nfailure\sto\sacquire\sthe\spage\sdue\sto\sit\sbeing\slarger\sthan\sthe\smaximum\spage\nsize.\sFix\sfor\s[forum:/forumpost/a19bb49140|forum\spost\sa19bb49140]. +D 2023-04-19T15:35:45.024 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@ -618,7 +618,7 @@ F src/os_setup.h 6011ad7af5db4e05155f385eb3a9b4470688de6f65d6166b8956e58a3d87210 F src/os_unix.c 1b3ddb7814c4bf37f494c04d2ab30c1ced5b2c927267e1930ce7cd388787a96d F src/os_win.c 295fe45f18bd86f2477f4cd79f3377c6f883ceb941b1f46808665c73747f2345 F src/os_win.h 7b073010f1451abe501be30d12f6bc599824944a -F src/pager.c 725385bdb872e1764f8698b1c2fbb87635d8720f8589ba5a27ed4b6183cbbab0 +F src/pager.c 9d36ddedc842e993c88c222ed914822dbd6f8ece3c648fde04468637012a034a F src/pager.h f82e9844166e1585f5786837ddc7709966138ced17f568c16af7ccf946c2baa3 F src/parse.y e8b5c753e3194e03d69e108753c1dbceb01fa4c158b2c6b726a048023ea0fdc1 F src/pcache.c 589326520a41211b50bb946973ca7f1e30f824641af546ea8fa6224bf0e4ea5c @@ -2058,8 +2058,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 f2d6756731caadf9a30214ab7d19717a2ca1dae2652bcc6b211f6b0830362240 -R d9a8cdd9e9c2d3f863d060c3de9c370c +P d419e65eef2954ed759121254024028854b55e8c4f52ff7a8896c8cadfc57f53 +R 2ff39e988928f271722070323e9929b5 U drh -Z 55eddf4ca402ac276f5fb0dc48de52ae +Z 57826475051b9681a19f44a30db70018 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index 0386f2aa85..91acfb0146 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -d419e65eef2954ed759121254024028854b55e8c4f52ff7a8896c8cadfc57f53 \ No newline at end of file +982b35563da685dfdf50cbe4a7ae829d3b428e03587028df7efe520f819b1dc2 \ No newline at end of file diff --git a/src/pager.c b/src/pager.c index d816a8c322..063b793f7f 100644 --- a/src/pager.c +++ b/src/pager.c @@ -5524,6 +5524,10 @@ static int getPageNormal( if( !isOpen(pPager->fd) || pPager->dbSizepPager->mxPgno ){ rc = SQLITE_FULL; + if( pgno<=pPager->dbSize ){ + sqlite3PcacheRelease(pPg); + pPg = 0; + } goto pager_acquire_err; } if( noContent ){