Fixes default log output to console for macOS
[sqlcipher.git] / ext / fts5 / test / fts5savepoint.test
blob1126222750f555a52382c77b9289b34144b218fe
1 # 2019 Dec 26
3 # The author disclaims copyright to this source code.  In place of
4 # a legal notice, here is a blessing:
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.
10 #***********************************************************************
13 source [file join [file dirname [info script]] fts5_common.tcl]
14 set testprefix fts5savepoint
16 # If SQLITE_ENABLE_FTS5 is defined, omit this file.
17 ifcapable !fts5 {
18   finish_test
19   return
22 do_execsql_test 1.0 {
23   CREATE VIRTUAL TABLE ft USING fts5(c);
24   BEGIN;
25     SAVEPOINT one;
26       INSERT INTO ft VALUES('a');
27       SAVEPOINT two;
28         INSERT INTO ft VALUES('b');
29       RELEASE two;
30       SAVEPOINT four;
31         INSERT INTO ft VALUES('c');
32       RELEASE four;
33       SAVEPOINT three;
34         INSERT INTO ft VALUES('d');
35       ROLLBACK TO three;
36   COMMIT;
37   SELECT * FROM ft
38 } {a b c}
40 reset_db
41 do_catchsql_test 2.0 {
42   CREATE VIRTUAL TABLE ft1 USING fts5(c);
43   CREATE VIRTUAL TABLE ft2 USING fts5(c);
44   DROP TABLE ft2_idx;
45   BEGIN;
46       INSERT INTO ft2 VALUES('a');
47       INSERT INTO ft1 VALUES('a');
48       SAVEPOINT two;
49         INSERT INTO ft1 VALUES('b');
50   COMMIT;
51 } {1 {SQL logic error}}
53 reset_db
54 ifcapable fts3 {
55   do_execsql_test 3.0 {
56     CREATE VIRTUAL TABLE vt0 USING fts5(c0);
57     CREATE VIRTUAL TABLE vt1 USING fts4(c0);
58     INSERT INTO vt1(c0) VALUES(0);
59   }
61   do_execsql_test 3.1 {
62     BEGIN;
63       UPDATE vt1 SET c0 = 0;
64       INSERT INTO vt1(c0) VALUES (0), (0);
65       UPDATE vt0 SET c0 = 0;
66       INSERT INTO vt1(c0) VALUES (0);
67       UPDATE vt1 SET c0 = 0;
68       INSERT INTO vt1(vt1) VALUES('automerge=1');
69       UPDATE vt1 SET c0 = 0;
70   }
72   do_catchsql_test 3.2 {
73     DROP TABLE vt1;
74   } {0 {}}
76   do_execsql_test 3.3 {
77     SAVEPOINT x;
78       INSERT INTO vt0 VALUES('x');
79     COMMIT;
80     INSERT INTO vt0(vt0) VALUES('integrity-check');
81   }
84 finish_test