Merge updates from trunk.
[sqlite.git] / test / tkt-cbd054fa6b.test
blob2951233a5bb974c5213b7df5bd3950f585848386
1 # 2010 March 25
3 # The author disclaims copyright to this source code.  In place of
4 # a legal notice, here is a blessing:
6 #    May you do good and not evil.
7 #    May you find forgiveness for yourself and forgive others.
8 #    May you share freely, never taking more than you give.
10 #***********************************************************************
12 # This file implements tests to verify that ticket [cbd054fa6b] has been
13 # fixed.  
16 set testdir [file dirname $argv0]
17 source $testdir/tester.tcl
19 ifcapable !stat4&&!stat3 {
20   finish_test
21   return
24 proc s {blob} {
25   set ret ""
26   binary scan $blob c* bytes
27   foreach b $bytes {
28     set t [binary format c $b]
29     if {[string is print $t]} {
30       append ret $t
31     } else {
32       append ret .
33     }
34   }
35   return $ret
37 db function s s
39 do_test tkt-cbd05-1.1 {
40   db eval {
41     CREATE TABLE t1(a INTEGER PRIMARY KEY, b TEXT UNIQUE NOT NULL);
42     CREATE INDEX t1_x ON t1(b);
43     INSERT INTO t1 VALUES (NULL, '');
44     INSERT INTO t1 VALUES (NULL, 'A');
45     INSERT INTO t1 VALUES (NULL, 'B');
46     INSERT INTO t1 VALUES (NULL, 'C');
47     INSERT INTO t1 VALUES (NULL, 'D');
48     INSERT INTO t1 VALUES (NULL, 'E');
49     INSERT INTO t1 VALUES (NULL, 'F');
50     INSERT INTO t1 VALUES (NULL, 'G');
51     INSERT INTO t1 VALUES (NULL, 'H');
52     INSERT INTO t1 VALUES (NULL, 'I');
53     SELECT count(*) FROM t1;
54   }
55 } {10}
56 do_test tkt-cbd05-1.2 {
57   db eval { ANALYZE; }
58   ifcapable stat4 {
59     db eval {
60       PRAGMA writable_schema = 1;
61       CREATE VIEW vvv AS 
62       SELECT tbl,idx,neq,nlt,ndlt,test_extract(sample,0) AS sample
63       FROM sqlite_stat4;
64       PRAGMA writable_schema = 0;
65     }
66   } else {
67     db eval {
68       CREATE VIEW vvv AS 
69       SELECT tbl,idx,neq,nlt,ndlt,sample FROM sqlite_stat3;
70     }
71   }
72 } {}
73 do_test tkt-cbd05-1.3 {
74   execsql { 
75     SELECT tbl,idx,group_concat(s(sample),' ') 
76     FROM vvv 
77     WHERE idx = 't1_x' 
78     GROUP BY tbl,idx
79   }
80 } {t1 t1_x { A B C D E F G H I}}
82 do_test tkt-cbd05-2.1 {
83   db eval {
84     DROP TABLE t1;
85     CREATE TABLE t1(a INTEGER PRIMARY KEY, b BLOB UNIQUE NOT NULL);
86     CREATE INDEX t1_x ON t1(b);
87     INSERT INTO t1 VALUES(NULL, X'');
88     INSERT INTO t1 VALUES(NULL, X'41');
89     INSERT INTO t1 VALUES(NULL, X'42');
90     INSERT INTO t1 VALUES(NULL, X'43');
91     INSERT INTO t1 VALUES(NULL, X'44');
92     INSERT INTO t1 VALUES(NULL, X'45');
93     INSERT INTO t1 VALUES(NULL, X'46');
94     INSERT INTO t1 VALUES(NULL, X'47');
95     INSERT INTO t1 VALUES(NULL, X'48');
96     INSERT INTO t1 VALUES(NULL, X'49');
97     SELECT count(*) FROM t1;
98   }
99 } {10}
100 do_test tkt-cbd05-2.2 {
101   db eval {
102     ANALYZE;
103   }
104 } {}
105 do_test tkt-cbd05-2.3 {
106   execsql { 
107     SELECT tbl,idx,group_concat(s(sample),' ') 
108     FROM vvv 
109     WHERE idx = 't1_x' 
110     GROUP BY tbl,idx
111   }
112 } {t1 t1_x { A B C D E F G H I}}
114 finish_test