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

Side by Side Diff: third_party/sqlite/src/test/e_update.test

Issue 901033002: Import SQLite 3.8.7.4. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Chromium changes to support SQLite 3.8.7.4. Created 5 years, 10 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
1 # 2010 September 20 1 # 2010 September 20
2 # 2 #
3 # The author disclaims copyright to this source code. In place of 3 # The author disclaims copyright to this source code. In place of
4 # a legal notice, here is a blessing: 4 # a legal notice, here is a blessing:
5 # 5 #
6 # May you do good and not evil. 6 # May you do good and not evil.
7 # May you find forgiveness for yourself and forgive others. 7 # May you find forgiveness for yourself and forgive others.
8 # May you share freely, never taking more than you give. 8 # May you share freely, never taking more than you give.
9 # 9 #
10 #*********************************************************************** 10 #***********************************************************************
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
42 CREATE TEMP TABLE t6(x, y); 42 CREATE TEMP TABLE t6(x, y);
43 43
44 CREATE TABLE aux.t1(a, b); 44 CREATE TABLE aux.t1(a, b);
45 CREATE TABLE aux.t5(a, b); 45 CREATE TABLE aux.t5(a, b);
46 } {} 46 } {}
47 47
48 proc do_update_tests {args} { 48 proc do_update_tests {args} {
49 uplevel do_select_tests $args 49 uplevel do_select_tests $args
50 } 50 }
51 51
52 # EVIDENCE-OF: R-05685-44205 -- syntax diagram update-stmt 52 # -- syntax diagram update-stmt
53 # 53 #
54 do_update_tests e_update-0 { 54 do_update_tests e_update-0 {
55 1 "UPDATE t1 SET a=10" {} 55 1 "UPDATE t1 SET a=10" {}
56 2 "UPDATE t1 SET a=10, b=5" {} 56 2 "UPDATE t1 SET a=10, b=5" {}
57 3 "UPDATE t1 SET a=10 WHERE b=5" {} 57 3 "UPDATE t1 SET a=10 WHERE b=5" {}
58 4 "UPDATE t1 SET b=5,a=10 WHERE 1" {} 58 4 "UPDATE t1 SET b=5,a=10 WHERE 1" {}
59 5 "UPDATE main.t1 SET a=10" {} 59 5 "UPDATE main.t1 SET a=10" {}
60 6 "UPDATE main.t1 SET a=10, b=5" {} 60 6 "UPDATE main.t1 SET a=10, b=5" {}
61 7 "UPDATE main.t1 SET a=10 WHERE b=5" {} 61 7 "UPDATE main.t1 SET a=10 WHERE b=5" {}
62 9 "UPDATE OR ROLLBACK t1 SET a=10" {} 62 9 "UPDATE OR ROLLBACK t1 SET a=10" {}
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after
226 5 "UPDATE t2 SET a = 3 WHERE c = 4" 226 5 "UPDATE t2 SET a = 3 WHERE c = 4"
227 {3 1 4 1 5 9 1 2 2} 227 {3 1 4 1 5 9 1 2 2}
228 228
229 6 "UPDATE t2 SET a = b WHERE rowid>2" 229 6 "UPDATE t2 SET a = b WHERE rowid>2"
230 {3 1 4 1 5 9 2 2 2} 230 {3 1 4 1 5 9 2 2 2}
231 231
232 6 "UPDATE t2 SET b=6, c=5 WHERE a=b AND b=c" 232 6 "UPDATE t2 SET b=6, c=5 WHERE a=b AND b=c"
233 {3 1 4 1 5 9 2 6 5} 233 {3 1 4 1 5 9 2 6 5}
234 } 234 }
235 235
236 # EVIDENCE-OF: R-09060-20018 If a single column-name appears more than 236 # EVIDENCE-OF: R-34751-18293 If a single column-name appears more than
237 # once in the list of assignment expressions, all but the rightmost 237 # once in the list of assignment expressions, all but the rightmost
238 # occurence is ignored. 238 # occurrence is ignored.
239 # 239 #
240 do_update_tests e_update-1.6 -query { 240 do_update_tests e_update-1.6 -query {
241 SELECT * FROM t2 241 SELECT * FROM t2
242 } { 242 } {
243 1 "UPDATE t2 SET c=5, c=6, c=7 WHERE rowid=1" {3 1 7 1 5 9 2 6 5} 243 1 "UPDATE t2 SET c=5, c=6, c=7 WHERE rowid=1" {3 1 7 1 5 9 2 6 5}
244 2 "UPDATE t2 SET c=7, c=6, c=5 WHERE rowid=1" {3 1 5 1 5 9 2 6 5} 244 2 "UPDATE t2 SET c=7, c=6, c=5 WHERE rowid=1" {3 1 5 1 5 9 2 6 5}
245 3 "UPDATE t2 SET c=5, b=6, c=7 WHERE rowid=1" {3 6 7 1 5 9 2 6 5} 245 3 "UPDATE t2 SET c=5, b=6, c=7 WHERE rowid=1" {3 6 7 1 5 9 2 6 5}
246 } 246 }
247 247
248 # EVIDENCE-OF: R-36239-04077 The scalar expressions may refer to columns 248 # EVIDENCE-OF: R-36239-04077 The scalar expressions may refer to columns
(...skipping 22 matching lines...) Expand all
271 # 271 #
272 do_execsql_test e_update-1.8.0 { 272 do_execsql_test e_update-1.8.0 {
273 DELETE FROM t3; 273 DELETE FROM t3;
274 INSERT INTO t3 VALUES(1, 'one'); 274 INSERT INTO t3 VALUES(1, 'one');
275 INSERT INTO t3 VALUES(2, 'two'); 275 INSERT INTO t3 VALUES(2, 'two');
276 INSERT INTO t3 VALUES(3, 'three'); 276 INSERT INTO t3 VALUES(3, 'three');
277 INSERT INTO t3 VALUES(4, 'four'); 277 INSERT INTO t3 VALUES(4, 'four');
278 } {} 278 } {}
279 foreach {tn sql error ac data } { 279 foreach {tn sql error ac data } {
280 1 "UPDATE t3 SET b='one' WHERE a=3" 280 1 "UPDATE t3 SET b='one' WHERE a=3"
281 {column b is not unique} 1 {1 one 2 two 3 three 4 four} 281 {UNIQUE constraint failed: t3.b} 1 {1 one 2 two 3 three 4 four}
282 282
283 2 "UPDATE OR REPLACE t3 SET b='one' WHERE a=3" 283 2 "UPDATE OR REPLACE t3 SET b='one' WHERE a=3"
284 {} 1 {2 two 3 one 4 four} 284 {} 1 {2 two 3 one 4 four}
285 285
286 3 "UPDATE OR FAIL t3 SET b='three'" 286 3 "UPDATE OR FAIL t3 SET b='three'"
287 {column b is not unique} 1 {2 three 3 one 4 four} 287 {UNIQUE constraint failed: t3.b} 1 {2 three 3 one 4 four}
288 288
289 4 "UPDATE OR IGNORE t3 SET b='three' WHERE a=3" 289 4 "UPDATE OR IGNORE t3 SET b='three' WHERE a=3"
290 {} 1 {2 three 3 one 4 four} 290 {} 1 {2 three 3 one 4 four}
291 291
292 5 "UPDATE OR ABORT t3 SET b='three' WHERE a=3" 292 5 "UPDATE OR ABORT t3 SET b='three' WHERE a=3"
293 {column b is not unique} 1 {2 three 3 one 4 four} 293 {UNIQUE constraint failed: t3.b} 1 {2 three 3 one 4 four}
294 294
295 6 "BEGIN" {} 0 {2 three 3 one 4 four} 295 6 "BEGIN" {} 0 {2 three 3 one 4 four}
296 296
297 7 "UPDATE t3 SET b='three' WHERE a=3" 297 7 "UPDATE t3 SET b='three' WHERE a=3"
298 {column b is not unique} 0 {2 three 3 one 4 four} 298 {UNIQUE constraint failed: t3.b} 0 {2 three 3 one 4 four}
299 299
300 8 "UPDATE OR ABORT t3 SET b='three' WHERE a=3" 300 8 "UPDATE OR ABORT t3 SET b='three' WHERE a=3"
301 {column b is not unique} 0 {2 three 3 one 4 four} 301 {UNIQUE constraint failed: t3.b} 0 {2 three 3 one 4 four}
302 302
303 9 "UPDATE OR FAIL t3 SET b='two'" 303 9 "UPDATE OR FAIL t3 SET b='two'"
304 {column b is not unique} 0 {2 two 3 one 4 four} 304 {UNIQUE constraint failed: t3.b} 0 {2 two 3 one 4 four}
305 305
306 10 "UPDATE OR IGNORE t3 SET b='four' WHERE a=3" 306 10 "UPDATE OR IGNORE t3 SET b='four' WHERE a=3"
307 {} 0 {2 two 3 one 4 four} 307 {} 0 {2 two 3 one 4 four}
308 308
309 11 "UPDATE OR REPLACE t3 SET b='four' WHERE a=3" 309 11 "UPDATE OR REPLACE t3 SET b='four' WHERE a=3"
310 {} 0 {2 two 3 four} 310 {} 0 {2 two 3 four}
311 311
312 12 "UPDATE OR ROLLBACK t3 SET b='four'" 312 12 "UPDATE OR ROLLBACK t3 SET b='four'"
313 {column b is not unique} 1 {2 three 3 one 4 four} 313 {UNIQUE constraint failed: t3.b} 1 {2 three 3 one 4 four}
314 } { 314 } {
315 do_catchsql_test e_update-1.8.$tn.1 $sql [list [expr {$error!=""}] $error] 315 do_catchsql_test e_update-1.8.$tn.1 $sql [list [expr {$error!=""}] $error]
316 do_execsql_test e_update-1.8.$tn.2 {SELECT * FROM t3} [list {*}$data] 316 do_execsql_test e_update-1.8.$tn.2 {SELECT * FROM t3} [list {*}$data]
317 do_test e_update-1.8.$tn.3 {sqlite3_get_autocommit db} $ac 317 do_test e_update-1.8.$tn.3 {sqlite3_get_autocommit db} $ac
318 } 318 }
319 319
320 320
321 321
322 # EVIDENCE-OF: R-12123-54095 The table-name specified as part of an 322 # EVIDENCE-OF: R-12123-54095 The table-name specified as part of an
323 # UPDATE statement within a trigger body must be unqualified. 323 # UPDATE statement within a trigger body must be unqualified.
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
374 } {} 374 } {}
375 375
376 # EVIDENCE-OF: R-29512-54644 If the table to which the trigger is 376 # EVIDENCE-OF: R-29512-54644 If the table to which the trigger is
377 # attached is in the TEMP database, then the unqualified name of the 377 # attached is in the TEMP database, then the unqualified name of the
378 # table being updated is resolved in the same way as it is for a 378 # table being updated is resolved in the same way as it is for a
379 # top-level statement (by searching first the TEMP database, then the 379 # top-level statement (by searching first the TEMP database, then the
380 # main database, then any other databases in the order they were 380 # main database, then any other databases in the order they were
381 # attached). 381 # attached).
382 # 382 #
383 do_execsql_test e_update-2.3.0 { 383 do_execsql_test e_update-2.3.0 {
384 SELECT 'main', tbl_name FROM main.sqlite_master WHERE type = 'table' 384 SELECT 'main', tbl_name FROM main.sqlite_master WHERE type = 'table';
385 UNION ALL 385 SELECT 'temp', tbl_name FROM sqlite_temp_master WHERE type = 'table';
386 SELECT 'temp', tbl_name FROM sqlite_temp_master WHERE type = 'table' 386 SELECT 'aux', tbl_name FROM aux.sqlite_master WHERE type = 'table';
387 UNION ALL
388 SELECT 'aux', tbl_name FROM aux.sqlite_master WHERE type = 'table'
389 } [list {*}{ 387 } [list {*}{
390 main t1 388 main t1
391 main t2 389 main t2
392 main t3 390 main t3
393 main t6 391 main t6
394 temp t4 392 temp t4
395 temp t6 393 temp t6
396 aux t1 394 aux t1
397 aux t5 395 aux t5
398 }] 396 }]
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
488 UPDATE t1 SET a=a+1 LIMIT 10 OFFSET 2; 486 UPDATE t1 SET a=a+1 LIMIT 10 OFFSET 2;
489 END; 487 END;
490 } {LIMIT} 488 } {LIMIT}
491 } 489 }
492 490
493 # EVIDENCE-OF: R-59581-44104 If SQLite is built with the 491 # EVIDENCE-OF: R-59581-44104 If SQLite is built with the
494 # SQLITE_ENABLE_UPDATE_DELETE_LIMIT compile-time option then the syntax 492 # SQLITE_ENABLE_UPDATE_DELETE_LIMIT compile-time option then the syntax
495 # of the UPDATE statement is extended with optional ORDER BY and LIMIT 493 # of the UPDATE statement is extended with optional ORDER BY and LIMIT
496 # clauses 494 # clauses
497 # 495 #
498 # EVIDENCE-OF: R-08948-01887 -- syntax diagram update-stmt-limited 496 # -- syntax diagram update-stmt-limited
499 # 497 #
500 do_update_tests e_update-3.0 { 498 do_update_tests e_update-3.0 {
501 1 "UPDATE t1 SET a=b LIMIT 5" {} 499 1 "UPDATE t1 SET a=b LIMIT 5" {}
502 2 "UPDATE t1 SET a=b LIMIT 5-1 OFFSET 2+2" {} 500 2 "UPDATE t1 SET a=b LIMIT 5-1 OFFSET 2+2" {}
503 3 "UPDATE t1 SET a=b LIMIT 2+2, 16/4" {} 501 3 "UPDATE t1 SET a=b LIMIT 2+2, 16/4" {}
504 4 "UPDATE t1 SET a=b ORDER BY a LIMIT 5" {} 502 4 "UPDATE t1 SET a=b ORDER BY a LIMIT 5" {}
505 5 "UPDATE t1 SET a=b ORDER BY a LIMIT 5-1 OFFSET 2+2" {} 503 5 "UPDATE t1 SET a=b ORDER BY a LIMIT 5-1 OFFSET 2+2" {}
506 6 "UPDATE t1 SET a=b ORDER BY a LIMIT 2+2, 16/4" {} 504 6 "UPDATE t1 SET a=b ORDER BY a LIMIT 2+2, 16/4" {}
507 7 "UPDATE t1 SET a=b WHERE a>2 LIMIT 5" {} 505 7 "UPDATE t1 SET a=b WHERE a>2 LIMIT 5" {}
508 8 "UPDATE t1 SET a=b WHERE a>2 LIMIT 5-1 OFFSET 2+2" {} 506 8 "UPDATE t1 SET a=b WHERE a>2 LIMIT 5-1 OFFSET 2+2" {}
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
598 1 "UPDATE t7 SET s = q ORDER BY r LIMIT -1" {1 2 3 4 5 6 7 8 9 10} 596 1 "UPDATE t7 SET s = q ORDER BY r LIMIT -1" {1 2 3 4 5 6 7 8 9 10}
599 2 "UPDATE t7 SET s = q ORDER BY r ASC LIMIT -1" {1 2 3 4 5 6 7 8 9 10} 597 2 "UPDATE t7 SET s = q ORDER BY r ASC LIMIT -1" {1 2 3 4 5 6 7 8 9 10}
600 3 "UPDATE t7 SET s = q ORDER BY r DESC LIMIT -1" {1 2 3 4 5 6 7 8 9 10} 598 3 "UPDATE t7 SET s = q ORDER BY r DESC LIMIT -1" {1 2 3 4 5 6 7 8 9 10}
601 4 "UPDATE t7 SET s = q ORDER BY q DESC LIMIT 5" {6 7 8 9 10} 599 4 "UPDATE t7 SET s = q ORDER BY q DESC LIMIT 5" {6 7 8 9 10}
602 } 600 }
603 601
604 602
605 } ;# ifcapable update_delete_limit 603 } ;# ifcapable update_delete_limit
606 604
607 finish_test 605 finish_test
608
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698