diff --git a/manifest b/manifest index 8afa8386cb..fdf2f98586 100644 --- 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 diff --git a/manifest.uuid b/manifest.uuid index 1960777db7..cc3e0f4a7b 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -72ba3e368bec34532ec7b5e856a4daa7e1c8cccb \ No newline at end of file +65fa1164f035d270db48db6474da888aacfba3bd \ No newline at end of file diff --git a/src/test_multiplex.c b/src/test_multiplex.c index 968010163a..c7e87d46ce 100644 --- a/src/test_multiplex.c +++ b/src/test_multiplex.c @@ -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; ixAccess(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 */ diff --git a/test/multiplex.test b/test/multiplex.test index eabd3cd169..dc245e8527 100644 --- a/test/multiplex.test +++ b/test/multiplex.test @@ -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]} { +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 { - multiplex_delete test.db - sqlite3_multiplex_initialize "" 1 - multiplex_set $sz 32 - } {SQLITE_OK} + 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 { - 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.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 { - execsql { - INSERT INTO t1 VALUES(1, 'one'); - INSERT INTO t1 VALUES(2, randomblob($g_chunk_size)); - } - } {} + 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 { - db eval {SELECT b FROM t1 WHERE a=1} - } {one} + 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 { - db eval {SELECT length(b) FROM t1 WHERE a=2} - } [list $g_chunk_size] + 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 { file size test.db } [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 { - db close - sqlite3_multiplex_shutdown - } {SQLITE_OK} + do_test multiplex-2.6.99.$sz.$jmode { + db close + sqlite3_multiplex_shutdown + } {SQLITE_OK} + } } #-------------------------------------------------------------------------