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

Side by Side Diff: third_party/sqlite/sqlite-src-3100200/test/pragma3.test

Issue 1610543003: [sql] Import reference version of SQLite 3.10.2. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 11 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 # 2014-12-19
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 # This file implements regression tests for SQLite library.
12 #
13 # This file implements tests for PRAGMA data_version command.
14 #
15
16 set testdir [file dirname $argv0]
17 source $testdir/tester.tcl
18
19 do_execsql_test pragma3-100 {
20 PRAGMA data_version;
21 } {1}
22 do_execsql_test pragma3-101 {
23 PRAGMA temp.data_version;
24 } {1}
25
26 # Writing to the pragma is a no-op
27 do_execsql_test pragma3-102 {
28 PRAGMA main.data_version=1234;
29 PRAGMA main.data_version;
30 } {1 1}
31
32 # EVIDENCE-OF: R-27726-60934 The "PRAGMA data_version" command provides
33 # an indication that the database file has been modified.
34 #
35 # EVIDENCE-OF: R-47505-58569 The "PRAGMA data_version" value is
36 # unchanged for commits made on the same database connection.
37 #
38 do_execsql_test pragma3-110 {
39 PRAGMA data_version;
40 BEGIN IMMEDIATE;
41 PRAGMA data_version;
42 CREATE TABLE t1(a);
43 INSERT INTO t1 VALUES(100),(200),(300);
44 PRAGMA data_version;
45 COMMIT;
46 SELECT * FROM t1;
47 PRAGMA data_version;
48 } {1 1 1 100 200 300 1}
49
50 sqlite3 db2 test.db
51 do_test pragma3-120 {
52 db2 eval {
53 SELECT * FROM t1;
54 PRAGMA data_version;
55 }
56 } {100 200 300 1}
57
58 do_execsql_test pragma3-130 {
59 PRAGMA data_version;
60 BEGIN IMMEDIATE;
61 PRAGMA data_version;
62 INSERT INTO t1 VALUES(400),(500);
63 PRAGMA data_version;
64 COMMIT;
65 SELECT * FROM t1;
66 PRAGMA data_version;
67 PRAGMA shrink_memory;
68 } {1 1 1 100 200 300 400 500 1}
69
70 # EVIDENCE-OF: R-63005-41812 The integer values returned by two
71 # invocations of "PRAGMA data_version" from the same connection will be
72 # different if changes were committed to the database by any other
73 # connection in the interim.
74 #
75 # Value went from 1 in pragma3-120 to 2 here.
76 #
77 do_test pragma3-140 {
78 db2 eval {
79 SELECT * FROM t1;
80 PRAGMA data_version;
81 BEGIN IMMEDIATE;
82 PRAGMA data_version;
83 UPDATE t1 SET a=a+1;
84 COMMIT;
85 SELECT * FROM t1;
86 PRAGMA data_version;
87 }
88 } {100 200 300 400 500 2 2 101 201 301 401 501 2}
89 do_execsql_test pragma3-150 {
90 SELECT * FROM t1;
91 PRAGMA data_version;
92 } {101 201 301 401 501 2}
93
94 #
95 do_test pragma3-160 {
96 db eval {
97 BEGIN;
98 PRAGMA data_version;
99 UPDATE t1 SET a=555 WHERE a=501;
100 PRAGMA data_version;
101 SELECT * FROM t1 ORDER BY a;
102 PRAGMA data_version;
103 }
104 } {2 2 101 201 301 401 555 2}
105 do_test pragma3-170 {
106 db2 eval {
107 PRAGMA data_version;
108 }
109 } {2}
110 do_test pragma3-180 {
111 db eval {
112 COMMIT;
113 PRAGMA data_version;
114 }
115 } {2}
116 do_test pragma3-190 {
117 db2 eval {
118 PRAGMA data_version;
119 }
120 } {3}
121
122 # EVIDENCE-OF: R-19326-44825 The "PRAGMA data_version" value is a local
123 # property of each database connection and so values returned by two
124 # concurrent invocations of "PRAGMA data_version" on separate database
125 # connections are often different even though the underlying database is
126 # identical.
127 #
128 do_test pragma3-195 {
129 expr {[db eval {PRAGMA data_version}]!=[db2 eval {PRAGMA data_version}]}
130 } {1}
131
132 # EVIDENCE-OF: R-54562-06892 The behavior of "PRAGMA data_version" is
133 # the same for all database connections, including database connections
134 # in separate processes and shared cache database connections.
135 #
136 # The next block checks the behavior for separate processes.
137 #
138 do_test pragma3-200 {
139 db eval {PRAGMA data_version; SELECT * FROM t1;}
140 } {2 101 201 301 401 555}
141 do_test pragma3-201 {
142 set fd [open pragma3.txt wb]
143 puts $fd {
144 sqlite3 db test.db;
145 db eval {DELETE FROM t1 WHERE a>300};
146 db close;
147 exit;
148 }
149 close $fd
150 exec [info nameofexec] pragma3.txt
151 forcedelete pragma3.txt
152 db eval {
153 PRAGMA data_version;
154 SELECT * FROM t1;
155 }
156 } {3 101 201}
157 db2 close
158 db close
159
160 # EVIDENCE-OF: R-54562-06892 The behavior of "PRAGMA data_version" is
161 # the same for all database connections, including database connections
162 # in separate processes and shared cache database connections.
163 #
164 # The next block checks that behavior is the same for shared-cache.
165 #
166 ifcapable shared_cache {
167 set ::enable_shared_cache [sqlite3_enable_shared_cache 1]
168 sqlite3 db test.db
169 sqlite3 db2 test.db
170 do_test pragma3-300 {
171 db eval {
172 PRAGMA data_version;
173 BEGIN;
174 CREATE TABLE t3(a,b,c);
175 CREATE TABLE t4(x,y,z);
176 INSERT INTO t4 VALUES(123,456,789);
177 PRAGMA data_version;
178 COMMIT;
179 PRAGMA data_version;
180 }
181 } {1 1 1}
182 do_test pragma3-310 {
183 db2 eval {
184 PRAGMA data_version;
185 BEGIN;
186 INSERT INTO t3(a,b,c) VALUES('abc','def','ghi');
187 SELECT * FROM t3;
188 PRAGMA data_version;
189 }
190 } {2 abc def ghi 2}
191 # The transaction in db2 has not yet committed, so the data_version in
192 # db is unchanged.
193 do_test pragma3-320 {
194 db eval {
195 PRAGMA data_version;
196 SELECT * FROM t4;
197 }
198 } {1 123 456 789}
199 do_test pragma3-330 {
200 db2 eval {
201 COMMIT;
202 PRAGMA data_version;
203 SELECT * FROM t4;
204 }
205 } {2 123 456 789}
206 do_test pragma3-340 {
207 db eval {
208 PRAGMA data_version;
209 SELECT * FROM t3;
210 SELECT * FROM t4;
211 }
212 } {2 abc def ghi 123 456 789}
213 db2 close
214 db close
215 sqlite3_enable_shared_cache $::enable_shared_cache
216 }
217
218 # Make sure this also works in WAL mode
219 #
220 # This will not work with the in-memory journal permutation, as opening
221 # [db2] switches the journal mode back to "memory"
222 #
223 ifcapable wal {
224 if {[permutation]!="inmemory_journal"} {
225
226 sqlite3 db test.db
227 db eval {PRAGMA journal_mode=WAL}
228 sqlite3 db2 test.db
229 do_test pragma3-400 {
230 db eval {
231 PRAGMA data_version;
232 PRAGMA journal_mode;
233 SELECT * FROM t1;
234 }
235 } {2 wal 101 201}
236 do_test pragma3-410 {
237 db2 eval {
238 PRAGMA data_version;
239 PRAGMA journal_mode;
240 SELECT * FROM t1;
241 }
242 } {2 wal 101 201}
243 do_test pragma3-420 {
244 db eval {UPDATE t1 SET a=111*(a/100); PRAGMA data_version; SELECT * FROM t1}
245 } {2 111 222}
246 do_test pragma3-430 {
247 db2 eval {PRAGMA data_version; SELECT * FROM t1;}
248 } {3 111 222}
249 db2 close
250 }
251 }
252
253 finish_test
OLDNEW
« no previous file with comments | « third_party/sqlite/sqlite-src-3100200/test/pragma2.test ('k') | third_party/sqlite/sqlite-src-3100200/test/printf.test » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698