"D. Richard Hipp" <[EMAIL PROTECTED]> writes:
> A similar bug exists in 2.8. A fix has been checked
> into CVS. Version 2.8.16 will be released as soon as
> I can get it built and tested.
Great. I don't know if you forgot about the patch I sent a while ago, or
decided not to include it. Here it is again, in case you want to include it.
This fixes an assert() error which can occur if SYNCHRONOUS=OFF is issued,
then operations are performed and then SYNCHRONOUS=ON is issued.
cvs diff: Diffing .
Index: btree.c
===================================================================
RCS file: /sqlite/sqlite/src/btree.c,v
retrieving revision 1.103
diff -u -r1.103 btree.c
--- btree.c10 Mar 2004 13:42:38 -00001.103
+++ btree.c15 Feb 2005 01:03:00 -0000
@@ -753,8 +753,7 @@
** normally a worry.
*/
static int fileBtreeSetCacheSize(Btree *pBt, int mxPage){
- sqlitepager_set_cachesize(pBt->pPager, mxPage);
- return SQLITE_OK;
+ return sqlitepager_set_cachesize(pBt->pPager, mxPage);
}
/*
Index: pager.c
===================================================================
RCS file: /sqlite/sqlite/src/pager.c,v
retrieving revision 1.101
diff -u -r1.101 pager.c
--- pager.c25 Feb 2004 02:20:41 -00001.101
+++ pager.c15 Feb 2005 01:03:00 -0000
@@ -303,6 +303,14 @@
# define REFINFO(X)
#endif
+
+/*
+** Forward declaration
+*/
+static int syncJournal(Pager*);
+
+
+
/*
** Read a 32-bit integer from the given file descriptor. Store the integer
** that is read in *pRes. Return SQLITE_OK if everything worked, or an
@@ -838,10 +846,11 @@
** failure, the database file might be left in an inconsistent and
** unrepairable state.
*/
-void sqlitepager_set_cachesize(Pager *pPager, int mxPage){
+int sqlitepager_set_cachesize(Pager *pPager, int mxPage){
+ int rc = SQLITE_OK;
if( mxPage>=0 ){
pPager->noSync = pPager->tempFile;
- if( pPager->noSync==0 ) pPager->needSync = 0;
+ if( pPager->noSync==0 ) rc = syncJournal(pPager);
}else{
pPager->noSync = 1;
mxPage = -mxPage;
@@ -849,6 +858,8 @@
if( mxPage>10 ){
pPager->mxPage = mxPage;
}
+
+ return rc;
}
/*
@@ -1028,11 +1039,6 @@
}
/*
-** Forward declaration
-*/
-static int syncJournal(Pager*);
-
-/*
** Truncate the file to the number of pages specified.
*/
int sqlitepager_truncate(Pager *pPager, Pgno nPage){
Index: pager.h
===================================================================
RCS file: /sqlite/sqlite/src/pager.h,v
retrieving revision 1.26
diff -u -r1.26 pager.h
--- pager.h11 Feb 2004 02:18:07 -00001.26
+++ pager.h15 Feb 2005 01:03:00 -0000
@@ -73,7 +73,7 @@
int sqlitepager_open(Pager **ppPager, const char *zFilename,
int nPage, int nExtra, int useJournal);
void sqlitepager_set_destructor(Pager*, void(*)(void*));
-void sqlitepager_set_cachesize(Pager*, int);
+int sqlitepager_set_cachesize(Pager*, int);
int sqlitepager_close(Pager *pPager);
int sqlitepager_get(Pager *pPager, Pgno pgno, void **ppPage);
void *sqlitepager_lookup(Pager *pPager, Pgno pgno);