| OLD | NEW | 
 | (Empty) | 
|    1 # 2005 January 19 |  | 
|    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: shared3.test,v 1.4 2008/08/20 14:49:25 danielk1977 Exp $ |  | 
|   13  |  | 
|   14 set testdir [file dirname $argv0] |  | 
|   15 source $testdir/tester.tcl |  | 
|   16 db close |  | 
|   17  |  | 
|   18 ifcapable !shared_cache { |  | 
|   19   finish_test |  | 
|   20   return |  | 
|   21 } |  | 
|   22 set ::enable_shared_cache [sqlite3_enable_shared_cache 1] |  | 
|   23  |  | 
|   24 # Ticket #1824 |  | 
|   25 # |  | 
|   26 do_test shared3-1.1 { |  | 
|   27   file delete -force test.db test.db-journal |  | 
|   28   sqlite3 db1 test.db |  | 
|   29   db1 eval { |  | 
|   30     PRAGMA encoding=UTF16; |  | 
|   31     CREATE TABLE t1(x,y); |  | 
|   32     INSERT INTO t1 VALUES('abc','This is a test string'); |  | 
|   33   } |  | 
|   34   db1 close |  | 
|   35   sqlite3 db1 test.db |  | 
|   36   db1 eval {SELECT * FROM t1} |  | 
|   37 } {abc {This is a test string}} |  | 
|   38 do_test shared3-1.2 { |  | 
|   39   sqlite3 db2 test.db |  | 
|   40   db2 eval {SELECT y FROM t1 WHERE x='abc'} |  | 
|   41 } {{This is a test string}} |  | 
|   42  |  | 
|   43 db1 close |  | 
|   44 db2 close |  | 
|   45  |  | 
|   46 do_test shared3-2.1 { |  | 
|   47   sqlite3 db1 test.db |  | 
|   48   execsql { |  | 
|   49     PRAGMA main.cache_size = 10; |  | 
|   50   } db1 |  | 
|   51 } {} |  | 
|   52 do_test shared3-2.2 { |  | 
|   53   execsql { PRAGMA main.cache_size } db1 |  | 
|   54 } {10} |  | 
|   55 do_test shared3-2.3 { |  | 
|   56   sqlite3 db2 test.db |  | 
|   57   execsql { PRAGMA main.cache_size } db1 |  | 
|   58 } {10} |  | 
|   59 do_test shared3-2.4 { |  | 
|   60   execsql { PRAGMA main.cache_size } db2 |  | 
|   61 } {10} |  | 
|   62 do_test shared3-2.5 { |  | 
|   63   execsql { PRAGMA main.cache_size } db1 |  | 
|   64 } {10} |  | 
|   65  |  | 
|   66 # The cache-size should now be 10 pages. However at one point there was |  | 
|   67 # a bug that caused the cache size to return to the default value when |  | 
|   68 # a second connection was opened on the shared-cache (as happened in |  | 
|   69 # test case shared3-2.3 above). The goal of the following tests is to |  | 
|   70 # ensure that the cache-size really is 10 pages. |  | 
|   71 # |  | 
|   72 if {$::tcl_platform(platform)=="unix"} { |  | 
|   73   set alternative_name ./test.db |  | 
|   74 } else { |  | 
|   75   set alternative_name TEST.DB |  | 
|   76 } |  | 
|   77 do_test shared3-2.6 { |  | 
|   78   sqlite3 db3 $alternative_name |  | 
|   79   catchsql {select count(*) from sqlite_master} db3 |  | 
|   80 } {0 1} |  | 
|   81 do_test shared3-2.7 { |  | 
|   82   execsql { |  | 
|   83     BEGIN; |  | 
|   84     INSERT INTO t1 VALUES(10, randomblob(5000)) |  | 
|   85   } db1 |  | 
|   86   catchsql {select count(*) from sqlite_master} db3 |  | 
|   87 } {0 1} |  | 
|   88 do_test shared3-2.8 { |  | 
|   89   db3 close |  | 
|   90   execsql { |  | 
|   91     INSERT INTO t1 VALUES(10, randomblob(10000)) |  | 
|   92   } db1 |  | 
|   93   sqlite3 db3 $alternative_name |  | 
|   94  |  | 
|   95   # If the pager-cache is really still limited to 10 pages, then the INSERT |  | 
|   96   # statement above should have caused the pager to grab an exclusive lock |  | 
|   97   # on the database file so that the cache could be spilled. |  | 
|   98   # |  | 
|   99   catchsql {select count(*) from sqlite_master} db3 |  | 
|  100 } {1 {database is locked}} |  | 
|  101  |  | 
|  102 db1 close |  | 
|  103 db2 close |  | 
|  104 db3 close |  | 
|  105  |  | 
|  106 sqlite3_enable_shared_cache $::enable_shared_cache |  | 
|  107 finish_test |  | 
| OLD | NEW |