-C Do\snot\sattempt\sto\sflush\sthe\spages\sof\san\sin-memory\sdatabase\sto\sdisk\sif\ssqlite3_db_cacheflush()\sis\scalled.
-D 2015-10-29T21:11:22.422
+C Test\sthat\scalling\ssqlite3_db_cacheflush()\sdoes\snot\sinterfere\swith\ssavepoints.
+D 2015-10-30T09:13:29.814
F Makefile.in 2ea961bc09e441874eb3d1bf7398e04feb24f3ee
F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434
F Makefile.msc 702d3e98f3afc6587a78481257f3c4c900efc3a4
F test/btreefault.test c2bcb542685eea44621275cfedbd8a13f65201e3
F test/busy.test 76b4887f8b9160ba903c1ac22e8ff406ad6ae2f0
F test/cache.test 13bc046b26210471ca6f2889aceb1ea52dc717de
-F test/cacheflush.test 42855120d2b00ff75033b54ba7693927f1ce4de8
+F test/cacheflush.test a755c93482ce2e20c04825304bef27e7b7ea0111
F test/capi2.test 011c16da245fdc0106a2785035de6b242c05e738
F test/capi3.test bf6f0308bbbba1e770dac13aa08e5c2ac61c7324
F test/capi3b.test efb2b9cfd127efa84433cd7a2d72ce0454ae0dc4
F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
F tool/warnings.sh 48bd54594752d5be3337f12c72f28d2080cb630b
F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
-P f0cdfb547b0976e753e94958f29cb294edf31bed
-R dcdd2b431259b301d28dfb5e7d9d6d5d
+P 9b79a390440a23542a370b591e567b31ebb35c42
+R b3b377e425858b0fc40d0f4a8e28ca4d
U dan
-Z 1371a31e24aaed4ace229bd9de4453e9
+Z 2687c0f7a67bbeeb26b2f80bb787cd41
SELECT count(*) FROM t2;
} {2 2}
+#-------------------------------------------------------------------------
+# Test that calling sqlite3_db_cacheflush() does not interfere with
+# savepoint transactions.
+#
+do_test 4.0 {
+ reset_db
+ execsql {
+ CREATE TABLE ta(a, aa);
+ CREATE TABLE tb(b, bb);
+ INSERT INTO ta VALUES('a', randomblob(500));
+ INSERT INTO tb VALUES('b', randomblob(500));
+ BEGIN;
+ UPDATE ta SET a = 'A';
+ SAVEPOINT one;
+ UPDATE tb SET b = 'B';
+ }
+
+ sqlite3_db_cacheflush db
+ diskquery test.db {
+ SELECT a FROM ta;
+ SELECT b FROM tb;
+ }
+} {A B}
+
+do_test 4.1 {
+ execsql {
+ ROLLBACK TO one;
+ }
+ sqlite3_db_cacheflush db
+ diskquery test.db {
+ SELECT a FROM ta;
+ SELECT b FROM tb;
+ }
+} {A b}
+
+do_test 4.2 {
+ execsql {
+ INSERT INTO tb VALUES('c', randomblob(10));
+ INSERT INTO tb VALUES('d', randomblob(10));
+ INSERT INTO tb VALUES('e', randomblob(10));
+ }
+ sqlite3_db_cacheflush db
+ diskquery test.db {
+ SELECT a FROM ta;
+ SELECT b FROM tb;
+ }
+} {A b c d e}
+
+do_test 4.3 {
+ execsql {
+ SAVEPOINT two;
+ UPDATE tb SET b = upper(b);
+ }
+ sqlite3_db_cacheflush db
+ diskquery test.db {
+ SELECT a FROM ta;
+ SELECT b FROM tb;
+ }
+} {A B C D E}
+
+do_test 4.4 {
+ execsql {
+ ROLLBACK TO two;
+ }
+ sqlite3_db_cacheflush db
+ diskquery test.db {
+ SELECT a FROM ta;
+ SELECT b FROM tb;
+ }
+} {A b c d e}
+
+do_test 4.4 {
+ execsql {
+ ROLLBACK TO one;
+ }
+ sqlite3_db_cacheflush db
+ diskquery test.db {
+ SELECT a FROM ta;
+ SELECT b FROM tb;
+ }
+} {A b}
+
+do_test 4.5 {
+ execsql {
+ ROLLBACK;
+ SELECT a FROM ta;
+ SELECT b FROM tb;
+ }
+} {a b}
test_restore_config_pagecache
finish_test