]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Allow the journal_mode for in-memory databases to be either OFF or MEMORY,
authordrh <drh@noemail.net>
Sat, 4 Apr 2009 15:53:47 +0000 (15:53 +0000)
committerdrh <drh@noemail.net>
Sat, 4 Apr 2009 15:53:47 +0000 (15:53 +0000)
not just MEMORY. (CVS 6448)

FossilOrigin-Name: 11c77f4c2c2beee5267ea6e2f1a4bb845531b42c

manifest
manifest.uuid
src/pager.c

index 6346f436caa1f09f8fbe47deaa0fb3c589bcbd75..63ed075a002f8e5a02141daeb8648b6131efa315 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Clarify\sthe\smeanings\sof\sthe\sSQLITE_SYNC_NORMAL\sand\sSQLITE_SYNC_FULL\sflags\npassed\sinto\sthe\sxSync\smethod\sof\sthe\sVFS.\s\sComment\schanges\sonly\s-\sno\schanges\nto\scode.\s(CVS\s6447)
-D 2009-04-04T14:04:58
+C Allow\sthe\sjournal_mode\sfor\sin-memory\sdatabases\sto\sbe\seither\sOFF\sor\sMEMORY,\nnot\sjust\sMEMORY.\s(CVS\s6448)
+D 2009-04-04T15:53:48
 F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0
 F Makefile.in 583e87706abc3026960ed759aff6371faf84c211
 F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
@@ -143,7 +143,7 @@ F src/os_common.h 8c61457df58f1a4bd5f5adc3e90e01b37bf7afbc
 F src/os_os2.c bed77dc26e3a95ce4a204936b9a1ca6fe612fcc5
 F src/os_unix.c 5d667f24615043c937a138faaed5f3e93b8619b0
 F src/os_win.c 524fe4c31c469531191857e8036ef59bfb52d684
-F src/pager.c 34aeb87dc8177901d49dd02207828a2121064c25
+F src/pager.c a8b53f7e4a821d5bc2e01477a5f10c9348ce1d7b
 F src/pager.h 0c9f3520c00d8a3b8e792ca56c9a11b6b02b4b0f
 F src/parse.y 070215cf461ab917c23253a9cbf0903f2b0d8f19
 F src/pcache.c 395f752a13574120bd7513a400ba02a265aaa76d
@@ -715,7 +715,7 @@ F tool/speedtest16.c c8a9c793df96db7e4933f0852abb7a03d48f2e81
 F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff
 F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224
 F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
-P 65f9d3b948cd6ed4728ab49833b9f2fca96563a2
-R aa0c0c747dd6d50096255d1203d3fb59
+P c47aeb37a1c054a8e0444b95e29cb332599af2d8
+R ae3e14723e90d8a65d36e9ebea09a9ef
 U drh
-Z 45ed7fb71b5c5e1381094e61ad851d68
+Z 073192898ad0af334ccc18150893fe50
index fc69e4f25deb9c9f6e991b58b77f1190f217fc60..9676af87416ec9b7b8a46b0dfe78a7bf3df33601 100644 (file)
@@ -1 +1 @@
-c47aeb37a1c054a8e0444b95e29cb332599af2d8
\ No newline at end of file
+11c77f4c2c2beee5267ea6e2f1a4bb845531b42c
\ No newline at end of file
index 86a1790abf96a77461eb9ef24ef2be4a6541c1c9..f07c6270c5a5a118a638446003da72c9a168c15e 100644 (file)
@@ -18,7 +18,7 @@
 ** file simultaneously, or one process from reading the database while
 ** another is writing.
 **
-** @(#) $Id: pager.c,v 1.576 2009/03/31 02:54:40 drh Exp $
+** @(#) $Id: pager.c,v 1.577 2009/04/04 15:53:48 drh Exp $
 */
 #ifndef SQLITE_OMIT_DISKIO
 #include "sqliteInt.h"
@@ -5186,30 +5186,33 @@ int sqlite3PagerLockingMode(Pager *pPager, int eMode){
 **    PAGER_JOURNALMODE_MEMORY
 **
 ** If the parameter is not _QUERY, then the journal-mode is set to the
-** value specified.
+** value specified.  Except, an in-memory database can only have its
+** journal mode set to _OFF or _MEMORY.  Attempts to change the journal
+** mode of an in-memory database to something other than _OFF or _MEMORY
+** are silently ignored.
 **
 ** The returned indicate the current (possibly updated) journal-mode.
 */
 int sqlite3PagerJournalMode(Pager *pPager, int eMode){
-  if( !MEMDB ){
-    assert( eMode==PAGER_JOURNALMODE_QUERY
-              || eMode==PAGER_JOURNALMODE_DELETE
-              || eMode==PAGER_JOURNALMODE_TRUNCATE
-              || eMode==PAGER_JOURNALMODE_PERSIST
-              || eMode==PAGER_JOURNALMODE_OFF 
-              || eMode==PAGER_JOURNALMODE_MEMORY );
-    assert( PAGER_JOURNALMODE_QUERY<0 );
-    if( eMode>=0 ){
-      pPager->journalMode = (u8)eMode;
-    }else{
-      assert( eMode==PAGER_JOURNALMODE_QUERY );
-    }
+  assert( eMode==PAGER_JOURNALMODE_QUERY
+            || eMode==PAGER_JOURNALMODE_DELETE
+            || eMode==PAGER_JOURNALMODE_TRUNCATE
+            || eMode==PAGER_JOURNALMODE_PERSIST
+            || eMode==PAGER_JOURNALMODE_OFF 
+            || eMode==PAGER_JOURNALMODE_MEMORY );
+  assert( PAGER_JOURNALMODE_QUERY<0 );
+  if( eMode>=0 && (!MEMDB || eMode==PAGER_JOURNALMODE_MEMORY 
+                          || eMode==PAGER_JOURNALMODE_OFF) ){
+    pPager->journalMode = (u8)eMode;
   }
   return (int)pPager->journalMode;
 }
 
 /*
 ** Get/set the size-limit used for persistent journal files.
+**
+** Setting the size limit to -1 means no limit is enforced.
+** An attempt to set a limit smaller than -1 is a no-op.
 */
 i64 sqlite3PagerJournalSizeLimit(Pager *pPager, i64 iLimit){
   if( iLimit>=-1 ){