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

📄 format3.test

📁 sqlite数据库源码
💻 TEST
📖 第 1 页 / 共 2 页
字号:
  count {SELECT w FROM t1 WHERE w+1==98}} {97 99}do_test format3-5.35 {  count {SELECT w FROM t1 WHERE w<3}} {1 2 4}do_test format3-5.36 {  count {SELECT w FROM t1 WHERE w<=3}} {1 2 3 6}do_test format3-5.37 {  count {SELECT w FROM t1 WHERE w+1<=4 ORDER BY w}} {1 2 3 199}# Do the same kind of thing except use a join as the data source.#do_test format3-6.1 {  db close  sqlite db test.db  count {    SELECT w, p FROM t2, t1    WHERE x=q AND y=s AND r=8977  }} {34 67 6}do_test format3-6.2 {  count {    SELECT w, p FROM t2, t1    WHERE x=q AND s=y AND r=8977  }} {34 67 6}do_test format3-6.3 {  count {    SELECT w, p FROM t2, t1    WHERE x=q AND s=y AND r=8977 AND w>10  }} {34 67 6}do_test format3-6.4 {  count {    SELECT w, p FROM t2, t1    WHERE p<80 AND x=q AND s=y AND r=8977 AND w>10  }} {34 67 6}do_test format3-6.5 {  count {    SELECT w, p FROM t2, t1    WHERE p<80 AND x=q AND 8977=r AND s=y AND w>10  }} {34 67 6}do_test format3-6.6 {  count {    SELECT w, p FROM t2, t1    WHERE x=q AND p=77 AND s=y AND w>5  }} {24 77 6}do_test format3-6.7 {  count {    SELECT w, p FROM t1, t2    WHERE x=q AND p>77 AND s=y AND w=5  }} {5 96 6}# Lets do a 3-way join.#do_test format3-7.1 {  count {    SELECT A.w, B.p, C.w FROM t1 as A, t2 as B, t1 as C    WHERE C.w=101-B.p AND B.r=10202-A.y AND A.w=11  }} {11 90 11 9}do_test format3-7.2 {  count {    SELECT A.w, B.p, C.w FROM t1 as A, t2 as B, t1 as C    WHERE C.w=101-B.p AND B.r=10202-A.y AND A.w=12  }} {12 89 12 9}do_test format3-7.3 {  count {    SELECT A.w, B.p, C.w FROM t1 as A, t2 as B, t1 as C    WHERE A.w=15 AND B.p=C.w AND B.r=10202-A.y  }} {15 86 86 9}# Test to see that the special case of a constant WHERE clause is# handled.#do_test format3-8.1 {  count {    SELECT * FROM t1 WHERE 0  }} {0}do_test format3-8.2 {  count {    SELECT * FROM t1 WHERE 1 LIMIT 1  }} {1 0 4 1}do_test format3-8.3 {  execsql {    SELECT 99 WHERE 0  }} {}do_test format3-8.4 {  execsql {    SELECT 99 WHERE 1  }} {99}# Verify that IN operators in a WHERE clause are handled correctly.#do_test format3-9.1 {  count {    SELECT * FROM t1 WHERE rowid IN (1,2,3,1234) order by 1;  }} {1 0 4 2 1 9 3 1 16 0}do_test format3-9.2 {  count {    SELECT * FROM t1 WHERE rowid+0 IN (1,2,3,1234) order by 1;  }} {1 0 4 2 1 9 3 1 16 199}do_test format3-9.3 {  count {    SELECT * FROM t1 WHERE w IN (-1,1,2,3) order by 1;  }} {1 0 4 2 1 9 3 1 16 10}do_test format3-9.4 {  count {    SELECT * FROM t1 WHERE w+0 IN (-1,1,2,3) order by 1;  }} {1 0 4 2 1 9 3 1 16 199}do_test format3-9.5 {  count {    SELECT * FROM t1 WHERE rowid IN        (select rowid from t1 where rowid IN (-1,2,4))    ORDER BY 1;  }} {2 1 9 4 2 25 1}do_test format3-9.6 {  count {    SELECT * FROM t1 WHERE rowid+0 IN        (select rowid from t1 where rowid IN (-1,2,4))    ORDER BY 1;  }} {2 1 9 4 2 25 199}do_test format3-9.7 {  count {    SELECT * FROM t1 WHERE w IN        (select rowid from t1 where rowid IN (-1,2,4))    ORDER BY 1;  }} {2 1 9 4 2 25 7}do_test format3-9.8 {  count {    SELECT * FROM t1 WHERE w+0 IN        (select rowid from t1 where rowid IN (-1,2,4))    ORDER BY 1;  }} {2 1 9 4 2 25 199}do_test format3-9.9 {  count {    SELECT * FROM t1 WHERE x IN (1,7) ORDER BY 1;  }} {2 1 9 3 1 16 6}do_test format3-9.10 {  count {    SELECT * FROM t1 WHERE x+0 IN (1,7) ORDER BY 1;  }} {2 1 9 3 1 16 199}do_test format3-9.11 {  count {    SELECT * FROM t1 WHERE y IN (6400,8100) ORDER BY 1;  }} {79 6 6400 89 6 8100 199}do_test format3-9.12 {  count {    SELECT * FROM t1 WHERE x=6 AND y IN (6400,8100) ORDER BY 1;  }} {79 6 6400 89 6 8100 74}do_test format3-9.13 {  count {    SELECT * FROM t1 WHERE x IN (1,7) AND y NOT IN (6400,8100) ORDER BY 1;  }} {2 1 9 3 1 16 6}do_test format3-9.14 {  count {    SELECT * FROM t1 WHERE x IN (1,7) AND y IN (9,10) ORDER BY 1;  }} {2 1 9 6}# This procedure executes the SQL.  Then it checks the generated program# for the SQL and appends a "nosort" to the result if the program contains the# SortCallback opcode.  If the program does not contain the SortCallback# opcode it appends "sort"#proc cksort {sql} {  set data [execsql $sql]  set prog [execsql "EXPLAIN $sql"]  if {[regexp SortCallback $prog]} {set x sort} {set x nosort}  lappend data $x  return $data}# Check out the logic that attempts to implement the ORDER BY clause# using an index rather than by sorting.#do_test format3-10.1 {  execsql {    CREATE TABLE t3(a,b,c);    CREATE INDEX t3a ON t3(a);    CREATE INDEX t3bc ON t3(b,c);    CREATE INDEX t3acb ON t3(a,c,b);    INSERT INTO t3 SELECT w, 101-w, y FROM t1;    SELECT count(*), sum(a), sum(b), sum(c) FROM t3;  }} {100 5050 5050 348550}do_test format3-10.2 {  cksort {    SELECT * FROM t3 ORDER BY a LIMIT 3  }} {1 100 4 2 99 9 3 98 16 nosort}do_test format3-10.3 {  cksort {    SELECT * FROM t3 ORDER BY a+1 LIMIT 3  }} {1 100 4 2 99 9 3 98 16 sort}do_test format3-10.4 {  cksort {    SELECT * FROM t3 WHERE a<10 ORDER BY a LIMIT 3  }} {1 100 4 2 99 9 3 98 16 nosort}do_test format3-10.5 {  cksort {    SELECT * FROM t3 WHERE a>0 AND a<10 ORDER BY a LIMIT 3  }} {1 100 4 2 99 9 3 98 16 nosort}do_test format3-10.6 {  cksort {    SELECT * FROM t3 WHERE a>0 ORDER BY a LIMIT 3  }} {1 100 4 2 99 9 3 98 16 nosort}do_test format3-10.7 {  cksort {    SELECT * FROM t3 WHERE b>0 ORDER BY a LIMIT 3  }} {1 100 4 2 99 9 3 98 16 sort}do_test format3-10.8 {  cksort {    SELECT * FROM t3 WHERE a IN (3,5,7,1,9,4,2) ORDER BY a LIMIT 3  }} {1 100 4 2 99 9 3 98 16 sort}do_test format3-10.9 {  cksort {    SELECT * FROM t3 WHERE a=1 AND c>0 ORDER BY a LIMIT 3  }} {1 100 4 nosort}do_test format3-10.10 {  cksort {    SELECT * FROM t3 WHERE a=1 AND c>0 ORDER BY a LIMIT 3  }} {1 100 4 nosort}do_test format3-10.11 {  cksort {    SELECT * FROM t3 WHERE a=1 AND c>0 ORDER BY a,c LIMIT 3  }} {1 100 4 nosort}do_test format3-10.12 {  cksort {    SELECT * FROM t3 WHERE a=1 AND c>0 ORDER BY a,c,b LIMIT 3  }} {1 100 4 nosort}do_test format3-10.13 {  cksort {    SELECT * FROM t3 WHERE a>0 ORDER BY a DESC LIMIT 3  }} {100 1 10201 99 2 10000 98 3 9801 nosort}do_test format3-10.13.1 {  cksort {    SELECT * FROM t3 WHERE a>0 ORDER BY a+1 DESC LIMIT 3  }} {100 1 10201 99 2 10000 98 3 9801 sort}do_test format3-10.14 {  cksort {    SELECT * FROM t3 ORDER BY b LIMIT 3  }} {100 1 10201 99 2 10000 98 3 9801 nosort}do_test format3-10.15 {  cksort {    SELECT t3.a, t1.x FROM t3, t1 WHERE t3.a=t1.w ORDER BY t3.a LIMIT 3  }} {1 0 2 1 3 1 nosort}do_test format3-10.16 {  cksort {    SELECT t3.a, t1.x FROM t3, t1 WHERE t3.a=t1.w ORDER BY t1.x, t3.a LIMIT 3  }} {1 0 2 1 3 1 sort}do_test format3-10.17 {  cksort {    SELECT y FROM t1 ORDER BY w COLLATE text LIMIT 3;  }} {4 121 10201 sort}do_test format3-10.18 {  cksort {    SELECT y FROM t1 ORDER BY w COLLATE numeric LIMIT 3;  }} {4 9 16 sort}do_test format3-10.19 {  cksort {    SELECT y FROM t1 ORDER BY w LIMIT 3;  }} {4 9 16 nosort}# Check that all comparisons are numeric.  Similar tests in misc1.test# check the same comparisons on a format4+ database and find that some# are numeric and some are text.#do_test format3-11.1 {  execsql {SELECT '0'=='0.0'}} {1}do_test format3-11.2 {  execsql {SELECT '0'==0.0}} {1}do_test format3-11.3 {  execsql {SELECT '123456789012345678901'=='123456789012345678900'}} {1}do_test format3-11.4 {  execsql {    CREATE TABLE t6(a INT UNIQUE, b TEXT UNIQUE);    INSERT INTO t6 VALUES('0','0.0');    SELECT * FROM t6;  }} {0 0.0}do_test format3-11.5 {  execsql {    INSERT OR IGNORE INTO t6 VALUES(0.0,'x');    SELECT * FROM t6;  }} {0 0.0}do_test format3-11.6 {  execsql {    INSERT OR IGNORE INTO t6 VALUES('y',0);    SELECT * FROM t6;  }} {0 0.0}do_test format3-11.7 {  execsql {    CREATE TABLE t7(x INTEGER, y TEXT, z);    INSERT INTO t7 VALUES(0,0,1);    INSERT INTO t7 VALUES(0.0,0,2);    INSERT INTO t7 VALUES(0,0.0,3);    INSERT INTO t7 VALUES(0.0,0.0,4);    SELECT DISTINCT x, y FROM t7 ORDER BY z;  }} {0 0}# Make sure attempts to attach a format 3 database fail.#do_test format3-12.1 {  file delete -force test2.db  sqlite db2 test2.db  catchsql {    CREATE TABLE t8(x,y);    ATTACH DATABASE 'test.db' AS format3;  } db2;} {1 {incompatible file format in auxiliary database: format3}}do_test format3-12.2 {  catchsql {    ATTACH DATABASE 'test2.db' AS test2;  }} {1 {cannot attach auxiliary databases to an older format master database}}db2 closefinish_test

⌨️ 快捷键说明

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