]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Fix to xTruncate and more journal mode tests for the multiplex VFS.
authorshaneh <shaneh@noemail.net>
Fri, 5 Nov 2010 20:50:43 +0000 (20:50 +0000)
committershaneh <shaneh@noemail.net>
Fri, 5 Nov 2010 20:50:43 +0000 (20:50 +0000)
FossilOrigin-Name: 65fa1164f035d270db48db6474da888aacfba3bd

manifest
manifest.uuid
src/test_multiplex.c
test/multiplex.test

index 8afa8386cb7ccc6ee14d966135c5b7fe5156a3d2..fdf2f98586c7a0f0277084b49604595184610d24 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Fix\sos_unix.c\sso\sthat\sit\sworks\swith\sthe\stest_multiplex\smodule.
-D 2010-11-05T18:07:37
+C Fix\sto\sxTruncate\sand\smore\sjournal\smode\stests\sfor\sthe\smultiplex\sVFS.
+D 2010-11-05T20:50:44
 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
 F Makefile.in e7a59672eaeb04408d1fa8501618d7501a3c5e39
 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@@ -207,7 +207,7 @@ F src/test_intarray.h 489edb9068bb926583445cb02589344961054207
 F src/test_journal.c 785edd54f963aefb3c1628124170a56697c68c70
 F src/test_loadext.c df586c27176e3c2cb2e099c78da67bf14379a56e
 F src/test_malloc.c 09a88f0c111201dc4f8c20470aa1b5f611d59200
-F src/test_multiplex.c 83eb652fb42f4c0f3536de48ec9d37121fb60c9d
+F src/test_multiplex.c 479a51f7eec4b05b7e4b2ce43c4b4ba9b53a03ca
 F src/test_mutex.c ce06b59aca168cd8c520b77159a24352a7469bd3
 F src/test_onefile.c 40cf9e212a377a6511469384a64b01e6e34b2eec
 F src/test_osinst.c f408c6a181f2fb04c56273afd5c3e1e82f60392c
@@ -559,7 +559,7 @@ F test/misc5.test 45b2e3ed5f79af2b4f38ae362eaf4c49674575bd
 F test/misc6.test 953cc693924d88e6117aeba16f46f0bf5abede91
 F test/misc7.test c5f4e6a82e04e71820c0f9f64f6733f04c8ae0ae
 F test/misuse.test 30b3a458e5a70c31e74c291937b6c82204c59f33
-F test/multiplex.test ad3710e5ff4781317866b11875691173d2d6a8f7
+F test/multiplex.test bbd039c94e7be031ce890e302b7a266bcbe0f56f
 F test/mutex1.test 5b71777fc127509cd257910c8db799de557a02de
 F test/mutex2.test bfeaeac2e73095b2ac32285d2756e3a65e681660
 F test/nan.test a44e04df1486fcfb02d32468cbcd3c8e1e433723
@@ -885,7 +885,7 @@ F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff
 F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224
 F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
 F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f
-P f2004b44bfba62a7a2296b161a25aefdf55e035a
-R e27a910072d0609871439f0ab30ee53c
-U dan
-Z c8e41ce82005a005e1344343badd82a1
+P 72ba3e368bec34532ec7b5e856a4daa7e1c8cccb
+R 0042c6a8b282a3f9ef09bfa98caed3ba
+U shaneh
+Z 7b8161cae1f9c054697e43cb6ccb5f60
index 1960777db7ef953211d971bff908ed244d58dac9..cc3e0f4a7bed439b5c390fd72a3aa06cc15f3b5e 100644 (file)
@@ -1 +1 @@
-72ba3e368bec34532ec7b5e856a4daa7e1c8cccb
\ No newline at end of file
+65fa1164f035d270db48db6474da888aacfba3bd
\ No newline at end of file
index 968010163a0bcf98eda7757994a0ae76f2fa85d3..c7e87d46ce13bbaa56b2c62c352a95d2804f12d1 100644 (file)
@@ -28,6 +28,7 @@
 
 #define SQLITE_MULTIPLEX_CHUNK_SIZE 0x40000000
 #define SQLITE_MULTIPLEX_MAX_CHUNKS 32
+#define SQLITE_MULTIPLEX_EXT_FMT    "-%04d"
 
 /************************ Object Definitions ******************************/
 
@@ -137,7 +138,7 @@ static sqlite3_file *multiplexSubOpen(multiplexConn *pConn, int iChunk, int *rc,
     sqlite3_file *pSubOpen = pGroup->pReal[iChunk];    /* Real file descriptor */
     if( !pGroup->bOpen[iChunk] ){
       pGroup->zName[pGroup->nName] = '\0';
-      if( iChunk ) sqlite3_snprintf(pGroup->nName+6, pGroup->zName+pGroup->nName, "-%04d", iChunk);
+      if( iChunk ) sqlite3_snprintf(pGroup->nName+6, pGroup->zName+pGroup->nName, SQLITE_MULTIPLEX_EXT_FMT, iChunk);
       *rc = pOrigVfs->xOpen(pOrigVfs, pGroup->zName, pSubOpen, pGroup->flags, pOutFlags);
       if( *rc==SQLITE_OK ){
         pGroup->bOpen[iChunk] = -1;
@@ -241,7 +242,7 @@ static int multiplexDelete(
   for(i=0; i<gMultiplex.nMaxChunks; i++){
     int rc2;
     int exists = 0;
-    if( i ) sqlite3_snprintf(nName+6, gMultiplex.zName+nName, "-%04d", i);
+    if( i ) sqlite3_snprintf(nName+6, gMultiplex.zName+nName, SQLITE_MULTIPLEX_EXT_FMT, i);
     rc2 = pOrigVfs->xAccess(pOrigVfs, gMultiplex.zName, SQLITE_ACCESS_EXISTS, &exists);
     if( rc2==SQLITE_OK && exists){
       /* if it exists, delete it */
@@ -378,8 +379,9 @@ static int multiplexTruncate(sqlite3_file *pConn, sqlite3_int64 size){
       pSubOpen = pGroup->pReal[i];
       rc2 = pSubOpen->pMethods->xClose(pSubOpen);
       if( rc2!=SQLITE_OK ) rc = SQLITE_IOERR_TRUNCATE;
+      pGroup->bOpen[i] = 0;
     }
-    sqlite3_snprintf(pGroup->nName+6, pGroup->zName+pGroup->nName, "-%04d", i);
+    sqlite3_snprintf(pGroup->nName+6, pGroup->zName+pGroup->nName, SQLITE_MULTIPLEX_EXT_FMT, i);
     rc2 = pOrigVfs->xDelete(pOrigVfs, pGroup->zName, 0);
     if( rc2!=SQLITE_OK ) rc = SQLITE_IOERR_TRUNCATE;
   }
@@ -434,7 +436,7 @@ static int multiplexFileSize(sqlite3_file *pConn, sqlite3_int64 *pSize){
       sqlite3_vfs *pOrigVfs = gMultiplex.pOrigVfs;   /* Real VFS */
       int exists = 0;
       pGroup->zName[pGroup->nName] = '\0';
-      if( i ) sqlite3_snprintf(pGroup->nName+6, pGroup->zName+pGroup->nName, "-%04d", i);
+      if( i ) sqlite3_snprintf(pGroup->nName+6, pGroup->zName+pGroup->nName, SQLITE_MULTIPLEX_EXT_FMT, i);
       rc2 = pOrigVfs->xAccess(pOrigVfs, pGroup->zName, SQLITE_ACCESS_EXISTS, &exists);
       if( rc2==SQLITE_OK && exists){
         /* if it exists, open it */
index eabd3cd1691e73073617d5a556fda4ea55827409..dc245e8527a20bfdb0e9ae68f719df802251651d 100644 (file)
@@ -79,7 +79,8 @@ do_test multiplex-1.11 { sqlite3_multiplex_shutdown }              {SQLITE_OK}
 #
 #   multiplex-2.5.*: More reading/writing.
 #
-#   multiplex-2.6.*: More reading/writing with varying small chunk sizes.
+#   multiplex-2.6.*: More reading/writing with varying small chunk sizes, as
+#                well as varying journal mode.
 
 sqlite3_multiplex_initialize "" 1
 multiplex_set 32768 16
@@ -180,46 +181,49 @@ do_test multiplex-2.5.99 {
 } {SQLITE_OK}
 
 
-for {set sz 151} {$sz<8000} {set sz [expr $sz+419]} {
-
-  do_test multiplex-2.6.1.$sz {
-    multiplex_delete test.db
-    sqlite3_multiplex_initialize "" 1
-    multiplex_set $sz 32
-  } {SQLITE_OK}
-
-  do_test multiplex-2.6.2.$sz {
-    sqlite3 db test.db
-    execsql {
-      PRAGMA page_size = 1024;
-      PRAGMA journal_mode = delete;
-      PRAGMA auto_vacuum = off;
-      CREATE TABLE t1(a PRIMARY KEY, b);
-    }
-  } {delete}
-
-  do_test multiplex-2.6.3.$sz { 
-    execsql { 
-      INSERT INTO t1 VALUES(1, 'one');
-      INSERT INTO t1 VALUES(2, randomblob($g_chunk_size));
-    }
-  } {}
-
-  do_test multiplex-2.6.4.$sz {
-    db eval {SELECT b FROM t1 WHERE a=1}
-  } {one}
-
-  do_test multiplex-2.6.5.$sz {
-    db eval {SELECT length(b) FROM t1 WHERE a=2}
-  } [list $g_chunk_size]
-
-  do_test multiplex-2.6.6.$sz { file size test.db } [list $g_chunk_size]
-
-  do_test multiplex-2.6.99.$sz {
-    db close
-    sqlite3_multiplex_shutdown
-  } {SQLITE_OK}
+set all_journal_modes {delete persist truncate memory off}
+foreach jmode $all_journal_modes {
+  for {set sz 151} {$sz<8000} {set sz [expr $sz+419]} {
+
+    do_test multiplex-2.6.1.$sz.$jmode {
+      multiplex_delete test.db
+      sqlite3_multiplex_initialize "" 1
+      multiplex_set $sz 32
+    } {SQLITE_OK}
+
+    do_test multiplex-2.6.2.$sz.$jmode {
+      sqlite3 db test.db
+      db eval {
+        PRAGMA page_size = 1024;
+        PRAGMA auto_vacuum = off;
+      }
+      db eval "PRAGMA journal_mode = $jmode;"
+    } $jmode
+
+    do_test multiplex-2.6.3.$sz.$jmode { 
+      execsql { 
+        CREATE TABLE t1(a PRIMARY KEY, b);
+        INSERT INTO t1 VALUES(1, 'one');
+        INSERT INTO t1 VALUES(2, randomblob($g_chunk_size));
+      }
+    } {}
+
+    do_test multiplex-2.6.4.$sz.$jmode {
+      db eval {SELECT b FROM t1 WHERE a=1}
+    } {one}
+
+    do_test multiplex-2.6.5.$sz.$jmode {
+      db eval {SELECT length(b) FROM t1 WHERE a=2}
+    } [list $g_chunk_size]
+
+    do_test multiplex-2.6.6.$sz.$jmode { file size test.db } [list $g_chunk_size]
+
+    do_test multiplex-2.6.99.$sz.$jmode {
+      db close
+      sqlite3_multiplex_shutdown
+    } {SQLITE_OK}
 
+  }
 }
 
 #-------------------------------------------------------------------------