diff --git a/manifest b/manifest index 465b45f778..8fe1f810b7 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Added\sa\scouple\smissing\s'not\spart\sof\sthe\spublic\sAPI'\stags\son\sfunctions\sin\ssqlite3-wasm.c.\sNo\scode\schanges. -D 2022-12-15T18:50:30.614 +C Fix\san\sincompatibility\sbetween\sthe\sTcl\sinterface\sand\sthe\s"memdb"\svfs\sby\sallowing\smemdb\sto\saccept\sfilenames\sthat\sbegin\swith\s'\\'\scharacters. +D 2022-12-15T18:56:12.441 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@ -615,7 +615,7 @@ F src/mem1.c c12a42539b1ba105e3707d0e628ad70e611040d8f5e38cf942cee30c867083de F src/mem2.c c8bfc9446fd0798bddd495eb5d9dbafa7d4b7287d8c22d50a83ac9daa26d8a75 F src/mem3.c 30301196cace2a085cbedee1326a49f4b26deff0af68774ca82c1f7c06fda4f6 F src/mem5.c 5a3dbd8ac8a6501152a4fc1fcae9b0900c2d7eb0589c4ec7456fdde15725a26c -F src/memdb.c 3c1f3a3daa670294bad0056e66c17f5fe75cfa1da1850056a5a94347ec32e6bd +F src/memdb.c 1d4adda82e1277b0ededcdc5c23d217e19aa0a66c191f6c0c0ff9ade98124a9c F src/memjournal.c c283c6c95d940eb9dc70f1863eef3ee40382dbd35e5a1108026e7817c206e8a0 F src/msvc.h 3a15918220367a8876be3fa4f2abe423a861491e84b864fb2b7426bf022a28f8 F src/mutex.c 5e3409715552348732e97b9194abe92fdfcd934cfb681df4ba0ab87ac6c18d25 @@ -1317,7 +1317,7 @@ F test/manydb.test 28385ae2087967aa05c38624cec7d96ec74feb3e F test/mem5.test c6460fba403c5703141348cd90de1c294188c68f F test/memdb.test c1f2a343ad14398d5d6debda6ea33e80d0dafcc7 F test/memdb1.test 2c4e9cc10d21c6bf4e217d72b7f6b8ba9b2605971bb2c5e6df76018e189f98f5 -F test/memdb2.test d1dc6058ee59f78c7f46f85e069bb974a981920f8c499f0167690d16c0b079f6 +F test/memdb2.test 7789975b96b0726032a22c1afc026592c7ff175bf05be11f1d640791541a77ea F test/memjournal.test 70f3a00c7f84ee2978ad14e831231caa1e7f23915a2c54b4f775a021d5740c6c F test/memjournal2.test 6b9083cfaab9a3281ec545c3da2487999e8025fb7501bbae10f713f80c56454c F test/memleak.test 10b9c6c57e19fc68c32941495e9ba1c50123f6e2 @@ -2067,8 +2067,8 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P 751e344f4cd2045caf97920cc9f4571caf0de1ba83b94ded902a03b36c10a389 -R 7c259616b48958b222370dcf666e6512 -U stephan -Z ceb56069ad8fabf4af8cfb5eb42bafe3 +P eb27feecea508f3491a09699f2339951facd2345d479cfd3020183dc2af703b2 +R d9029a8d7af89f7bcaaa52e77671d993 +U dan +Z 711e972efe20ba3f8cde77248740eec0 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index 6a62eaa678..29eb87a2b2 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -eb27feecea508f3491a09699f2339951facd2345d479cfd3020183dc2af703b2 \ No newline at end of file +bd537f2057a4800bd30e7dd57405c3e57df649471104c80bd32573a89568029e \ No newline at end of file diff --git a/src/memdb.c b/src/memdb.c index 4ea3cffde8..97b6bed0fd 100644 --- a/src/memdb.c +++ b/src/memdb.c @@ -535,7 +535,7 @@ static int memdbOpen( memset(pFile, 0, sizeof(*pFile)); szName = sqlite3Strlen30(zName); - if( szName>1 && zName[0]=='/' ){ + if( szName>1 && (zName[0]=='/' || zName[0]=='\\') ){ int i; #ifndef SQLITE_MUTEX_OMIT sqlite3_mutex *pVfsMutex = sqlite3MutexAlloc(SQLITE_MUTEX_STATIC_VFS1); diff --git a/test/memdb2.test b/test/memdb2.test index 91843aa191..286bfc3f84 100644 --- a/test/memdb2.test +++ b/test/memdb2.test @@ -14,7 +14,7 @@ set testdir [file dirname $argv0] source $testdir/tester.tcl -set testprefix memdb1 +set testprefix memdb2 do_not_use_codec ifcapable !deserialize { @@ -28,39 +28,50 @@ db close # Test that when using a memdb database, it is not possible to upgrade # to an EXCLUSIVE lock if some other client is holding SHARED. # -sqlite3 db file:/test.db?vfs=memdb -uri 1 -sqlite3 db2 file:/test.db?vfs=memdb -uri 1 +foreach {tn fname} { + 1 file:/test.db?vfs=memdb + 2 file:\\test.db?vfs=memdb +} { + if {$tn==2} breakpoint + sqlite3 db $fname -uri 1 + sqlite3 db2 $fname -uri 1 -do_execsql_test 1.1 { - CREATE TABLE t1(x, y); - INSERT INTO t1 VALUES(1, 2); + + do_execsql_test 1.$tn.1 { + CREATE TABLE t1(x, y); + INSERT INTO t1 VALUES(1, 2); + } + + do_execsql_test -db db2 1.$tn.2 { + BEGIN; + SELECT * FROM t1; + } {1 2} + + do_execsql_test 1.$tn.3 { + BEGIN; + INSERT INTO t1 VALUES(3, 4); + } + + do_catchsql_test 1.$tn.4 { + COMMIT + } {1 {database is locked}} + + do_execsql_test -db db2 1.$tn.5 { + SELECT * FROM t1; + END; + } {1 2} + + do_execsql_test 1.$tn.6 { + COMMIT + } {} + + do_execsql_test -db db2 1.$tn.7 { + SELECT * FROM t1 + } {1 2 3 4} + + db close + db2 close } -do_execsql_test -db db2 1.2 { - BEGIN; - SELECT * FROM t1; -} {1 2} - -do_execsql_test 1.3 { - BEGIN; - INSERT INTO t1 VALUES(3, 4); -} - -do_catchsql_test 1.4 { - COMMIT -} {1 {database is locked}} - -do_execsql_test -db db2 1.5 { - SELECT * FROM t1; - END; -} {1 2} - -do_execsql_test 1.6 { - COMMIT -} {} - -do_execsql_test -db db2 1.7 { - SELECT * FROM t1 -} {1 2 3 4} - finish_test +