Index: third_party/sqlite/src/test/analyze2.test |
diff --git a/third_party/sqlite/src/test/analyze2.test b/third_party/sqlite/src/test/analyze2.test |
index 84cd76bceb6c02bcd0edc98574e699fb927d33ba..de2567bb6f704094f7c6920e033252a73755c531 100644 |
--- a/third_party/sqlite/src/test/analyze2.test |
+++ b/third_party/sqlite/src/test/analyze2.test |
@@ -22,6 +22,13 @@ ifcapable !stat2 { |
return |
} |
+set testprefix analyze2 |
+ |
+# Do not use a codec for tests in this file, as the database file is |
+# manipulated directly using tcl scripts (using the [hexio_write] command). |
+# |
+do_not_use_codec |
+ |
#-------------------------------------------------------------------- |
# Test organization: |
# |
@@ -114,36 +121,56 @@ do_test analyze2-2.1 { |
execsql COMMIT |
execsql ANALYZE |
} {} |
-do_test analyze2-2.2 { |
- eqp "SELECT * FROM t1 WHERE x>500 AND y>700" |
-} {0 0 {TABLE t1 WITH INDEX t1_y}} |
-do_test analyze2-2.3 { |
- eqp "SELECT * FROM t1 WHERE x>700 AND y>500" |
-} {0 0 {TABLE t1 WITH INDEX t1_x}} |
-do_test analyze2-2.3 { |
- eqp "SELECT * FROM t1 WHERE y>700 AND x>500" |
-} {0 0 {TABLE t1 WITH INDEX t1_y}} |
-do_test analyze2-2.4 { |
- eqp "SELECT * FROM t1 WHERE y>500 AND x>700" |
-} {0 0 {TABLE t1 WITH INDEX t1_x}} |
-do_test analyze2-2.5 { |
- eqp "SELECT * FROM t1 WHERE x BETWEEN 100 AND 200 AND y BETWEEN 400 AND 700" |
-} {0 0 {TABLE t1 WITH INDEX t1_x}} |
-do_test analyze2-2.6 { |
- eqp "SELECT * FROM t1 WHERE x BETWEEN 100 AND 500 AND y BETWEEN 400 AND 700" |
-} {0 0 {TABLE t1 WITH INDEX t1_y}} |
-do_test analyze2-2.7 { |
- eqp "SELECT * FROM t1 WHERE x BETWEEN -400 AND -300 AND y BETWEEN 100 AND 300" |
-} {0 0 {TABLE t1 WITH INDEX t1_x}} |
-do_test analyze2-2.8 { |
- eqp "SELECT * FROM t1 WHERE x BETWEEN 100 AND 300 AND y BETWEEN -400 AND -300" |
-} {0 0 {TABLE t1 WITH INDEX t1_y}} |
-do_test analyze2-2.9 { |
- eqp "SELECT * FROM t1 WHERE x BETWEEN 500 AND 100 AND y BETWEEN 100 AND 300" |
-} {0 0 {TABLE t1 WITH INDEX t1_x}} |
-do_test analyze2-2.10 { |
- eqp "SELECT * FROM t1 WHERE x BETWEEN 100 AND 300 AND y BETWEEN 500 AND 100" |
-} {0 0 {TABLE t1 WITH INDEX t1_y}} |
+do_eqp_test 2.2 { |
+ SELECT * FROM t1 WHERE x>500 AND y>700 |
+} { |
+ 0 0 0 {SEARCH TABLE t1 USING INDEX t1_y (y>?) (~100 rows)} |
+} |
+do_eqp_test 2.3 { |
+ SELECT * FROM t1 WHERE x>700 AND y>500 |
+} { |
+ 0 0 0 {SEARCH TABLE t1 USING INDEX t1_x (x>?) (~100 rows)} |
+} |
+do_eqp_test 2.3 { |
+ SELECT * FROM t1 WHERE y>700 AND x>500 |
+} { |
+ 0 0 0 {SEARCH TABLE t1 USING INDEX t1_y (y>?) (~100 rows)} |
+} |
+do_eqp_test 2.4 { |
+ SELECT * FROM t1 WHERE y>500 AND x>700 |
+} { |
+ 0 0 0 {SEARCH TABLE t1 USING INDEX t1_x (x>?) (~100 rows)} |
+} |
+do_eqp_test 2.5 { |
+ SELECT * FROM t1 WHERE x BETWEEN 100 AND 200 AND y BETWEEN 400 AND 700 |
+} { |
+ 0 0 0 {SEARCH TABLE t1 USING INDEX t1_x (x>? AND x<?) (~25 rows)} |
+} |
+do_eqp_test 2.6 { |
+ SELECT * FROM t1 WHERE x BETWEEN 100 AND 500 AND y BETWEEN 400 AND 700 |
+} { |
+ 0 0 0 {SEARCH TABLE t1 USING INDEX t1_y (y>? AND y<?) (~75 rows)} |
+} |
+do_eqp_test 2.7 { |
+ SELECT * FROM t1 WHERE x BETWEEN -400 AND -300 AND y BETWEEN 100 AND 300 |
+} { |
+ 0 0 0 {SEARCH TABLE t1 USING INDEX t1_x (x>? AND x<?) (~12 rows)} |
+} |
+do_eqp_test 2.8 { |
+ SELECT * FROM t1 WHERE x BETWEEN 100 AND 300 AND y BETWEEN -400 AND -300 |
+} { |
+ 0 0 0 {SEARCH TABLE t1 USING INDEX t1_y (y>? AND y<?) (~12 rows)} |
+} |
+do_eqp_test 2.9 { |
+ SELECT * FROM t1 WHERE x BETWEEN 500 AND 100 AND y BETWEEN 100 AND 300 |
+} { |
+ 0 0 0 {SEARCH TABLE t1 USING INDEX t1_x (x>? AND x<?) (~12 rows)} |
+} |
+do_eqp_test 2.10 { |
+ SELECT * FROM t1 WHERE x BETWEEN 100 AND 300 AND y BETWEEN 500 AND 100 |
+} { |
+ 0 0 0 {SEARCH TABLE t1 USING INDEX t1_y (y>? AND y<?) (~12 rows)} |
+} |
do_test analyze2-3.1 { |
set alphabet [list a b c d e f g h i j] |
@@ -172,21 +199,31 @@ do_test analyze2-3.2 { |
} |
} {t1 t1_y {100 299 499 699 899 ajj cjj ejj gjj ijj}} |
-do_test analyze2-3.3 { |
- eqp "SELECT * FROM t1 WHERE x BETWEEN 100 AND 500 AND y BETWEEN 'a' AND 'b'" |
-} {0 0 {TABLE t1 WITH INDEX t1_y}} |
-do_test analyze2-3.4 { |
- eqp "SELECT * FROM t1 WHERE x BETWEEN 100 AND 400 AND y BETWEEN 'a' AND 'h'" |
-} {0 0 {TABLE t1 WITH INDEX t1_x}} |
-do_test analyze2-3.5 { |
- eqp "SELECT * FROM t1 WHERE x<'a' AND y>'h'" |
-} {0 0 {TABLE t1 WITH INDEX t1_y}} |
-do_test analyze2-3.6 { |
- eqp "SELECT * FROM t1 WHERE x<444 AND y>'h'" |
-} {0 0 {TABLE t1 WITH INDEX t1_y}} |
-do_test analyze2-3.7 { |
- eqp "SELECT * FROM t1 WHERE x<221 AND y>'g'" |
-} {0 0 {TABLE t1 WITH INDEX t1_x}} |
+do_eqp_test 3.3 { |
+ SELECT * FROM t1 WHERE x BETWEEN 100 AND 500 AND y BETWEEN 'a' AND 'b' |
+} { |
+ 0 0 0 {SEARCH TABLE t1 USING INDEX t1_y (y>? AND y<?) (~50 rows)} |
+} |
+do_eqp_test 3.4 { |
+ SELECT * FROM t1 WHERE x BETWEEN 100 AND 400 AND y BETWEEN 'a' AND 'h' |
+} { |
+ 0 0 0 {SEARCH TABLE t1 USING INDEX t1_x (x>? AND x<?) (~100 rows)} |
+} |
+do_eqp_test 3.5 { |
+ SELECT * FROM t1 WHERE x<'a' AND y>'h' |
+} { |
+ 0 0 0 {SEARCH TABLE t1 USING INDEX t1_y (y>?) (~66 rows)} |
+} |
+do_eqp_test 3.6 { |
+ SELECT * FROM t1 WHERE x<444 AND y>'h' |
+} { |
+ 0 0 0 {SEARCH TABLE t1 USING INDEX t1_y (y>?) (~66 rows)} |
+} |
+do_eqp_test 3.7 { |
+ SELECT * FROM t1 WHERE x<221 AND y>'g' |
+} { |
+ 0 0 0 {SEARCH TABLE t1 USING INDEX t1_x (x<?) (~66 rows)} |
+} |
do_test analyze2-4.1 { |
execsql { CREATE TABLE t3(a COLLATE nocase, b) } |
@@ -205,10 +242,12 @@ do_test analyze2-4.1 { |
} {} |
do_test analyze2-4.2 { |
execsql { |
+ PRAGMA automatic_index=OFF; |
SELECT tbl,idx,group_concat(sample,' ') |
FROM sqlite_stat2 |
WHERE idx = 't3a' |
- GROUP BY tbl,idx |
+ GROUP BY tbl,idx; |
+ PRAGMA automatic_index=ON; |
} |
} {t3 t3a {AfA bEj CEj dEj EEj fEj GEj hEj IEj jEj}} |
do_test analyze2-4.3 { |
@@ -220,49 +259,61 @@ do_test analyze2-4.3 { |
} |
} {t3 t3b {AbA CIj EIj GIj IIj bIj dIj fIj hIj jIj}} |
-do_test analyze2-4.4 { |
- eqp "SELECT * FROM t3 WHERE a > 'A' AND a < 'C' AND b > 'A' AND b < 'C'" |
-} {0 0 {TABLE t3 WITH INDEX t3b}} |
-do_test analyze2-4.5 { |
- eqp "SELECT * FROM t3 WHERE a > 'A' AND a < 'c' AND b > 'A' AND b < 'c'" |
-} {0 0 {TABLE t3 WITH INDEX t3a}} |
- |
-proc test_collate {enc lhs rhs} { |
- # puts $enc |
- return [string compare $lhs $rhs] |
+do_eqp_test 4.4 { |
+ SELECT * FROM t3 WHERE a > 'A' AND a < 'C' AND b > 'A' AND b < 'C' |
+} { |
+ 0 0 0 {SEARCH TABLE t3 USING INDEX t3b (b>? AND b<?) (~11 rows)} |
} |
-do_test analyze2-5.1 { |
- add_test_collate db 0 0 1 |
- execsql { CREATE TABLE t4(x COLLATE test_collate) } |
- execsql { CREATE INDEX t4x ON t4(x) } |
- set alphabet [list a b c d e f g h i j] |
- execsql BEGIN |
- for {set i 0} {$i < 1000} {incr i} { |
- set str [lindex $alphabet [expr ($i/100)%10]] |
- append str [lindex $alphabet [expr ($i/ 10)%10]] |
- append str [lindex $alphabet [expr ($i/ 1)%10]] |
- execsql { INSERT INTO t4 VALUES($str) } |
- } |
- execsql COMMIT |
- execsql ANALYZE |
-} {} |
-do_test analyze2-5.2 { |
- execsql { |
- SELECT tbl,idx,group_concat(sample,' ') |
- FROM sqlite_stat2 |
- WHERE tbl = 't4' |
- GROUP BY tbl,idx |
+do_eqp_test 4.5 { |
+ SELECT * FROM t3 WHERE a > 'A' AND a < 'c' AND b > 'A' AND b < 'c' |
+} { |
+ 0 0 0 {SEARCH TABLE t3 USING INDEX t3a (a>? AND a<?) (~22 rows)} |
+} |
+ |
+ifcapable utf16 { |
+ proc test_collate {enc lhs rhs} { |
+ # puts $enc |
+ return [string compare $lhs $rhs] |
+ } |
+ do_test analyze2-5.1 { |
+ add_test_collate db 0 0 1 |
+ execsql { CREATE TABLE t4(x COLLATE test_collate) } |
+ execsql { CREATE INDEX t4x ON t4(x) } |
+ set alphabet [list a b c d e f g h i j] |
+ execsql BEGIN |
+ for {set i 0} {$i < 1000} {incr i} { |
+ set str [lindex $alphabet [expr ($i/100)%10]] |
+ append str [lindex $alphabet [expr ($i/ 10)%10]] |
+ append str [lindex $alphabet [expr ($i/ 1)%10]] |
+ execsql { INSERT INTO t4 VALUES($str) } |
+ } |
+ execsql COMMIT |
+ execsql ANALYZE |
+ } {} |
+ do_test analyze2-5.2 { |
+ execsql { |
+ SELECT tbl,idx,group_concat(sample,' ') |
+ FROM sqlite_stat2 |
+ WHERE tbl = 't4' |
+ GROUP BY tbl,idx |
+ } |
+ } {t4 t4x {afa bej cej dej eej fej gej hej iej jej}} |
+ do_eqp_test 5.3 { |
+ SELECT * FROM t4 WHERE x>'ccc' |
+ } {0 0 0 {SEARCH TABLE t4 USING COVERING INDEX t4x (x>?) (~800 rows)}} |
+ do_eqp_test 5.4 { |
+ SELECT * FROM t4 AS t41, t4 AS t42 WHERE t41.x>'ccc' AND t42.x>'ggg' |
+ } { |
+ 0 0 1 {SEARCH TABLE t4 AS t42 USING COVERING INDEX t4x (x>?) (~300 rows)} |
+ 0 1 0 {SEARCH TABLE t4 AS t41 USING COVERING INDEX t4x (x>?) (~800 rows)} |
+ } |
+ do_eqp_test 5.5 { |
+ SELECT * FROM t4 AS t41, t4 AS t42 WHERE t41.x>'ddd' AND t42.x>'ccc' |
+ } { |
+ 0 0 0 {SEARCH TABLE t4 AS t41 USING COVERING INDEX t4x (x>?) (~700 rows)} |
+ 0 1 1 {SEARCH TABLE t4 AS t42 USING COVERING INDEX t4x (x>?) (~800 rows)} |
} |
-} {t4 t4x {afa bej cej dej eej fej gej hej iej jej}} |
-do_test analyze2-5.3 { |
- eqp "SELECT * FROM t4 WHERE x>'ccc'" |
-} {0 0 {TABLE t4 WITH INDEX t4x}} |
-do_test analyze2-5.4 { |
- eqp "SELECT * FROM t4 AS t41, t4 AS t42 WHERE t41.x>'ccc' AND t42.x>'ggg'" |
-} {0 1 {TABLE t4 AS t42 WITH INDEX t4x} 1 0 {TABLE t4 AS t41 WITH INDEX t4x}} |
-do_test analyze2-5.5 { |
- eqp "SELECT * FROM t4 AS t41, t4 AS t42 WHERE t41.x>'ddd' AND t42.x>'ccc'" |
-} {0 0 {TABLE t4 AS t41 WITH INDEX t4x} 1 1 {TABLE t4 AS t42 WITH INDEX t4x}} |
+} |
#-------------------------------------------------------------------- |
# These tests, analyze2-6.*, verify that the library behaves correctly |
@@ -278,7 +329,7 @@ do_test analyze2-5.5 { |
# |
do_test analyze2-6.0 { |
execsql { |
- DROP TABLE t4; |
+ DROP TABLE IF EXISTS t4; |
CREATE TABLE t5(a, b); CREATE INDEX t5i ON t5(a, b); |
CREATE TABLE t6(a, b); CREATE INDEX t6i ON t6(a, b); |
} |
@@ -299,7 +350,7 @@ do_test analyze2-6.1.1 { |
t5.a = 1 AND |
t6.a = 1 AND t6.b = 1 |
} |
-} {0 1 {TABLE t6 WITH INDEX t6i} 1 0 {TABLE t5 USING PRIMARY KEY}} |
+} {0 0 1 {SEARCH TABLE t6 USING COVERING INDEX t6i (a=? AND b=?) (~9 rows)} 0 1 0 {SEARCH TABLE t5 USING INTEGER PRIMARY KEY (rowid=?) (~1 rows)}} |
do_test analyze2-6.1.2 { |
db cache flush |
execsql ANALYZE |
@@ -307,14 +358,14 @@ do_test analyze2-6.1.2 { |
t5.a = 1 AND |
t6.a = 1 AND t6.b = 1 |
} |
-} {0 0 {TABLE t5 WITH INDEX t5i} 1 1 {TABLE t6 USING PRIMARY KEY}} |
+} {0 0 0 {SEARCH TABLE t5 USING COVERING INDEX t5i (a=?) (~1 rows)} 0 1 1 {SEARCH TABLE t6 USING INTEGER PRIMARY KEY (rowid=?) (~1 rows)}} |
do_test analyze2-6.1.3 { |
sqlite3 db test.db |
eqp { SELECT * FROM t5,t6 WHERE t5.rowid=t6.rowid AND |
t5.a = 1 AND |
t6.a = 1 AND t6.b = 1 |
} |
-} {0 0 {TABLE t5 WITH INDEX t5i} 1 1 {TABLE t6 USING PRIMARY KEY}} |
+} {0 0 0 {SEARCH TABLE t5 USING COVERING INDEX t5i (a=?) (~1 rows)} 0 1 1 {SEARCH TABLE t6 USING INTEGER PRIMARY KEY (rowid=?) (~1 rows)}} |
do_test analyze2-6.1.4 { |
execsql { |
PRAGMA writable_schema = 1; |
@@ -325,7 +376,7 @@ do_test analyze2-6.1.4 { |
t5.a = 1 AND |
t6.a = 1 AND t6.b = 1 |
} |
-} {0 0 {TABLE t5 WITH INDEX t5i} 1 1 {TABLE t6 USING PRIMARY KEY}} |
+} {0 0 0 {SEARCH TABLE t5 USING COVERING INDEX t5i (a=?) (~1 rows)} 0 1 1 {SEARCH TABLE t6 USING INTEGER PRIMARY KEY (rowid=?) (~1 rows)}} |
do_test analyze2-6.1.5 { |
execsql { |
PRAGMA writable_schema = 1; |
@@ -336,7 +387,7 @@ do_test analyze2-6.1.5 { |
t5.a = 1 AND |
t6.a = 1 AND t6.b = 1 |
} |
-} {0 1 {TABLE t6 WITH INDEX t6i} 1 0 {TABLE t5 USING PRIMARY KEY}} |
+} {0 0 1 {SEARCH TABLE t6 USING COVERING INDEX t6i (a=? AND b=?) (~9 rows)} 0 1 0 {SEARCH TABLE t5 USING INTEGER PRIMARY KEY (rowid=?) (~1 rows)}} |
do_test analyze2-6.1.6 { |
execsql { |
PRAGMA writable_schema = 1; |
@@ -347,7 +398,7 @@ do_test analyze2-6.1.6 { |
t5.a = 1 AND |
t6.a = 1 AND t6.b = 1 |
} |
-} {0 0 {TABLE t5 WITH INDEX t5i} 1 1 {TABLE t6 USING PRIMARY KEY}} |
+} {0 0 0 {SEARCH TABLE t5 USING COVERING INDEX t5i (a=?) (~1 rows)} 0 1 1 {SEARCH TABLE t6 USING INTEGER PRIMARY KEY (rowid=?) (~1 rows)}} |
do_test analyze2-6.2.1 { |
execsql { |
@@ -359,7 +410,7 @@ do_test analyze2-6.2.1 { |
t5.a>1 AND t5.a<15 AND |
t6.a>1 |
} |
-} {0 0 {TABLE t5 WITH INDEX t5i} 1 1 {TABLE t6 USING PRIMARY KEY}} |
+} {0 0 0 {SEARCH TABLE t5 USING COVERING INDEX t5i (a>? AND a<?) (~60000 rows)} 0 1 1 {SEARCH TABLE t6 USING INTEGER PRIMARY KEY (rowid=?) (~1 rows)}} |
do_test analyze2-6.2.2 { |
db cache flush |
execsql ANALYZE |
@@ -367,14 +418,14 @@ do_test analyze2-6.2.2 { |
t5.a>1 AND t5.a<15 AND |
t6.a>1 |
} |
-} {0 1 {TABLE t6 WITH INDEX t6i} 1 0 {TABLE t5 USING PRIMARY KEY}} |
+} {0 0 1 {SEARCH TABLE t6 USING COVERING INDEX t6i (a>?) (~1 rows)} 0 1 0 {SEARCH TABLE t5 USING INTEGER PRIMARY KEY (rowid=?) (~1 rows)}} |
do_test analyze2-6.2.3 { |
sqlite3 db test.db |
eqp { SELECT * FROM t5,t6 WHERE t5.rowid=t6.rowid AND |
t5.a>1 AND t5.a<15 AND |
t6.a>1 |
} |
-} {0 1 {TABLE t6 WITH INDEX t6i} 1 0 {TABLE t5 USING PRIMARY KEY}} |
+} {0 0 1 {SEARCH TABLE t6 USING COVERING INDEX t6i (a>?) (~1 rows)} 0 1 0 {SEARCH TABLE t5 USING INTEGER PRIMARY KEY (rowid=?) (~1 rows)}} |
do_test analyze2-6.2.4 { |
execsql { |
PRAGMA writable_schema = 1; |
@@ -385,7 +436,7 @@ do_test analyze2-6.2.4 { |
t5.a>1 AND t5.a<15 AND |
t6.a>1 |
} |
-} {0 0 {TABLE t5 WITH INDEX t5i} 1 1 {TABLE t6 USING PRIMARY KEY}} |
+} {0 0 0 {SEARCH TABLE t5 USING COVERING INDEX t5i (a>? AND a<?) (~60000 rows)} 0 1 1 {SEARCH TABLE t6 USING INTEGER PRIMARY KEY (rowid=?) (~1 rows)}} |
do_test analyze2-6.2.5 { |
execsql { |
PRAGMA writable_schema = 1; |
@@ -396,7 +447,7 @@ do_test analyze2-6.2.5 { |
t5.a>1 AND t5.a<15 AND |
t6.a>1 |
} |
-} {0 0 {TABLE t5 WITH INDEX t5i} 1 1 {TABLE t6 USING PRIMARY KEY}} |
+} {0 0 0 {SEARCH TABLE t5 USING COVERING INDEX t5i (a>? AND a<?) (~60000 rows)} 0 1 1 {SEARCH TABLE t6 USING INTEGER PRIMARY KEY (rowid=?) (~1 rows)}} |
do_test analyze2-6.2.6 { |
execsql { |
PRAGMA writable_schema = 1; |
@@ -408,7 +459,7 @@ do_test analyze2-6.2.6 { |
t5.a>1 AND t5.a<15 AND |
t6.a>1 |
} |
-} {0 1 {TABLE t6 WITH INDEX t6i} 1 0 {TABLE t5 USING PRIMARY KEY}} |
+} {0 0 1 {SEARCH TABLE t6 USING COVERING INDEX t6i (a>?) (~1 rows)} 0 1 0 {SEARCH TABLE t5 USING INTEGER PRIMARY KEY (rowid=?) (~1 rows)}} |
#-------------------------------------------------------------------- |
# These tests, analyze2-7.*, test that the sqlite_stat2 functionality |
@@ -452,7 +503,7 @@ ifcapable shared_cache { |
t5.a>1 AND t5.a<15 AND |
t6.a>1 |
} db1 |
- } {0 1 {TABLE t6 WITH INDEX t6i} 1 0 {TABLE t5 USING PRIMARY KEY}} |
+ } {0 0 1 {SEARCH TABLE t6 USING COVERING INDEX t6i (a>?) (~1 rows)} 0 1 0 {SEARCH TABLE t5 USING INTEGER PRIMARY KEY (rowid=?) (~1 rows)}} |
do_test analyze2-7.6 { |
incr_schema_cookie test.db |
execsql { SELECT * FROM sqlite_master } db2 |
@@ -460,7 +511,7 @@ ifcapable shared_cache { |
t5.a>1 AND t5.a<15 AND |
t6.a>1 |
} db2 |
- } {0 1 {TABLE t6 WITH INDEX t6i} 1 0 {TABLE t5 USING PRIMARY KEY}} |
+ } {0 0 1 {SEARCH TABLE t6 USING COVERING INDEX t6i (a>?) (~1 rows)} 0 1 0 {SEARCH TABLE t5 USING INTEGER PRIMARY KEY (rowid=?) (~1 rows)}} |
do_test analyze2-7.7 { |
incr_schema_cookie test.db |
execsql { SELECT * FROM sqlite_master } db1 |
@@ -468,7 +519,7 @@ ifcapable shared_cache { |
t5.a>1 AND t5.a<15 AND |
t6.a>1 |
} db1 |
- } {0 1 {TABLE t6 WITH INDEX t6i} 1 0 {TABLE t5 USING PRIMARY KEY}} |
+ } {0 0 1 {SEARCH TABLE t6 USING COVERING INDEX t6i (a>?) (~1 rows)} 0 1 0 {SEARCH TABLE t5 USING INTEGER PRIMARY KEY (rowid=?) (~1 rows)}} |
do_test analyze2-7.8 { |
execsql { DELETE FROM sqlite_stat2 } db2 |
@@ -477,14 +528,14 @@ ifcapable shared_cache { |
t5.a>1 AND t5.a<15 AND |
t6.a>1 |
} db1 |
- } {0 1 {TABLE t6 WITH INDEX t6i} 1 0 {TABLE t5 USING PRIMARY KEY}} |
+ } {0 0 1 {SEARCH TABLE t6 USING COVERING INDEX t6i (a>?) (~1 rows)} 0 1 0 {SEARCH TABLE t5 USING INTEGER PRIMARY KEY (rowid=?) (~1 rows)}} |
do_test analyze2-7.9 { |
execsql { SELECT * FROM sqlite_master } db2 |
eqp { SELECT * FROM t5,t6 WHERE t5.rowid=t6.rowid AND |
t5.a>1 AND t5.a<15 AND |
t6.a>1 |
} db2 |
- } {0 1 {TABLE t6 WITH INDEX t6i} 1 0 {TABLE t5 USING PRIMARY KEY}} |
+ } {0 0 1 {SEARCH TABLE t6 USING COVERING INDEX t6i (a>?) (~1 rows)} 0 1 0 {SEARCH TABLE t5 USING INTEGER PRIMARY KEY (rowid=?) (~1 rows)}} |
do_test analyze2-7.10 { |
incr_schema_cookie test.db |
@@ -493,7 +544,7 @@ ifcapable shared_cache { |
t5.a>1 AND t5.a<15 AND |
t6.a>1 |
} db1 |
- } {0 0 {TABLE t5 WITH INDEX t5i} 1 1 {TABLE t6 USING PRIMARY KEY}} |
+ } {0 0 0 {SEARCH TABLE t5 USING COVERING INDEX t5i (a>? AND a<?) (~1 rows)} 0 1 1 {SEARCH TABLE t6 USING INTEGER PRIMARY KEY (rowid=?) (~1 rows)}} |
db1 close |
db2 close |