-C If\sa\srollback\sfails,\smark\sthe\sdatabase\sas\scorrupt.\s(CVS\s5668)
-D 2008-09-03T00:08:29
+C Add\ssupport\sfor\sSQLITE_OPEN_FULLMUTEX.\s(CVS\s5669)
+D 2008-09-03T00:43:15
F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0
F Makefile.in 689e14735f862a5553bceef206d8c13e29504e44
F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
F src/journal.c cffd2cd214e58c0e99c3ff632b3bee6c7cbb260e
F src/legacy.c aac57bd984e666059011ea01ec4383892a253be3
F src/loadext.c 6581a5bbc4d74fcd46dbbcfd695a6a5417f778a2
-F src/main.c a679dd3e0f040d13d72b9800840e07bedd6aa2d4
+F src/main.c 088b513b16b480e96cbabab883107e0e74646a2e
F src/malloc.c 9aa2ef805287017ed16a9e3809d275b8af26b762
F src/mem1.c 5a529ff121c55ab067be14de00f86f6dcc4f4fb9
F src/mem2.c f87e681d0d1ed8436870d089332ed0d27d885b5c
F src/sqliteLimit.h f435e728c6b620ef7312814d660a81f9356eb5c8
F src/status.c 237b193efae0cf6ac3f0817a208de6c6c6ef6d76
F src/table.c 22744786199c9195720c15a7a42cb97b2e2728d8
-F src/tclsqlite.c 01312c2af41189ff20335d6ac64e3dbda57e627b
+F src/tclsqlite.c f431fe065a024e80b32a4691bab73beaccda024e
F src/test1.c 349606445a5a938e9fa9b5e410413632c6c25f87
F src/test2.c eaa77124786649eedf47d3c5e94d8070c0da228f
F src/test3.c e85b7ce5c28c3ce7fbdbf7f98e1467b19786c62b
F test/pageropt.test 3ee6578891baaca967f0bd349e4abfa736229e1a
F test/pagesize.test 0d9ff3fedfce6e5ffe8fa7aca9b6d3433a2e843b
F test/pcache.test a0fc9e965d039c4de24f9af929f9a25eb8be8539
-F test/permutations.test e4509095a9870ae13b6184b3b957f78675716e6f
+F test/permutations.test b3dc25ef805a940e23b7e1a8189cc8a06f21ca0a
F test/pragma.test 4461cb1004084b907dd28f9d517af7bcf8f5b35f
F test/pragma2.test 5364893491b9231dd170e3459bfc2e2342658b47
F test/printf.test 262a5acd3158f788e9bdf7f18d718f3af32ff6ef
F test/sync.test ded6b39d8d8ca3c0c5518516c6371b3316d3e3a3
F test/table.test 13b1c2e2fb4727b35ee1fb7641fc469214fd2455
F test/tableapi.test 505031f15b18a750184d967d2c896cf88fcc969c
-F test/tclsqlite.test 401358dc4669fa4993cc129510edcd206289e029
+F test/tclsqlite.test 9689ded2f8909362e869eb8bd8c2f5219f4f12af
F test/tempdb.test b88ac8a19823cf771d742bf61eef93ef337c06b1
F test/temptable.test 19b851b9e3e64d91e9867619b2a3f5fffee6e125
F test/tester.tcl 12fd8394caeb71f7d961707da8668756389bc9d3
F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff
F tool/speedtest8.c 1dbced29de5f59ba2ebf877edcadf171540374d1
F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
-P fa237c14c8551315ea8f239e89a81b7725675c81
-R bef98882f050cbe8a7e09b4a627b9eac
+P c8b24bd1be94b6d385e759a2f9e202be066578a0
+R 40631eb64a3c216515d7d10a0d831308
U drh
-Z b8216416ceb392107a1119cd9017e017
+Z 44c1ecf2f51b2cc145c32f8106994277
-c8b24bd1be94b6d385e759a2f9e202be066578a0
\ No newline at end of file
+f2f361a5e2fb81fb0f99e83ecf8bae9a750723b1
\ No newline at end of file
** other files are for internal use by SQLite and should not be
** accessed by users of the library.
**
-** $Id: main.c,v 1.498 2008/09/02 16:22:29 danielk1977 Exp $
+** $Id: main.c,v 1.499 2008/09/03 00:43:15 drh Exp $
*/
#include "sqliteInt.h"
#include <ctype.h>
sqlite3 *db;
int rc;
CollSeq *pColl;
- int isThreadsafe = 1;
+ int isThreadsafe;
#ifndef SQLITE_OMIT_AUTOINIT
rc = sqlite3_initialize();
if( rc ) return rc;
#endif
- if( flags&SQLITE_OPEN_NOMUTEX ){
+ if( sqlite3GlobalConfig.bCoreMutex==0 ){
isThreadsafe = 0;
+ }else if( flags & SQLITE_OPEN_NOMUTEX ){
+ isThreadsafe = 0;
+ }else if( flags & SQLITE_OPEN_FULLMUTEX ){
+ isThreadsafe = 1;
+ }else{
+ isThreadsafe = sqlite3GlobalConfig.bFullMutex;
}
/* Remove harmful bits from the flags parameter */
SQLITE_OPEN_TEMP_JOURNAL |
SQLITE_OPEN_SUBJOURNAL |
SQLITE_OPEN_MASTER_JOURNAL |
- SQLITE_OPEN_NOMUTEX
+ SQLITE_OPEN_NOMUTEX |
+ SQLITE_OPEN_FULLMUTEX
);
/* Allocate the sqlite data structure */
db = sqlite3MallocZero( sizeof(sqlite3) );
if( db==0 ) goto opendb_out;
- if( sqlite3GlobalConfig.bFullMutex && isThreadsafe ){
+ if( isThreadsafe ){
db->mutex = sqlite3MutexAlloc(SQLITE_MUTEX_RECURSIVE);
if( db->mutex==0 ){
sqlite3_free(db);
** A TCL Interface to SQLite. Append this file to sqlite3.c and
** compile the whole thing to build a TCL-enabled version of SQLite.
**
-** $Id: tclsqlite.c,v 1.221 2008/09/01 20:38:12 shane Exp $
+** $Id: tclsqlite.c,v 1.222 2008/09/03 00:43:15 drh Exp $
*/
#include "tcl.h"
#include <errno.h>
if( Tcl_GetBooleanFromObj(interp, objv[i+1], &b) ) return TCL_ERROR;
if( b ){
flags |= SQLITE_OPEN_NOMUTEX;
+ flags &= ~SQLITE_OPEN_FULLMUTEX;
}else{
flags &= ~SQLITE_OPEN_NOMUTEX;
}
+ }else if( strcmp(zArg, "-fullmutex")==0 ){
+ int b;
+ if( Tcl_GetBooleanFromObj(interp, objv[i+1], &b) ) return TCL_ERROR;
+ if( b ){
+ flags |= SQLITE_OPEN_FULLMUTEX;
+ flags &= ~SQLITE_OPEN_NOMUTEX;
+ }else{
+ flags &= ~SQLITE_OPEN_FULLMUTEX;
+ }
}else{
Tcl_AppendResult(interp, "unknown option: ", zArg, (char*)0);
return TCL_ERROR;
if( objc<3 || (objc&1)!=1 ){
Tcl_WrongNumArgs(interp, 1, objv,
"HANDLE FILENAME ?-vfs VFSNAME? ?-readonly BOOLEAN? ?-create BOOLEAN?"
- " ?-nomutex BOOLEAN?"
+ " ?-nomutex BOOLEAN? ?-fullmutex BOOLEAN?"
#ifdef SQLITE_HAS_CODEC
" ?-key CODECKEY?"
#endif
#
#***********************************************************************
#
-# $Id: permutations.test,v 1.27 2008/08/30 16:07:04 drh Exp $
+# $Id: permutations.test,v 1.28 2008/09/03 00:43:15 drh Exp $
set testdir [file dirname $argv0]
source $testdir/tester.tcl
}
run_tests "nomutex" -description {
- Tests run with the SQLITE_OPEN_SINGLETHREADED flag passed to sqlite3_open().
+ Tests run with the SQLITE_OPEN_MULTITHREADED flag passed to sqlite3_open().
} -initialize {
rename sqlite3 sqlite3_nomutex
proc sqlite3 {args} {
} SQLITE_OK
}
+# Run some tests in SQLITE_OPEN_FULLMUTEX mode.
+#
+run_tests "fullmutex" -description {
+ Tests run in SQLITE_OPEN_FULLMUTEX mode
+} -initialize {
+ rename sqlite3 sqlite3_fullmutex
+ proc sqlite3 {args} {
+ if {[string range [lindex $args 0] 0 0] ne "-"} {
+ lappend args -fullmutex 1
+ }
+ uplevel [concat sqlite3_fullmutex $args]
+ }
+} -include {
+ delete.test delete2.test insert.test rollback.test select1.test
+ select2.test trans.test update.test vacuum.test types.test
+ types2.test types3.test
+} -shutdown {
+ rename sqlite3 {}
+ rename sqlite3_fullmutex sqlite3
+}
+
# Run some tests using the "onefile" demo.
#
run_tests "onefile" -description {
# interface is pretty well tested. This file contains some addition
# tests for fringe issues that the main test suite does not cover.
#
-# $Id: tclsqlite.test,v 1.67 2008/08/29 15:54:57 danielk1977 Exp $
+# $Id: tclsqlite.test,v 1.68 2008/09/03 00:43:15 drh Exp $
set testdir [file dirname $argv0]
source $testdir/tester.tcl
if {[sqlite3 -has-codec]} {
set r "sqlite_orig HANDLE FILENAME ?-key CODEC-KEY?"
} else {
- set r "sqlite3 HANDLE FILENAME ?-vfs VFSNAME? ?-readonly BOOLEAN? ?-create BOOLEAN? ?-nomutex BOOLEAN?"
+ set r "sqlite3 HANDLE FILENAME ?-vfs VFSNAME? ?-readonly BOOLEAN? ?-create BOOLEAN? ?-nomutex BOOLEAN? ?-fullmutex BOOLEAN?"
}
do_test tcl-1.1 {
set v [catch {sqlite3 bogus} msg]