diff --git a/manifest b/manifest
index 34602a8057..59399a0392 100644
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Fix\stypo\snoted\sby\s#1599.\s(CVS\s2916)
-D 2006-01-11T05:49:50
+C Fix\sbugs\scaused\sby\sassuming\sthat\sshared-schemas\sare\sinitialized.\s(CVS\s2917)
+D 2006-01-11T14:09:31
 F Makefile.in ab3ffd8d469cef4477257169b82810030a6bb967
 F Makefile.linux-gcc aee18d8a05546dcf1888bd4547e442008a49a092
 F README 9c4e2d6706bdcc3efdd773ce752a8cdab4f90028
@@ -32,11 +32,11 @@ F sqlite3.def ccf06c86eaa2c123271db41352d2b3c9e4ec42a5
 F sqlite3.pc.in 985b9bf34192a549d7d370e0f0b6b34a4f61369a
 F src/alter.c d0dd079b9ef0d551ff4a4ce09ee270c07b307bbb
 F src/analyze.c 7d2b7ab9a9c2fd6e55700f69064dfdd3e36d7a8a
-F src/attach.c 8438a2808f89c01cfd472e676a27d771ac4405aa
+F src/attach.c fb93d00ab7cb392579ea7db0a1247196d7220788
 F src/auth.c cdec356a5cd8b217c346f816c5912221537fe87f
-F src/btree.c 874eaba6dec1660c7c917d5afc790f69de82cf2e
+F src/btree.c e1f6b2e22484d754b79b7c9b43e7a09af259f0f6
 F src/btree.h 5663c4f43e8521546ccebc8fc95acb013b8f3184
-F src/build.c 59c4a6fc0e89590c7eec3154acb4cf6644674d7d
+F src/build.c c7847f299ded7fec899bfda74d4d31ba9f80aa75
 F src/callback.c 51fe813309f7cf69d3d19a2e7be2103130186efd
 F src/complete.c df1681cef40dec33a286006981845f87b194e7a4
 F src/date.c a927bdbb51296ac398d2f667086a7072c099e5ab
@@ -62,18 +62,18 @@ F src/os_win.h 41a946bea10f61c158ce8645e7646b29d44f122b
 F src/pager.c 0a59a320b0da6b22d2dd4411d16e300ff1b947c8
 F src/pager.h e0acb095b3ad0bca48f2ab00c87346665643f64f
 F src/parse.y 83df51fea35f68f7e07384d75dce83d1ed30434c
-F src/pragma.c 711992e440ce78569322dd625d2cfe1cd696ccfb
-F src/prepare.c 3283bb65b4b217a092c9cbf65014774e6c3a142d
+F src/pragma.c d439d257c1bcacbc09d38820ac578749df900562
+F src/prepare.c 65b166b806e4af6e0035acdd5f6a24e2ec02b66d
 F src/printf.c f47a2f4b5387cd2ebb12e9117a1a5d6bd9a2b812
 F src/random.c d40f8d356cecbd351ccfab6eaedd7ec1b54f5261
 F src/select.c 579cfdd250c5598de7c867134f7d35a2099b1dcc
 F src/server.c 519e308651e30102dd3d1f4053ac64c14267e44c
 F src/shell.c 66b073375efbdee19045e7e0cd38b85f9aff71da
 F src/sqlite.h.in 821b93f918d126c54d9a91fc928434945655edc3
-F src/sqliteInt.h d7584dc5b8e15f1732a195ece9e93049ccde35fa
+F src/sqliteInt.h 829f8c22767ceaed717042087e7fb4d599a3c44c
 F src/table.c 486dcfce532685b53b5a2b5da8bba0ded6fb2316
 F src/tclsqlite.c d650bea0248fc0a310ddc2cb94273a3a5021fddf
-F src/test1.c 5f634ce9aa452dbcc362993c9612047df800216c
+F src/test1.c b2923fd22ec44cf05d6d51dc460e8ed8e0d5f241
 F src/test2.c ca74a1d8aeb7d9606e8f6b762c5daf85c1a3f92b
 F src/test3.c 9742aa146eb750cab81c1d5605286c3a0eb88054
 F src/test4.c a8fd681e139e1c61f22a77d07fc3a99cb28fff3f
@@ -155,7 +155,7 @@ F test/descidx3.test 56daed47e2eb91cef15a21a656691bb82a4699ba
 F test/diskfull.test d828d72adfc9e2d1a194d25996718c1989152cf9
 F test/distinctagg.test 2b89d1c5220d966a30ba4b40430338669301188b
 F test/enc.test 7a03417a1051fe8bc6c7641cf4c8c3f7e0066d52
-F test/enc2.test 6ea55732ddffd340f3d3a29cc33645e9ded481c7
+F test/enc2.test 0c8d3142c032c4f907b546d99e00b787f9700bb7
 F test/enc3.test f6a5f0b7b7f3a88f030d3143729b87cd5c86d837
 F test/expr.test a513aceb5d89042232e0d07ac5a1591965cf3963
 F test/fkey1.test 153004438d51e6769fb1ce165f6313972d6263ce
@@ -225,7 +225,7 @@ F test/select5.test 07a90ab3c7e3f0a241a9cdea1d997b2c8a89ff0b
 F test/select6.test f459a19bdac0501c4d3eb1a4df4b7a76f1bb8ad4
 F test/select7.test 1bf795b948c133a15a2a5e99d3270e652ec58ce6
 F test/server1.test 9d2d5b17b537911214a7e2a2728ff4f6ff16319c
-F test/shared.test 2c0089652d936771ca7eeab51cc3c93a9e2dce36
+F test/shared.test b94678497bf6051faf68ecb1f692d5cc04b8d330
 F test/sort.test 0e4456e729e5a92a625907c63dcdedfbe72c5dc5
 F test/subquery.test e6de53332c0301b3cfa34edc3f3cd5fa1e859efd
 F test/subselect.test 2d13fb7f450db3595adcdd24079a0dd1d2d6abc2
@@ -264,7 +264,7 @@ F test/types3.test e5f789503849294de74a23b433168e8211523a25
 F test/unique.test 0253c4227a5dc533e312202ce21ecfad18058d18
 F test/update.test 7669ca789d62c258b678e8aa7a22a57eac10f2cf
 F test/utf16.test f9c13f4e2b48c42d0bfc96647d82fdf7bc11fc55
-F test/vacuum.test 61e2b6e7dcf0eec90cdf6cc63e30321c8b037b1f
+F test/vacuum.test 37f998b841cb335397c26d9bbc3457182af2565f
 F test/vacuum2.test 5d77e98c458bcdbeecc6327de5107179ba1aa095
 F test/varint.test ab7b110089a08b9926ed7390e7e97bdefeb74102
 F test/view.test ce0f0ad39fa4a3572acffcf1e634850ee151aae0
@@ -340,7 +340,7 @@ F www/tclsqlite.tcl bb0d1357328a42b1993d78573e587c6dcbc964b9
 F www/vdbe.tcl 87a31ace769f20d3627a64fa1fade7fed47b90d0
 F www/version3.tcl a99cf5f6d8bd4d5537584a2b342f0fb9fa601d8b
 F www/whentouse.tcl 97e2b5cd296f7d8057e11f44427dea8a4c2db513
-P 59a7a56c1bba84b5c60a2f3e25bf51d933075aaf
-R c2e57d06b8aad90e5d4817eb22be0455
+P 1b368c7c5ca7974e0975dc4e3c931680c9e8df1f
+R 1449ef4e2e811b71b71db6703a8a24ab
 U danielk1977
-Z 4e9d5528a047a73ba151041fd7b20eeb
+Z 8596c20274e6f745d3adfacf59742397
diff --git a/manifest.uuid b/manifest.uuid
index 8a876aefd9..8356830bf5 100644
--- a/manifest.uuid
+++ b/manifest.uuid
@@ -1 +1 @@
-1b368c7c5ca7974e0975dc4e3c931680c9e8df1f
\ No newline at end of file
+3970eb875d1830d35b3a70a7583a8ab6b238cad6
\ No newline at end of file
diff --git a/src/attach.c b/src/attach.c
index eca7eb7ecf..f1f1bbbd99 100644
--- a/src/attach.c
+++ b/src/attach.c
@@ -11,7 +11,7 @@
 *************************************************************************
 ** This file contains code used to implement the ATTACH and DETACH commands.
 **
-** $Id: attach.c,v 1.44 2006/01/10 07:14:23 danielk1977 Exp $
+** $Id: attach.c,v 1.45 2006/01/11 14:09:31 danielk1977 Exp $
 */
 #include "sqliteInt.h"
 
@@ -171,7 +171,6 @@ static void attachFunc(
   ** we found it.
   */
   if( rc==SQLITE_OK ){
-    db->flags &= ~SQLITE_Initialized;
     sqlite3SafetyOn(db);
     rc = sqlite3Init(db, &zErrDyn);
     sqlite3SafetyOff(db);
diff --git a/src/btree.c b/src/btree.c
index daa45277ab..b1bd141ed1 100644
--- a/src/btree.c
+++ b/src/btree.c
@@ -9,7 +9,7 @@
 **    May you share freely, never taking more than you give.
 **
 *************************************************************************
-** $Id: btree.c,v 1.289 2006/01/10 13:58:48 drh Exp $
+** $Id: btree.c,v 1.290 2006/01/11 14:09:31 danielk1977 Exp $
 **
 ** This file implements a external (disk-based) database using BTrees.
 ** For a detailed discussion of BTrees, refer to
@@ -1579,6 +1579,7 @@ int sqlite3BtreeOpen(
       return SQLITE_NOMEM;
     }
     for(pBt=pTsd->pBtree; pBt; pBt=pBt->pNext){
+      assert( pBt->nRef>0 );
       if( 0==strcmp(zFullPathname, sqlite3pager_filename(pBt->pPager)) ){
         p->pBt = pBt;
         *ppBtree = p;
@@ -6498,3 +6499,27 @@ int sqlite3BtreeLockTable(Btree *p, int iTab, u8 isWriteLock){
 #endif
   return rc;
 }
+
+#if defined(SQLITE_TEST) && !defined(NO_TCL)
+#include <tcl.h>
+int sqlite3_shared_cache_report(
+  void * clientData,
+  Tcl_Interp *interp,
+  int objc,
+  Tcl_Obj *CONST objv[]
+){
+  ThreadData *pTd = sqlite3ThreadData();
+  if( pTd->useSharedData ){
+    BtShared *pBt;
+    Tcl_Obj *pRet = Tcl_NewObj();
+    for(pBt=pTd->pBtree; pBt; pBt=pBt->pNext){
+      const char *zFile = sqlite3pager_filename(pBt->pPager);
+      Tcl_ListObjAppendElement(interp, pRet, Tcl_NewStringObj(zFile, -1));
+      Tcl_ListObjAppendElement(interp, pRet, Tcl_NewIntObj(pBt->nRef));
+    }
+    Tcl_SetObjResult(interp, pRet);
+  }
+  return TCL_OK;
+}
+#endif
+
diff --git a/src/build.c b/src/build.c
index e7c1742e29..65ce2e5331 100644
--- a/src/build.c
+++ b/src/build.c
@@ -22,7 +22,7 @@
 **     COMMIT
 **     ROLLBACK
 **
-** $Id: build.c,v 1.375 2006/01/10 17:58:23 danielk1977 Exp $
+** $Id: build.c,v 1.376 2006/01/11 14:09:32 danielk1977 Exp $
 */
 #include "sqliteInt.h"
 #include <ctype.h>
@@ -255,7 +255,6 @@ Table *sqlite3FindTable(sqlite3 *db, const char *zName, const char *zDatabase){
   Table *p = 0;
   int i;
   assert( zName!=0 );
-  assert( (db->flags & SQLITE_Initialized) || db->init.busy );
   for(i=OMIT_TEMPDB; i<db->nDb; i++){
     int j = (i<2) ? i^1 : i;   /* Search TEMP before MAIN */
     if( zDatabase!=0 && sqlite3StrICmp(zDatabase, db->aDb[j].zName) ) continue;
@@ -311,7 +310,6 @@ Table *sqlite3LocateTable(Parse *pParse, const char *zName, const char *zDbase){
 Index *sqlite3FindIndex(sqlite3 *db, const char *zName, const char *zDb){
   Index *p = 0;
   int i;
-  assert( (db->flags & SQLITE_Initialized) || db->init.busy );
   for(i=OMIT_TEMPDB; i<db->nDb; i++){
     int j = (i<2) ? i^1 : i;  /* Search TEMP before MAIN */
     Schema *pSchema = db->aDb[j].pSchema;
@@ -393,7 +391,6 @@ void sqlite3ResetInternalSchema(sqlite3 *db, int iDb){
   int i, j;
 
   assert( iDb>=0 && iDb<db->nDb );
-  db->flags &= ~SQLITE_Initialized;
   for(i=iDb; i<db->nDb; i++){
     Db *pDb = &db->aDb[i];
     if( pDb->pSchema ){
diff --git a/src/pragma.c b/src/pragma.c
index b9f510cd7a..54fb19f647 100644
--- a/src/pragma.c
+++ b/src/pragma.c
@@ -11,7 +11,7 @@
 *************************************************************************
 ** This file contains code used to implement the PRAGMA command.
 **
-** $Id: pragma.c,v 1.112 2006/01/10 17:58:23 danielk1977 Exp $
+** $Id: pragma.c,v 1.113 2006/01/11 14:09:32 danielk1977 Exp $
 */
 #include "sqliteInt.h"
 #include "os.h"
@@ -808,7 +808,10 @@ void sqlite3Pragma(
       ** will be overwritten when the schema is next loaded. If it does not
       ** already exists, it will be created to use the new encoding value.
       */
-      if( !(pParse->db->flags&SQLITE_Initialized) ){
+      if( 
+        !(DbHasProperty(db, 0, DB_SchemaLoaded)) || 
+        DbHasProperty(db, 0, DB_Empty) 
+      ){
         for(pEnc=&encnames[0]; pEnc->zName; pEnc++){
           if( 0==sqlite3StrICmp(zRight, pEnc->zName) ){
             ENC(pParse->db) = pEnc->enc;
diff --git a/src/prepare.c b/src/prepare.c
index c59d7fc82a..fcd0d19bd3 100644
--- a/src/prepare.c
+++ b/src/prepare.c
@@ -13,7 +13,7 @@
 ** interface, and routines that contribute to loading the database schema
 ** from disk.
 **
-** $Id: prepare.c,v 1.18 2006/01/10 17:58:23 danielk1977 Exp $
+** $Id: prepare.c,v 1.19 2006/01/11 14:09:32 danielk1977 Exp $
 */
 #include "sqliteInt.h"
 #include "os.h"
@@ -154,27 +154,7 @@ static int sqlite3InitOne(sqlite3 *db, int iDb, char **pzErrMsg){
 #endif
 
   assert( iDb>=0 && iDb<db->nDb );
-
   assert( db->aDb[iDb].pSchema );
-#if 0
-  if( 0==db->aDb[iDb].pSchema ){
-    Schema *pS = sqlite3SchemaGet(db->aDb[iDb].pBt);
-    db->aDb[iDb].pSchema = pS;
-    if( !pS ){
-      return SQLITE_NOMEM;
-    }else if( pS->file_format!=0 ){
-      /* This means that the shared-schema associated with the the btree
-      ** is already open and populated.
-      */
-      if( pS->enc!=ENC(db) ){
-        sqlite3SetString(pzErrMsg, "attached databases must use the same"
-            " text encoding as main database", (char*)0);
-        return SQLITE_ERROR;
-      }
-      return SQLITE_OK;
-    }
-  }
-#endif
 
   /* zMasterSchema and zInitScript are set to point at the master schema
   ** and initialisation script appropriate for the database being
@@ -212,7 +192,9 @@ static int sqlite3InitOne(sqlite3 *db, int iDb, char **pzErrMsg){
   */
   pDb = &db->aDb[iDb];
   if( pDb->pBt==0 ){
-    if( !OMIT_TEMPDB && iDb==1 ) DbSetProperty(db, 1, DB_SchemaLoaded);
+    if( !OMIT_TEMPDB && iDb==1 ){
+      DbSetProperty(db, 1, DB_SchemaLoaded);
+    }
     return SQLITE_OK;
   }
   rc = sqlite3BtreeCursor(pDb->pBt, MASTER_ROOT, 0, 0, 0, &curMain);
@@ -272,6 +254,8 @@ static int sqlite3InitOne(sqlite3 *db, int iDb, char **pzErrMsg){
         return SQLITE_ERROR;
       }
     }
+  }else{
+    DbSetProperty(db, iDb, DB_Empty);
   }
   pDb->pSchema->enc = ENC(db);
 
@@ -343,9 +327,9 @@ static int sqlite3InitOne(sqlite3 *db, int iDb, char **pzErrMsg){
 */
 int sqlite3Init(sqlite3 *db, char **pzErrMsg){
   int i, rc;
+  int called_initone = 0;
   
   if( db->init.busy ) return SQLITE_OK;
-  assert( (db->flags & SQLITE_Initialized)==0 );
   rc = SQLITE_OK;
   db->init.busy = 1;
   for(i=0; rc==SQLITE_OK && i<db->nDb; i++){
@@ -354,6 +338,7 @@ int sqlite3Init(sqlite3 *db, char **pzErrMsg){
     if( rc ){
       sqlite3ResetInternalSchema(db, i);
     }
+    called_initone = 1;
   }
 
   /* Once all the other databases have been initialised, load the schema
@@ -366,19 +351,16 @@ int sqlite3Init(sqlite3 *db, char **pzErrMsg){
     if( rc ){
       sqlite3ResetInternalSchema(db, 1);
     }
+    called_initone = 1;
   }
 #endif
 
   db->init.busy = 0;
-  if( rc==SQLITE_OK ){
-    db->flags |= SQLITE_Initialized;
+  if( rc==SQLITE_OK && called_initone ){
     sqlite3CommitInternalChanges(db);
   }
 
-  if( rc!=SQLITE_OK ){
-    db->flags &= ~SQLITE_Initialized;
-  }
-  return rc;
+  return rc; 
 }
 
 /*
@@ -389,11 +371,8 @@ int sqlite3ReadSchema(Parse *pParse){
   int rc = SQLITE_OK;
   sqlite3 *db = pParse->db;
   if( !db->init.busy ){
-    if( (db->flags & SQLITE_Initialized)==0 ){
-      rc = sqlite3Init(db, &pParse->zErrMsg);
-    }
+    rc = sqlite3Init(db, &pParse->zErrMsg);
   }
-  assert( rc!=SQLITE_OK || (db->flags & SQLITE_Initialized) || db->init.busy );
   if( rc!=SQLITE_OK ){
     pParse->rc = rc;
     pParse->nErr++;
diff --git a/src/sqliteInt.h b/src/sqliteInt.h
index 5dc84f2dec..1710f9293b 100644
--- a/src/sqliteInt.h
+++ b/src/sqliteInt.h
@@ -11,7 +11,7 @@
 *************************************************************************
 ** Internal interface definitions for SQLite.
 **
-** @(#) $Id: sqliteInt.h,v 1.460 2006/01/10 17:58:23 danielk1977 Exp $
+** @(#) $Id: sqliteInt.h,v 1.461 2006/01/11 14:09:32 danielk1977 Exp $
 */
 #ifndef _SQLITEINT_H_
 #define _SQLITEINT_H_
@@ -423,6 +423,7 @@ struct Schema {
 */
 #define DB_SchemaLoaded    0x0001  /* The schema has been loaded */
 #define DB_UnresetViews    0x0002  /* Some views have defined column names */
+#define DB_Empty           0x0004  /* The file is empty (length 0 bytes) */
 
 #define SQLITE_UTF16NATIVE (SQLITE_BIGENDIAN?SQLITE_UTF16BE:SQLITE_UTF16LE)
 
@@ -522,7 +523,6 @@ struct sqlite3 {
 ** transaction is active on that particular database file.
 */
 #define SQLITE_VdbeTrace      0x00000001  /* True to trace VDBE execution */
-#define SQLITE_Initialized    0x00000002  /* True after initialization */
 #define SQLITE_Interrupt      0x00000004  /* Cancel current operation */
 #define SQLITE_InTrans        0x00000008  /* True if in a transaction */
 #define SQLITE_InternChanges  0x00000010  /* Uncommitted Hash table changes */
diff --git a/src/test1.c b/src/test1.c
index 6e54789a91..d98640b4c3 100644
--- a/src/test1.c
+++ b/src/test1.c
@@ -13,7 +13,7 @@
 ** is not included in the SQLite library.  It is used for automated
 ** testing of the SQLite library.
 **
-** $Id: test1.c,v 1.186 2006/01/09 16:12:05 danielk1977 Exp $
+** $Id: test1.c,v 1.187 2006/01/11 14:09:32 danielk1977 Exp $
 */
 #include "sqliteInt.h"
 #include "tcl.h"
@@ -3523,5 +3523,9 @@ int Sqlitetest1_Init(Tcl_Interp *interp){
       (char*)&sqlite3_fullsync_count, TCL_LINK_INT);
 #endif /* OS_UNIX */
   set_options(interp);
+
+  int sqlite3_shared_cache_report(void *, Tcl_Interp *, int, Tcl_Obj *CONST[]);
+  Tcl_CreateObjCommand(interp, "sqlite_shared_cache_report", 
+      sqlite3_shared_cache_report, 0, 0);
   return TCL_OK;
 }
diff --git a/test/enc2.test b/test/enc2.test
index d6b16a0947..a21fca5b29 100644
--- a/test/enc2.test
+++ b/test/enc2.test
@@ -13,7 +13,7 @@
 # various suported unicode encodings (UTF-8, UTF-16, UTF-16le and
 # UTF-16be).
 #
-# $Id: enc2.test,v 1.25 2006/01/03 00:33:50 drh Exp $
+# $Id: enc2.test,v 1.26 2006/01/11 14:09:32 danielk1977 Exp $
 
 set testdir [file dirname $argv0]
 source $testdir/tester.tcl
@@ -473,4 +473,45 @@ ifcapable {complete} {
   } {0}
 }
 
+# Test that the encoding of an empty database may still be set after the
+# (empty) schema has been initialized.
+file delete -force test.db
+do_test enc2-9.1 {
+  sqlite3 db test.db
+  execsql {
+    PRAGMA encoding = 'UTF-8';
+    PRAGMA encoding;
+  }
+} {UTF-8}
+do_test enc2-9.2 {
+  sqlite3 db test.db
+  execsql {
+    PRAGMA encoding = 'UTF-16le';
+    PRAGMA encoding;
+  }
+} {UTF-16le}
+do_test enc2-9.3 {
+  sqlite3 db test.db
+  execsql {
+    SELECT * FROM sqlite_master;
+    PRAGMA encoding = 'UTF-8';
+    PRAGMA encoding;
+  }
+} {UTF-8}
+do_test enc2-9.4 {
+  sqlite3 db test.db
+  execsql {
+    PRAGMA encoding = 'UTF-16le';
+    CREATE TABLE abc(a, b, c);
+    PRAGMA encoding;
+  }
+} {UTF-16le}
+do_test enc2-9.5 {
+  sqlite3 db test.db
+  execsql {
+    PRAGMA encoding = 'UTF-8';
+    PRAGMA encoding;
+  }
+} {UTF-16le}
+
 finish_test
diff --git a/test/shared.test b/test/shared.test
index 8323d4b3d4..af23aa23e7 100644
--- a/test/shared.test
+++ b/test/shared.test
@@ -9,7 +9,7 @@
 #
 #***********************************************************************
 #
-# $Id: shared.test,v 1.10 2006/01/11 01:08:34 drh Exp $
+# $Id: shared.test,v 1.11 2006/01/11 14:09:32 danielk1977 Exp $
 
 set testdir [file dirname $argv0]
 source $testdir/tester.tcl
@@ -608,26 +608,6 @@ catch {db close}
 catch {db2 close}
 file delete -force test.db test2.db
 
-if 0 {
-
-do_test shared-9.1 {
-  sqlite3 db test.db
-} {}
-do_test shared-9.2 {
-  execsql {CREATE TABLE t1(a);}
-} {}
-
-file delete -force test.db
-sqlite3 db test.db; set DB [sqlite3_connection_pointer db]
-do_test shared-9.3 {
-  execsql {
-    CREATE TABLE t5(a);
-    INSERT INTO t5 VALUES('one');
-  } db
-} {}
-
-}
-
 #---------------------------------------------------------------------------
 # The following tests - shared-9.* - test interactions between TEMP triggers
 # and shared-schemas.
diff --git a/test/vacuum.test b/test/vacuum.test
index 63eee972fb..58f0045df0 100644
--- a/test/vacuum.test
+++ b/test/vacuum.test
@@ -11,7 +11,7 @@
 # This file implements regression tests for SQLite library.  The
 # focus of this file is testing the VACUUM statement.
 #
-# $Id: vacuum.test,v 1.36 2006/01/03 00:33:50 drh Exp $
+# $Id: vacuum.test,v 1.37 2006/01/11 14:09:32 danielk1977 Exp $
 
 set testdir [file dirname $argv0]
 source $testdir/tester.tcl
@@ -164,6 +164,11 @@ do_test vacuum-2.5 {
   }
   sqlite3 db3 test.db
   execsql {
+    -- The "SELECT * FROM sqlite_master" statement ensures that this test
+    -- works when shared-cache is enabled. If shared-cache is enabled, then
+    -- db3 shares a cache with db2 (but not db - it was opened as 
+    -- "./test.db").
+    SELECT * FROM sqlite_master;
     SELECT * FROM t7 LIMIT 1
   } db3
   execsql {