From: danielk1977 Date: Mon, 26 Mar 2007 15:46:00 +0000 (+0000) Subject: Discard the pager-cache when the page-size is changed. (CVS 3719) X-Git-Tag: version-3.6.10~2451 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=c7c7e623a9b4b7012890365680b761f6136224c7;p=thirdparty%2Fsqlite.git Discard the pager-cache when the page-size is changed. (CVS 3719) FossilOrigin-Name: e4209f7193d160709b0d8b5cd358df5649a97dc0 --- diff --git a/manifest b/manifest index 3b43726a66..a5e49f3721 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Avoid\sunnecessary\scalls\sto\spager_unwritelock()\swhen\sin\sexclusive-access\smode.\nAdd\sthe\sspeed2.test\sscript\sto\sthe\stest\ssuite.\s(CVS\s3718) -D 2007-03-26T13:48:13 +C Discard\sthe\spager-cache\swhen\sthe\spage-size\sis\schanged.\s(CVS\s3719) +D 2007-03-26T15:46:01 F Makefile.in 1fe3d0b46e40fd684e1e61f8e8056cefed16de9f F Makefile.linux-gcc 2d8574d1ba75f129aba2019f0b959db380a90935 F README 9c4e2d6706bdcc3efdd773ce752a8cdab4f90028 @@ -86,7 +86,7 @@ F src/os_unix.c 4642f23ed0c1ae0f1440db1d2b4231348af69360 F src/os_unix.h 5768d56d28240d3fe4537fac08cc85e4fb52279e F src/os_win.c 1d1d0989b0f235751504292c2f28e81044be0d70 F src/os_win.h 41a946bea10f61c158ce8645e7646b29d44f122b -F src/pager.c d9b188cbe6bc502c328115181ae9426256c49058 +F src/pager.c d5fc7caffe5db2e82296a9f888b3bc8bbd11e25d F src/pager.h 3c16500c25051536e43fb19e246e58fc7cb51d9f F src/parse.y bcfe366c1fd61cfc40e5344eb69a31997a821af0 F src/pragma.c 9cb8b94e7d38ba35a86037bd517d07ba9870b4b2 @@ -440,7 +440,7 @@ F www/tclsqlite.tcl bb0d1357328a42b1993d78573e587c6dcbc964b9 F www/vdbe.tcl 87a31ace769f20d3627a64fa1fade7fed47b90d0 F www/version3.tcl 890248cf7b70e60c383b0e84d77d5132b3ead42b F www/whentouse.tcl 97e2b5cd296f7d8057e11f44427dea8a4c2db513 -P 127454903764daff17390941a002f527ee2ffc87 -R f8f17a5fd0fcfb4206d3e1d9fe29a001 -U drh -Z 58bc375fdd0e58a8cbf0d31d7e7ab70d +P ab53f5086334ea2f6c20c8f9d043baff39fae8d7 +R ab0471b994821d6f6d3d3075747999b9 +U danielk1977 +Z 1aa32bb75b01dd94bb830b6ed37ad984 diff --git a/manifest.uuid b/manifest.uuid index 25e6d55da4..d524de6ce2 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -ab53f5086334ea2f6c20c8f9d043baff39fae8d7 \ No newline at end of file +e4209f7193d160709b0d8b5cd358df5649a97dc0 \ No newline at end of file diff --git a/src/pager.c b/src/pager.c index 0c815dfb5e..82622bf73e 100644 --- a/src/pager.c +++ b/src/pager.c @@ -18,7 +18,7 @@ ** file simultaneously, or one process from reading the database while ** another is writing. ** -** @(#) $Id: pager.c,v 1.298 2007/03/26 13:48:13 drh Exp $ +** @(#) $Id: pager.c,v 1.299 2007/03/26 15:46:01 danielk1977 Exp $ */ #ifndef SQLITE_OMIT_DISKIO #include "sqliteInt.h" @@ -1825,7 +1825,8 @@ void sqlite3PagerSetReiniter(Pager *pPager, void (*xReinit)(DbPage*,int)){ */ int sqlite3PagerSetPagesize(Pager *pPager, int pageSize){ assert( pageSize>=512 && pageSize<=SQLITE_MAX_PAGE_SIZE ); - if( !pPager->memDb ){ + if( !pPager->memDb && pPager->nRef==0 ){ + pager_reset(pPager); pPager->pageSize = pageSize; sqlite3ReallocOrFree((void **)&pPager->pTmpSpace, pageSize); }