From: adam Date: Tue, 9 Nov 2010 00:47:45 +0000 (+0000) Subject: Experimental changes to test defaulting to fullfsync for WAL mode X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=a6db3f058af209372ea031f9dfa0fcd65dd40824;p=thirdparty%2Fsqlite.git Experimental changes to test defaulting to fullfsync for WAL mode FossilOrigin-Name: 77b343cfc3bef9b1a99e98fec6073626dab05657 --- diff --git a/manifest b/manifest index 62cf24b18e..9d783b39e9 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Integrated\sproxy\slocking\sfile\ssupport\sfor\sWAL\sjournal\smode\sand\sdouble\sfree\sfix -D 2010-11-09T00:43:59 +C Experimental\schanges\sto\stest\sdefaulting\sto\sfullfsync\sfor\sWAL\smode +D 2010-11-09T00:47:46 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f F Makefile.in c58f7d37ad0f9b28655ba4e28c6cb0f879569cd7 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23 @@ -159,14 +159,14 @@ F src/os_common.h a8f95b81eca8a1ab8593d23e94f8a35f35d4078f F src/os_os2.c 72d0b2e562952a2464308c4ce5f7913ac10bef3e F src/os_unix.c 79cf726c9a0bcc4691a01389031513c10bf15bed F src/os_win.c 51cb62f76262d961ea4249489383d714501315a7 -F src/pager.c a5f5d9787b11dfb0b6082e6f5846d00b459a8e19 +F src/pager.c 58befaf9251febd8d70a91d65e994f602b838cf0 F src/pager.h ef8c8f71ab022cc2fff768a1175dd32355be9dcd F src/parse.y 12b7ebd61ea54f0e1b1083ff69cc2c8ce9353d58 F src/pcache.c 1e9aa2dbc0845b52e1b51cc39753b6d1e041cb07 F src/pcache.h c683390d50f856d4cd8e24342ae62027d1bb6050 F src/pcache1.c e921e8a1d52c93abde63cb6dad1fa39770410c52 -F src/pragma.c 3dbb254a99d7a5ccaff8eb1f8689556ff82fe6d0 -F src/prepare.c 23b5da0608820c9f76aa61d4955ebdbd23ffda36 +F src/pragma.c bbc722cbf73faeadcc650075609e7ceeaffedce2 +F src/prepare.c 70d261ec8e3b7a55dd3a1470e953be0ac3da34af F src/printf.c 8ae5082dd38a1b5456030c3755ec3a392cd51506 F src/random.c cd4a67b3953b88019f8cd4ccd81394a8ddfaba50 F src/resolve.c 1c0f32b64f8e3f555fe1f732f9d6f501a7f05706 @@ -851,7 +851,10 @@ F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224 F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f -P e01c5f3eda7fe6e6afe9c3894384f09b58173da1 -R 0f46b01a6860ee53146a14c10ec341dc +P fd4d38fa66de85676189ff4922fb1bf5f8cac9c4 +R c98bc3ea3fd9fcd44a0bbad595d43ad1 +T *branch * apple-osx-exp +T *sym-apple-osx-exp * +T -sym-apple-osx * U adam -Z d51fce1db464c676813e4eba90c98e2f +Z 06fc038b80ed13bd5b68fa3606bfbfea diff --git a/manifest.uuid b/manifest.uuid index 2d60ca9cf6..558e984582 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -fd4d38fa66de85676189ff4922fb1bf5f8cac9c4 \ No newline at end of file +77b343cfc3bef9b1a99e98fec6073626dab05657 \ No newline at end of file diff --git a/src/pager.c b/src/pager.c index f0b5b77544..74040bced3 100644 --- a/src/pager.c +++ b/src/pager.c @@ -779,7 +779,7 @@ static const unsigned char aJournalMagic[] = { ** rollback journal. Otherwise false. */ #ifndef SQLITE_OMIT_WAL -static int pagerUseWal(Pager *pPager){ +int pagerUseWal(Pager *pPager){ return (pPager->pWal!=0); } #else @@ -5649,8 +5649,8 @@ int sqlite3PagerCommitPhaseOne( if( pagerUseWal(pPager) ){ PgHdr *pList = sqlite3PcacheDirtyList(pPager->pPCache); if( pList ){ - rc = pagerWalFrames(pPager, pList, pPager->dbSize, 1, - (pPager->fullSync ? pPager->sync_flags : 0) + // rc = pagerWalFrames(pPager, pList, pPager->dbSize, 1, (pPager->fullSync ? pPager->sync_flags : 0) + rc = pagerWalFrames(pPager, pList, pPager->dbSize, 1, 0 ); } if( rc==SQLITE_OK ){ diff --git a/src/pragma.c b/src/pragma.c index 9a02e97b69..712a20628a 100644 --- a/src/pragma.c +++ b/src/pragma.c @@ -569,6 +569,10 @@ void sqlite3Pragma( iDb = 0; pId2->n = 1; } + if (eMode == PAGER_JOURNALMODE_WAL) { + db->flags |= SQLITE_FullFSync; + sqlite3VdbeAddOp2(v, OP_Expire, 0, 0); + } for(ii=db->nDb-1; ii>=0; ii--){ if( db->aDb[ii].pBt && (ii==iDb || pId2->n==0) ){ sqlite3VdbeUsesBtree(v, ii); diff --git a/src/prepare.c b/src/prepare.c index 2daf9b0ba4..dd10efc306 100644 --- a/src/prepare.c +++ b/src/prepare.c @@ -126,6 +126,8 @@ int sqlite3InitCallback(void *pInit, int argc, char **argv, char **NotUsed){ return 0; } +extern int pagerUseWal(Pager *p); + /* ** Attempt to read the database schema and initialize internal ** data structures for a single database file. The index of the @@ -303,7 +305,12 @@ static int sqlite3InitOne(sqlite3 *db, int iDb, char **pzErrMsg){ rc = SQLITE_ERROR; goto initone_error_out; } - +#ifndef SQLITE_OMIT_WAL + if( pagerUseWal((Pager *)pDb->pBt) ){ + db->flags |= SQLITE_FullFSync; + } +#endif + /* Ticket #2804: When we open a database in the newer file format, ** clear the legacy_file_format pragma flag so that a VACUUM will ** not downgrade the database and thus invalidate any descending