CoolFace
Modelpublic

AryaWu/sqlite

sourceHugging Faceupdated 9mo agoView on Hugging Face
0likes
shared3.test143 linesDownload Raw Back to test
1# 2005 January 192#3# The author disclaims copyright to this source code.  In place of4# 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 14set testdir [file dirname $argv0]15source $testdir/tester.tcl16set testprefix shared317db close18 19ifcapable !shared_cache {20  finish_test21  return22}23set ::enable_shared_cache [sqlite3_enable_shared_cache 1]24 25# Ticket #182426#27do_test shared3-1.1 {28  forcedelete test.db test.db-journal29  sqlite3 db1 test.db30  db1 eval {31    PRAGMA encoding=UTF16;32    CREATE TABLE t1(x,y);33    INSERT INTO t1 VALUES('abc','This is a test string');34  }35  db1 close36  sqlite3 db1 test.db37  db1 eval {SELECT * FROM t1}38} {abc {This is a test string}}39do_test shared3-1.2 {40  sqlite3 db2 test.db41  db2 eval {SELECT y FROM t1 WHERE x='abc'}42} {{This is a test string}}43 44db1 close45db2 close46 47do_test shared3-2.1 {48  sqlite3 db1 test.db49  execsql {50    PRAGMA main.cache_size = 10;51  } db152} {}53do_test shared3-2.2 {54  execsql { PRAGMA main.cache_size } db155} {10}56do_test shared3-2.3 {57  sqlite3 db2 test.db58  execsql { PRAGMA main.cache_size } db159} {10}60do_test shared3-2.4 {61  execsql { PRAGMA main.cache_size } db262} {10}63do_test shared3-2.5 {64  execsql { PRAGMA main.cache_size } db165} {10}66 67# The cache-size should now be 10 pages. However at one point there was68# a bug that caused the cache size to return to the default value when69# a second connection was opened on the shared-cache (as happened in70# test case shared3-2.3 above). The goal of the following tests is to71# ensure that the cache-size really is 10 pages.72#73#if {$::tcl_platform(platform) eq "unix"} {74#  set alternative_name ./test.db75#} else {76#  set alternative_name TEST.DB77#}78do_test shared3-2.6 {79  #sqlite3 db3 $alternative_name80  sqlite3 db3 "file:./test.db?cache=private" -uri 181  catchsql {select count(*) from sqlite_master} db382} {0 1}83do_test shared3-2.7 {84  execsql {85    BEGIN;86    INSERT INTO t1 VALUES(10, randomblob(5000))87  } db188  catchsql {select count(*) from sqlite_master} db389} {0 1}90do_test shared3-2.8 {91  db3 close92  execsql {93    INSERT INTO t1 VALUES(10, randomblob(10000))94  } db195 96  # If the pager-cache is really still limited to 10 pages, then the INSERT97  # statement above should have caused the pager to grab an exclusive lock98  # on the database file so that the cache could be spilled.99  #100  catch { sqlite3 db3 "file:./test.db?cache=private" -uri 1 }101  catchsql {select count(*) from sqlite_master} db3102} {1 {database is locked}}103 104db1 close105db2 close106db3 close107 108#-------------------------------------------------------------------------109# At one point this was causing a faulty assert to fail.110#111forcedelete test.db112sqlite3 db test.db113sqlite3 db2 test.db114do_execsql_test 3.1 {115  PRAGMA auto_vacuum = 2;116  CREATE TABLE t1(x, y);117  INSERT INTO t1 VALUES(randomblob(500), randomblob(500));118  INSERT INTO t1 SELECT randomblob(500), randomblob(500) FROM t1;119  INSERT INTO t1 SELECT randomblob(500), randomblob(500) FROM t1;120  INSERT INTO t1 SELECT randomblob(500), randomblob(500) FROM t1;121  INSERT INTO t1 SELECT randomblob(500), randomblob(500) FROM t1;122  INSERT INTO t1 SELECT randomblob(500), randomblob(500) FROM t1;123  INSERT INTO t1 SELECT randomblob(500), randomblob(500) FROM t1;124  INSERT INTO t1 SELECT randomblob(500), randomblob(500) FROM t1;125}126do_test 3.2 {127  execsql { SELECT count(*) FROM sqlite_master } db2128} {1}129do_execsql_test 3.3 {130  BEGIN;131    DELETE FROM t1 WHERE 1;132    PRAGMA incremental_vacuum;133} {}134do_test 3.4 {135  execsql { SELECT count(*) FROM sqlite_master } db2136} {1}137do_test 3.5 {138  execsql { COMMIT }139} {}140 141sqlite3_enable_shared_cache $::enable_shared_cache142finish_test143