OLD | NEW |
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 # |
11 #*********************************************************************** | 11 #*********************************************************************** |
12 # This file implements regression tests for SQLite library. The | 12 # This file implements regression tests for SQLite library. The |
13 # focus of this script is page cache subsystem. | 13 # focus of this script is page cache subsystem. |
14 # | 14 # |
15 # $Id: collate2.test,v 1.6 2008/08/20 16:35:10 drh Exp $ | 15 # $Id: collate2.test,v 1.6 2008/08/20 16:35:10 drh Exp $ |
16 | 16 |
17 set testdir [file dirname $argv0] | 17 set testdir [file dirname $argv0] |
18 source $testdir/tester.tcl | 18 source $testdir/tester.tcl |
19 | 19 |
| 20 set ::testprefix collate2 |
| 21 |
20 # | 22 # |
21 # Tests are organised as follows: | 23 # Tests are organised as follows: |
22 # | 24 # |
23 # collate2-1.* WHERE <expr> expressions (sqliteExprIfTrue). | 25 # collate2-1.* WHERE <expr> expressions (sqliteExprIfTrue). |
24 # collate2-2.* WHERE NOT <expr> expressions (sqliteExprIfFalse). | 26 # collate2-2.* WHERE NOT <expr> expressions (sqliteExprIfFalse). |
25 # collate2-3.* SELECT <expr> expressions (sqliteExprCode). | 27 # collate2-3.* SELECT <expr> expressions (sqliteExprCode). |
26 # collate2-4.* Precedence of collation/data types in binary comparisons | 28 # collate2-4.* Precedence of collation/data types in binary comparisons |
27 # collate2-5.* JOIN syntax. | 29 # collate2-5.* JOIN syntax. |
28 # | 30 # |
29 | 31 |
(...skipping 599 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
629 SELECT collate2t1.a FROM collate2t1, collate2t2 | 631 SELECT collate2t1.a FROM collate2t1, collate2t2 |
630 WHERE collate2t2.b = collate2t1.b; | 632 WHERE collate2t2.b = collate2t1.b; |
631 } | 633 } |
632 } {aa} | 634 } {aa} |
633 | 635 |
634 # Test that when one side has a default collation type and the other | 636 # Test that when one side has a default collation type and the other |
635 # does not, the collation type is used. | 637 # does not, the collation type is used. |
636 do_test collate2-4.3 { | 638 do_test collate2-4.3 { |
637 execsql { | 639 execsql { |
638 SELECT collate2t1.a FROM collate2t1, collate2t3 | 640 SELECT collate2t1.a FROM collate2t1, collate2t3 |
639 WHERE collate2t1.b = collate2t3.b||''; | 641 WHERE collate2t1.b = collate2t3.b||'' |
| 642 ORDER BY +collate2t1.a DESC; |
640 } | 643 } |
641 } {aa aA Aa AA} | 644 } {aa aA Aa AA} |
642 do_test collate2-4.4 { | 645 do_test collate2-4.4 { |
643 execsql { | 646 execsql { |
644 SELECT collate2t1.a FROM collate2t1, collate2t3 | 647 SELECT collate2t1.a FROM collate2t1, collate2t3 |
645 WHERE collate2t3.b||'' = collate2t1.b; | 648 WHERE collate2t3.b||'' = collate2t1.b |
| 649 ORDER BY +collate2t1.a DESC; |
646 } | 650 } |
647 } {aa aA Aa AA} | 651 } {aa aA Aa AA} |
648 | 652 |
649 do_test collate2-4.5 { | 653 do_test collate2-4.5 { |
650 execsql { | 654 execsql { |
651 DROP TABLE collate2t3; | 655 DROP TABLE collate2t3; |
652 } | 656 } |
653 } {} | 657 } {} |
654 | 658 |
655 # | 659 # |
(...skipping 28 matching lines...) Expand all Loading... |
684 execsql { | 688 execsql { |
685 SELECT collate2t2.b FROM collate2t1 LEFT OUTER JOIN collate2t2 USING (b) ord
er by collate2t1.oid; | 689 SELECT collate2t2.b FROM collate2t1 LEFT OUTER JOIN collate2t2 USING (b) ord
er by collate2t1.oid; |
686 } | 690 } |
687 } {{} aa {} {} {} aa {} {} {} aa {} {} {} aa {} {} {}} | 691 } {{} aa {} {} {} aa {} {} {} aa {} {} {} aa {} {} {}} |
688 do_test collate2-5.5 { | 692 do_test collate2-5.5 { |
689 execsql { | 693 execsql { |
690 SELECT collate2t1.b, collate2t2.b FROM collate2t2 LEFT OUTER JOIN collate2t1
USING (b); | 694 SELECT collate2t1.b, collate2t2.b FROM collate2t2 LEFT OUTER JOIN collate2t1
USING (b); |
691 } | 695 } |
692 } {aa aa} | 696 } {aa aa} |
693 | 697 |
| 698 do_execsql_test 6.1 { |
| 699 CREATE TABLE t1(x); |
| 700 INSERT INTO t1 VALUES('b'); |
| 701 INSERT INTO t1 VALUES('B'); |
| 702 } |
| 703 do_execsql_test 6.2 { |
| 704 SELECT * FROM t1 WHERE x COLLATE nocase BETWEEN 'a' AND 'c'; |
| 705 } {b B} |
| 706 do_execsql_test 6.3 { |
| 707 SELECT * FROM t1 WHERE x BETWEEN 'a' COLLATE nocase AND 'c' COLLATE nocase; |
| 708 } {b B} |
| 709 do_execsql_test 6.4 { |
| 710 SELECT * FROM t1 |
| 711 WHERE x COLLATE nocase BETWEEN 'a' COLLATE nocase AND 'c' COLLATE nocase; |
| 712 } {b B} |
| 713 do_execsql_test 6.5 { |
| 714 SELECT * FROM t1 WHERE +x COLLATE nocase BETWEEN 'a' AND 'c'; |
| 715 } {b B} |
| 716 do_execsql_test 6.6 { |
| 717 SELECT * FROM t1 WHERE +x BETWEEN 'a' COLLATE nocase AND 'c' COLLATE nocase; |
| 718 } {b B} |
| 719 do_execsql_test 6.7 { |
| 720 SELECT * FROM t1 |
| 721 WHERE +x COLLATE nocase BETWEEN 'a' COLLATE nocase AND 'c' COLLATE nocase; |
| 722 } {b B} |
| 723 |
694 finish_test | 724 finish_test |
OLD | NEW |