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

Side by Side Diff: third_party/sqlite/src/test/collate4.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 # 1 #
2 # 2001 September 15 2 # 2001 September 15
3 # 3 #
4 # The author disclaims copyright to this source code. In place of 4 # The author disclaims copyright to this source code. In place of
5 # a legal notice, here is a blessing: 5 # a legal notice, here is a blessing:
6 # 6 #
7 # May you do good and not evil. 7 # May you do good and not evil.
8 # May you find forgiveness for yourself and forgive others. 8 # May you find forgiveness for yourself and forgive others.
9 # May you share freely, never taking more than you give. 9 # May you share freely, never taking more than you give.
10 # 10 #
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
53 # collate4-6.* INTEGER PRIMARY KEY indices. 53 # collate4-6.* INTEGER PRIMARY KEY indices.
54 # 54 #
55 55
56 # 56 #
57 # These tests - collate4-1.* - check that indices are correctly 57 # These tests - collate4-1.* - check that indices are correctly
58 # selected or not selected to implement ORDER BY clauses when 58 # selected or not selected to implement ORDER BY clauses when
59 # user defined collation sequences are involved. 59 # user defined collation sequences are involved.
60 # 60 #
61 # Because these tests also exercise all the different ways indices 61 # Because these tests also exercise all the different ways indices
62 # can be created, they also serve to verify that indices are correctly 62 # can be created, they also serve to verify that indices are correctly
63 # initialised with user-defined collation sequences when they are 63 # initialized with user-defined collation sequences when they are
64 # created. 64 # created.
65 # 65 #
66 # Tests named collate4-1.1.* use indices with a single column. Tests 66 # Tests named collate4-1.1.* use indices with a single column. Tests
67 # collate4-1.2.* use indices with two columns. 67 # collate4-1.2.* use indices with two columns.
68 # 68 #
69 do_test collate4-1.1.0 { 69 do_test collate4-1.1.0 {
70 execsql { 70 execsql {
71 CREATE TABLE collate4t1(a COLLATE NOCASE, b COLLATE TEXT); 71 CREATE TABLE collate4t1(a COLLATE NOCASE, b COLLATE TEXT);
72 INSERT INTO collate4t1 VALUES( 'a', 'a' ); 72 INSERT INTO collate4t1 VALUES( 'a', 'a' );
73 INSERT INTO collate4t1 VALUES( 'b', 'b' ); 73 INSERT INTO collate4t1 VALUES( 'b', 'b' );
(...skipping 13 matching lines...) Expand all
87 do_test collate4-1.1.3 { 87 do_test collate4-1.1.3 {
88 cksort {SELECT a FROM collate4t1 ORDER BY a COLLATE TEXT} 88 cksort {SELECT a FROM collate4t1 ORDER BY a COLLATE TEXT}
89 } {{} A B a b sort} 89 } {{} A B a b sort}
90 do_test collate4-1.1.4 { 90 do_test collate4-1.1.4 {
91 cksort {SELECT b FROM collate4t1 ORDER BY b} 91 cksort {SELECT b FROM collate4t1 ORDER BY b}
92 } {{} A B a b nosort} 92 } {{} A B a b nosort}
93 do_test collate4-1.1.5 { 93 do_test collate4-1.1.5 {
94 cksort {SELECT b FROM collate4t1 ORDER BY b COLLATE TEXT} 94 cksort {SELECT b FROM collate4t1 ORDER BY b COLLATE TEXT}
95 } {{} A B a b nosort} 95 } {{} A B a b nosort}
96 do_test collate4-1.1.6 { 96 do_test collate4-1.1.6 {
97 cksort {SELECT b FROM collate4t1 ORDER BY b COLLATE NOCASE} 97 cksort {SELECT b FROM collate4t1 ORDER BY b COLLATE NOCASE, rowid}
98 } {{} a A b B sort} 98 } {{} a A b B sort}
99 99
100 do_test collate4-1.1.7 { 100 do_test collate4-1.1.7 {
101 execsql { 101 execsql {
102 CREATE TABLE collate4t2( 102 CREATE TABLE collate4t2(
103 a PRIMARY KEY COLLATE NOCASE, 103 a PRIMARY KEY COLLATE NOCASE,
104 b UNIQUE COLLATE TEXT 104 b UNIQUE COLLATE TEXT
105 ); 105 );
106 INSERT INTO collate4t2 VALUES( 'a', 'a' ); 106 INSERT INTO collate4t2 VALUES( 'a', 'a' );
107 INSERT INTO collate4t2 VALUES( NULL, NULL ); 107 INSERT INTO collate4t2 VALUES( NULL, NULL );
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
164 INSERT INTO collate4t4 VALUES( 'a', 'a' ); 164 INSERT INTO collate4t4 VALUES( 'a', 'a' );
165 INSERT INTO collate4t4 VALUES( 'b', 'b' ); 165 INSERT INTO collate4t4 VALUES( 'b', 'b' );
166 INSERT INTO collate4t4 VALUES( NULL, NULL ); 166 INSERT INTO collate4t4 VALUES( NULL, NULL );
167 INSERT INTO collate4t4 VALUES( 'B', 'B' ); 167 INSERT INTO collate4t4 VALUES( 'B', 'B' );
168 INSERT INTO collate4t4 VALUES( 'A', 'A' ); 168 INSERT INTO collate4t4 VALUES( 'A', 'A' );
169 CREATE INDEX collate4i3 ON collate4t4(a COLLATE TEXT); 169 CREATE INDEX collate4i3 ON collate4t4(a COLLATE TEXT);
170 CREATE INDEX collate4i4 ON collate4t4(b COLLATE NOCASE); 170 CREATE INDEX collate4i4 ON collate4t4(b COLLATE NOCASE);
171 } 171 }
172 } {} 172 } {}
173 do_test collate4-1.1.22 { 173 do_test collate4-1.1.22 {
174 cksort {SELECT a FROM collate4t4 ORDER BY a} 174 cksort {SELECT a FROM collate4t4 ORDER BY a, rowid}
175 } {{} a A b B sort} 175 } {{} a A b B sort}
176 do_test collate4-1.1.23 { 176 do_test collate4-1.1.23 {
177 cksort {SELECT a FROM collate4t4 ORDER BY a COLLATE NOCASE} 177 cksort {SELECT a FROM collate4t4 ORDER BY a COLLATE NOCASE, rowid}
178 } {{} a A b B sort} 178 } {{} a A b B sort}
179 do_test collate4-1.1.24 { 179 do_test collate4-1.1.24 {
180 cksort {SELECT a FROM collate4t4 ORDER BY a COLLATE TEXT} 180 cksort {SELECT a FROM collate4t4 ORDER BY a COLLATE TEXT, rowid}
181 } {{} A B a b nosort} 181 } {{} A B a b nosort}
182 do_test collate4-1.1.25 { 182 do_test collate4-1.1.25 {
183 cksort {SELECT b FROM collate4t4 ORDER BY b} 183 cksort {SELECT b FROM collate4t4 ORDER BY b}
184 } {{} A B a b sort} 184 } {{} A B a b sort}
185 do_test collate4-1.1.26 { 185 do_test collate4-1.1.26 {
186 cksort {SELECT b FROM collate4t4 ORDER BY b COLLATE TEXT} 186 cksort {SELECT b FROM collate4t4 ORDER BY b COLLATE TEXT}
187 } {{} A B a b sort} 187 } {{} A B a b sort}
188 do_test collate4-1.1.27 { 188 do_test collate4-1.1.27 {
189 cksort {SELECT b FROM collate4t4 ORDER BY b COLLATE NOCASE} 189 cksort {SELECT b FROM collate4t4 ORDER BY b COLLATE NOCASE}
190 } {{} a A b B nosort} 190 } {{} a A b B nosort}
(...skipping 24 matching lines...) Expand all
215 do_test collate4-1.2.2 { 215 do_test collate4-1.2.2 {
216 cksort {SELECT a FROM collate4t1 ORDER BY a COLLATE nocase} 216 cksort {SELECT a FROM collate4t1 ORDER BY a COLLATE nocase}
217 } {{} A a B b nosort} 217 } {{} A a B b nosort}
218 do_test collate4-1.2.3 { 218 do_test collate4-1.2.3 {
219 cksort {SELECT a FROM collate4t1 ORDER BY a COLLATE text} 219 cksort {SELECT a FROM collate4t1 ORDER BY a COLLATE text}
220 } {{} A B a b sort} 220 } {{} A B a b sort}
221 do_test collate4-1.2.4 { 221 do_test collate4-1.2.4 {
222 cksort {SELECT a FROM collate4t1 ORDER BY a, b} 222 cksort {SELECT a FROM collate4t1 ORDER BY a, b}
223 } {{} A a B b nosort} 223 } {{} A a B b nosort}
224 do_test collate4-1.2.5 { 224 do_test collate4-1.2.5 {
225 cksort {SELECT a FROM collate4t1 ORDER BY a, b COLLATE nocase} 225 cksort {SELECT a FROM collate4t1 ORDER BY a, b COLLATE nocase, rowid}
226 } {{} a A b B sort} 226 } {{} a A b B sort}
227 do_test collate4-1.2.6 { 227 do_test collate4-1.2.6 {
228 cksort {SELECT a FROM collate4t1 ORDER BY a, b COLLATE text} 228 cksort {SELECT a FROM collate4t1 ORDER BY a, b COLLATE text}
229 } {{} A a B b nosort} 229 } {{} A a B b nosort}
230 230
231 do_test collate4-1.2.7 { 231 do_test collate4-1.2.7 {
232 execsql { 232 execsql {
233 CREATE TABLE collate4t2( 233 CREATE TABLE collate4t2(
234 a COLLATE NOCASE, 234 a COLLATE NOCASE,
235 b COLLATE TEXT, 235 b COLLATE TEXT,
(...skipping 28 matching lines...) Expand all
264 CREATE TABLE collate4t3(a COLLATE NOCASE, b COLLATE TEXT); 264 CREATE TABLE collate4t3(a COLLATE NOCASE, b COLLATE TEXT);
265 INSERT INTO collate4t3 VALUES( 'a', 'a' ); 265 INSERT INTO collate4t3 VALUES( 'a', 'a' );
266 INSERT INTO collate4t3 VALUES( 'b', 'b' ); 266 INSERT INTO collate4t3 VALUES( 'b', 'b' );
267 INSERT INTO collate4t3 VALUES( NULL, NULL ); 267 INSERT INTO collate4t3 VALUES( NULL, NULL );
268 INSERT INTO collate4t3 VALUES( 'B', 'B' ); 268 INSERT INTO collate4t3 VALUES( 'B', 'B' );
269 INSERT INTO collate4t3 VALUES( 'A', 'A' ); 269 INSERT INTO collate4t3 VALUES( 'A', 'A' );
270 CREATE INDEX collate4i2 ON collate4t3(a COLLATE TEXT, b COLLATE NOCASE); 270 CREATE INDEX collate4i2 ON collate4t3(a COLLATE TEXT, b COLLATE NOCASE);
271 } 271 }
272 } {} 272 } {}
273 do_test collate4-1.2.15 { 273 do_test collate4-1.2.15 {
274 cksort {SELECT a FROM collate4t3 ORDER BY a} 274 cksort {SELECT a FROM collate4t3 ORDER BY a, rowid}
275 } {{} a A b B sort} 275 } {{} a A b B sort}
276 do_test collate4-1.2.16 { 276 do_test collate4-1.2.16 {
277 cksort {SELECT a FROM collate4t3 ORDER BY a COLLATE nocase} 277 cksort {SELECT a FROM collate4t3 ORDER BY a COLLATE nocase, rowid}
278 } {{} a A b B sort} 278 } {{} a A b B sort}
279 do_test collate4-1.2.17 { 279 do_test collate4-1.2.17 {
280 cksort {SELECT a FROM collate4t3 ORDER BY a COLLATE text} 280 cksort {SELECT a FROM collate4t3 ORDER BY a COLLATE text}
281 } {{} A B a b nosort} 281 } {{} A B a b nosort}
282 do_test collate4-1.2.18 { 282 do_test collate4-1.2.18 {
283 cksort {SELECT a FROM collate4t3 ORDER BY a COLLATE text, b} 283 cksort {SELECT a FROM collate4t3 ORDER BY a COLLATE text, b}
284 } {{} A B a b sort} 284 } {{} A B a b sort}
285 do_test collate4-1.2.19 { 285 do_test collate4-1.2.19 {
286 cksort {SELECT a FROM collate4t3 ORDER BY a COLLATE text, b COLLATE nocase} 286 cksort {SELECT a FROM collate4t3 ORDER BY a COLLATE text, b COLLATE nocase}
287 } {{} A B a b nosort} 287 } {{} A B a b nosort}
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
357 count { 357 count {
358 SELECT * FROM collate4t2, collate4t1 WHERE b = a; 358 SELECT * FROM collate4t2, collate4t1 WHERE b = a;
359 } 359 }
360 } {A A 19} 360 } {A A 19}
361 do_test collate4-2.1.4 { 361 do_test collate4-2.1.4 {
362 execsql { 362 execsql {
363 DROP INDEX collate4i1; 363 DROP INDEX collate4i1;
364 CREATE INDEX collate4i1 ON collate4t1(a COLLATE TEXT); 364 CREATE INDEX collate4i1 ON collate4t1(a COLLATE TEXT);
365 } 365 }
366 count { 366 count {
367 SELECT * FROM collate4t2, collate4t1 WHERE a = b; 367 SELECT * FROM collate4t2, collate4t1 WHERE a = b
368 ORDER BY collate4t2.rowid, collate4t1.rowid
368 } 369 }
369 } {A a A A 19} 370 } {A a A A 19}
370 do_test collate4-2.1.5 { 371 do_test collate4-2.1.5 {
371 count { 372 count {
372 SELECT * FROM collate4t2, collate4t1 WHERE b = a; 373 SELECT * FROM collate4t2, collate4t1 WHERE b = a;
373 } 374 }
374 } {A A 4} 375 } {A A 4}
375 ifcapable subquery { 376 ifcapable subquery {
376 do_test collate4-2.1.6 { 377 do_test collate4-2.1.6 {
377 count { 378 count {
378 SELECT a FROM collate4t1 WHERE a IN (SELECT * FROM collate4t2); 379 SELECT a FROM collate4t1 WHERE a IN (SELECT * FROM collate4t2)
380 ORDER BY rowid
379 } 381 }
380 } {a A 10} 382 } {a A 10}
381 do_test collate4-2.1.7 { 383 do_test collate4-2.1.7 {
382 execsql { 384 execsql {
383 DROP INDEX collate4i1; 385 DROP INDEX collate4i1;
384 CREATE INDEX collate4i1 ON collate4t1(a); 386 CREATE INDEX collate4i1 ON collate4t1(a);
385 } 387 }
386 count { 388 count {
387 SELECT a FROM collate4t1 WHERE a IN (SELECT * FROM collate4t2); 389 SELECT a FROM collate4t1 WHERE a IN (SELECT * FROM collate4t2)
390 ORDER BY rowid
388 } 391 }
389 } {a A 6} 392 } {a A 6}
390 do_test collate4-2.1.8 { 393 do_test collate4-2.1.8 {
391 count { 394 count {
392 SELECT a FROM collate4t1 WHERE a IN ('z', 'a'); 395 SELECT a FROM collate4t1 WHERE a IN ('z', 'a');
393 } 396 }
394 } {a A 5} 397 } {a A 5}
395 do_test collate4-2.1.9 { 398 do_test collate4-2.1.9 {
396 execsql { 399 execsql {
397 DROP INDEX collate4i1; 400 DROP INDEX collate4i1;
398 CREATE INDEX collate4i1 ON collate4t1(a COLLATE TEXT); 401 CREATE INDEX collate4i1 ON collate4t1(a COLLATE TEXT);
399 } 402 }
400 count { 403 count {
401 SELECT a FROM collate4t1 WHERE a IN ('z', 'a'); 404 SELECT a FROM collate4t1 WHERE a IN ('z', 'a') ORDER BY rowid;
402 } 405 }
403 } {a A 9} 406 } {a A 9}
404 } 407 }
405 do_test collate4-2.1.10 { 408 do_test collate4-2.1.10 {
406 execsql { 409 execsql {
407 DROP TABLE collate4t1; 410 DROP TABLE collate4t1;
408 DROP TABLE collate4t2; 411 DROP TABLE collate4t2;
409 } 412 }
410 } {} 413 } {}
411 414
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
463 do_test collate4-3.0 { 466 do_test collate4-3.0 {
464 execsql { 467 execsql {
465 CREATE TABLE collate4t1(a PRIMARY KEY COLLATE NOCASE); 468 CREATE TABLE collate4t1(a PRIMARY KEY COLLATE NOCASE);
466 } 469 }
467 } {} 470 } {}
468 do_test collate4-3.1 { 471 do_test collate4-3.1 {
469 catchsql { 472 catchsql {
470 INSERT INTO collate4t1 VALUES('abc'); 473 INSERT INTO collate4t1 VALUES('abc');
471 INSERT INTO collate4t1 VALUES('ABC'); 474 INSERT INTO collate4t1 VALUES('ABC');
472 } 475 }
473 } {1 {column a is not unique}} 476 } {1 {UNIQUE constraint failed: collate4t1.a}}
474 do_test collate4-3.2 { 477 do_test collate4-3.2 {
475 execsql { 478 execsql {
476 SELECT * FROM collate4t1; 479 SELECT * FROM collate4t1;
477 } 480 }
478 } {abc} 481 } {abc}
479 do_test collate4-3.3 { 482 do_test collate4-3.3 {
480 catchsql { 483 catchsql {
481 INSERT INTO collate4t1 SELECT upper(a) FROM collate4t1; 484 INSERT INTO collate4t1 SELECT upper(a) FROM collate4t1;
482 } 485 }
483 } {1 {column a is not unique}} 486 } {1 {UNIQUE constraint failed: collate4t1.a}}
484 do_test collate4-3.4 { 487 do_test collate4-3.4 {
485 catchsql { 488 catchsql {
486 INSERT INTO collate4t1 VALUES(1); 489 INSERT INTO collate4t1 VALUES(1);
487 UPDATE collate4t1 SET a = 'abc'; 490 UPDATE collate4t1 SET a = 'abc';
488 } 491 }
489 } {1 {column a is not unique}} 492 } {1 {UNIQUE constraint failed: collate4t1.a}}
490 do_test collate4-3.5 { 493 do_test collate4-3.5 {
491 execsql { 494 execsql {
492 DROP TABLE collate4t1; 495 DROP TABLE collate4t1;
493 CREATE TABLE collate4t1(a COLLATE NOCASE UNIQUE); 496 CREATE TABLE collate4t1(a COLLATE NOCASE UNIQUE);
494 } 497 }
495 } {} 498 } {}
496 do_test collate4-3.6 { 499 do_test collate4-3.6 {
497 catchsql { 500 catchsql {
498 INSERT INTO collate4t1 VALUES('abc'); 501 INSERT INTO collate4t1 VALUES('abc');
499 INSERT INTO collate4t1 VALUES('ABC'); 502 INSERT INTO collate4t1 VALUES('ABC');
500 } 503 }
501 } {1 {column a is not unique}} 504 } {1 {UNIQUE constraint failed: collate4t1.a}}
502 do_test collate4-3.7 { 505 do_test collate4-3.7 {
503 execsql { 506 execsql {
504 SELECT * FROM collate4t1; 507 SELECT * FROM collate4t1;
505 } 508 }
506 } {abc} 509 } {abc}
507 do_test collate4-3.8 { 510 do_test collate4-3.8 {
508 catchsql { 511 catchsql {
509 INSERT INTO collate4t1 SELECT upper(a) FROM collate4t1; 512 INSERT INTO collate4t1 SELECT upper(a) FROM collate4t1;
510 } 513 }
511 } {1 {column a is not unique}} 514 } {1 {UNIQUE constraint failed: collate4t1.a}}
512 do_test collate4-3.9 { 515 do_test collate4-3.9 {
513 catchsql { 516 catchsql {
514 INSERT INTO collate4t1 VALUES(1); 517 INSERT INTO collate4t1 VALUES(1);
515 UPDATE collate4t1 SET a = 'abc'; 518 UPDATE collate4t1 SET a = 'abc';
516 } 519 }
517 } {1 {column a is not unique}} 520 } {1 {UNIQUE constraint failed: collate4t1.a}}
518 do_test collate4-3.10 { 521 do_test collate4-3.10 {
519 execsql { 522 execsql {
520 DROP TABLE collate4t1; 523 DROP TABLE collate4t1;
521 CREATE TABLE collate4t1(a); 524 CREATE TABLE collate4t1(a);
522 CREATE UNIQUE INDEX collate4i1 ON collate4t1(a COLLATE NOCASE); 525 CREATE UNIQUE INDEX collate4i1 ON collate4t1(a COLLATE NOCASE);
523 } 526 }
524 } {} 527 } {}
525 do_test collate4-3.11 { 528 do_test collate4-3.11 {
526 catchsql { 529 catchsql {
527 INSERT INTO collate4t1 VALUES('abc'); 530 INSERT INTO collate4t1 VALUES('abc');
528 INSERT INTO collate4t1 VALUES('ABC'); 531 INSERT INTO collate4t1 VALUES('ABC');
529 } 532 }
530 } {1 {column a is not unique}} 533 } {1 {UNIQUE constraint failed: collate4t1.a}}
531 do_test collate4-3.12 { 534 do_test collate4-3.12 {
532 execsql { 535 execsql {
533 SELECT * FROM collate4t1; 536 SELECT * FROM collate4t1;
534 } 537 }
535 } {abc} 538 } {abc}
536 do_test collate4-3.13 { 539 do_test collate4-3.13 {
537 catchsql { 540 catchsql {
538 INSERT INTO collate4t1 SELECT upper(a) FROM collate4t1; 541 INSERT INTO collate4t1 SELECT upper(a) FROM collate4t1;
539 } 542 }
540 } {1 {column a is not unique}} 543 } {1 {UNIQUE constraint failed: collate4t1.a}}
541 do_test collate4-3.14 { 544 do_test collate4-3.14 {
542 catchsql { 545 catchsql {
543 INSERT INTO collate4t1 VALUES(1); 546 INSERT INTO collate4t1 VALUES(1);
544 UPDATE collate4t1 SET a = 'abc'; 547 UPDATE collate4t1 SET a = 'abc';
545 } 548 }
546 } {1 {column a is not unique}} 549 } {1 {UNIQUE constraint failed: collate4t1.a}}
547 550
548 do_test collate4-3.15 { 551 do_test collate4-3.15 {
549 execsql { 552 execsql {
550 DROP TABLE collate4t1; 553 DROP TABLE collate4t1;
551 } 554 }
552 } {} 555 } {}
553 556
554 # Mimic the SQLite 2 collation type NUMERIC. 557 # Mimic the SQLite 2 collation type NUMERIC.
555 db collate numeric numeric_collate 558 db collate numeric numeric_collate
556 proc numeric_collate {lhs rhs} { 559 proc numeric_collate {lhs rhs} {
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
692 SELECT * FROM collate4t1 ORDER BY oid; 695 SELECT * FROM collate4t1 ORDER BY oid;
693 } 696 }
694 } {10 15 101 nosort} 697 } {10 15 101 nosort}
695 do_test collate4-6.3 { 698 do_test collate4-6.3 {
696 cksort { 699 cksort {
697 SELECT * FROM collate4t1 ORDER BY oid||'' COLLATE TEXT; 700 SELECT * FROM collate4t1 ORDER BY oid||'' COLLATE TEXT;
698 } 701 }
699 } {10 101 15 sort} 702 } {10 101 15 sort}
700 703
701 finish_test 704 finish_test
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698