diff --git a/manifest b/manifest index 98a1565c39..5ac1c404b5 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Modify\slock.test\sto\saccount\sfor\s"PRAGMA\slock_status"\sreturning\s"unknown"\sfor\sin-memory\sdatabases.\s(CVS\s6287) -D 2009-02-12T09:36:16 +C Fix\ssome\sedge\scases\swith\sbacking\sup\sdatabases\sthat\sare\sexactly\sPENDING_BYTE\sbytes\sin\ssize,\sor\sjust\sslightly\slarger.\s(CVS\s6288) +D 2009-02-12T17:01:50 F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0 F Makefile.in c7a5a30fb6852bd7839b1024e1661da8549878ee F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654 @@ -101,7 +101,7 @@ F src/alter.c 0ec29744c36c6e976596ce38c16289ebc5dc94db F src/analyze.c c86fd6a1425b22b3a46ce72ad403e4280026364f F src/attach.c 81d37d1948f409146a7b22b96998fd90649d1fd3 F src/auth.c c8b2ab5c8bad4bd90ed7c294694f48269162c627 -F src/backup.c 7aff2b795c4a001716c40fff7e3928750e2f6b8f +F src/backup.c 0fb3c8d9ba8345c06d8c8fa2bd753babf443e091 F src/bitvec.c 44f7059ac1f874d364b34af31b9617e52223ba75 F src/btmutex.c 63c5cc4ad5715690767ffcb741e185d7bc35ec1a F src/btree.c 71f30e74389aa7ae51421592dfaf69511152677c @@ -143,7 +143,7 @@ F src/os_common.h 24525d8b7bce66c374dfc1810a6c9043f3359b60 F src/os_os2.c bed77dc26e3a95ce4a204936b9a1ca6fe612fcc5 F src/os_unix.c 4e916cafbf5ec0166213ac62d680ebbe12b8c5a7 F src/os_win.c 45cb430884da7e9360a55a0fcd5c2c44c22dd79d -F src/pager.c 57665d91e54da810df27176093936bdee02256b9 +F src/pager.c d8d10a4108d0657b7355a2a9e06a4d6d1dea2b95 F src/pager.h 0c9f3520c00d8a3b8e792ca56c9a11b6b02b4b0f F src/parse.y 4f4d16aee0d11f69fec2adb77dac88878043ed8d F src/pcache.c fcf7738c83c4d3e9d45836b2334c8a368cc41274 @@ -233,7 +233,7 @@ F test/autoinc.test ab549b48b389cabd92967b86c379ec8b31fa6c16 F test/autovacuum.test 61260e25744189ff766f61ca3df23c1eeec0060e F test/autovacuum_ioerr2.test 598b0663074d3673a9c1bc9a16e80971313bafe6 F test/avtrans.test 1e901d8102706b63534dbd2bdd4d8f16c4082650 -F test/backup.test 6ab95bf9ff6067f09c37172977f2463972e82fd9 +F test/backup.test 9542691cb9199b1d27051756377ef12e27404cd5 F test/backup2.test 04b84c97b4b5d63b6756592c6d7afe578b52c3cf F test/backup_ioerr.test a9b8084e488154341719833783ac9db321e14284 F test/backup_malloc.test 1e063c6d75143d0d6e0ae77971dd690070369387 @@ -701,7 +701,7 @@ F tool/speedtest16.c c8a9c793df96db7e4933f0852abb7a03d48f2e81 F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224 F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e -P 315a6692f9a03a470871cce4f74567683546f343 -R 1abda3a7b35e49a2059fb89335dadc90 +P 9a6e558ba6fe0b38376a85a6c1e2cea5570ea283 +R c29b76c7d0882570dd5d4b31c9bb2e6f U danielk1977 -Z c133c9a064c489558fdd1f698bbbb675 +Z a3d6d2ad2218627e8108430b2434ce04 diff --git a/manifest.uuid b/manifest.uuid index 77bafebd77..0d2174c75f 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -9a6e558ba6fe0b38376a85a6c1e2cea5570ea283 \ No newline at end of file +2fc450e8e60248d6111d0b0d2b8f2344f5b89bca \ No newline at end of file diff --git a/src/backup.c b/src/backup.c index cda0263a3d..aef1fd4b2e 100644 --- a/src/backup.c +++ b/src/backup.c @@ -12,7 +12,7 @@ ** This file contains the implementation of the sqlite3_backup_XXX() ** API functions and the related features. ** -** $Id: backup.c,v 1.9 2009/02/09 18:55:46 danielk1977 Exp $ +** $Id: backup.c,v 1.10 2009/02/12 17:01:50 danielk1977 Exp $ */ #include "sqliteInt.h" #include "btreeInt.h" @@ -373,6 +373,9 @@ int sqlite3_backup_step(sqlite3_backup *p, int nPage){ if( nSrcPagesizepDest->pBt) ){ + nDestTruncate--; + } }else{ nDestTruncate = nSrcPage * (nSrcPagesize/nDestPagesize); } @@ -392,7 +395,10 @@ int sqlite3_backup_step(sqlite3_backup *p, int nPage){ sqlite3_file * const pFile = sqlite3PagerFile(pDestPager); assert( pFile ); - assert( (i64)nDestTruncate*(i64)nDestPagesize >= iSize ); + assert( (i64)nDestTruncate*(i64)nDestPagesize >= iSize || ( + nDestTruncate==(PENDING_BYTE_PAGE(p->pDest->pBt)-1) + && iSize>=PENDING_BYTE && iSize<=PENDING_BYTE+nDestPagesize + )); if( SQLITE_OK==(rc = sqlite3PagerCommitPhaseOne(pDestPager, 0, 1)) && SQLITE_OK==(rc = backupTruncateFile(pFile, iSize)) && SQLITE_OK==(rc = sqlite3PagerSync(pDestPager)) diff --git a/src/pager.c b/src/pager.c index 3376470fc0..5125842ef0 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.567 2009/02/12 09:11:56 danielk1977 Exp $ +** @(#) $Id: pager.c,v 1.568 2009/02/12 17:01:50 danielk1977 Exp $ */ #ifndef SQLITE_OMIT_DISKIO #include "sqliteInt.h" @@ -4176,9 +4176,6 @@ static int pager_write(PgHdr *pPg){ assert( pPager->state>=PAGER_SHARED ); if( pPager->dbSizepgno ){ pPager->dbSize = pPg->pgno; - if( pPager->dbSize==(PAGER_MJ_PGNO(pPager)-1) ){ - pPager->dbSize++; - } } return rc; } diff --git a/test/backup.test b/test/backup.test index de9a9572cc..61e57b75f6 100644 --- a/test/backup.test +++ b/test/backup.test @@ -11,7 +11,7 @@ # This file implements regression tests for SQLite library. The # focus of this file is testing the sqlite3_backup_XXX API. # -# $Id: backup.test,v 1.7 2009/02/11 16:06:19 shane Exp $ +# $Id: backup.test,v 1.8 2009/02/12 17:01:50 danielk1977 Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl @@ -320,6 +320,35 @@ foreach nDestPgsz {512 1024 2048 4096} { } } } + +#-------------------------------------------------------------------- +do_test backup-3.$iTest.1 { + catch { file delete -force test.db } + catch { file delete -force test2.db } + sqlite3 db test.db + set iTab 1 + + db eval { PRAGMA page_size = 512 } + while {[file size test.db] <= $::sqlite_pending_byte} { + db eval "CREATE TABLE t${iTab}(a, b, c)" + incr iTab + } + + sqlite3 db2 test2.db + db2 eval { PRAGMA page_size = 4096 } + while {[file size test2.db] < $::sqlite_pending_byte} { + db2 eval "CREATE TABLE t${iTab}(a, b, c)" + incr iTab + } + + sqlite3_backup B db2 main db main + B step -1 +} {SQLITE_DONE} + +do_test backup-3.$iTest.2 { + B finish +} {SQLITE_OK} + # # End of backup-3.* tests. #---------------------------------------------------------------------