summaryrefslogtreecommitdiffstats
path: root/test/tkt-cbd054fa6b.test
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--test/tkt-cbd054fa6b.test107
1 files changed, 107 insertions, 0 deletions
diff --git a/test/tkt-cbd054fa6b.test b/test/tkt-cbd054fa6b.test
new file mode 100644
index 0000000..86248ca
--- /dev/null
+++ b/test/tkt-cbd054fa6b.test
@@ -0,0 +1,107 @@
+# 2010 March 25
+#
+# The author disclaims copyright to this source code. In place of
+# a legal notice, here is a blessing:
+#
+# May you do good and not evil.
+# May you find forgiveness for yourself and forgive others.
+# May you share freely, never taking more than you give.
+#
+#***********************************************************************
+#
+# This file implements tests to verify that ticket [cbd054fa6b] has been
+# fixed.
+#
+
+set testdir [file dirname $argv0]
+source $testdir/tester.tcl
+
+ifcapable !stat4 {
+ finish_test
+ return
+}
+
+proc s {blob} {
+ set ret ""
+ binary scan $blob c* bytes
+ foreach b $bytes {
+ set t [binary format c $b]
+ if {[string is print $t]} {
+ append ret $t
+ } else {
+ append ret .
+ }
+ }
+ return $ret
+}
+db function s s
+
+do_test tkt-cbd05-1.1 {
+ db eval {
+ CREATE TABLE t1(a INTEGER PRIMARY KEY, b TEXT UNIQUE NOT NULL);
+ CREATE INDEX t1_x ON t1(b);
+ INSERT INTO t1 VALUES (NULL, '');
+ INSERT INTO t1 VALUES (NULL, 'A');
+ INSERT INTO t1 VALUES (NULL, 'B');
+ INSERT INTO t1 VALUES (NULL, 'C');
+ INSERT INTO t1 VALUES (NULL, 'D');
+ INSERT INTO t1 VALUES (NULL, 'E');
+ INSERT INTO t1 VALUES (NULL, 'F');
+ INSERT INTO t1 VALUES (NULL, 'G');
+ INSERT INTO t1 VALUES (NULL, 'H');
+ INSERT INTO t1 VALUES (NULL, 'I');
+ SELECT count(*) FROM t1;
+ }
+} {10}
+do_test tkt-cbd05-1.2 {
+ db eval { ANALYZE; }
+ db eval {
+ PRAGMA writable_schema = 1;
+ CREATE VIEW vvv AS
+ SELECT tbl,idx,neq,nlt,ndlt,test_extract(sample,0) AS sample
+ FROM sqlite_stat4;
+ PRAGMA writable_schema = 0;
+ }
+} {}
+do_test tkt-cbd05-1.3 {
+ execsql {
+ SELECT tbl,idx,group_concat(s(sample),' ')
+ FROM vvv
+ WHERE idx = 't1_x'
+ GROUP BY tbl,idx
+ }
+} {t1 t1_x { A B C D E F G H I}}
+
+do_test tkt-cbd05-2.1 {
+ db eval {
+ DROP TABLE t1;
+ CREATE TABLE t1(a INTEGER PRIMARY KEY, b BLOB UNIQUE NOT NULL);
+ CREATE INDEX t1_x ON t1(b);
+ INSERT INTO t1 VALUES(NULL, X'');
+ INSERT INTO t1 VALUES(NULL, X'41');
+ INSERT INTO t1 VALUES(NULL, X'42');
+ INSERT INTO t1 VALUES(NULL, X'43');
+ INSERT INTO t1 VALUES(NULL, X'44');
+ INSERT INTO t1 VALUES(NULL, X'45');
+ INSERT INTO t1 VALUES(NULL, X'46');
+ INSERT INTO t1 VALUES(NULL, X'47');
+ INSERT INTO t1 VALUES(NULL, X'48');
+ INSERT INTO t1 VALUES(NULL, X'49');
+ SELECT count(*) FROM t1;
+ }
+} {10}
+do_test tkt-cbd05-2.2 {
+ db eval {
+ ANALYZE;
+ }
+} {}
+do_test tkt-cbd05-2.3 {
+ execsql {
+ SELECT tbl,idx,group_concat(s(sample),' ')
+ FROM vvv
+ WHERE idx = 't1_x'
+ GROUP BY tbl,idx
+ }
+} {t1 t1_x { A B C D E F G H I}}
+
+finish_test