Index: third_party/sqlite/src/test/collate3.test |
diff --git a/third_party/sqlite/src/test/collate3.test b/third_party/sqlite/src/test/collate3.test |
index c4dbfbe4cf344c7e1c3abb0cf57453b5ab0d7713..2c051cb9a74fbdca4b60cdebace083de0cc4d090 100644 |
--- a/third_party/sqlite/src/test/collate3.test |
+++ b/third_party/sqlite/src/test/collate3.test |
@@ -55,6 +55,104 @@ execsql { |
DROP TABLE collate3t1; |
} |
+proc caseless {a b} { string compare -nocase $a $b } |
+do_test collate3-1.4 { |
+ db collate caseless caseless |
+ execsql { |
+ CREATE TABLE t1(a COLLATE caseless); |
+ INSERT INTO t1 VALUES('Abc2'); |
+ INSERT INTO t1 VALUES('abc1'); |
+ INSERT INTO t1 VALUES('aBc3'); |
+ } |
+ execsql { SELECT * FROM t1 ORDER BY a } |
+} {abc1 Abc2 aBc3} |
+ |
+do_test collate3-1.5 { |
+ db close |
+ sqlite3 db test.db |
+ catchsql { SELECT * FROM t1 ORDER BY a } |
+} {1 {no such collation sequence: caseless}} |
+ |
+do_test collate3-1.6.1 { |
+ db collate caseless caseless |
+ execsql { CREATE INDEX i1 ON t1(a) } |
+ execsql { SELECT * FROM t1 ORDER BY a } |
+} {abc1 Abc2 aBc3} |
+ |
+do_test collate3-1.6.2 { |
+ db close |
+ sqlite3 db test.db |
+ catchsql { SELECT * FROM t1 ORDER BY a } |
+} {1 {no such collation sequence: caseless}} |
+ |
+do_test collate3-1.6.3 { |
+ db close |
+ sqlite3 db test.db |
+ catchsql { PRAGMA integrity_check } |
+} {1 {no such collation sequence: caseless}} |
+ |
+do_test collate3-1.6.4 { |
+ db close |
+ sqlite3 db test.db |
+ catchsql { REINDEX } |
+} {1 {no such collation sequence: caseless}} |
+ |
+do_test collate3-1.7.1 { |
+ db collate caseless caseless |
+ execsql { |
+ DROP TABLE t1; |
+ CREATE TABLE t1(a); |
+ CREATE INDEX i1 ON t1(a COLLATE caseless); |
+ INSERT INTO t1 VALUES('Abc2'); |
+ INSERT INTO t1 VALUES('abc1'); |
+ INSERT INTO t1 VALUES('aBc3'); |
+ SELECT * FROM t1 ORDER BY a COLLATE caseless; |
+ } |
+} {abc1 Abc2 aBc3} |
+ |
+do_test collate3-1.7.2 { |
+ db close |
+ sqlite3 db test.db |
+ catchsql { SELECT * FROM t1 ORDER BY a COLLATE caseless} |
+} {1 {no such collation sequence: caseless}} |
+ |
+do_test collate3-1.7.4 { |
+ db close |
+ sqlite3 db test.db |
+ catchsql { REINDEX } |
+} {1 {no such collation sequence: caseless}} |
+ |
+do_test collate3-1.7.3 { |
+ db close |
+ sqlite3 db test.db |
+ catchsql { PRAGMA integrity_check } |
+} {1 {no such collation sequence: caseless}} |
+ |
+do_test collate3-1.7.4 { |
+ db close |
+ sqlite3 db test.db |
+ catchsql { REINDEX } |
+} {1 {no such collation sequence: caseless}} |
+ |
+do_test collate3-1.7.5 { |
+ db close |
+ sqlite3 db test.db |
+ db collate caseless caseless |
+ catchsql { PRAGMA integrity_check } |
+} {0 ok} |
+ |
+proc needed {nm} { db collate caseless caseless } |
+do_test collate3-1.7.6 { |
+ db close |
+ sqlite3 db test.db |
+ db collation_needed needed |
+ catchsql { PRAGMA integrity_check } |
+} {0 ok} |
+ |
+do_test collate3-1.8 { |
+ execsql { DROP TABLE t1 } |
+} {} |
+ |
# |
# Create a table with a default collation sequence, then close |
# and re-open the database without re-registering the collation |