OLD | NEW |
1 # 2001 September 15 | 1 # 2001 September 15 |
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 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
48 do_test collate3-1.3 { | 48 do_test collate3-1.3 { |
49 catchsql { | 49 catchsql { |
50 CREATE INDEX collate3i1 ON collate3t1(c1 COLLATE garbage); | 50 CREATE INDEX collate3i1 ON collate3t1(c1 COLLATE garbage); |
51 } | 51 } |
52 } {1 {no such collation sequence: garbage}} | 52 } {1 {no such collation sequence: garbage}} |
53 | 53 |
54 execsql { | 54 execsql { |
55 DROP TABLE collate3t1; | 55 DROP TABLE collate3t1; |
56 } | 56 } |
57 | 57 |
| 58 proc caseless {a b} { string compare -nocase $a $b } |
| 59 do_test collate3-1.4 { |
| 60 db collate caseless caseless |
| 61 execsql { |
| 62 CREATE TABLE t1(a COLLATE caseless); |
| 63 INSERT INTO t1 VALUES('Abc2'); |
| 64 INSERT INTO t1 VALUES('abc1'); |
| 65 INSERT INTO t1 VALUES('aBc3'); |
| 66 } |
| 67 execsql { SELECT * FROM t1 ORDER BY a } |
| 68 } {abc1 Abc2 aBc3} |
| 69 |
| 70 do_test collate3-1.5 { |
| 71 db close |
| 72 sqlite3 db test.db |
| 73 catchsql { SELECT * FROM t1 ORDER BY a } |
| 74 } {1 {no such collation sequence: caseless}} |
| 75 |
| 76 do_test collate3-1.6.1 { |
| 77 db collate caseless caseless |
| 78 execsql { CREATE INDEX i1 ON t1(a) } |
| 79 execsql { SELECT * FROM t1 ORDER BY a } |
| 80 } {abc1 Abc2 aBc3} |
| 81 |
| 82 do_test collate3-1.6.2 { |
| 83 db close |
| 84 sqlite3 db test.db |
| 85 catchsql { SELECT * FROM t1 ORDER BY a } |
| 86 } {1 {no such collation sequence: caseless}} |
| 87 |
| 88 do_test collate3-1.6.3 { |
| 89 db close |
| 90 sqlite3 db test.db |
| 91 catchsql { PRAGMA integrity_check } |
| 92 } {1 {no such collation sequence: caseless}} |
| 93 |
| 94 do_test collate3-1.6.4 { |
| 95 db close |
| 96 sqlite3 db test.db |
| 97 catchsql { REINDEX } |
| 98 } {1 {no such collation sequence: caseless}} |
| 99 |
| 100 do_test collate3-1.7.1 { |
| 101 db collate caseless caseless |
| 102 execsql { |
| 103 DROP TABLE t1; |
| 104 CREATE TABLE t1(a); |
| 105 CREATE INDEX i1 ON t1(a COLLATE caseless); |
| 106 INSERT INTO t1 VALUES('Abc2'); |
| 107 INSERT INTO t1 VALUES('abc1'); |
| 108 INSERT INTO t1 VALUES('aBc3'); |
| 109 SELECT * FROM t1 ORDER BY a COLLATE caseless; |
| 110 } |
| 111 } {abc1 Abc2 aBc3} |
| 112 |
| 113 do_test collate3-1.7.2 { |
| 114 db close |
| 115 sqlite3 db test.db |
| 116 catchsql { SELECT * FROM t1 ORDER BY a COLLATE caseless} |
| 117 } {1 {no such collation sequence: caseless}} |
| 118 |
| 119 do_test collate3-1.7.4 { |
| 120 db close |
| 121 sqlite3 db test.db |
| 122 catchsql { REINDEX } |
| 123 } {1 {no such collation sequence: caseless}} |
| 124 |
| 125 do_test collate3-1.7.3 { |
| 126 db close |
| 127 sqlite3 db test.db |
| 128 catchsql { PRAGMA integrity_check } |
| 129 } {1 {no such collation sequence: caseless}} |
| 130 |
| 131 do_test collate3-1.7.4 { |
| 132 db close |
| 133 sqlite3 db test.db |
| 134 catchsql { REINDEX } |
| 135 } {1 {no such collation sequence: caseless}} |
| 136 |
| 137 do_test collate3-1.7.5 { |
| 138 db close |
| 139 sqlite3 db test.db |
| 140 db collate caseless caseless |
| 141 catchsql { PRAGMA integrity_check } |
| 142 } {0 ok} |
| 143 |
| 144 proc needed {nm} { db collate caseless caseless } |
| 145 do_test collate3-1.7.6 { |
| 146 db close |
| 147 sqlite3 db test.db |
| 148 db collation_needed needed |
| 149 catchsql { PRAGMA integrity_check } |
| 150 } {0 ok} |
| 151 |
| 152 do_test collate3-1.8 { |
| 153 execsql { DROP TABLE t1 } |
| 154 } {} |
| 155 |
58 # | 156 # |
59 # Create a table with a default collation sequence, then close | 157 # Create a table with a default collation sequence, then close |
60 # and re-open the database without re-registering the collation | 158 # and re-open the database without re-registering the collation |
61 # sequence. Then make sure the library stops us from using | 159 # sequence. Then make sure the library stops us from using |
62 # the collation sequence in: | 160 # the collation sequence in: |
63 # * an explicitly collated ORDER BY | 161 # * an explicitly collated ORDER BY |
64 # * an ORDER BY that uses the default collation sequence | 162 # * an ORDER BY that uses the default collation sequence |
65 # * an expression (=) | 163 # * an expression (=) |
66 # * a CREATE TABLE statement | 164 # * a CREATE TABLE statement |
67 # * a CREATE INDEX statement that uses a default collation sequence | 165 # * a CREATE INDEX statement that uses a default collation sequence |
(...skipping 351 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
419 } | 517 } |
420 } {0 {}} | 518 } {0 {}} |
421 | 519 |
422 do_test collate3-5.9 { | 520 do_test collate3-5.9 { |
423 execsql { | 521 execsql { |
424 DROP TABLE collate3t1; | 522 DROP TABLE collate3t1; |
425 } | 523 } |
426 } {} | 524 } {} |
427 | 525 |
428 finish_test | 526 finish_test |
OLD | NEW |