diff --git a/manifest b/manifest index a2de57fcf1..f6549180ff 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Version\s3.7.12.1 -D 2012-05-22T02:45:53.459 +C Enable\sthe\suse\sof\sshared\scache\sfor\san\sin-memory\sdatabase,\sso\sthat\sseparate\ndatabase\sconnections\scan\sshare\sthe\ssame\sin-memory\sdatabase. +D 2012-05-26T18:06:38.341 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f F Makefile.in 2f37e468503dbe79d35c9f6dffcf3fae1ae9ec20 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23 @@ -118,7 +118,7 @@ F src/auth.c 523da7fb4979469955d822ff9298352d6b31de34 F src/backup.c 6be23a344d3301ae38e92fddb3a33b91c309fce4 F src/bitvec.c af50f1c8c0ff54d6bdb7a80e2fceca5a93670bef F src/btmutex.c 976f45a12e37293e32cae0281b15a21d48a8aaa7 -F src/btree.c df800f10896bc2ddaa1125c532d6e7a7b9efc532 +F src/btree.c 23e2d21f1fda37e5addc11935c78b97c7e467d0c F src/btree.h 48a013f8964f12d944d90e4700df47b72dd6d923 F src/btreeInt.h 38a639c0542c29fe8331a221c4aed0cb8686249e F src/build.c 2bb2163bb1e69f59e9f36a9413079ead42fa1d2c @@ -161,7 +161,7 @@ F src/os_common.h 92815ed65f805560b66166e3583470ff94478f04 F src/os_os2.c 4a75888ba3dfc820ad5e8177025972d74d7f2440 F src/os_unix.c 424d46e0edab969293c2223f09923b2178171f47 F src/os_win.c 412d6434133c7c81dc48b7702f3ea5e61c309e5c -F src/pager.c bb5635dde0b152797836d1c72275284724bb563c +F src/pager.c 5b14be810f26eeab807d50c5d26b8c8e34a0e6e0 F src/pager.h ef1eaf8593e78f73885c1dfac27ad83bee23bdc5 F src/parse.y f29df90bd3adc64b33114ab1de9fb7768fcf2099 F src/pcache.c f8043b433a57aba85384a531e3937a804432a346 @@ -269,7 +269,7 @@ F test/async2.test c0a9bd20816d7d6a2ceca7b8c03d3d69c28ffb8b F test/async3.test d73a062002376d7edc1fe3edff493edbec1fc2f7 F test/async4.test 1787e3952128aa10238bf39945126de7ca23685a F test/async5.test 0dd8701bd588bf6e70c2557a22ae3f22b2567b4c -F test/attach.test 0d112b7713611fdf0340260192749737135fda5f +F test/attach.test 29cf17b5793ad345f97fbfedcaabe6c06a0b5e8e F test/attach2.test e54436ed956d3d88bdee61221da59bf3935a0966 F test/attach3.test d89ccfe4fe6e2b5e368d480fcdfe4b496c54cf4e F test/attach4.test 53bf502f17647c6d6c5add46dda6bac8b6f4665c @@ -683,7 +683,7 @@ F test/selectA.test 06d1032fa9009314c95394f2ca2e60d9f7ae8532 F test/selectB.test 954e4e49cf1f896d61794e440669e03a27ceea25 F test/selectC.test 871fb55d884d3de5943c4057ebd22c2459e71977 F test/server1.test 46803bd3fe8b99b30dbc5ff38ffc756f5c13a118 -F test/shared.test 34945a516532b11182c3eb26e31247eee3c9ae48 +F test/shared.test 4526441129635d89e185dd66a74123dc696264a0 F test/shared2.test 03eb4a8d372e290107d34b6ce1809919a698e879 F test/shared3.test ebf77f023f4bdaa8f74f65822b559e86ce5c6257 F test/shared4.test 72d90821e8d2fc918a08f16d32880868d8ee8e9d @@ -998,10 +998,10 @@ F tool/tostr.awk e75472c2f98dd76e06b8c9c1367f4ab07e122d06 F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f F tool/warnings-clang.sh a8a0a3babda96dfb1ff51adda3cbbf3dfb7266c2 F tool/warnings.sh fbc018d67fd7395f440c28f33ef0f94420226381 -P 5519cc5ef471e32a59995a34be811b46478dca1e -R f9f0e59804fa7e60869ace7ace22bd3d -T +bgcolor * #d0c0ff -T +sym-release * -T +sym-version-3.7.12.1 * +P 6d326d44fd1d626aae0e8456e5fa2049f1ce0789 +R 6a33795d9ed8fa1d5cb60e0ecabf9128 +T *branch * shared-cache-memdb +T *sym-shared-cache-memdb * +T -sym-trunk * U drh -Z a30e57621f706278c1c64a3624297cbb +Z e102daae56ebdb7d93ce4a259efb516f diff --git a/manifest.uuid b/manifest.uuid index ff54f427e8..3875f95cec 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -6d326d44fd1d626aae0e8456e5fa2049f1ce0789 \ No newline at end of file +4590e433f2a595bb80fb061024b0a3d2ca25b7b2 \ No newline at end of file diff --git a/src/btree.c b/src/btree.c index 2876526925..a59e6d10cf 100644 --- a/src/btree.c +++ b/src/btree.c @@ -1757,7 +1757,7 @@ int sqlite3BtreeOpen( ** If this Btree is a candidate for shared cache, try to find an ** existing BtShared object that we can share with */ - if( isMemdb==0 && isTempDb==0 ){ + if( isTempDb==0 ){ if( vfsFlags & SQLITE_OPEN_SHAREDCACHE ){ int nFullPathname = pVfs->mxPathname+1; char *zFullPathname = sqlite3Malloc(nFullPathname); @@ -1767,11 +1767,16 @@ int sqlite3BtreeOpen( sqlite3_free(p); return SQLITE_NOMEM; } - rc = sqlite3OsFullPathname(pVfs, zFilename, nFullPathname, zFullPathname); - if( rc ){ - sqlite3_free(zFullPathname); - sqlite3_free(p); - return rc; + if( isMemdb ){ + memcpy(zFullPathname, zFilename, sqlite3Strlen30(zFilename)+1); + }else{ + rc = sqlite3OsFullPathname(pVfs, zFilename, + nFullPathname, zFullPathname); + if( rc ){ + sqlite3_free(zFullPathname); + sqlite3_free(p); + return rc; + } } #if SQLITE_THREADSAFE mutexOpen = sqlite3MutexAlloc(SQLITE_MUTEX_STATIC_OPEN); diff --git a/src/pager.c b/src/pager.c index b93e0aa866..43c00c7ec4 100644 --- a/src/pager.c +++ b/src/pager.c @@ -4360,6 +4360,8 @@ int sqlite3PagerOpen( #ifndef SQLITE_OMIT_MEMORYDB if( flags & PAGER_MEMORY ){ memDb = 1; + zPathname = sqlite3DbStrDup(0, zFilename); + nPathname = sqlite3Strlen30(zPathname); zFilename = 0; } #endif @@ -6743,7 +6745,8 @@ int sqlite3PagerWalCallback(Pager *pPager){ */ int sqlite3PagerWalSupported(Pager *pPager){ const sqlite3_io_methods *pMethods = pPager->fd->pMethods; - return pPager->exclusiveMode || (pMethods->iVersion>=2 && pMethods->xShmMap); + return pPager->memDb==0 && + (pPager->exclusiveMode || (pMethods->iVersion>=2 && pMethods->xShmMap)); } /* diff --git a/test/attach.test b/test/attach.test index be5f9881c3..211c812804 100644 --- a/test/attach.test +++ b/test/attach.test @@ -857,6 +857,6 @@ do_test attach-10.2 { lrange [execsql { PRAGMA database_list; }] 9 end -} {4 noname {} 5 inmem {}} +} {4 noname {} 5 inmem :memory:} finish_test diff --git a/test/shared.test b/test/shared.test index 37564e6967..156f894a11 100644 --- a/test/shared.test +++ b/test/shared.test @@ -1056,7 +1056,29 @@ do_test shared-$av-15.2 { db close db2 close -} +# Shared cache on a :memory: database. +# +do_test shared-$av-16.1 { + sqlite3 db1 :memory: + sqlite3 db2 :memory: + db1 eval { + CREATE TABLE t1(x); INSERT INTO t1 VALUES(1),(2),(3); + } + db2 eval { + SELECT x FROM t1 ORDER BY x; + } +} {1 2 3} +do_test shared-$av-16.2 { + db2 eval { + INSERT INTO t1 VALUES(99); + DELETE FROM t1 WHERE x=2; + } + db1 eval { + SELECT x FROM t1 ORDER BY x; + } +} {1 3 99} + +} ;# end of autovacuum on/off loop sqlite3_enable_shared_cache $::enable_shared_cache finish_test