Test cases. Minor problems fixed. All appears to work now.
FossilOrigin-Name: 9a431362dccbc9b8f93375f30a3b8955903cca79
diff --git a/manifest b/manifest
index d7ec4d4..1b21bff 100644
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C First\sattempt\sat\senhancing\sthe\s"PRAGMA\scache_spill"\sstatement\sto\saccept\sa\ncache\sthreashold\ssize.
-D 2015-11-12T14:57:19.268
+C Test\scases.\s\sMinor\sproblems\sfixed.\s\sAll\sappears\sto\swork\snow.
+D 2015-11-12T15:47:48.274
F Makefile.in d828db6afa6c1fa060d01e33e4674408df1942a1
F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434
F Makefile.msc e928e68168df69b353300ac87c10105206653a03
@@ -329,10 +329,10 @@
F src/pager.c 18341e2b759b447cbc82fb9215d08d9c5864e92e
F src/pager.h 87c4118a71ba3965184148b379a6d93179071091
F src/parse.y 8a364a7a692e517dea8711b3c7f0d07fe32727d8
-F src/pcache.c f72f19956f8182ecd97cf9b7b0faa201711225b8
+F src/pcache.c 73895411fa6b7bd6f0091212feabbe833b358d23
F src/pcache.h 1ff11adce609ba7de139b6abfabaf9a2bac947b5
F src/pcache1.c 902e1bc7bdaa81b40f8543407c5e2ac8ef4dc035
-F src/pragma.c 26a612db31748a23dc17b97296e521cf2ef42081
+F src/pragma.c 0e91830e5cea31771121eb8967e8c110f7e8216a
F src/pragma.h 31b110aaecb5603829c97747b99abfe491df5fa0
F src/prepare.c 82e5db1013846a819f198336fed72c44c974e7b1
F src/printf.c 0c4bcdd1c2e2521024f0a69cb5eb334f86b3652a
@@ -931,7 +931,7 @@
F test/percentile.test 4243af26b8f3f4555abe166f723715a1f74c77ff
F test/permutations.test 4ea119731c62d2f7d0aa86dd5b184cbb61ca411b
F test/pragma.test a44253f911e7d50127d4a08f927f47c861a4c772
-F test/pragma2.test 93ef4f24fb97a59d935859daf26078384b265c12
+F test/pragma2.test a8e11a7a38e2a5053fe4b807fc806c937d9a7469
F test/pragma3.test 6f849ccffeee7e496d2f2b5e74152306c0b8757c
F test/printf.test b3ff34e73d59124140eaf89f7672e21bc2ca5fcc
F test/printf2.test 0b61566dd1c0f0b802f59dffa228c5dc5aa6b054
@@ -1402,10 +1402,7 @@
F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
F tool/warnings.sh 48bd54594752d5be3337f12c72f28d2080cb630b
F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
-P 2518d5c971c4b32d9227b3bb7259162e3e27b00b
-R 337aa604616b296340bdf382cbd4b435
-T *branch * cache_spill=N
-T *sym-cache_spill=N *
-T -sym-trunk *
+P 549d42be0dac87dc04c3eeccfdc60615c3a6ad3f
+R 675bbffc41ae7c4e7c58162bf39590a3
U drh
-Z e21337491dfb1b39176b63de38883141
+Z 4ec2916143a078881954f66921bb963f
diff --git a/manifest.uuid b/manifest.uuid
index a425302..27ce563 100644
--- a/manifest.uuid
+++ b/manifest.uuid
@@ -1 +1 @@
-549d42be0dac87dc04c3eeccfdc60615c3a6ad3f
\ No newline at end of file
+9a431362dccbc9b8f93375f30a3b8955903cca79
\ No newline at end of file
diff --git a/src/pcache.c b/src/pcache.c
index ddcb0bcc4..5ac9d34 100644
--- a/src/pcache.c
+++ b/src/pcache.c
@@ -652,7 +652,7 @@
assert( p->pCache!=0 );
if( mxPage ){
if( mxPage<0 ){
- mxPage = (int)((-1024*(i64)p->szCache)/(p->szPage+p->szExtra));
+ mxPage = (int)((-1024*(i64)mxPage)/(p->szPage+p->szExtra));
}
p->szSpill = mxPage;
}
diff --git a/src/pragma.c b/src/pragma.c
index 85693cd..7754e26 100644
--- a/src/pragma.c
+++ b/src/pragma.c
@@ -769,7 +769,6 @@
** not just the schema specified.
*/
case PragTyp_CACHE_SPILL: {
- int size;
assert( sqlite3SchemaMutexHeld(db, iDb, 0) );
if( !zRight ){
if( sqlite3ReadSchema(pParse) ) goto pragma_out;
@@ -777,14 +776,16 @@
(db->flags & SQLITE_CacheSpill)==0 ? 0 :
sqlite3BtreeSetSpillSize(pDb->pBt,0));
}else{
+ int size = 1;
if( sqlite3GetInt32(zRight, &size) ){
sqlite3BtreeSetSpillSize(pDb->pBt, size);
}
- if( sqlite3GetBoolean(zRight, 0) ){
+ if( sqlite3GetBoolean(zRight, size!=0) ){
db->flags |= SQLITE_CacheSpill;
}else{
db->flags &= ~SQLITE_CacheSpill;
}
+ setAllPagerFlags(db);
}
break;
}
diff --git a/test/pragma2.test b/test/pragma2.test
index c0b4f23..9cb31fa 100644
--- a/test/pragma2.test
+++ b/test/pragma2.test
@@ -197,16 +197,27 @@
UPDATE t1 SET c=c+1;
PRAGMA lock_status;
}
-} {100000 main reserved temp unknown} ;# Large cache spill threshold
+} {100000 main reserved temp unknown} ;# Big spill threshold -> no excl lock
do_test pragma2-4.5.3 {
db eval {
ROLLBACK;
PRAGMA cache_spill=25;
+ PRAGMA main.cache_spill;
BEGIN;
UPDATE t1 SET c=c+1;
PRAGMA lock_status;
}
-} {main exclusive temp unknown} ;# Large cache spill, so no exclusive lock
+} {50 main exclusive temp unknown} ;# Small cache spill -> exclusive lock
+do_test pragma2-4.5.4 {
+ db eval {
+ ROLLBACK;
+ PRAGMA cache_spill(-25);
+ PRAGMA main.cache_spill;
+ BEGIN;
+ UPDATE t1 SET c=c+1;
+ PRAGMA lock_status;
+ }
+} {50 main exclusive temp unknown} ;# Small cache spill -> exclusive lock
# Verify that newly attached databases inherit the cache_spill=OFF
@@ -231,6 +242,26 @@
UPDATE t2 SET c=c-1;
PRAGMA lock_status;
} {main unlocked temp unknown aux1 exclusive}
+db close
+forcedelete test.db
+sqlite3 db test.db
+
+breakpoint
+do_execsql_test pragma2-5.1 {
+ PRAGMA page_size=16384;
+ CREATE TABLE t1(x);
+ PRAGMA cache_size=2;
+ PRAGMA cache_spill=YES;
+ PRAGMA cache_spill;
+} {2}
+do_execsql_test pragma2-5.2 {
+ PRAGMA cache_spill=NO;
+ PRAGMA cache_spill;
+} {0}
+do_execsql_test pragma2-5.3 {
+ PRAGMA cache_spill(-51);
+ PRAGMA cache_spill;
+} {3}
test_restore_config_pagecache
finish_test