AryaWu/sqlite
0
1# 2010 March 252#3# The author disclaims copyright to this source code. In place of4# a legal notice, here is a blessing:5#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.9#10#***********************************************************************11#12# This file implements tests to verify that ticket [cbd054fa6b] has been13# fixed. 14#15 16set testdir [file dirname $argv0]17source $testdir/tester.tcl18 19ifcapable !stat4 {20 finish_test21 return22}23 24proc s {blob} {25 set ret ""26 binary scan $blob c* bytes27 foreach b $bytes {28 set t [binary format c $b]29 if {[string is print $t]} {30 append ret $t31 } else {32 append ret .33 }34 }35 return $ret36}37db function s s38 39do_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}56do_test tkt-cbd05-1.2 {57 db eval { ANALYZE; }58 db eval {59 PRAGMA writable_schema = 1;60 CREATE VIEW vvv AS 61 SELECT tbl,idx,neq,nlt,ndlt,test_extract(sample,0) AS sample62 FROM sqlite_stat4;63 PRAGMA writable_schema = 0;64 }65} {}66do_test tkt-cbd05-1.3 {67 execsql { 68 SELECT tbl,idx,string_agg(s(sample),' ') 69 FROM vvv 70 WHERE idx = 't1_x' 71 GROUP BY tbl,idx72 }73} {t1 t1_x { A B C D E F G H I}}74 75do_test tkt-cbd05-2.1 {76 db eval {77 DROP TABLE t1;78 CREATE TABLE t1(a INTEGER PRIMARY KEY, b BLOB UNIQUE NOT NULL);79 CREATE INDEX t1_x ON t1(b);80 INSERT INTO t1 VALUES(NULL, X'');81 INSERT INTO t1 VALUES(NULL, X'41');82 INSERT INTO t1 VALUES(NULL, X'42');83 INSERT INTO t1 VALUES(NULL, X'43');84 INSERT INTO t1 VALUES(NULL, X'44');85 INSERT INTO t1 VALUES(NULL, X'45');86 INSERT INTO t1 VALUES(NULL, X'46');87 INSERT INTO t1 VALUES(NULL, X'47');88 INSERT INTO t1 VALUES(NULL, X'48');89 INSERT INTO t1 VALUES(NULL, X'49');90 SELECT count(*) FROM t1;91 }92} {10}93do_test tkt-cbd05-2.2 {94 db eval {95 ANALYZE;96 }97} {}98do_test tkt-cbd05-2.3 {99 execsql { 100 SELECT tbl,idx,group_concat(s(sample),' ') 101 FROM vvv 102 WHERE idx = 't1_x' 103 GROUP BY tbl,idx104 }105} {t1 t1_x { A B C D E F G H I}}106 107finish_test108 