⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 collate4.test

📁 sqlite-3.4.1,嵌入式数据库.是一个功能强大的开源数据库,给学习和研发以及小型公司的发展带来了全所未有的好处.
💻 TEST
📖 第 1 页 / 共 2 页
字号:
    SELECT * FROM collate4t2, collate4t1 WHERE a = b;  }} {A a A A 5}do_test collate4-2.1.3 {  count {    SELECT * FROM collate4t2, collate4t1 WHERE b = a;  }} {A A 19}do_test collate4-2.1.4 {  execsql {    DROP INDEX collate4i1;    CREATE INDEX collate4i1 ON collate4t1(a COLLATE TEXT);  }  count {    SELECT * FROM collate4t2, collate4t1 WHERE a = b;  }} {A a A A 19}do_test collate4-2.1.5 {  count {    SELECT * FROM collate4t2, collate4t1 WHERE b = a;  }} {A A 4}ifcapable subquery {  do_test collate4-2.1.6 {    count {      SELECT a FROM collate4t1 WHERE a IN (SELECT * FROM collate4t2);    }  } {a A 10}  do_test collate4-2.1.7 {    execsql {      DROP INDEX collate4i1;      CREATE INDEX collate4i1 ON collate4t1(a);    }    count {      SELECT a FROM collate4t1 WHERE a IN (SELECT * FROM collate4t2);    }  } {a A 6}  do_test collate4-2.1.8 {    count {      SELECT a FROM collate4t1 WHERE a IN ('z', 'a');    }  } {a A 5}  do_test collate4-2.1.9 {    execsql {      DROP INDEX collate4i1;      CREATE INDEX collate4i1 ON collate4t1(a COLLATE TEXT);    }    count {      SELECT a FROM collate4t1 WHERE a IN ('z', 'a');    }  } {a A 9}}do_test collate4-2.1.10 {  execsql {    DROP TABLE collate4t1;    DROP TABLE collate4t2;  }} {}do_test collate4-2.2.0 {  execsql {    CREATE TABLE collate4t1(a COLLATE nocase, b COLLATE text, c);    CREATE TABLE collate4t2(a COLLATE nocase, b COLLATE text, c COLLATE TEXT);    INSERT INTO collate4t1 VALUES('0', '0', '0');    INSERT INTO collate4t1 VALUES('0', '0', '1');    INSERT INTO collate4t1 VALUES('0', '1', '0');    INSERT INTO collate4t1 VALUES('0', '1', '1');    INSERT INTO collate4t1 VALUES('1', '0', '0');    INSERT INTO collate4t1 VALUES('1', '0', '1');    INSERT INTO collate4t1 VALUES('1', '1', '0');    INSERT INTO collate4t1 VALUES('1', '1', '1');    insert into collate4t2 SELECT * FROM collate4t1;  }} {}do_test collate4-2.2.1 {  count {    SELECT * FROM collate4t2 NATURAL JOIN collate4t1;  }} {0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 63}do_test collate4-2.2.1b {  execsql {    CREATE INDEX collate4i1 ON collate4t1(a, b, c);  }  count {    SELECT * FROM collate4t2 NATURAL JOIN collate4t1;  }} {0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 29}do_test collate4-2.2.2 {  execsql {    DROP INDEX collate4i1;    CREATE INDEX collate4i1 ON collate4t1(a, b, c COLLATE text);  }  count {    SELECT * FROM collate4t2 NATURAL JOIN collate4t1;  }} {0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 22}do_test collate4-2.2.10 {  execsql {    DROP TABLE collate4t1;    DROP TABLE collate4t2;  }} {}## These tests - collate4-3.* verify that indices that implement# UNIQUE and PRIMARY KEY constraints operate correctly with user# defined collation sequences.#do_test collate4-3.0 {  execsql {    CREATE TABLE collate4t1(a PRIMARY KEY COLLATE NOCASE);  }} {}do_test collate4-3.1 {  catchsql {    INSERT INTO collate4t1 VALUES('abc');    INSERT INTO collate4t1 VALUES('ABC');  }} {1 {column a is not unique}}do_test collate4-3.2 {  execsql {    SELECT * FROM collate4t1;  }} {abc}do_test collate4-3.3 {  catchsql {    INSERT INTO collate4t1 SELECT upper(a) FROM collate4t1;  }} {1 {column a is not unique}}do_test collate4-3.4 {  catchsql {    INSERT INTO collate4t1 VALUES(1);    UPDATE collate4t1 SET a = 'abc';  }} {1 {column a is not unique}}do_test collate4-3.5 {  execsql {    DROP TABLE collate4t1;    CREATE TABLE collate4t1(a COLLATE NOCASE UNIQUE);  }} {}do_test collate4-3.6 {  catchsql {    INSERT INTO collate4t1 VALUES('abc');    INSERT INTO collate4t1 VALUES('ABC');  }} {1 {column a is not unique}}do_test collate4-3.7 {  execsql {    SELECT * FROM collate4t1;  }} {abc}do_test collate4-3.8 {  catchsql {    INSERT INTO collate4t1 SELECT upper(a) FROM collate4t1;  }} {1 {column a is not unique}}do_test collate4-3.9 {  catchsql {    INSERT INTO collate4t1 VALUES(1);    UPDATE collate4t1 SET a = 'abc';  }} {1 {column a is not unique}}do_test collate4-3.10 {  execsql {    DROP TABLE collate4t1;    CREATE TABLE collate4t1(a);    CREATE UNIQUE INDEX collate4i1 ON collate4t1(a COLLATE NOCASE);  }} {}do_test collate4-3.11 {  catchsql {    INSERT INTO collate4t1 VALUES('abc');    INSERT INTO collate4t1 VALUES('ABC');  }} {1 {column a is not unique}}do_test collate4-3.12 {  execsql {    SELECT * FROM collate4t1;  }} {abc}do_test collate4-3.13 {  catchsql {    INSERT INTO collate4t1 SELECT upper(a) FROM collate4t1;  }} {1 {column a is not unique}}do_test collate4-3.14 {  catchsql {    INSERT INTO collate4t1 VALUES(1);    UPDATE collate4t1 SET a = 'abc';  }} {1 {column a is not unique}}do_test collate4-3.15 {  execsql {    DROP TABLE collate4t1;  }} {}# Mimic the SQLite 2 collation type NUMERIC.db collate numeric numeric_collateproc numeric_collate {lhs rhs} {  if {$lhs == $rhs} {return 0}   return [expr ($lhs>$rhs)?1:-1]}## These tests - collate4-4.* check that min() and max() only ever # use indices constructed with built-in collation type numeric.## CHANGED:  min() and max() now use the collation type. If there# is an indice that can be used, it is used.#do_test collate4-4.0 {  execsql {    CREATE TABLE collate4t1(a COLLATE TEXT);    INSERT INTO collate4t1 VALUES('2');    INSERT INTO collate4t1 VALUES('10');    INSERT INTO collate4t1 VALUES('20');    INSERT INTO collate4t1 VALUES('104');  }} {}do_test collate4-4.1 {  count {    SELECT max(a) FROM collate4t1  }} {20 3}do_test collate4-4.2 {  count {    SELECT min(a) FROM collate4t1  }} {10 3}do_test collate4-4.3 {  # Test that the index with collation type TEXT is used.  execsql {    CREATE INDEX collate4i1 ON collate4t1(a);  }  count {    SELECT min(a) FROM collate4t1;  }} {10 2}do_test collate4-4.4 {  count {    SELECT max(a) FROM collate4t1;  }} {20 1}do_test collate4-4.5 {  # Test that the index with collation type NUMERIC is not used.  execsql {    DROP INDEX collate4i1;    CREATE INDEX collate4i1 ON collate4t1(a COLLATE NUMERIC);  }  count {    SELECT min(a) FROM collate4t1;  }} {10 3}do_test collate4-4.6 {  count {    SELECT max(a) FROM collate4t1;  }} {20 3}do_test collate4-4.7 {  execsql {    DROP TABLE collate4t1;  }} {}# Also test the scalar min() and max() functions.#do_test collate4-4.8 {  execsql {    CREATE TABLE collate4t1(a COLLATE TEXT, b COLLATE NUMERIC);    INSERT INTO collate4t1 VALUES('11', '101');    INSERT INTO collate4t1 VALUES('101', '11')  }} {}do_test collate4-4.9 {  execsql {    SELECT max(a, b) FROM collate4t1;  }} {11 11}do_test collate4-4.10 {  execsql {    SELECT max(b, a) FROM collate4t1;  }} {101 101}do_test collate4-4.11 {  execsql {    SELECT max(a, '101') FROM collate4t1;  }} {11 101}do_test collate4-4.12 {  execsql {    SELECT max('101', a) FROM collate4t1;  }} {11 101}do_test collate4-4.13 {  execsql {    SELECT max(b, '101') FROM collate4t1;  }} {101 101}do_test collate4-4.14 {  execsql {    SELECT max('101', b) FROM collate4t1;  }} {101 101}do_test collate4-4.15 {  execsql {    DROP TABLE collate4t1;  }} {}## These tests - collate4.6.* - ensure that implict INTEGER PRIMARY KEY # indices do not confuse collation sequences. ## These indices are never used for sorting in SQLite. And you can't# create another index on an INTEGER PRIMARY KEY column, so we don't have # to test that.# (Revised 2004-Nov-22):  The ROWID can be used for sorting now.#do_test collate4-6.0 {  execsql {    CREATE TABLE collate4t1(a INTEGER PRIMARY KEY);    INSERT INTO collate4t1 VALUES(101);    INSERT INTO collate4t1 VALUES(10);    INSERT INTO collate4t1 VALUES(15);  }} {}do_test collate4-6.1 {  cksort {    SELECT * FROM collate4t1 ORDER BY 1;  }} {10 15 101 nosort}do_test collate4-6.2 {  cksort {    SELECT * FROM collate4t1 ORDER BY oid;  }} {10 15 101 nosort}do_test collate4-6.3 {  cksort {    SELECT * FROM collate4t1 ORDER BY oid||'' COLLATE TEXT;  }} {10 101 15 sort}finish_test

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -