]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Have user interfaces report out the filename of in-memory databases as an shared-cache-memdb
authordrh <drh@noemail.net>
Sun, 27 May 2012 01:19:04 +0000 (01:19 +0000)
committerdrh <drh@noemail.net>
Sun, 27 May 2012 01:19:04 +0000 (01:19 +0000)
empty string, as it always has.  This simplifies the changes.

FossilOrigin-Name: 595dfdbffefb2598cba89980f885289d1c5f5833

manifest
manifest.uuid
src/btree.c
src/pager.c
src/pager.h
src/test_btree.c
src/vdbe.c
test/attach.test

index 1c29c833156157b9a78f2a85ee49e521395e3a1e..64fa40b9fcd2b9f3a5f81eea1dc2a46ca707a234 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Only\sallow\s:memory:\sdatabases\sto\sshare\scache\sif\sthere\sare\screated\susing\sa\nURI\sfilename.\s\sThis\sminimizes\sthe\srisk\sof\sbreakages\sin\slegacy\sapplications\nthat\shave\sshared-cache\senabled\sbut\salso\suse\s:memory:\sdatabases\swhich\sthey\nexpect\sto\skeep\sseparate.
-D 2012-05-26T20:08:49.030
+C Have\suser\sinterfaces\sreport\sout\sthe\sfilename\sof\sin-memory\sdatabases\sas\san\nempty\sstring,\sas\sit\salways\shas.\s\sThis\ssimplifies\sthe\schanges.
+D 2012-05-27T01:19:04.951
 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 e5e992199f1368343071a22dbebd467f4009f6a5
+F src/btree.c 964c7862e1e27c543d2fff2e537ceadc4026c682
 F src/btree.h 48a013f8964f12d944d90e4700df47b72dd6d923
 F src/btreeInt.h 38a639c0542c29fe8331a221c4aed0cb8686249e
 F src/build.c 2bb2163bb1e69f59e9f36a9413079ead42fa1d2c
@@ -161,8 +161,8 @@ 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 5a86e85e393705d09fd60e9e525cfb9ff59a8022
-F src/pager.h ef1eaf8593e78f73885c1dfac27ad83bee23bdc5
+F src/pager.c 9d4d6406512002d9a243ec27b9c01e93fda43e36
+F src/pager.h 8b8c9bc065a3c66769df8724dfdf492ee1aab3c5
 F src/parse.y f29df90bd3adc64b33114ab1de9fb7768fcf2099
 F src/pcache.c f8043b433a57aba85384a531e3937a804432a346
 F src/pcache.h 1b5dcc3dc8103d03e625b177023ee67764fa6b7c
@@ -194,7 +194,7 @@ F src/test9.c bea1e8cf52aa93695487badedd6e1886c321ea60
 F src/test_async.c 0612a752896fad42d55c3999a5122af10dcf22ad
 F src/test_autoext.c 30e7bd98ab6d70a62bb9ba572e4c7df347fe645e
 F src/test_backup.c c129c91127e9b46e335715ae2e75756e25ba27de
-F src/test_btree.c 47cd771250f09cdc6e12dda5bc71bc0b3abc96e2
+F src/test_btree.c 5b89601dcb42a33ba8b820a6b763cc9cb48bac16
 F src/test_config.c 0de329e736eb4aa5845069bed630e5c72f012264
 F src/test_demovfs.c 20a4975127993f4959890016ae9ce5535a880094
 F src/test_devsym.c e7498904e72ba7491d142d5c83b476c4e76993bc
@@ -234,7 +234,7 @@ F src/update.c d3076782c887c10e882996550345da9c4c9f9dea
 F src/utf.c 890c67dcfcc7a74623c95baac7535aadfe265e84
 F src/util.c 4f6cfad661b2e3454b0cdd5b1b9d39a54942d0e3
 F src/vacuum.c bfd53f9bd20a8fdb70b0fa8e77182b866875c0d8
-F src/vdbe.c e1d26b98288889c22f00cf4851ec351ee67ad8b9
+F src/vdbe.c b6cb2ac43263843a5612892c0ad2309609b32c26
 F src/vdbe.h 18f581cac1f4339ec3299f3e0cc6e11aec654cdb
 F src/vdbeInt.h 6ff4180a05683566a8835d12f7ec504b22932c82
 F src/vdbeapi.c 3662b6a468a2a4605a15dfab313baa6dff81ad91
@@ -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 29cf17b5793ad345f97fbfedcaabe6c06a0b5e8e
+F test/attach.test 0d112b7713611fdf0340260192749737135fda5f
 F test/attach2.test e54436ed956d3d88bdee61221da59bf3935a0966
 F test/attach3.test d89ccfe4fe6e2b5e368d480fcdfe4b496c54cf4e
 F test/attach4.test 53bf502f17647c6d6c5add46dda6bac8b6f4665c
@@ -998,7 +998,7 @@ F tool/tostr.awk e75472c2f98dd76e06b8c9c1367f4ab07e122d06
 F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f
 F tool/warnings-clang.sh a8a0a3babda96dfb1ff51adda3cbbf3dfb7266c2
 F tool/warnings.sh fbc018d67fd7395f440c28f33ef0f94420226381
-P 4590e433f2a595bb80fb061024b0a3d2ca25b7b2
-R 150ee74d31f8ee4186fa530c4e755088
+P e3ad61e0308a8442c2bdb7cdb3465576cd39ed4a
+R c398af805389f6295630a739d754fa6b
 U drh
-Z d012f21feec13fdb57a1a9d954ad6a98
+Z e51262406d85326f19add0be1c076b3b
index d36bcf291c33c6af38b9c3b5ca39ce5a06f1916a..e441849bffbf8b7988e2ae603323f994d3b34434 100644 (file)
@@ -1 +1 @@
-e3ad61e0308a8442c2bdb7cdb3465576cd39ed4a
\ No newline at end of file
+595dfdbffefb2598cba89980f885289d1c5f5833
\ No newline at end of file
index 136cc196a8e30d04369e2083c6e62d387720ae45..58a9dce1e394a77832fcb0c7c9d91b0d65cf4ae9 100644 (file)
@@ -1786,7 +1786,7 @@ int sqlite3BtreeOpen(
 #endif
       for(pBt=GLOBAL(BtShared*,sqlite3SharedCacheList); pBt; pBt=pBt->pNext){
         assert( pBt->nRef>0 );
-        if( 0==strcmp(zFullPathname, sqlite3PagerFilename(pBt->pPager))
+        if( 0==strcmp(zFullPathname, sqlite3PagerFilename(pBt->pPager, 0))
                  && sqlite3PagerVfs(pBt->pPager)==pVfs ){
           int iDb;
           for(iDb=db->nDb-1; iDb>=0; iDb--){
@@ -8051,14 +8051,15 @@ char *sqlite3BtreeIntegrityCheck(
 #endif /* SQLITE_OMIT_INTEGRITY_CHECK */
 
 /*
-** Return the full pathname of the underlying database file.
+** Return the full pathname of the underlying database file.  Return
+** an empty string if the database is in-memory or a TEMP database.
 **
 ** The pager filename is invariant as long as the pager is
 ** open so it is safe to access without the BtShared mutex.
 */
 const char *sqlite3BtreeGetFilename(Btree *p){
   assert( p->pBt->pPager!=0 );
-  return sqlite3PagerFilename(p->pBt->pPager);
+  return sqlite3PagerFilename(p->pBt->pPager, 1);
 }
 
 /*
index 0154a5d7f6a5e23c4f0fa849f221775981a9ad07..425fb78ce427aad3c64adda9f2cf514cab9ed5d3 100644 (file)
@@ -4360,7 +4360,7 @@ int sqlite3PagerOpen(
 #ifndef SQLITE_OMIT_MEMORYDB
   if( flags & PAGER_MEMORY ){
     memDb = 1;
-    if( zFilename ){
+    if( zFilename && zFilename[0] ){
       zPathname = sqlite3DbStrDup(0, zFilename);
       if( zPathname==0  ) return SQLITE_NOMEM;
       nPathname = sqlite3Strlen30(zPathname);
@@ -6301,9 +6301,16 @@ int sqlite3PagerSavepoint(Pager *pPager, int op, int iSavepoint){
 
 /*
 ** Return the full pathname of the database file.
+**
+** Except, if the pager is in-memory only, then return an empty string if
+** nullIfMemDb is true.  This routine is called with nullIfMemDb==1 when
+** used to report the filename to the user, for compatibility with legacy
+** behavior.  But when the Btree needs to know the filename for matching to
+** shared cache, it uses nullIfMemDb==0 so that in-memory databases can
+** participate in shared-cache.
 */
-const char *sqlite3PagerFilename(Pager *pPager){
-  return pPager->zFilename;
+const char *sqlite3PagerFilename(Pager *pPager, int nullIfMemDb){
+  return (nullIfMemDb && pPager->memDb) ? "" : pPager->zFilename;
 }
 
 /*
@@ -6748,8 +6755,7 @@ int sqlite3PagerWalCallback(Pager *pPager){
 */
 int sqlite3PagerWalSupported(Pager *pPager){
   const sqlite3_io_methods *pMethods = pPager->fd->pMethods;
-  return pPager->memDb==0 && 
-        (pPager->exclusiveMode || (pMethods->iVersion>=2 && pMethods->xShmMap));
+  return pPager->exclusiveMode || (pMethods->iVersion>=2 && pMethods->xShmMap);
 }
 
 /*
index eca8a2f077e3504172e3c8f8b0612a3fc6a6451f..2b60e058dad495e56ea90a052b221dfa6692f5ee 100644 (file)
@@ -151,7 +151,7 @@ int sqlite3PagerCloseWal(Pager *pPager);
 u8 sqlite3PagerIsreadonly(Pager*);
 int sqlite3PagerRefcount(Pager*);
 int sqlite3PagerMemUsed(Pager*);
-const char *sqlite3PagerFilename(Pager*);
+const char *sqlite3PagerFilename(Pager*, int);
 const sqlite3_vfs *sqlite3PagerVfs(Pager*);
 sqlite3_file *sqlite3PagerFile(Pager*);
 const char *sqlite3PagerJournalname(Pager*);
index 0048397e9ede9832642a11c55890effe4b7a775c..db72889b2afb6272828dda866dccf122a49a7299 100644 (file)
@@ -33,7 +33,7 @@ int sqlite3BtreeSharedCacheReport(
   BtShared *pBt;
   Tcl_Obj *pRet = Tcl_NewObj();
   for(pBt=GLOBAL(BtShared*,sqlite3SharedCacheList); pBt; pBt=pBt->pNext){
-    const char *zFile = sqlite3PagerFilename(pBt->pPager);
+    const char *zFile = sqlite3PagerFilename(pBt->pPager, 1);
     Tcl_ListObjAppendElement(interp, pRet, Tcl_NewStringObj(zFile, -1));
     Tcl_ListObjAppendElement(interp, pRet, Tcl_NewIntObj(pBt->nRef));
   }
index fa5180c9a42c801442e612b9aface1c0ffedb98c..ec4ea2a55dd8e4866913a3d18b0d1680d4659194 100644 (file)
@@ -5511,7 +5511,7 @@ case OP_JournalMode: {    /* out2-prerelease */
   if( !sqlite3PagerOkToChangeJournalMode(pPager) ) eNew = eOld;
 
 #ifndef SQLITE_OMIT_WAL
-  zFilename = sqlite3PagerFilename(pPager);
+  zFilename = sqlite3PagerFilename(pPager, 1);
 
   /* Do not allow a transition to journal_mode=WAL for a database
   ** in temporary storage or if the VFS does not support shared memory 
index 211c812804f00e758e8412519ca3524459ea3945..be5f9881c31833e2da37256dfb19f2c66f3c8c9f 100644 (file)
@@ -857,6 +857,6 @@ do_test attach-10.2 {
   lrange [execsql {
     PRAGMA database_list;
   }] 9 end
-} {4 noname {} 5 inmem :memory:}
+} {4 noname {} 5 inmem {}}
 
 finish_test