From: drh Date: Wed, 26 Nov 2008 14:55:02 +0000 (+0000) Subject: Port check-ins (5955) and (5956) into the 3.6.6 branch. (CVS 5958) X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=a8cb56f44463669f0faf2b40a994f5706a30e717;p=thirdparty%2Fsqlite.git Port check-ins (5955) and (5956) into the 3.6.6 branch. (CVS 5958) FossilOrigin-Name: 8c0edbef7e0f6393349c0157659434bf8498ad88 --- diff --git a/manifest b/manifest index 245b167890..18140e5fce 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Version\s3.6.6.1\s(CVS\s5948) -D 2008-11-22T15:51:28 +C Port\scheck-ins\s(5955)\sand\s(5956)\sinto\sthe\s3.6.6\sbranch.\s(CVS\s5958) +D 2008-11-26T14:55:02 F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0 F Makefile.in 0aa7bbe3be6acc4045706e3bb3fd0b8f38f4a3b5 F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654 @@ -100,7 +100,7 @@ F src/attach.c 85c6a3d0daf11965b47604190d7cf5597dc88382 F src/auth.c c8b2ab5c8bad4bd90ed7c294694f48269162c627 F src/bitvec.c 4300d311b17fb3c1476623fd895a8feac02a0b08 F src/btmutex.c 63c5cc4ad5715690767ffcb741e185d7bc35ec1a -F src/btree.c adfb7974429f79f188fabcdb26145fca3a7d04ed +F src/btree.c 1c46824970b85ddb109ef10eac2c60a180fe2361 F src/btree.h 179c3ea813780df78a289a8f5130db18e6d4616e F src/btreeInt.h 8d21590c97b6a2c00cce1f78ed5dc5756e835108 F src/build.c a89e901ea24d8ec845286f9a1fbfd14572a7777e @@ -139,7 +139,7 @@ F src/os_common.h 24525d8b7bce66c374dfc1810a6c9043f3359b60 F src/os_os2.c d12285d66df674c42f6f544a6f7c21bf1a954ee1 F src/os_unix.c 03c76b5269361adcd68cf9d6713181922535ac6e F src/os_win.c 3dff41670fb9798a869c636626bb7d6d8b6a45bb -F src/pager.c db12a8333e54e7bbf62dc621ada5507adb3a6493 +F src/pager.c 6d02bb9971f8a72c2f60d20f58fc4fbdc82cf712 F src/pager.h a02ef8e6cc7e78b54874166e5ce786c9d4c489bf F src/parse.y 2c4758b4c5ead6de8cf7112f5a7cce7561d313fe F src/pcache.c f3121a531745b20f5b824201eb63949a7e2959ac @@ -659,7 +659,7 @@ F tool/speedtest16.c c8a9c793df96db7e4933f0852abb7a03d48f2e81 F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224 F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e -P 15d88edf7671822c57238c3f85adf0b40b13e3e2 -R d2ce2d5b91c1f6ae4cf2c6a18038f9fd +P c2266aa094411346a73ab704c03ec919d6e5f46d +R 65908bf0f7e4063753dc41ba9f6bf80f U drh -Z d6e85c23f6cca1b4a3eb502f6411e7b2 +Z dbd5920c29fe1819cc573c7f21db398f diff --git a/manifest.uuid b/manifest.uuid index b631484825..c45cb0f0dc 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -c2266aa094411346a73ab704c03ec919d6e5f46d \ No newline at end of file +8c0edbef7e0f6393349c0157659434bf8498ad88 \ No newline at end of file diff --git a/src/btree.c b/src/btree.c index 7282113fc4..0debf99e38 100644 --- a/src/btree.c +++ b/src/btree.c @@ -9,7 +9,7 @@ ** May you share freely, never taking more than you give. ** ************************************************************************* -** $Id: btree.c,v 1.539.2.1 2008/11/22 14:07:49 drh Exp $ +** $Id: btree.c,v 1.539.2.2 2008/11/26 14:55:02 drh Exp $ ** ** This file implements a external (disk-based) database using BTrees. ** See the header comment on "btreeInt.h" for additional information. @@ -2927,6 +2927,7 @@ void sqlite3BtreeGetTempCursor(BtCursor *pCur, BtCursor *pTempCur){ for(i=0; i<=pTempCur->iPage; i++){ sqlite3PagerRef(pTempCur->apPage[i]->pDbPage); } + assert( pTempCur->pKey==0 ); } /* @@ -2939,6 +2940,7 @@ void sqlite3BtreeReleaseTempCursor(BtCursor *pCur){ for(i=0; i<=pCur->iPage; i++){ sqlite3PagerUnref(pCur->apPage[i]->pDbPage); } + sqlite3_free(pCur->pKey); } /* @@ -6058,6 +6060,9 @@ int sqlite3BtreeDelete(BtCursor *pCur){ assert( leafCur.aiIdx[leafCur.iPage]==0 ); } + if( rc==SQLITE_OK ){ + rc = sqlite3PagerWrite(pLeafPage->pDbPage); + } if( rc==SQLITE_OK ){ dropCell(pLeafPage, 0, szNext); VVA_ONLY( leafCur.pagesShuffled = 0 ); diff --git a/src/pager.c b/src/pager.c index 6d5783ec99..4b91499d7b 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.506 2008/11/19 18:30:29 drh Exp $ +** @(#) $Id: pager.c,v 1.506.2.1 2008/11/26 14:55:02 drh Exp $ */ #ifndef SQLITE_OMIT_DISKIO #include "sqliteInt.h" @@ -1061,9 +1061,6 @@ static u32 pager_cksum(Pager *pPager, const u8 *aData){ return cksum; } -/* Forward declaration */ -static void makeClean(PgHdr*); - /* ** Read a single page from the journal file opened on file descriptor ** jfd. Playback this one page. @@ -1173,7 +1170,9 @@ static int pager_playback_one_page( if( pPager->xReiniter ){ pPager->xReiniter(pPg); } - if( isMainJrnl ) makeClean(pPg); + if( isMainJrnl ){ + sqlite3PcacheMakeClean(pPg); + } #ifdef SQLITE_CHECK_PAGES pPg->pageHash = pager_pagehash(pPg); #endif @@ -3094,23 +3093,6 @@ int sqlite3PagerBegin(DbPage *pPg, int exFlag){ return rc; } -/* -** Make a page dirty. Set its dirty flag and add it to the dirty -** page list. -*/ -static void makeDirty(PgHdr *pPg){ - sqlite3PcacheMakeDirty(pPg); -} - -/* -** Make a page clean. Clear its dirty bit and remove it from the -** dirty page list. -*/ -static void makeClean(PgHdr *pPg){ - sqlite3PcacheMakeClean(pPg); -} - - /* ** Mark a data page as writeable. The page is written into the journal ** if it is not there already. This routine must be called before making @@ -3162,7 +3144,7 @@ static int pager_write(PgHdr *pPg){ /* Mark the page as dirty. If the page has already been written ** to the journal then we can return right away. */ - makeDirty(pPg); + sqlite3PcacheMakeDirty(pPg); if( pageInJournal(pPg) && (pageInStatement(pPg) || pPager->stmtInUse==0) ){ pPager->dirtyCache = 1; pPager->dbModified = 1; @@ -4069,7 +4051,7 @@ int sqlite3PagerMovepage(Pager *pPager, DbPage *pPg, Pgno pgno, int isCommit){ */ if( (pPg->flags&PGHDR_NEED_SYNC) && !isCommit ){ needSyncPgno = pPg->pgno; - assert( pageInJournal(pPg) || pgno>pPager->origDbSize ); + assert( pageInJournal(pPg) || pPg->pgno>pPager->origDbSize ); assert( pPg->flags&PGHDR_DIRTY ); assert( pPager->needSync ); } @@ -4091,7 +4073,7 @@ int sqlite3PagerMovepage(Pager *pPager, DbPage *pPg, Pgno pgno, int isCommit){ sqlite3PcacheDrop(pPgOld); } - makeDirty(pPg); + sqlite3PcacheMakeDirty(pPg); pPager->dirtyCache = 1; pPager->dbModified = 1; @@ -4126,7 +4108,7 @@ int sqlite3PagerMovepage(Pager *pPager, DbPage *pPg, Pgno pgno, int isCommit){ pPager->needSync = 1; assert( pPager->noSync==0 && !MEMDB ); pPgHdr->flags |= PGHDR_NEED_SYNC; - makeDirty(pPgHdr); + sqlite3PcacheMakeDirty(pPgHdr); sqlite3PagerUnref(pPgHdr); }