Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(134)

Side by Side Diff: third_party/sqlite/src/ext/session/sessionG.test

Issue 2751253002: [sql] Import SQLite 3.17.0. (Closed)
Patch Set: also clang on Linux i386 Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 # 2016 March 30
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 # This file implements regression tests for the sessions module.
13 # Specifically, it tests that UNIQUE constraints are dealt with correctly.
14 #
15
16
17
18 if {![info exists testdir]} {
19 set testdir [file join [file dirname [info script]] .. .. test]
20 }
21 source [file join [file dirname [info script]] session_common.tcl]
22 source $testdir/tester.tcl
23 ifcapable !session {finish_test; return}
24 set testprefix sessionG
25
26
27 forcedelete test.db2
28 sqlite3 db2 test.db2
29
30 do_test 1.0 {
31 do_common_sql {
32 CREATE TABLE t1(a PRIMARY KEY, b UNIQUE);
33 INSERT INTO t1 VALUES(1, 'one');
34 INSERT INTO t1 VALUES(2, 'two');
35 INSERT INTO t1 VALUES(3, 'three');
36 }
37 do_then_apply_sql {
38 DELETE FROM t1 WHERE a=1;
39 INSERT INTO t1 VALUES(4, 'one');
40 }
41 compare_db db db2
42 } {}
43
44 do_test 1.1 {
45 do_then_apply_sql {
46 DELETE FROM t1 WHERE a=4;
47 INSERT INTO t1 VALUES(1, 'one');
48 }
49 compare_db db db2
50 } {}
51
52 do_test 1.2 {
53 execsql { INSERT INTO t1 VALUES(5, 'five') } db2
54 do_then_apply_sql {
55 INSERT INTO t1 VALUES(11, 'eleven');
56 INSERT INTO t1 VALUES(12, 'five');
57 }
58 execsql { SELECT * FROM t1 } db2
59 } {2 two 3 three 1 one 5 five 11 eleven}
60
61 do_test 1.3 {
62 execsql { SELECT * FROM t1 }
63 } {2 two 3 three 1 one 11 eleven 12 five}
64
65 #-------------------------------------------------------------------------
66 #
67 reset_db
68 db2 close
69 forcedelete test.db2
70 sqlite3 db2 test.db2
71
72 do_test 2.1 {
73 do_common_sql {
74 CREATE TABLE t1(a PRIMARY KEY, b UNIQUE, c UNIQUE);
75 INSERT INTO t1 VALUES(1, 1, 1);
76 INSERT INTO t1 VALUES(2, 2, 2);
77 INSERT INTO t1 VALUES(3, 3, 3);
78 }
79 } {}
80
81 do_test 2.2.1 {
82 # It is not possible to apply the changeset generated by the following
83 # SQL, as none of the three updated rows may be updated as part of the
84 # first pass.
85 do_then_apply_sql {
86 UPDATE t1 SET b=0 WHERE a=1;
87 UPDATE t1 SET b=1 WHERE a=2;
88 UPDATE t1 SET b=2 WHERE a=3;
89 UPDATE t1 SET b=3 WHERE a=1;
90 }
91 db2 eval { SELECT a, b FROM t1 }
92 } {1 1 2 2 3 3}
93 do_test 2.2.2 { db eval { SELECT a, b FROM t1 } } {1 3 2 1 3 2}
94
95 #-------------------------------------------------------------------------
96 #
97 reset_db
98 db2 close
99 forcedelete test.db2
100 sqlite3 db2 test.db2
101
102 do_test 3.1 {
103 do_common_sql {
104 CREATE TABLE t1(a PRIMARY KEY, b UNIQUE, c UNIQUE);
105 INSERT INTO t1 VALUES(1, 1, 1);
106 INSERT INTO t1 VALUES(2, 2, 2);
107 INSERT INTO t1 VALUES(3, 3, 3);
108 }
109 } {}
110
111 do_test 3.3 {
112 do_then_apply_sql {
113 UPDATE t1 SET b=4 WHERE a=3;
114 UPDATE t1 SET b=3 WHERE a=2;
115 UPDATE t1 SET b=2 WHERE a=1;
116 }
117 compare_db db db2
118 } {}
119
120 do_test 3.4 {
121 do_then_apply_sql {
122 UPDATE t1 SET b=1 WHERE a=1;
123 UPDATE t1 SET b=2 WHERE a=2;
124 UPDATE t1 SET b=3 WHERE a=3;
125 }
126 compare_db db db2
127 } {}
128
129 #-------------------------------------------------------------------------
130 #
131 reset_db
132 db2 close
133 forcedelete test.db2
134 sqlite3 db2 test.db2
135
136 do_test 4.1 {
137 do_common_sql {
138 CREATE TABLE t1(a PRIMARY KEY, b UNIQUE);
139 INSERT INTO t1 VALUES(1, 1);
140 INSERT INTO t1 VALUES(2, 2);
141 INSERT INTO t1 VALUES(3, 3);
142
143 CREATE TABLE t2(a PRIMARY KEY, b UNIQUE);
144 INSERT INTO t2 VALUES(1, 1);
145 INSERT INTO t2 VALUES(2, 2);
146 INSERT INTO t2 VALUES(3, 3);
147 }
148 } {}
149
150 do_test 4.2 {
151 do_then_apply_sql {
152 UPDATE t1 SET b=4 WHERE a=3;
153 UPDATE t1 SET b=3 WHERE a=2;
154 UPDATE t1 SET b=2 WHERE a=1;
155
156 UPDATE t2 SET b=0 WHERE a=1;
157 UPDATE t2 SET b=1 WHERE a=2;
158 UPDATE t2 SET b=2 WHERE a=3;
159 }
160 compare_db db db2
161 } {}
162
163 do_test 4.3 {
164 do_then_apply_sql {
165 UPDATE t1 SET b=1 WHERE a=1;
166 UPDATE t1 SET b=2 WHERE a=2;
167 UPDATE t1 SET b=3 WHERE a=3;
168
169 UPDATE t2 SET b=3 WHERE a=3;
170 UPDATE t2 SET b=2 WHERE a=2;
171 UPDATE t2 SET b=1 WHERE a=1;
172 }
173 compare_db db db2
174 } {}
175
176 finish_test
177
OLDNEW
« no previous file with comments | « third_party/sqlite/src/ext/session/sessionF.test ('k') | third_party/sqlite/src/ext/session/session_common.tcl » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698