| 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
|
|
|