| OLD | NEW | 
 | (Empty) | 
|   1 # 2007 March 24 |  | 
|   2 # |  | 
|   3 # The author disclaims copyright to this source code.  In place of |  | 
|   4 # a legal notice, here is a blessing: |  | 
|   5 # |  | 
|   6 #    May you do good and not evil. |  | 
|   7 #    May you find forgiveness for yourself and forgive others. |  | 
|   8 #    May you share freely, never taking more than you give. |  | 
|   9 # |  | 
|  10 #*********************************************************************** |  | 
|  11 # |  | 
|  12 # $Id: cache.test,v 1.4 2007/08/22 02:56:44 drh Exp $ |  | 
|  13  |  | 
|  14 set testdir [file dirname $argv0] |  | 
|  15 source $testdir/tester.tcl |  | 
|  16  |  | 
|  17 ifcapable {!pager_pragmas} { |  | 
|  18   finish_test |  | 
|  19   return |  | 
|  20 } |  | 
|  21 sqlite3_soft_heap_limit 0 |  | 
|  22  |  | 
|  23 proc pager_cache_size {db} { |  | 
|  24   set bt [btree_from_db $db] |  | 
|  25   db_enter $db |  | 
|  26   array set stats [btree_pager_stats $bt] |  | 
|  27   db_leave $db |  | 
|  28   return $stats(page) |  | 
|  29 } |  | 
|  30  |  | 
|  31 do_test cache-1.1 { |  | 
|  32   pager_cache_size db |  | 
|  33 } {0} |  | 
|  34  |  | 
|  35 do_test cache-1.2 { |  | 
|  36   execsql { |  | 
|  37     PRAGMA auto_vacuum=OFF; |  | 
|  38     CREATE TABLE abc(a, b, c); |  | 
|  39     INSERT INTO abc VALUES(1, 2, 3); |  | 
|  40   } |  | 
|  41   pager_cache_size db |  | 
|  42 } {2} |  | 
|  43  |  | 
|  44 # At one point, repeatedly locking and unlocking the cache was causing |  | 
|  45 # a resource leak of one page per repetition. The page wasn't actually |  | 
|  46 # leaked, but would not be reused until the pager-cache was full (i.e.  |  | 
|  47 # 2000 pages by default). |  | 
|  48 # |  | 
|  49 # This tests that once the pager-cache is initialised, it can be locked |  | 
|  50 # and unlocked repeatedly without internally allocating any new pages. |  | 
|  51 # |  | 
|  52 set cache_size [pager_cache_size db] |  | 
|  53 for {set ii 0} {$ii < 10} {incr ii} { |  | 
|  54  |  | 
|  55   do_test cache-1.3.$ii { |  | 
|  56     execsql {SELECT * FROM abc} |  | 
|  57     pager_cache_size db |  | 
|  58   } $::cache_size |  | 
|  59  |  | 
|  60 } |  | 
|  61 sqlite3_soft_heap_limit $soft_limit |  | 
|  62  |  | 
|  63 finish_test |  | 
| OLD | NEW |