blob: 8d4c4499b08ca7c2b017e3c70e3009c79aa09804 [file] [log] [blame]
dan2617c9b2017-05-08 18:29:36 +00001# 2017 May 9
2#
3# The author disclaims copyright to this source code. In place of
4# 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
13set testdir [file dirname $argv0]
14source $testdir/tester.tcl
15set testprefix subjournal
16
17do_execsql_test 1.0 {
18 PRAGMA temp_store = memory;
19 CREATE TABLE t1(a,b,c);
20 INSERT INTO t1 VALUES(1, 2, 3);
21} {}
22do_execsql_test 1.1 {
23 BEGIN;
24 INSERT INTO t1 VALUES(4, 5, 6);
25 SAVEPOINT one;
26 INSERT INTO t1 VALUES(7, 8, 9);
27 ROLLBACK TO one;
28 SELECT * FROM t1;
29} {1 2 3 4 5 6}
30do_execsql_test 1.2 {
31 COMMIT;
32}
33
34do_execsql_test 2.0 {
35 PRAGMA cache_size = 5;
36 CREATE TABLE t2(a BLOB);
37 CREATE INDEX i2 ON t2(a);
38 WITH s(i) AS (
39 SELECT 1 UNION ALL SELECT i+1 FROM s WHERE i<100
40 ) INSERT INTO t2 SELECT randomblob(500) FROM s;
41}
42
43do_test 2.1 {
44 forcedelete test.db2
45 sqlite3 db2 test2.db
46 sqlite3_backup B db2 main db main
47 set nPage [db one {PRAGMA page_count}]
48 B step [expr $nPage-10]
49} {SQLITE_OK}
50
51do_execsql_test 2.2 {
52 BEGIN;
53 UPDATE t2 SET a=randomblob(499);
54 SAVEPOINT two;
55 UPDATE t2 SET a=randomblob(498);
56 ROLLBACK TO two;
57 COMMIT;
58 PRAGMA integrity_check;
59} {ok}
60
61do_test 2.3 {
62 B step 1000
63} {SQLITE_DONE}
64do_test 2.4 {
65 B finish
66 execsql { PRAGMA integrity_check } db2
67} {ok}
68
69finish_test