| Index: third_party/sqlite/src/test/shared.test
|
| diff --git a/third_party/sqlite/src/test/shared.test b/third_party/sqlite/src/test/shared.test
|
| index 35ddf08820355a2566bee8a6b0e03f73945feca4..4eab476582c2230ca24cdcdadda3205ba2217563 100644
|
| --- a/third_party/sqlite/src/test/shared.test
|
| +++ b/third_party/sqlite/src/test/shared.test
|
| @@ -27,7 +27,7 @@ set ::enable_shared_cache [sqlite3_enable_shared_cache 1]
|
| foreach av [list 0 1] {
|
|
|
| # Open the database connection and execute the auto-vacuum pragma
|
| -file delete -force test.db
|
| +forcedelete test.db
|
| sqlite3 db test.db
|
|
|
| ifcapable autovacuum {
|
| @@ -293,9 +293,9 @@ catch {db3 close}
|
| # db2.main -> ./test2.db
|
| # db2.test -> ./test.db
|
| #
|
| -file delete -force test.db
|
| -file delete -force test2.db
|
| -file delete -force test2.db-journal
|
| +forcedelete test.db
|
| +forcedelete test2.db
|
| +forcedelete test2.db-journal
|
| sqlite3 db test.db
|
| sqlite3 db2 test2.db
|
| do_test shared-$av.4.1.1 {
|
| @@ -426,7 +426,7 @@ catch {db close}
|
| # Tests shared-5.*
|
| #
|
| foreach db [list test.db test1.db test2.db test3.db] {
|
| - file delete -force $db ${db}-journal
|
| + forcedelete $db ${db}-journal
|
| }
|
| do_test shared-$av.5.1.1 {
|
| sqlite3 db1 test.db
|
| @@ -557,7 +557,7 @@ do_test shared-$av.6.1.4 {
|
| catch {db1 close}
|
| catch {db2 close}
|
| foreach f [list test.db test2.db] {
|
| - file delete -force $f ${f}-journal
|
| + forcedelete $f ${f}-journal
|
| }
|
|
|
| #--------------------------------------------------------------------------
|
| @@ -643,7 +643,7 @@ unset -nocomplain contents
|
| # The following tests try to trick the shared-cache code into assuming
|
| # the wrong encoding for a database.
|
| #
|
| -file delete -force test.db test.db-journal
|
| +forcedelete test.db test.db-journal
|
| ifcapable utf16 {
|
| do_test shared-$av.8.1.1 {
|
| sqlite3 db test.db
|
| @@ -675,7 +675,7 @@ ifcapable utf16 {
|
| }
|
| } {UTF-8}
|
|
|
| - file delete -force test2.db test2.db-journal
|
| + forcedelete test2.db test2.db-journal
|
| do_test shared-$av.8.2.1 {
|
| execsql {
|
| ATTACH 'test2.db' AS aux;
|
| @@ -693,7 +693,7 @@ ifcapable utf16 {
|
|
|
| catch {db close}
|
| catch {db2 close}
|
| - file delete -force test.db test2.db
|
| + forcedelete test.db test2.db
|
|
|
| do_test shared-$av.8.3.2 {
|
| sqlite3 db test.db
|
| @@ -732,7 +732,7 @@ if 0 {
|
|
|
| catch {db close}
|
| catch {db2 close}
|
| -file delete -force test.db test2.db
|
| +forcedelete test.db test2.db
|
|
|
| #---------------------------------------------------------------------------
|
| # The following tests - shared-9.* - test interactions between TEMP triggers
|
| @@ -772,7 +772,7 @@ do_test shared-$av.9.3 {
|
| #
|
| do_test shared-$av.10.1 {
|
| # Create a small sample database with two connections to it (db and db2).
|
| - file delete -force test.db
|
| + forcedelete test.db
|
| sqlite3 db test.db
|
| sqlite3 db2 test.db
|
| execsql {
|
| @@ -853,7 +853,7 @@ do_test shared-$av.10.11 {
|
| } {}
|
|
|
| do_test shared-$av.11.1 {
|
| - file delete -force test.db
|
| + forcedelete test.db
|
| sqlite3 db test.db
|
| sqlite3 db2 test.db
|
| execsql {
|
| @@ -904,9 +904,11 @@ do_test shared-$av.11.8 {
|
| set res
|
| } {1 4 {} 7}
|
| if {[llength [info command sqlite3_shared_cache_report]]==1} {
|
| - do_test shared-$av.11.9 {
|
| - string tolower [sqlite3_shared_cache_report]
|
| - } [string tolower [list [file nativename [file normalize test.db]] 2]]
|
| + ifcapable curdir {
|
| + do_test shared-$av.11.9 {
|
| + string tolower [sqlite3_shared_cache_report]
|
| + } [string tolower [list [file nativename [file normalize test.db]] 2]]
|
| + }
|
| }
|
|
|
| do_test shared-$av.11.11 {
|
| @@ -916,7 +918,7 @@ do_test shared-$av.11.11 {
|
|
|
| # This tests that if it is impossible to free any pages, SQLite will
|
| # exceed the limit set by PRAGMA cache_size.
|
| -file delete -force test.db test.db-journal
|
| +forcedelete test.db test.db-journal
|
| sqlite3 db test.db
|
| ifcapable pager_pragmas {
|
| do_test shared-$av.12.1 {
|
| @@ -963,7 +965,7 @@ do_test shared-$av.12.X {
|
| # database handle. This covers an extra line or two.
|
| #
|
| do_test shared-$av.13.1 {
|
| - file delete -force test2.db test3.db test4.db test5.db
|
| + forcedelete test2.db test3.db test4.db test5.db
|
| sqlite3 db :memory:
|
| execsql {
|
| ATTACH 'test2.db' AS aux2;
|
| @@ -1026,7 +1028,7 @@ do_test shared-$av.14.3 {
|
| # assert() statements in the C code.
|
| #
|
| do_test shared-$av-15.1 {
|
| - file delete -force test.db
|
| + forcedelete test.db
|
| sqlite3 db test.db -fullmutex 1
|
| sqlite3 db2 test.db -fullmutex 1
|
| execsql {
|
| @@ -1056,7 +1058,127 @@ do_test shared-$av-15.2 {
|
| db close
|
| db2 close
|
|
|
| -}
|
| +# Shared cache on a :memory: database. This only works for URI filenames.
|
| +#
|
| +do_test shared-$av-16.1 {
|
| + sqlite3 db1 file::memory: -uri 1
|
| + sqlite3 db2 file::memory: -uri 1
|
| + db1 eval {
|
| + CREATE TABLE t1(x); INSERT INTO t1 VALUES(1),(2),(3);
|
| + }
|
| + db2 eval {
|
| + SELECT x FROM t1 ORDER BY x;
|
| + }
|
| +} {1 2 3}
|
| +do_test shared-$av-16.2 {
|
| + db2 eval {
|
| + INSERT INTO t1 VALUES(99);
|
| + DELETE FROM t1 WHERE x=2;
|
| + }
|
| + db1 eval {
|
| + SELECT x FROM t1 ORDER BY x;
|
| + }
|
| +} {1 3 99}
|
| +
|
| +# Verify that there is no cache sharing ordinary (non-URI) filenames are
|
| +# used.
|
| +#
|
| +do_test shared-$av-16.3 {
|
| + db1 close
|
| + db2 close
|
| + sqlite3 db1 :memory:
|
| + sqlite3 db2 :memory:
|
| + db1 eval {
|
| + CREATE TABLE t1(x); INSERT INTO t1 VALUES(4),(5),(6);
|
| + }
|
| + catchsql {
|
| + SELECT * FROM t1;
|
| + } db2
|
| +} {1 {no such table: t1}}
|
| +
|
| +# Shared cache on named memory databases.
|
| +#
|
| +do_test shared-$av-16.4 {
|
| + db1 close
|
| + db2 close
|
| + forcedelete test.db test.db-wal test.db-journal
|
| + sqlite3 db1 file:test.db?mode=memory -uri 1
|
| + sqlite3 db2 file:test.db?mode=memory -uri 1
|
| + db1 eval {
|
| + CREATE TABLE t1(x); INSERT INTO t1 VALUES(1),(2),(3);
|
| + }
|
| + db2 eval {
|
| + SELECT x FROM t1 ORDER BY x;
|
| + }
|
| +} {1 2 3}
|
| +do_test shared-$av-16.5 {
|
| + db2 eval {
|
| + INSERT INTO t1 VALUES(99);
|
| + DELETE FROM t1 WHERE x=2;
|
| + }
|
| + db1 eval {
|
| + SELECT x FROM t1 ORDER BY x;
|
| + }
|
| +} {1 3 99}
|
| +do_test shared-$av-16.6 {
|
| + file exists test.db
|
| +} {0} ;# Verify that the database is in-memory
|
| +
|
| +# Shared cache on named memory databases with different names.
|
| +#
|
| +do_test shared-$av-16.7 {
|
| + db1 close
|
| + db2 close
|
| + forcedelete test1.db test2.db
|
| + sqlite3 db1 file:test1.db?mode=memory -uri 1
|
| + sqlite3 db2 file:test2.db?mode=memory -uri 1
|
| + db1 eval {
|
| + CREATE TABLE t1(x); INSERT INTO t1 VALUES(1),(2),(3);
|
| + }
|
| + catchsql {
|
| + SELECT x FROM t1 ORDER BY x;
|
| + } db2
|
| +} {1 {no such table: t1}}
|
| +do_test shared-$av-16.8 {
|
| + file exists test1.db
|
| +} {0} ;# Verify that the database is in-memory
|
| +
|
| +# Shared cache on named memory databases attached to readonly connections.
|
| +#
|
| +do_test shared-$av-16.8.1 {
|
| + db1 close
|
| + db2 close
|
| +
|
| + sqlite3 db test1.db
|
| + db eval {
|
| + CREATE TABLE yy(a, b);
|
| + INSERT INTO yy VALUES(77, 88);
|
| + }
|
| + db close
|
| +
|
| + sqlite3 db1 test1.db -uri 1 -readonly 1
|
| + sqlite3 db2 test2.db -uri 1
|
| +
|
| + db1 eval {
|
| + ATTACH 'file:mem?mode=memory&cache=shared' AS shared;
|
| + CREATE TABLE shared.xx(a, b);
|
| + INSERT INTO xx VALUES(55, 66);
|
| + }
|
| + db2 eval {
|
| + ATTACH 'file:mem?mode=memory&cache=shared' AS shared;
|
| + SELECT * FROM xx;
|
| + }
|
| +} {55 66}
|
| +
|
| +do_test shared-$av-16.8.2 { db1 eval { SELECT * FROM yy } } {77 88}
|
| +do_test shared-$av-16.8.3 {
|
| + list [catch {db1 eval { INSERT INTO yy VALUES(1, 2) }} msg] $msg
|
| +} {1 {attempt to write a readonly database}}
|
| +
|
| +db1 close
|
| +db2 close
|
| +
|
| +} ;# end of autovacuum on/off loop
|
|
|
| sqlite3_enable_shared_cache $::enable_shared_cache
|
| finish_test
|
|
|