]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Add tests for very small cache-sizes (less than 10 pages).
authordan <dan@noemail.net>
Mon, 29 Nov 2010 16:10:01 +0000 (16:10 +0000)
committerdan <dan@noemail.net>
Mon, 29 Nov 2010 16:10:01 +0000 (16:10 +0000)
FossilOrigin-Name: 46b3fbdafe191cd0974cc3f46bc6aa52b3f1270e

manifest
manifest.uuid
test/cache.test

index 04d4d00e570bdc6b9f59cf715253dc8cd7de76f6..651d5212241053c5c3c3d70be8aa496d0fa5c37d 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Add\snew\stest\sfile\se_droptrigger.test.
-D 2010-11-29T12:06:45
+C Add\stests\sfor\svery\ssmall\scache-sizes\s(less\sthan\s10\spages).
+D 2010-11-29T16:10:02
 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
 F Makefile.in 4547616ad2286053af6ccccefa242dc925e49bf0
 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@@ -291,7 +291,7 @@ F test/boundary3.test 56ef82096b4329aca2be74fa1e2b0f762ea0eb45
 F test/boundary4.tcl 0bb4b1a94f4fc5ae59b79b9a2b7a140c405e2983
 F test/boundary4.test 89e02fa66397b8a325d5eb102b5806f961f8ec4b
 F test/busy.test 76b4887f8b9160ba903c1ac22e8ff406ad6ae2f0
-F test/cache.test c4288607b54f2702858492fc4b92828336a1812f
+F test/cache.test 754baab2f18089fc9bcba7afaeb4dc907c6c6de2
 F test/capi2.test 00032d7504b9c14f1b36331670c5e7b0f73e3c5d
 F test/capi3.test 1945a2ba75e3f4c49d5beb8fc092115b6292d471
 F test/capi3b.test efb2b9cfd127efa84433cd7a2d72ce0454ae0dc4
@@ -890,7 +890,7 @@ F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff
 F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224
 F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
 F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f
-P c412f61229b6ab1ac90b932afd56f7c5e3ba1cfe
-R f6821cb801bbf518113f282c058b1797
+P d23ef9b88c6705219e5138e50f0f351f6401c401
+R 546e2f66b6314089f25fcec06a2c561d
 U dan
-Z 0f3972e8a27cc6750e06c0fccb7d1885
+Z cb014287023453ee46a4e79687ff5135
index 01569bfce82e36adc2ca8f7ac4f33aceede776b9..cae2e145c1726f4486bdb872c8fa60f083e0fb27 100644 (file)
@@ -1 +1 @@
-d23ef9b88c6705219e5138e50f0f351f6401c401
\ No newline at end of file
+46b3fbdafe191cd0974cc3f46bc6aa52b3f1270e
\ No newline at end of file
index 3f42a47d275c7c8fe70b419801492b09b3ff2338..8d801f05998775228d2c95acc8ba8bcc0ab14196 100644 (file)
@@ -51,13 +51,90 @@ do_test cache-1.2 {
 #
 set cache_size [pager_cache_size db]
 for {set ii 0} {$ii < 10} {incr ii} {
-
   do_test cache-1.3.$ii {
     execsql {SELECT * FROM abc}
     pager_cache_size db
   } $::cache_size
+}
+
+#-------------------------------------------------------------------------
+# This block of tests checks that it is possible to set the cache_size of a
+# database to a small (< 10) value. More specifically:
+#
+#   cache-2.1.*: Test that "PRAGMA cache_size" appears to work with small 
+#                values.
+#   cache-2.2.*: Test that "PRAGMA main.cache_size" appears to work with 
+#                small values.
+#   cache-2.3.*: Test cache_size=1 correctly spills/flushes the cache. 
+#   cache-2.4.*: Test cache_size=0 correctly spills/flushes the cache. 
+#
+#
+db_delete_and_reopen
+do_execsql_test cache-2.0 {
+  PRAGMA auto_vacuum=OFF;
+  PRAGMA journal_mode=DELETE;
+  CREATE TABLE t1(a, b);
+  CREATE TABLE t2(c, d);
+  INSERT INTO t1 VALUES('x', 'y');
+  INSERT INTO t2 VALUES('i', 'j');
+} {delete}
 
+for {set i 0} {$i < 20} {incr i} {
+  do_execsql_test cache-2.1.$i.1 "PRAGMA cache_size = $i"
+  do_execsql_test cache-2.1.$i.2 "PRAGMA cache_size" $i
+  do_execsql_test cache-2.1.$i.3 "SELECT * FROM t1" {x y}
+  do_execsql_test cache-2.1.$i.4 "PRAGMA cache_size" $i
+}
+for {set i 0} {$i < 20} {incr i} {
+  do_execsql_test cache-2.2.$i.1 "PRAGMA main.cache_size = $i"
+  do_execsql_test cache-2.2.$i.2 "PRAGMA main.cache_size" $i
+  do_execsql_test cache-2.2.$i.3 "SELECT * FROM t1" {x y}
+  do_execsql_test cache-2.2.$i.4 "PRAGMA main.cache_size" $i
 }
-sqlite3_soft_heap_limit $cmdlinearg(soft-heap-limit)
 
+# Tests for cache_size = 1.
+#
+do_execsql_test cache-2.3.1 {
+  PRAGMA cache_size = 1;
+  BEGIN;
+    INSERT INTO t1 VALUES(1, 2);
+    PRAGMA lock_status;
+} {main reserved temp closed}
+do_test cache-2.3.2 { pager_cache_size db } 2
+do_execsql_test cache-2.3.3 {
+    INSERT INTO t2 VALUES(1, 2);
+    PRAGMA lock_status;
+} {main exclusive temp closed}
+do_test cache-2.3.4 { pager_cache_size db } 2
+do_execsql_test cache-2.3.5 COMMIT
+do_test cache-2.3.6 { pager_cache_size db } 1
+
+do_execsql_test cache-2.3.7 {
+  SELECT * FROM t1 UNION SELECT * FROM t2;
+} {1 2 i j x y}
+do_test cache-2.3.8 { pager_cache_size db } 1
+
+# Tests for cache_size = 0.
+#
+do_execsql_test cache-2.4.1 {
+  PRAGMA cache_size = 0;
+  BEGIN;
+    INSERT INTO t1 VALUES(1, 2);
+    PRAGMA lock_status;
+} {main reserved temp closed}
+do_test cache-2.4.2 { pager_cache_size db } 2
+do_execsql_test cache-2.4.3 {
+    INSERT INTO t2 VALUES(1, 2);
+    PRAGMA lock_status;
+} {main exclusive temp closed}
+do_test cache-2.4.4 { pager_cache_size db } 2
+do_execsql_test cache-2.4.5 COMMIT
+
+do_test cache-2.4.6 { pager_cache_size db } 0
+do_execsql_test cache-2.4.7 {
+  SELECT * FROM t1 UNION SELECT * FROM t2;
+} {1 2 i j x y}
+do_test cache-2.4.8 { pager_cache_size db } 0
+
+sqlite3_soft_heap_limit $cmdlinearg(soft-heap-limit)
 finish_test