]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Candidate fix for a pager bug associated with sqlite3PagerMovepage().
authordrh <drh@noemail.net>
Fri, 9 Apr 2010 15:34:06 +0000 (15:34 +0000)
committerdrh <drh@noemail.net>
Fri, 9 Apr 2010 15:34:06 +0000 (15:34 +0000)
FossilOrigin-Name: 8c046eb6d16682d5e755624deb4f76f57350b9c9

manifest
manifest.uuid
src/pager.c

index 15177adb2c334e4f47dc92bf23f64690df0ec63b..7c044f9fed284ef59190e1f29bce6acb692a05a8 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,8 +1,8 @@
 -----BEGIN PGP SIGNED MESSAGE-----
 Hash: SHA1
 
-C Avoid\sunnecessary\scalls\sto\ssqlite3_step()\swith\snull\sprepared\sstatements\nwhile\sparsing\sthe\sschema.
-D 2010-04-09T09:14:05
+C Candidate\sfix\sfor\sa\spager\sbug\sassociated\swith\ssqlite3PagerMovepage().
+D 2010-04-09T15:34:06
 F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0
 F Makefile.in 4f2f967b7e58a35bb74fb7ec8ae90e0f4ca7868b
 F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
@@ -155,7 +155,7 @@ F src/os_common.h 240c88b163b02c21a9f21f87d49678a0aa21ff30
 F src/os_os2.c 75a8c7b9a00a2cf1a65f9fa4afbc27d46634bb2f
 F src/os_unix.c 148d2f625db3727250c0b880481ae7630b6d0eb0
 F src/os_win.c 1c7453c2df4dab26d90ff6f91272aea18bcf7053
-F src/pager.c 044c27315eccca1a2304bf81cbc00fa22f2e62bb
+F src/pager.c ab2482d819ae5c53bfcb1b8e673a00627d8fdeec
 F src/pager.h ef8a2cf10084f60ab45ee2dfded8bf8b0c655ddf
 F src/parse.y ace5c7a125d9f2a410e431ee3209034105045f7e
 F src/pcache.c ace8f6a5ecd4711cc66a1b23053be7109bd437cf
@@ -799,14 +799,14 @@ F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff
 F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224
 F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
 F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f
-P 332cb55113a621456c6522830585434146c388e7
-R 71bb1fb313a1856d73098e2432b5cefc
+P ae04d2d15d3d96f607adb394a631d96cd4cf2c1d
+R 30296c0b6348ed0103a1b1f6d3985ee2
 U drh
-Z b3b7d19f1a4ba32f7346eb0a7b487db1
+Z 428cc332b0d6f67625124f7dd12c1268
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1.4.6 (GNU/Linux)
 
-iD8DBQFLvu/goxKgR168RlERAioUAJ9TyQvJfnEhAsJp/SbbkAlrQn1rEQCgibSL
-PoydLovfOGdwnT0LV9CvIvc=
-=FBJT
+iD8DBQFLv0jyoxKgR168RlERAqqVAJ9Ef7vg/KHku2LiPcS65RJ9IGhkrwCeM8nw
+LLHbyRmzF2wBh0CK3Tp3KoA=
+=60me
 -----END PGP SIGNATURE-----
index 2b8dcea36da171671509db08a20b82d8099a9e1b..a34e8b995d0adcc10673612f50e86b2a0834b976 100644 (file)
@@ -1 +1 @@
-ae04d2d15d3d96f607adb394a631d96cd4cf2c1d
\ No newline at end of file
+8c046eb6d16682d5e755624deb4f76f57350b9c9
\ No newline at end of file
index 03fd077da1a73b13b3a33f64b546f1e9d4324c21..1bd89af465c8e1c90b1894872b7545154d0abd1b 100644 (file)
@@ -1508,11 +1508,12 @@ static int pager_playback_one_page(
            (isMainJrnl?"main-journal":"sub-journal")
   ));
   if( (pPager->state>=PAGER_EXCLUSIVE)
-   && (pPg==0 || 0==(pPg->flags&PGHDR_NEED_SYNC))
+   && (!isSavepnt || pPg==0 || 0==(pPg->flags&PGHDR_NEED_SYNC))
    && isOpen(pPager->fd)
    && !isUnsync
   ){
     i64 ofst = (pgno-1)*(i64)pPager->pageSize;
+    testcase( !isSavepnt && pPg!=0 && (pPg->flags&PGHDR_NEED_SYNC)!=0 );
     rc = sqlite3OsWrite(pPager->fd, (u8*)aData, pPager->pageSize, ofst);
     if( pgno>pPager->dbFileSize ){
       pPager->dbFileSize = pgno;