]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Fix an assert in pager.c. And various test cases that fail with the in-memory journal...
authordan <dan@noemail.net>
Sat, 3 Jul 2010 13:45:52 +0000 (13:45 +0000)
committerdan <dan@noemail.net>
Sat, 3 Jul 2010 13:45:52 +0000 (13:45 +0000)
FossilOrigin-Name: 78fc35ff4b01d4a583009ec8b8bf876738ca7b92

manifest
manifest.uuid
src/pager.c
test/jrnlmode.test
test/pager1.test
test/walmode.test

index 88edf9d4af3e6d74f6432b4a9adba78a231b2d62..9dda2f0fe07e0fea4d6748b7b2725425f481261f 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,8 +1,5 @@
------BEGIN PGP SIGNED MESSAGE-----
-Hash: SHA1
-
-C Remove\scode\saccidently\sappended\sto\spager.c.
-D 2010-07-03T12:26:33
+C Fix\san\sassert\sin\spager.c.\sAnd\svarious\stest\scases\sthat\sfail\swith\sthe\sin-memory\sjournal\spermutation.
+D 2010-07-03T13:45:53
 F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0
 F Makefile.in a5cad1f8f3e021356bfcc6c77dc16f6f1952bbc3
 F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
@@ -159,7 +156,7 @@ F src/os_common.h a8f95b81eca8a1ab8593d23e94f8a35f35d4078f
 F src/os_os2.c 665876d5eec7585226b0a1cf5e18098de2b2da19
 F src/os_unix.c d7910391a4c9fa6898f7c9abbbb821d5d7edb78f
 F src/os_win.c dd4c6f238fe464e01dab5e4bc9158187ae305fe8
-F src/pager.c eee7ac31ce893ed6b7e28f907fe99144c0696953
+F src/pager.c e4470e43f0fefe5f81034efb706a2b1f4db5ca41
 F src/pager.h 879fdde5a102d2f21a3135d6f647530b21c2796c
 F src/parse.y ace5c7a125d9f2a410e431ee3209034105045f7e
 F src/pcache.c 1e9aa2dbc0845b52e1b51cc39753b6d1e041cb07
@@ -470,7 +467,7 @@ F test/join5.test 86675fc2919269aa923c84dd00ee4249b97990fe
 F test/join6.test bf82cf3f979e9eade83ad0d056a66c5ed71d1901
 F test/journal1.test 36f2d1bb9bf03f790f43fbdb439e44c0657fab19
 F test/journal2.test a08ea6545d987385e7cbb1d4e7dc2eaacd83b00b
-F test/jrnlmode.test 76f94d61528c5ff32102a12f8cf34f4cc36f7849
+F test/jrnlmode.test 17881937be86841ad80431699222bf84aa01172a
 F test/jrnlmode2.test a19e28de1a6ec898067e46a122f1b71c9323bf00
 F test/jrnlmode3.test cfcdb12b90e640a23b92785a002d96c0624c8710
 F test/keyword1.test a2400977a2e4fde43bf33754c2929fda34dbca05
@@ -538,7 +535,7 @@ F test/notify3.test feb03d697f4a5327c1beb158c3e7e51c5e400703
 F test/notnull.test cc7c78340328e6112a13c3e311a9ab3127114347
 F test/null.test a8b09b8ed87852742343b33441a9240022108993
 F test/openv2.test af02ed0a9cbc0d2a61b8f35171d4d117e588e4ec
-F test/pager1.test b345014ce33efcc28a8810c476090068b279ee30
+F test/pager1.test 1fc67606e4c2e9cef17aa0c6f6fceae0fffaa9f3
 F test/pager2.test f5c757c271ce642d36a393ecbfb3aef1c240dcef
 F test/pagerfault.test 17e51d1570c00df4a1902e6d500387017c87e74a
 F test/pagerfault2.test 2d2d4373b1365d693ba185323d0766feeacdb4dd
@@ -787,7 +784,7 @@ F test/walcrash.test f6d5fb2bb108876f04848720a488065d9deef69f
 F test/walcrash2.test 019d60b89d96c1937adb2b30b850ac7e86e5a142
 F test/walfault.test c2b524299dede269282a0795e11396cc446ca9af
 F test/walhook.test ed00a40ba7255da22d6b66433ab61fab16a63483
-F test/walmode.test b54e2f91f34179c65cab02a6916578617a33eef0
+F test/walmode.test cfca1207d725fb5bc25b3b9f9a7053c0277cad4a
 F test/walslow.test d21625e2e99e11c032ce949e8a94661576548933
 F test/walthread.test a25a393c068a2b42b44333fa3fdaae9072f1617c
 F test/where.test de337a3fe0a459ec7c93db16a519657a90552330
@@ -833,14 +830,7 @@ F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff
 F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224
 F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
 F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f
-P 6d7640edcd69a932556f86500aedbf14e75ba7de
-R d0b007e2ef9688923f10274954448b62
-U drh
-Z be2fc7329c7e3b5fca1a0eb4a8d0cff8
------BEGIN PGP SIGNATURE-----
-Version: GnuPG v1.4.6 (GNU/Linux)
-
-iD8DBQFMLyx8oxKgR168RlERAkl1AJ4ohtqY31ahBbiC1mts0x8F0P605ACcC9FU
-hIo83ZyxiUs6yqlF5ffrsAg=
-=NNUf
------END PGP SIGNATURE-----
+P 7cbe175a69738499f9218ec56f1a39f040aea9dc
+R c5e0f625cc36dd57b9413db473409eda
+U dan
+Z 7660b7f8316180874f8f1a941691e23e
index 359a11ad69b309afa6cdb4b41f0d16b96ba598ed..e572498c2900943587082766d1f2b0386b089b68 100644 (file)
@@ -1 +1 @@
-7cbe175a69738499f9218ec56f1a39f040aea9dc
\ No newline at end of file
+78fc35ff4b01d4a583009ec8b8bf876738ca7b92
\ No newline at end of file
index f0086e9c113ba7085e72b6a278df02dbaa8bb8ac..a7d8565de1f279259c5fb8420ff7254f9c4de670 100644 (file)
@@ -5165,7 +5165,10 @@ int sqlite3PagerCommitPhaseOne(
       */
   #ifdef SQLITE_ENABLE_ATOMIC_WRITE
       PgHdr *pPg;
-      assert( isOpen(pPager->jfd) || pPager->journalMode==PAGER_JOURNALMODE_OFF );
+      assert( isOpen(pPager->jfd) 
+           || pPager->journalMode==PAGER_JOURNALMODE_OFF 
+           || pPager->journalMode==PAGER_JOURNALMODE_WAL 
+      );
       if( !zMaster && isOpen(pPager->jfd) 
        && pPager->journalOff==jrnlBufferSize(pPager) 
        && pPager->dbSize>=pPager->dbFileSize
index fd3e59f12d1b059900e579e96acb5590e5116678..6adf063626780ec98e0c080352b09d4cd63b3647 100644 (file)
@@ -504,4 +504,20 @@ ifcapable pragma {
   }
 }
 
+ifcapable pragma {
+  catch { db close }
+  do_test jrnlmode-7.1 {
+    foreach f [glob -nocomplain test.db*] { file delete -force $f }
+    sqlite3 db test.db
+    execsql {
+      PRAGMA journal_mode = memory;
+      PRAGMA auto_vacuum = 0;
+      PRAGMA page_size = 1024;
+      PRAGMA user_version = 5;
+      PRAGMA user_version;
+    }
+  } {memory 5}
+  do_test jrnlmode-7.2 { file size test.db } {1024}
+}
+
 finish_test
index 2e71072e05543b814204880328a75eb207cafbbb..3da1ed5f94754d8aad2ef74d65054cc7e6a06394 100644 (file)
@@ -559,20 +559,24 @@ foreach {tn1 tcl} {
     o { 
       PRAGMA main.synchronous=OFF;
       PRAGMA aux.synchronous=OFF;
+      PRAGMA journal_mode = DELETE;
     }
     o512 { 
       PRAGMA main.synchronous=OFF;
       PRAGMA aux.synchronous=OFF;
       PRAGMA main.page_size = 512;
       PRAGMA aux.page_size = 512;
+      PRAGMA journal_mode = DELETE;
     }
     n { 
       PRAGMA main.synchronous=NORMAL;
       PRAGMA aux.synchronous=NORMAL;
+      PRAGMA journal_mode = DELETE;
     }
     f { 
       PRAGMA main.synchronous=FULL;
       PRAGMA aux.synchronous=FULL;
+      PRAGMA journal_mode = DELETE;
     }
   } {
 
@@ -665,6 +669,7 @@ proc copy_on_journal_delete {method filename args} {
 }
 faultsim_delete_and_reopen
 do_execsql_test pager1.4.5.1 {
+  PRAGMA journal_mode = DELETE;
   PRAGMA page_size = 1024;
   CREATE TABLE t1(a, b);
   CREATE TABLE t2(a, b);
@@ -674,7 +679,7 @@ do_execsql_test pager1.4.5.1 {
     INSERT INTO t1 VALUES(1, 2);
     INSERT INTO t2 VALUES(3, 4);
   COMMIT;
-} {}
+} {delete}
 tv filter {}
 
 # Check the transaction was committed:
@@ -742,6 +747,7 @@ proc copy_on_mj_delete {method filename args} {
 do_test pager1.4.6.1 {
   faultsim_delete_and_reopen
   execsql {
+    PRAGMA journal_mode = DELETE;
     ATTACH 'test.db2' AS two;
     CREATE TABLE t1(a, b);
     CREATE TABLE two.t2(a, b);
@@ -772,6 +778,7 @@ do_test pager1.4.6.8 {
   tv filter xDelete
   sqlite3 db test.db2
   execsql {
+    PRAGMA journal_mode = DELETE;
     ATTACH 'test.db3' AS three;
     CREATE TABLE three.t3(a, b);
     INSERT INTO t3 VALUES(1, 't3.1');
@@ -839,6 +846,7 @@ proc copy_on_journal_delete {method filename args} {
 }
 faultsim_delete_and_reopen
 do_execsql_test pager1.4.7.1 {
+  PRAGMA journal_mode = DELETE;
   CREATE TABLE t1(x PRIMARY KEY, y);
   CREATE INDEX i1 ON t1(y);
   INSERT INTO t1 VALUES('I',   'one');
@@ -848,7 +856,7 @@ do_execsql_test pager1.4.7.1 {
     INSERT INTO t1 VALUES('IV', 'sixteen');
     INSERT INTO t1 VALUES('V' , 'twentyfive');
   COMMIT;
-} {}
+} {delete}
 tv filter {}
 db close
 tv delete 
@@ -1339,7 +1347,6 @@ foreach sectorsize {
       DROP TABLE t6;
       DROP TABLE t7;
     }
-    if {$eff==65536} breakpoint
     execsql {
       BEGIN;
         CREATE TABLE t6(a, b);
@@ -1393,6 +1400,7 @@ testvfs tv -default 1
 faultsim_delete_and_reopen
 db func a_string a_string
 do_execsql_test pager1-11.1 {
+  PRAGMA journal_mode = DELETE;
   PRAGMA cache_size = 10;
   BEGIN;
     CREATE TABLE zz(top PRIMARY KEY);
@@ -1405,7 +1413,7 @@ do_execsql_test pager1-11.1 {
   COMMIT;
   BEGIN;
     UPDATE zz SET top = a_string(345);
-} {}
+} {delete}
 
 proc lockout {method args} { return SQLITE_IOERR }
 tv script lockout
index 48979b19c660dfc243a265ebb206d152684c5b2a..7bb656e5efc0fe62f153ead814a4b873b1f758f6 100644 (file)
@@ -15,6 +15,7 @@
 
 set testdir [file dirname $argv0]
 source $testdir/tester.tcl
+source $testdir/malloc_common.tcl
 
 # If the library was compiled without WAL support, check that the 
 # "PRAGMA journal_mode=WAL" treats "WAL" as an unrecognized mode.
@@ -267,4 +268,24 @@ do_test walmode-5.3.5 {
   }
 } [list 1 2 3 4 $tempJrnlMode]
 
+
+#-------------------------------------------------------------------------
+# Test changing to WAL mode from journal_mode=off or journal_mode=memory
+#
+foreach {tn mode} {
+  3 persist
+  4 delete
+  5 truncate
+  2 memory
+  1 off
+} {
+  do_test walmode-6.$tn {
+    faultsim_delete_and_reopen
+    execsql "
+      PRAGMA journal_mode = $mode;
+      PRAGMA journal_mode = wal;
+    "
+  } [list $mode wal]
+}
+
 finish_test