| Index: third_party/sqlite/sqlite-src-3100200/test/skipscan1.test
|
| diff --git a/third_party/sqlite/sqlite-src-3080704/test/skipscan1.test b/third_party/sqlite/sqlite-src-3100200/test/skipscan1.test
|
| similarity index 85%
|
| copy from third_party/sqlite/sqlite-src-3080704/test/skipscan1.test
|
| copy to third_party/sqlite/sqlite-src-3100200/test/skipscan1.test
|
| index 6b9f1209a5b5e899a288da4a7e8f0ee4eb99f5c1..ac26711603bb1c1b515a2d6e757e40860967186c 100644
|
| --- a/third_party/sqlite/sqlite-src-3080704/test/skipscan1.test
|
| +++ b/third_party/sqlite/sqlite-src-3100200/test/skipscan1.test
|
| @@ -273,4 +273,53 @@ do_execsql_test skipscan1-6.3 {
|
| EXPLAIN QUERY PLAN SELECT * FROM t1 WHERE b=1;
|
| } {~/ANY/}
|
|
|
| +# If the sqlite_stat1 entry includes the "noskipscan" token, then never use
|
| +# skipscan with that index.
|
| +#
|
| +do_execsql_test skipscan1-7.1 {
|
| + UPDATE sqlite_stat1 SET stat='500000 125000 1 sz=100';
|
| + ANALYZE sqlite_master;
|
| + EXPLAIN QUERY PLAN SELECT * FROM t1 WHERE b=1;
|
| +} {/ANY/}
|
| +do_execsql_test skipscan1-7.2 {
|
| + UPDATE sqlite_stat1 SET stat='500000 125000 1 noskipscan sz=100';
|
| + ANALYZE sqlite_master;
|
| + EXPLAIN QUERY PLAN SELECT * FROM t1 WHERE b=1;
|
| +} {~/ANY/}
|
| +do_execsql_test skipscan1-7.3 {
|
| + UPDATE sqlite_stat1 SET stat='500000 125000 1 sz=100 noskipscan';
|
| + ANALYZE sqlite_master;
|
| + EXPLAIN QUERY PLAN SELECT * FROM t1 WHERE b=1;
|
| +} {~/ANY/}
|
| +
|
| +# Ticket 8fd39115d8f46ece70e7d4b3c481d1bd86194746 2015-07-23
|
| +# Incorrect code generated for a skipscan within an OR optimization
|
| +# on a WITHOUT ROWID table.
|
| +#
|
| +do_execsql_test skipscan1-8.1 {
|
| + DROP TABLE IF EXISTS t1;
|
| + CREATE TABLE t1(x, y, PRIMARY KEY(x,y)) WITHOUT ROWID;
|
| + INSERT INTO t1(x,y) VALUES(1,'AB');
|
| + INSERT INTO t1(x,y) VALUES(2,'CD');
|
| + ANALYZE;
|
| + DROP TABLE IF EXISTS sqlite_stat4;
|
| + DELETE FROM sqlite_stat1;
|
| + INSERT INTO sqlite_stat1(tbl,idx,stat) VALUES('t1','t1','1000000 100 1');
|
| + ANALYZE sqlite_master;
|
| + SELECT * FROM t1
|
| + WHERE (y = 'AB' AND x <= 4)
|
| + OR (y = 'EF' AND x = 5);
|
| +} {1 AB}
|
| +do_execsql_test skipscan1-8.1eqp {
|
| + EXPLAIN QUERY PLAN
|
| + SELECT * FROM t1
|
| + WHERE (y = 'AB' AND x <= 4)
|
| + OR (y = 'EF' AND x = 5);
|
| +} {/ANY/}
|
| +do_execsql_test skipscan1-8.2 {
|
| + SELECT * FROM t1
|
| + WHERE y = 'AB' OR (y = 'CD' AND x = 2)
|
| + ORDER BY +x;
|
| +} {1 AB 2 CD}
|
| +
|
| finish_test
|
|
|