]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Remove the SQLITE_PAGECACHE_BLOCKALLOC compilation option.
authordan <dan@noemail.net>
Thu, 22 Sep 2011 14:56:31 +0000 (14:56 +0000)
committerdan <dan@noemail.net>
Thu, 22 Sep 2011 14:56:31 +0000 (14:56 +0000)
FossilOrigin-Name: 4eb4689834b538b9eeec5a5803528260e1aff78d

manifest
manifest.uuid
src/ctime.c
src/pcache1.c
src/test_config.c
test/ctime.test
test/memdb.test
test/memsubsys1.test
test/pcache2.test

index f689453daff424f69f1b835a6fbca28ff9174fda..0dbb2a594add8c87238a772b5cb3bd96a35be97c 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Add\sthe\sSQLITE_DB_STATUS_CACHE_HIT\sand\sMISS\soptions.\sFor\squerying\sthe\snumber\sof\scache\shits\sand\smisses\son\sa\sper-connection\sbasis.
-D 2011-09-22T14:41:16.523
+C Remove\sthe\sSQLITE_PAGECACHE_BLOCKALLOC\scompilation\soption.
+D 2011-09-22T14:56:31.229
 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
 F Makefile.in 8de00a4e52f308ef6d564834c0973e53646e0d4c
 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@@ -130,7 +130,7 @@ F src/btreeInt.h 67978c014fa4f7cc874032dd3aacadd8db656bc3
 F src/build.c 851e81f26a75abbb98bd99a7c5f10e8670d867bb
 F src/callback.c 0425c6320730e6d3981acfb9202c1bed9016ad1a
 F src/complete.c dc1d136c0feee03c2f7550bafc0d29075e36deac
-F src/ctime.c e3132ec65240b2e2f3d50831021eac387f27584d
+F src/ctime.c 3f2715d38635b8e86d344b36a6f7f3e446fa5ec3
 F src/date.c a3c6842bad7ae632281811de112a8ba63ff08ab3
 F src/delete.c ff68e5ef23aee08c0ff528f699a19397ed8bbed8
 F src/expr.c f4dcaeb8252c4b16fcdc245660f70ed366bc6cdd
@@ -172,7 +172,7 @@ F src/pager.h dbcaa791e8b6c3a6b77c168c5c27deec289fb176
 F src/parse.y 12b7ebd61ea54f0e1b1083ff69cc2c8ce9353d58
 F src/pcache.c 49e718c095810c6b3334e3a6d89970aceaddefce
 F src/pcache.h c683390d50f856d4cd8e24342ae62027d1bb6050
-F src/pcache1.c c8982f7048a70b7fd37975a8f6c84d6bc294175a
+F src/pcache1.c 24f5e85a78514584b46190260ba7ab0a66312197
 F src/pragma.c ebcd20f1e654f5cb3aeef864ed69c4697719fbaa
 F src/prepare.c e64261559a3187698a3e7e6c8b001a4f4f98dab4
 F src/printf.c 585a36b6a963df832cfb69505afa3a34ed5ef8a1
@@ -201,7 +201,7 @@ 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_config.c e342660556d64365aacea2b23cbb5e6654d7278f
+F src/test_config.c 9bc44df77f22cd0648c651fcd459353b8a984d7b
 F src/test_demovfs.c 20a4975127993f4959890016ae9ce5535a880094
 F src/test_devsym.c e7498904e72ba7491d142d5c83b476c4e76993bc
 F src/test_func.c cbdec5cededa0761daedde5baf06004a9bf416b5
@@ -358,7 +358,7 @@ F test/crash8.test 38767cb504bbe491de6be4a7006b154973a2309f
 F test/crashtest1.c 09c1c7d728ccf4feb9e481671e29dda5669bbcc2
 F test/createtab.test b5de160630b209c4b8925bdcbbaf48cc90b67fe8
 F test/cse.test 277350a26264495e86b1785f34d2d0c8600e021c
-F test/ctime.test 7f0bd5084d9dd7da9ad46901810896edd2ebb463
+F test/ctime.test 7bd009071e242aac4f18521581536b652b789a47
 F test/date.test a18a2ce81add84b17b06559e82ad7bb91bc6ddff
 F test/dbstatus.test a719af0f226bd280748a4bb9054c0a5a9fc1b16c
 F test/dbstatus2.test dc57b0d9610851c0ff58a8e1b5b191678398b72a
@@ -584,9 +584,9 @@ F test/mallocK.test d79968641d1b70d88f6c01bdb9a7eb4a55582cc9
 F test/malloc_common.tcl 2930895b0962823ec679853e67e58dd6d8198b3c
 F test/manydb.test 28385ae2087967aa05c38624cec7d96ec74feb3e
 F test/mem5.test c6460fba403c5703141348cd90de1c294188c68f
-F test/memdb.test 4b5d2671588ed59cb08642adc67fd78c666dc9c2
+F test/memdb.test 708a028d6d373e5b3842e4bdc8ba80998c9a4da6
 F test/memleak.test 10b9c6c57e19fc68c32941495e9ba1c50123f6e2
-F test/memsubsys1.test 39f1ddddf76ce51a3232aab0279668e23cf00f83
+F test/memsubsys1.test 16ce163ac1ace3d71bf0eaa6a821ed153addd91f
 F test/memsubsys2.test 3a1c1a9de48e5726faa85108b02459fae8cb9ee9
 F test/minmax.test 722d80816f7e096bf2c04f4111f1a6c1ba65453d
 F test/minmax2.test 33504c01a03bd99226144e4b03f7631a274d66e0
@@ -619,7 +619,7 @@ F test/pagerfault3.test f16e2efcb5fc9996d1356f7cbc44c998318ae1d7
 F test/pageropt.test 8146bf448cf09e87bb1867c2217b921fb5857806
 F test/pagesize.test 1dd51367e752e742f58e861e65ed7390603827a0
 F test/pcache.test 065aa286e722ab24f2e51792c1f093bf60656b16
-F test/pcache2.test bc67c6802989dba05cdf3a4574fd882e238c7ecf
+F test/pcache2.test a83efe2dec0d392f814bfc998def1d1833942025
 F test/permutations.test ad17319066a90e2db71823c3ff104795ffc71b31
 F test/pragma.test c8108e01da04f16e67e5754e610bc62c1b993f6c
 F test/pragma2.test 3a55f82b954242c642f8342b17dffc8b47472947
@@ -964,7 +964,7 @@ F tool/symbols.sh caaf6ccc7300fd43353318b44524853e222557d5
 F tool/tostr.awk e75472c2f98dd76e06b8c9c1367f4ab07e122d06
 F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f
 F tool/warnings.sh b7fdb2cc525f5ef4fa43c80e771636dd3690f9d2
-P 14e28eb9546906b33eb03e596ad104c8ca049d6c
-R 9879b749e51ddd30db2e7953d801cb26
+P 5100b6e9dc5107f0f835d0aac26fe6d4938ffc73
+R c0527ab7d53ddacfb2296ee9b8d0ee9c
 U dan
-Z f68e24447a093110c356752c29a0f88a
+Z f31c94b75567eb17d1f72beb13b1de1b
index a03b2aa84e4f6745074824abeb6287988f3079ad..e6521517285f2d1b9443525130a5c6e33685b2ba 100644 (file)
@@ -1 +1 @@
-5100b6e9dc5107f0f835d0aac26fe6d4938ffc73
\ No newline at end of file
+4eb4689834b538b9eeec5a5803528260e1aff78d
\ No newline at end of file
index cbf8ed55fa20178945abd3743421646d1f2c0731..028892d5496c82cd25f355834ccab8229bd8c4d7 100644 (file)
@@ -329,9 +329,6 @@ static const char * const azCompileOpt[] = {
 #ifdef SQLITE_OMIT_XFER_OPT
   "OMIT_XFER_OPT",
 #endif
-#ifdef SQLITE_PAGECACHE_BLOCKALLOC
-  "PAGECACHE_BLOCKALLOC",
-#endif
 #ifdef SQLITE_PERFORMANCE_TRACE
   "PERFORMANCE_TRACE",
 #endif
index de96e5242ae8e219b7ccae5a0c021e7b705bc067..077a7b2168079a6f054572b2a8b03a84ec0574f9 100644 (file)
@@ -24,8 +24,6 @@ typedef struct PgHdr1 PgHdr1;
 typedef struct PgFreeslot PgFreeslot;
 typedef struct PGroup PGroup;
 
-typedef struct PGroupBlock PGroupBlock;
-typedef struct PGroupBlockList PGroupBlockList;
 
 /* Each page cache (or PCache) belongs to a PGroup.  A PGroup is a set 
 ** of one or more PCaches that are able to recycle each others unpinned
@@ -56,66 +54,8 @@ struct PGroup {
   int mxPinned;                  /* nMaxpage + 10 - nMinPage */
   int nCurrentPage;              /* Number of purgeable pages allocated */
   PgHdr1 *pLruHead, *pLruTail;   /* LRU list of unpinned pages */
-#ifdef SQLITE_PAGECACHE_BLOCKALLOC
-  int isBusy;                    /* Do not run ReleaseMemory() if true */
-  PGroupBlockList *pBlockList;   /* List of block-lists for this group */
-#endif
-};
-
-/*
-** If SQLITE_PAGECACHE_BLOCKALLOC is defined when the library is built,
-** each PGroup structure has a linked list of the the following starting
-** at PGroup.pBlockList. There is one entry for each distinct page-size 
-** currently used by members of the PGroup (i.e. 1024 bytes, 4096 bytes
-** etc.). Variable PGroupBlockList.nByte is set to the actual allocation
-** size requested by each pcache, which is the database page-size plus
-** the various header structures used by the pcache, pager and btree layers.
-** Usually around (pgsz+200) bytes.
-**
-** This size (pgsz+200) bytes is not allocated efficiently by some
-** implementations of malloc. In particular, some implementations are only
-** able to allocate blocks of memory chunks of 2^N bytes, where N is some
-** integer value. Since the page-size is a power of 2, this means we
-** end up wasting (pgsz-200) bytes in each allocation.
-**
-** If SQLITE_PAGECACHE_BLOCKALLOC is defined, the (pgsz+200) byte blocks
-** are not allocated directly. Instead, blocks of roughly M*(pgsz+200) bytes 
-** are requested from malloc allocator. After a block is returned,
-** sqlite3MallocSize() is used to determine how many (pgsz+200) byte
-** allocations can fit in the space returned by malloc(). This value may
-** be more than M.
-**
-** The blocks are stored in a doubly-linked list. Variable PGroupBlock.nEntry
-** contains the number of allocations that will fit in the aData[] space.
-** nEntry is limited to the number of bits in bitmask mUsed. If a slot
-** within aData is in use, the corresponding bit in mUsed is set. Thus
-** when (mUsed+1==(1 << nEntry)) the block is completely full.
-**
-** Each time a slot within a block is freed, the block is moved to the start
-** of the linked-list. And if a block becomes completely full, then it is
-** moved to the end of the list. As a result, when searching for a free
-** slot, only the first block in the list need be examined. If it is full,
-** then it is guaranteed that all blocks are full.
-*/
-struct PGroupBlockList {
-  int nByte;                     /* Size of each allocation in bytes */
-  PGroupBlock *pFirst;           /* First PGroupBlock in list */
-  PGroupBlock *pLast;            /* Last PGroupBlock in list */
-  PGroupBlockList *pNext;        /* Next block-list attached to group */
 };
 
-struct PGroupBlock {
-  Bitmask mUsed;                 /* Mask of used slots */
-  int nEntry;                    /* Maximum number of allocations in aData[] */
-  u8 *aData;                     /* Pointer to data block */
-  PGroupBlock *pNext;            /* Next PGroupBlock in list */
-  PGroupBlock *pPrev;            /* Previous PGroupBlock in list */
-  PGroupBlockList *pList;        /* Owner list */
-};
-
-/* Minimum value for PGroupBlock.nEntry */
-#define PAGECACHE_BLOCKALLOC_MINENTRY 15
-
 /* Each page cache is an instance of the following object.  Every
 ** open database file (including each in-memory database and each
 ** temporary or transient database) has a single page cache which
@@ -219,17 +159,6 @@ static SQLITE_WSD struct PCacheGlobal {
 #define PGHDR1_TO_PAGE(p)    (void*)(((char*)p) - p->pCache->szPage)
 #define PAGE_TO_PGHDR1(c, p) (PgHdr1*)(((char*)p) + c->szPage)
 
-/*
-** Blocks used by the SQLITE_PAGECACHE_BLOCKALLOC blocks to store/retrieve 
-** a PGroupBlock pointer based on a pointer to a page buffer. 
-*/
-#define PAGE_SET_BLOCKPTR(pCache, pPg, pBlock) \
-  ( *(PGroupBlock **)&(((u8*)pPg)[sizeof(PgHdr1) + pCache->szPage]) = pBlock )
-
-#define PAGE_GET_BLOCKPTR(pCache, pPg) \
-  ( *(PGroupBlock **)&(((u8*)pPg)[sizeof(PgHdr1) + pCache->szPage]) )
-
-
 /*
 ** Macros to enter and leave the PCache LRU mutex.
 */
@@ -355,139 +284,14 @@ static int pcache1MemSize(void *p){
 }
 #endif /* SQLITE_ENABLE_MEMORY_MANAGEMENT */
 
-#ifdef SQLITE_PAGECACHE_BLOCKALLOC
-/*
-** The block pBlock belongs to list pList but is not currently linked in.
-** Insert it into the start of the list.
-*/
-static void addBlockToList(PGroupBlockList *pList, PGroupBlock *pBlock){
-  pBlock->pPrev = 0;
-  pBlock->pNext = pList->pFirst;
-  pList->pFirst = pBlock;
-  if( pBlock->pNext ){
-    pBlock->pNext->pPrev = pBlock;
-  }else{
-    assert( pList->pLast==0 );
-    pList->pLast = pBlock;
-  }
-}
-
-/*
-** If there are no blocks in the list headed by pList, remove pList
-** from the pGroup->pBlockList list and free it with sqlite3_free().
-*/
-static void freeListIfEmpty(PGroup *pGroup, PGroupBlockList *pList){
-  assert( sqlite3_mutex_held(pGroup->mutex) );
-  if( pList->pFirst==0 ){
-    PGroupBlockList **pp;
-    for(pp=&pGroup->pBlockList; *pp!=pList; pp=&(*pp)->pNext);
-    *pp = (*pp)->pNext;
-    sqlite3_free(pList);
-  }
-}
-#endif /* SQLITE_PAGECACHE_BLOCKALLOC */
-
 /*
 ** Allocate a new page object initially associated with cache pCache.
 */
 static PgHdr1 *pcache1AllocPage(PCache1 *pCache){
   int nByte = sizeof(PgHdr1) + pCache->szPage;
-  void *pPg = 0;
-  PgHdr1 *p;
-
-#ifdef SQLITE_PAGECACHE_BLOCKALLOC
-  PGroup *pGroup = pCache->pGroup;
-  PGroupBlockList *pList;
-  PGroupBlock *pBlock;
-  int i;
-
-  nByte += sizeof(PGroupBlockList *);
-  nByte = ROUND8(nByte);
-
-  for(pList=pGroup->pBlockList; pList; pList=pList->pNext){
-    if( pList->nByte==nByte ) break;
-  }
-  if( pList==0 ){
-    PGroupBlockList *pNew;
-    assert( pGroup->isBusy==0 );
-    assert( sqlite3_mutex_held(pGroup->mutex) );
-    pGroup->isBusy = 1;  /* Disable sqlite3PcacheReleaseMemory() */
-    pNew = (PGroupBlockList *)sqlite3MallocZero(sizeof(PGroupBlockList));
-    pGroup->isBusy = 0;  /* Reenable sqlite3PcacheReleaseMemory() */
-    if( pNew==0 ){
-      /* malloc() failure. Return early. */
-      return 0;
-    }
-#ifdef SQLITE_DEBUG
-    for(pList=pGroup->pBlockList; pList; pList=pList->pNext){
-      assert( pList->nByte!=nByte );
-    }
-#endif
-    pNew->nByte = nByte;
-    pNew->pNext = pGroup->pBlockList;
-    pGroup->pBlockList = pNew;
-    pList = pNew;
-  }
+  PgHdr1 *p = 0;
+  void *pPg;
 
-  pBlock = pList->pFirst;
-  if( pBlock==0 || pBlock->mUsed==(((Bitmask)1<<pBlock->nEntry)-1) ){
-    int sz;
-
-    /* Allocate a new block. Try to allocate enough space for the PGroupBlock
-    ** structure and MINENTRY allocations of nByte bytes each. If the 
-    ** allocator returns more memory than requested, then more than MINENTRY 
-    ** allocations may fit in it. */
-    assert( sqlite3_mutex_held(pGroup->mutex) );
-    pcache1LeaveMutex(pCache->pGroup);
-    sz = sizeof(PGroupBlock) + PAGECACHE_BLOCKALLOC_MINENTRY * nByte;
-    pBlock = (PGroupBlock *)sqlite3Malloc(sz);
-    pcache1EnterMutex(pCache->pGroup);
-
-    if( !pBlock ){
-      freeListIfEmpty(pGroup, pList);
-      return 0;
-    }
-    pBlock->nEntry = (sqlite3MallocSize(pBlock) - sizeof(PGroupBlock)) / nByte;
-    if( pBlock->nEntry>=BMS ){
-      pBlock->nEntry = BMS-1;
-    }
-    pBlock->pList = pList;
-    pBlock->mUsed = 0;
-    pBlock->aData = (u8 *)&pBlock[1];
-    addBlockToList(pList, pBlock);
-
-    sz = sqlite3MallocSize(pBlock);
-    sqlite3_mutex_enter(pcache1.mutex);
-    sqlite3StatusAdd(SQLITE_STATUS_PAGECACHE_OVERFLOW, sz);
-    sqlite3_mutex_leave(pcache1.mutex);
-  }
-
-  for(i=0; pPg==0 && ALWAYS(i<pBlock->nEntry); i++){
-    if( 0==(pBlock->mUsed & ((Bitmask)1<<i)) ){
-      pBlock->mUsed |= ((Bitmask)1<<i);
-      pPg = (void *)&pBlock->aData[pList->nByte * i];
-    }
-  }
-  assert( pPg );
-  PAGE_SET_BLOCKPTR(pCache, pPg, pBlock);
-
-  /* If the block is now full, shift it to the end of the list */
-  if( pBlock->mUsed==(((Bitmask)1<<pBlock->nEntry)-1) && pList->pLast!=pBlock ){
-    assert( pList->pFirst==pBlock );
-    assert( pBlock->pPrev==0 );
-    assert( pList->pLast->pNext==0 );
-    pList->pFirst = pBlock->pNext;
-    pList->pFirst->pPrev = 0;
-    pBlock->pPrev = pList->pLast;
-    pBlock->pNext = 0;
-    pList->pLast->pNext = pBlock;
-    pList->pLast = pBlock;
-  }
-  p = PAGE_TO_PGHDR1(pCache, pPg);
-  if( pCache->bPurgeable ){
-    pCache->pGroup->nCurrentPage++;
-  }
-#else
   /* The group mutex must be released before pcache1Alloc() is called. This
   ** is because it may call sqlite3_release_memory(), which assumes that 
   ** this mutex is not held. */
@@ -495,15 +299,13 @@ static PgHdr1 *pcache1AllocPage(PCache1 *pCache){
   pcache1LeaveMutex(pCache->pGroup);
   pPg = pcache1Alloc(nByte);
   pcache1EnterMutex(pCache->pGroup);
+
   if( pPg ){
     p = PAGE_TO_PGHDR1(pCache, pPg);
     if( pCache->bPurgeable ){
       pCache->pGroup->nCurrentPage++;
     }
-  }else{
-    p = 0;
   }
-#endif
   return p;
 }
 
@@ -517,49 +319,8 @@ static PgHdr1 *pcache1AllocPage(PCache1 *pCache){
 static void pcache1FreePage(PgHdr1 *p){
   if( ALWAYS(p) ){
     PCache1 *pCache = p->pCache;
-    void *pPg = PGHDR1_TO_PAGE(p);
-
-#ifdef SQLITE_PAGECACHE_BLOCKALLOC
-    PGroupBlock *pBlock = PAGE_GET_BLOCKPTR(pCache, pPg);
-    PGroupBlockList *pList = pBlock->pList;
-    int i = ((u8 *)pPg - pBlock->aData) / pList->nByte;
-
-    assert( pPg==(void *)&pBlock->aData[i*pList->nByte] );
-    assert( pBlock->mUsed & ((Bitmask)1<<i) );
-    pBlock->mUsed &= ~((Bitmask)1<<i);
-
-    /* Remove the block from the list. If it is completely empty, free it.
-    ** Or if it is not completely empty, re-insert it at the start of the
-    ** list. */
-    if( pList->pFirst==pBlock ){
-      pList->pFirst = pBlock->pNext;
-      if( pList->pFirst ) pList->pFirst->pPrev = 0;
-    }else{
-      pBlock->pPrev->pNext = pBlock->pNext;
-    }
-    if( pList->pLast==pBlock ){
-      pList->pLast = pBlock->pPrev;
-      if( pList->pLast ) pList->pLast->pNext = 0;
-    }else{
-      pBlock->pNext->pPrev = pBlock->pPrev;
-    }
-
-    if( pBlock->mUsed==0 ){
-      PGroup *pGroup = p->pCache->pGroup;
-
-      int sz = sqlite3MallocSize(pBlock);
-      sqlite3_mutex_enter(pcache1.mutex);
-      sqlite3StatusAdd(SQLITE_STATUS_PAGECACHE_OVERFLOW, -sz);
-      sqlite3_mutex_leave(pcache1.mutex);
-      freeListIfEmpty(pGroup, pList);
-      sqlite3_free(pBlock);
-    }else{
-      addBlockToList(pList, pBlock);
-    }
-#else
     assert( sqlite3_mutex_held(p->pCache->pGroup->mutex) );
-    pcache1Free(pPg);
-#endif
+    pcache1Free(PGHDR1_TO_PAGE(p));
     if( pCache->bPurgeable ){
       pCache->pGroup->nCurrentPage--;
     }
@@ -1170,9 +931,6 @@ void sqlite3PCacheSetDefault(void){
 */
 int sqlite3PcacheReleaseMemory(int nReq){
   int nFree = 0;
-#ifdef SQLITE_PAGECACHE_BLOCKALLOC
-  if( pcache1.grp.isBusy ) return 0;
-#endif
   assert( sqlite3_mutex_notheld(pcache1.grp.mutex) );
   assert( sqlite3_mutex_notheld(pcache1.mutex) );
   if( pcache1.pStart==0 ){
index 5af60bafd065608e8979441e55a822e9d666afae..5b0ffaa697d65884500b2f262d5f2564d7e1e38e 100644 (file)
@@ -555,12 +555,6 @@ Tcl_SetVar2(interp, "sqlite_options", "long_double",
   Tcl_SetVar2(interp, "sqlite_options", "yytrackmaxstackdepth", "0", TCL_GLOBAL_ONLY);
 #endif
 
-#ifdef SQLITE_PAGECACHE_BLOCKALLOC
-  Tcl_SetVar2(interp, "sqlite_options", "blockalloc", "1", TCL_GLOBAL_ONLY);
-#else
-  Tcl_SetVar2(interp, "sqlite_options", "blockalloc", "0", TCL_GLOBAL_ONLY);
-#endif
-
 #define LINKVAR(x) { \
     static const int cv_ ## x = SQLITE_ ## x; \
     Tcl_LinkVar(interp, "SQLITE_" #x, (char *)&(cv_ ## x), \
index 11216f901683bce914905e7e2a9bfcca074b8c27..e4cb156168be57f9208e8bba8f247cbd740dac6d 100644 (file)
@@ -223,16 +223,5 @@ do_test ctime-2.5.$tc {
   } ]
 } {0 {{}}}
 
-ifcapable blockalloc {
-  do_test ctime-3.1a {
-    db eval {SELECT sqlite_compileoption_used('PAGECACHE_BLOCKALLOC')}
-  } {1}
-} else {
-  do_test ctime-3.1b {
-    db eval {SELECT sqlite_compileoption_used('PAGECACHE_BLOCKALLOC')}
-  } {0}
-}
-
-
 
 finish_test
index ec3accffa646c1fc6f17829fe0587ebc47fc6fb0..1da3d7c58b43b05639fae630b6d123ef925b1967 100644 (file)
@@ -407,7 +407,7 @@ do_test memdb-8.2 {
 
 # Test that auto-vacuum works with in-memory databases.
 # 
-ifcapable autovacuum&&!blockalloc {
+ifcapable autovacuum {
   do_test memdb-9.1 {
     db close
     sqlite3 db test.db
index dbd4f233ec0265fcfbe7dcd191df04fddaeb8cd6..7eecf083a77da3e190dbc2b7198ad2335779d213 100644 (file)
@@ -25,13 +25,6 @@ if {[permutation] == "memsubsys1"} {
   return
 }
 
-# Nor will it work if the pager is allocating memory in blocks.
-#
-ifcapable blockalloc {
-  finish_test
-  return
-}
-
 # This procedure constructs a new database in test.db.  It fills
 # this database with many small records (enough to force multiple
 # rebalance operations in the btree-layer and to require a large
index bbfb90d29cc2b10f95b856b5aca8f4ff03ce40f1..77e7a2613273030c10ba4a76e0825804444d3f8b 100644 (file)
 set testdir [file dirname $argv0]
 source $testdir/tester.tcl
 
-# If compiled with blockalloc, pagecache memory is not used. Which
-# causes these tests to fail.
-#
-ifcapable blockalloc {
-  finish_test
-  return
-}
-
 # Set up a pcache memory pool so that we can easily track how many
 # pages are being used for cache.
 #