]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
More test case updates. Tests are all running now.
authordrh <drh@noemail.net>
Wed, 2 May 2018 19:42:33 +0000 (19:42 +0000)
committerdrh <drh@noemail.net>
Wed, 2 May 2018 19:42:33 +0000 (19:42 +0000)
FossilOrigin-Name: dab5e5294813891469660cceb211ac1a1e526715bb57dcdbb1ab90321e6a4dad

20 files changed:
ext/expert/expert1.test
ext/expert/sqlite3expert.c
ext/fts5/test/fts5plan.test
ext/rtree/rtree6.test
ext/rtree/rtreeC.test
manifest
manifest.uuid
test/analyze4.test
test/analyze6.test
test/analyze7.test
test/analyze8.test
test/autoindex1.test
test/autoindex5.test
test/bestindex3.test
test/e_createtable.test
test/fts3aux1.test
test/selectD.test
test/tkt-78e04e52ea.test
test/tkt3442.test
test/where3.test

index cb928f13e50bfa5ce5d32d9c42d0ea9e22c97ef9..1eab80e070a10fd103e6f2f379975843b19f0b9b 100644 (file)
@@ -95,7 +95,7 @@ do_setup_rec_test $tn.1 { CREATE TABLE t1(a, b, c) } {
   SELECT * FROM t1
 } {
   (no new indexes)
-  0|0|0|SCAN TABLE t1
+  SCAN TABLE t1
 }
 
 do_setup_rec_test $tn.2 {
@@ -104,7 +104,7 @@ do_setup_rec_test $tn.2 {
   SELECT * FROM t1 WHERE b>?;
 } {
   CREATE INDEX t1_idx_00000062 ON t1(b);
-  0|0|0|SEARCH TABLE t1 USING INDEX t1_idx_00000062 (b>?)
+  SEARCH TABLE t1 USING INDEX t1_idx_00000062 (b>?)
 }
 
 do_setup_rec_test $tn.3 {
@@ -113,7 +113,7 @@ do_setup_rec_test $tn.3 {
   SELECT * FROM t1 WHERE b COLLATE nocase BETWEEN ? AND ?
 } {
   CREATE INDEX t1_idx_3e094c27 ON t1(b COLLATE NOCASE);
-  0|0|0|SEARCH TABLE t1 USING INDEX t1_idx_3e094c27 (b>? AND b<?)
+  SEARCH TABLE t1 USING INDEX t1_idx_3e094c27 (b>? AND b<?)
 }
 
 do_setup_rec_test $tn.4 {
@@ -122,7 +122,7 @@ do_setup_rec_test $tn.4 {
   SELECT a FROM t1 ORDER BY b;
 } {
   CREATE INDEX t1_idx_00000062 ON t1(b);
-  0|0|0|SCAN TABLE t1 USING INDEX t1_idx_00000062
+  SCAN TABLE t1 USING INDEX t1_idx_00000062
 }
 
 do_setup_rec_test $tn.5 {
@@ -131,7 +131,7 @@ do_setup_rec_test $tn.5 {
   SELECT a FROM t1 WHERE a=? ORDER BY b;
 } {
   CREATE INDEX t1_idx_000123a7 ON t1(a, b);
-  0|0|0|SEARCH TABLE t1 USING COVERING INDEX t1_idx_000123a7 (a=?)
+  SEARCH TABLE t1 USING COVERING INDEX t1_idx_000123a7 (a=?)
 }
 
 do_setup_rec_test $tn.6 {
@@ -140,7 +140,7 @@ do_setup_rec_test $tn.6 {
   SELECT min(a) FROM t1
 } {
   CREATE INDEX t1_idx_00000061 ON t1(a);
-  0|0|0|SEARCH TABLE t1 USING COVERING INDEX t1_idx_00000061
+  SEARCH TABLE t1 USING COVERING INDEX t1_idx_00000061
 }
 
 do_setup_rec_test $tn.7 {
@@ -149,7 +149,7 @@ do_setup_rec_test $tn.7 {
   SELECT * FROM t1 ORDER BY a, b, c;
 } {
   CREATE INDEX t1_idx_033e95fe ON t1(a, b, c);
-  0|0|0|SCAN TABLE t1 USING COVERING INDEX t1_idx_033e95fe
+  SCAN TABLE t1 USING COVERING INDEX t1_idx_033e95fe
 }
 
 #do_setup_rec_test $tn.1.8 {
@@ -167,7 +167,7 @@ do_setup_rec_test $tn.8.1 {
   SELECT * FROM t1 WHERE a=?
 } {
   CREATE INDEX t1_idx_00000061 ON t1(a);
-  0|0|0|SEARCH TABLE t1 USING INDEX t1_idx_00000061 (a=?)
+  SEARCH TABLE t1 USING INDEX t1_idx_00000061 (a=?)
 }
 do_setup_rec_test $tn.8.2 {
   CREATE TABLE t1(a, b COLLATE nocase, c);
@@ -175,7 +175,7 @@ do_setup_rec_test $tn.8.2 {
   SELECT * FROM t1 ORDER BY a ASC, b DESC, c ASC;
 } {
   CREATE INDEX t1_idx_5cb97285 ON t1(a, b DESC, c);
-  0|0|0|SCAN TABLE t1 USING COVERING INDEX t1_idx_5cb97285
+  SCAN TABLE t1 USING COVERING INDEX t1_idx_5cb97285
 }
 
 
@@ -187,7 +187,7 @@ do_setup_rec_test $tn.9.1 {
   SELECT * FROM "t t" WHERE a=?
 } {
   CREATE INDEX 't t_idx_00000061' ON 't t'(a);
-  0|0|0|SEARCH TABLE t t USING INDEX t t_idx_00000061 (a=?) 
+  SEARCH TABLE t t USING INDEX t t_idx_00000061 (a=?) 
 }
 
 do_setup_rec_test $tn.9.2 {
@@ -196,7 +196,7 @@ do_setup_rec_test $tn.9.2 {
   SELECT * FROM "t t" WHERE b BETWEEN ? AND ?
 } {
   CREATE INDEX 't t_idx_00000062' ON 't t'(b);
-  0|0|0|SEARCH TABLE t t USING INDEX t t_idx_00000062 (b>? AND b<?)
+  SEARCH TABLE t t USING INDEX t t_idx_00000062 (b>? AND b<?)
 }
 
 # Columns with names that require quotes.
@@ -207,7 +207,7 @@ do_setup_rec_test $tn.10.1 {
   SELECT * FROM t3 WHERE "b b" = ?
 } {
   CREATE INDEX t3_idx_00050c52 ON t3('b b');
-  0|0|0|SEARCH TABLE t3 USING INDEX t3_idx_00050c52 (b b=?)
+  SEARCH TABLE t3 USING INDEX t3_idx_00050c52 (b b=?)
 }
 
 do_setup_rec_test $tn.10.2 {
@@ -216,7 +216,7 @@ do_setup_rec_test $tn.10.2 {
   SELECT * FROM t3 ORDER BY "b b"
 } {
   CREATE INDEX t3_idx_00050c52 ON t3('b b');
-  0|0|0|SCAN TABLE t3 USING INDEX t3_idx_00050c52
+  SCAN TABLE t3 USING INDEX t3_idx_00050c52
 }
 
 # Transitive constraints
@@ -229,8 +229,8 @@ do_setup_rec_test $tn.11.1 {
 } {
   CREATE INDEX t5_idx_000123a7 ON t5(a, b);
   CREATE INDEX t6_idx_00000063 ON t6(c);
-  0|0|1|SEARCH TABLE t6 USING INDEX t6_idx_00000063 (c=?) 
-  0|1|0|SEARCH TABLE t5 USING COVERING INDEX t5_idx_000123a7 (a=? AND b=?)
+  SEARCH TABLE t6 USING INDEX t6_idx_00000063 (c=?) 
+  SEARCH TABLE t5 USING COVERING INDEX t5_idx_000123a7 (a=? AND b=?)
 }
 
 # OR terms.
@@ -242,8 +242,8 @@ do_setup_rec_test $tn.12.1 {
 } {
   CREATE INDEX t7_idx_00000062 ON t7(b);
   CREATE INDEX t7_idx_00000061 ON t7(a);
-  0|0|0|SEARCH TABLE t7 USING INDEX t7_idx_00000061 (a=?) 
-  0|0|0|SEARCH TABLE t7 USING INDEX t7_idx_00000062 (b=?)
+  SEARCH TABLE t7 USING INDEX t7_idx_00000061 (a=?) 
+  SEARCH TABLE t7 USING INDEX t7_idx_00000062 (b=?)
 }
 
 # rowid terms.
@@ -254,7 +254,7 @@ do_setup_rec_test $tn.13.1 {
   SELECT * FROM t8 WHERE rowid=?
 } {
   (no new indexes)
-  0|0|0|SEARCH TABLE t8 USING INTEGER PRIMARY KEY (rowid=?)
+  SEARCH TABLE t8 USING INTEGER PRIMARY KEY (rowid=?)
 }
 do_setup_rec_test $tn.13.2 {
   CREATE TABLE t8(a, b);
@@ -262,7 +262,7 @@ do_setup_rec_test $tn.13.2 {
   SELECT * FROM t8 ORDER BY rowid
 } {
   (no new indexes)
-  0|0|0|SCAN TABLE t8
+  SCAN TABLE t8
 }
 do_setup_rec_test $tn.13.3 {
   CREATE TABLE t8(a, b);
@@ -270,7 +270,7 @@ do_setup_rec_test $tn.13.3 {
   SELECT * FROM t8 WHERE a=? ORDER BY rowid
 } {
   CREATE INDEX t8_idx_00000061 ON t8(a); 
-  0|0|0|SEARCH TABLE t8 USING INDEX t8_idx_00000061 (a=?)
+  SEARCH TABLE t8 USING INDEX t8_idx_00000061 (a=?)
 }
 
 # Triggers
@@ -285,8 +285,8 @@ do_setup_rec_test $tn.14 {
   INSERT INTO t9 VALUES(?, ?, ?);
 } {
   CREATE INDEX t10_idx_00000062 ON t10(b); 
-  0|1|0|-- TRIGGER t9t
-  0|0|0|SEARCH TABLE t10 USING INDEX t10_idx_00000062 (b=?)
+  -- TRIGGER t9t
+  SEARCH TABLE t10 USING INDEX t10_idx_00000062 (b=?)
 }
 
 do_setup_rec_test $tn.15 {
@@ -302,8 +302,8 @@ do_setup_rec_test $tn.15 {
   SELECT * FROM t2, t1 WHERE b=? AND d=? AND t2.rowid=t1.rowid
 } {
   CREATE INDEX t2_idx_00000064 ON t2(d);
-  0|0|0|SEARCH TABLE t2 USING INDEX t2_idx_00000064 (d=?) 
-  0|1|1|SEARCH TABLE t1 USING INTEGER PRIMARY KEY (rowid=?)
+  SEARCH TABLE t2 USING INDEX t2_idx_00000064 (d=?) 
+  SEARCH TABLE t1 USING INTEGER PRIMARY KEY (rowid=?)
 }
 
 do_setup_rec_test $tn.16 {
@@ -312,7 +312,7 @@ do_setup_rec_test $tn.16 {
   SELECT * FROM t1 WHERE b IS NOT NULL;
 } {
   (no new indexes)
-  0|0|0|SCAN TABLE t1
+  SCAN TABLE t1
 }
 
 }
index e0602bc65e3de908d3ccfdf85c5b1f2e03a144d6..bd7220437a5e172694f665334501be21bdbb3068 100644 (file)
@@ -1123,9 +1123,9 @@ int idxFindIndexes(
         "EXPLAIN QUERY PLAN %s", pStmt->zSql
     );
     while( rc==SQLITE_OK && sqlite3_step(pExplain)==SQLITE_ROW ){
-      int iSelectid = sqlite3_column_int(pExplain, 0);
-      int iOrder = sqlite3_column_int(pExplain, 1);
-      int iFrom = sqlite3_column_int(pExplain, 2);
+      /* int iId = sqlite3_column_int(pExplain, 0); */
+      /* int iParent = sqlite3_column_int(pExplain, 1); */
+      /* int iNotUsed = sqlite3_column_int(pExplain, 2); */
       const char *zDetail = (const char*)sqlite3_column_text(pExplain, 3);
       int nDetail = STRLEN(zDetail);
       int i;
@@ -1152,9 +1152,7 @@ int idxFindIndexes(
         }
       }
 
-      pStmt->zEQP = idxAppendText(&rc, pStmt->zEQP, "%d|%d|%d|%s\n", 
-          iSelectid, iOrder, iFrom, zDetail
-      );
+      pStmt->zEQP = idxAppendText(&rc, pStmt->zEQP, "%s\n", zDetail);
     }
 
     for(pEntry=hIdx.pFirst; pEntry; pEntry=pEntry->pNext){
index de6ab907618ff198426bc5756bdc6e6bd8885f2d..8f57e39a81ed069e86b9f3f6b93ade84aaae33e7 100644 (file)
@@ -60,6 +60,6 @@ do_eqp_test 1.4 {
 
 do_eqp_test 1.5 {
   SELECT * FROM f1 WHERE rank MATCH ?
-} {SCAN TABLE f1 VIRTUAL TABLE INDEX 2:
+} {SCAN TABLE f1 VIRTUAL TABLE INDEX 2:}
 
 finish_test
index 406604810b0dc09fa891f1a674c86e8c79cf680d..6800b4bb102d3ffa3a48b89a58fc286663f9f908 100644 (file)
@@ -74,42 +74,48 @@ do_test rtree6-1.5 {
 do_eqp_test rtree6.2.1 {
   SELECT * FROM t1,t2 WHERE k=+ii AND x1<10
 } {
-  0 0 0 {SCAN TABLE t1 VIRTUAL TABLE INDEX 2:C0} 
-  0 1 1 {SEARCH TABLE t2 USING INTEGER PRIMARY KEY (rowid=?)}
+  QUERY PLAN
+  |--SCAN TABLE t1 VIRTUAL TABLE INDEX 2:C0
+  `--SEARCH TABLE t2 USING INTEGER PRIMARY KEY (rowid=?)
 }
 
 do_eqp_test rtree6.2.2 {
   SELECT * FROM t1,t2 WHERE k=ii AND x1<10
 } {
-  0 0 0 {SCAN TABLE t1 VIRTUAL TABLE INDEX 2:C0} 
-  0 1 1 {SEARCH TABLE t2 USING INTEGER PRIMARY KEY (rowid=?)}
+  QUERY PLAN
+  |--SCAN TABLE t1 VIRTUAL TABLE INDEX 2:C0
+  `--SEARCH TABLE t2 USING INTEGER PRIMARY KEY (rowid=?)
 }
 
 do_eqp_test rtree6.2.3 {
   SELECT * FROM t1,t2 WHERE k=ii
 } {
-  0 0 0 {SCAN TABLE t1 VIRTUAL TABLE INDEX 2:} 
-  0 1 1 {SEARCH TABLE t2 USING INTEGER PRIMARY KEY (rowid=?)}
+  QUERY PLAN
+  |--SCAN TABLE t1 VIRTUAL TABLE INDEX 2:
+  `--SEARCH TABLE t2 USING INTEGER PRIMARY KEY (rowid=?)
 }
 
 do_eqp_test rtree6.2.4.1 {
   SELECT * FROM t1,t2 WHERE v=+ii and x1<10 and x2>10
 } {
-  0 0 0 {SCAN TABLE t1 VIRTUAL TABLE INDEX 2:C0E1} 
-  0 1 1 {SEARCH TABLE t2 USING AUTOMATIC COVERING INDEX (v=?)}
+  QUERY PLAN
+  |--SCAN TABLE t1 VIRTUAL TABLE INDEX 2:C0E1
+  `--SEARCH TABLE t2 USING AUTOMATIC COVERING INDEX (v=?)
 }
 do_eqp_test rtree6.2.4.2 {
   SELECT * FROM t1,t2 WHERE v=10 and x1<10 and x2>10
 } {
-  0 0 0 {SCAN TABLE t1 VIRTUAL TABLE INDEX 2:C0E1} 
-  0 1 1 {SEARCH TABLE t2 USING AUTOMATIC PARTIAL COVERING INDEX (v=?)}
+  QUERY PLAN
+  |--SCAN TABLE t1 VIRTUAL TABLE INDEX 2:C0E1
+  `--SEARCH TABLE t2 USING AUTOMATIC PARTIAL COVERING INDEX (v=?)
 }
 
 do_eqp_test rtree6.2.5 {
   SELECT * FROM t1,t2 WHERE k=ii AND x1<v
 } {
-  0 0 0 {SCAN TABLE t1 VIRTUAL TABLE INDEX 2:} 
-  0 1 1 {SEARCH TABLE t2 USING INTEGER PRIMARY KEY (rowid=?)}
+  QUERY PLAN
+  |--SCAN TABLE t1 VIRTUAL TABLE INDEX 2:
+  `--SEARCH TABLE t2 USING INTEGER PRIMARY KEY (rowid=?)
 }
 
 do_execsql_test rtree6-3.1 {
index a5e5b97f968a0dff579ae74ac3cd454b613750f9..f983b220f41c3f3677ed8578692be02fa3bad0ca 100644 (file)
@@ -29,31 +29,35 @@ do_eqp_test 1.1 {
   SELECT * FROM r_tree, t 
   WHERE t.x>=min_x AND t.x<=max_x AND t.y>=min_y AND t.x<=max_y
 } {
-  0 0 1 {SCAN TABLE t}
-  0 1 0 {SCAN TABLE r_tree VIRTUAL TABLE INDEX 2:D3B2D1B0}
+  QUERY PLAN
+  |--SCAN TABLE t
+  `--SCAN TABLE r_tree VIRTUAL TABLE INDEX 2:D3B2D1B0
 }
 
 do_eqp_test 1.2 {
   SELECT * FROM t, r_tree
   WHERE t.x>=min_x AND t.x<=max_x AND t.y>=min_y AND t.x<=max_y
 } {
-  0 0 0 {SCAN TABLE t}
-  0 1 1 {SCAN TABLE r_tree VIRTUAL TABLE INDEX 2:D3B2D1B0}
+  QUERY PLAN
+  |--SCAN TABLE t
+  `--SCAN TABLE r_tree VIRTUAL TABLE INDEX 2:D3B2D1B0
 }
 
 do_eqp_test 1.3 {
   SELECT * FROM t, r_tree
   WHERE t.x>=min_x AND t.x<=max_x AND t.y>=min_y AND ?<=max_y
 } {
-  0 0 0 {SCAN TABLE t}
-  0 1 1 {SCAN TABLE r_tree VIRTUAL TABLE INDEX 2:D3B2D1B0}
+  QUERY PLAN
+  |--SCAN TABLE t
+  `--SCAN TABLE r_tree VIRTUAL TABLE INDEX 2:D3B2D1B0
 }
 
 do_eqp_test 1.5 {
   SELECT * FROM t, r_tree
 } {
-  0 0 1 {SCAN TABLE r_tree VIRTUAL TABLE INDEX 2:}
-  0 1 0 {SCAN TABLE t} 
+  QUERY PLAN
+  |--SCAN TABLE r_tree VIRTUAL TABLE INDEX 2:
+  `--SCAN TABLE t
 }
 
 do_execsql_test 2.0 {
@@ -82,31 +86,35 @@ do_eqp_test 2.1 {
   SELECT * FROM r_tree, t 
   WHERE t.x>=min_x AND t.x<=max_x AND t.y>=min_y AND t.x<=max_y
 } {
-  0 0 1 {SCAN TABLE t}
-  0 1 0 {SCAN TABLE r_tree VIRTUAL TABLE INDEX 2:D3B2D1B0}
+  QUERY PLAN
+  |--SCAN TABLE t
+  `--SCAN TABLE r_tree VIRTUAL TABLE INDEX 2:D3B2D1B0
 }
 
 do_eqp_test 2.2 {
   SELECT * FROM t, r_tree
   WHERE t.x>=min_x AND t.x<=max_x AND t.y>=min_y AND t.x<=max_y
 } {
-  0 0 0 {SCAN TABLE t}
-  0 1 1 {SCAN TABLE r_tree VIRTUAL TABLE INDEX 2:D3B2D1B0}
+  QUERY PLAN
+  |--SCAN TABLE t
+  `--SCAN TABLE r_tree VIRTUAL TABLE INDEX 2:D3B2D1B0
 }
 
 do_eqp_test 2.3 {
   SELECT * FROM t, r_tree
   WHERE t.x>=min_x AND t.x<=max_x AND t.y>=min_y AND ?<=max_y
 } {
-  0 0 0 {SCAN TABLE t}
-  0 1 1 {SCAN TABLE r_tree VIRTUAL TABLE INDEX 2:D3B2D1B0}
+  QUERY PLAN
+  |--SCAN TABLE t
+  `--SCAN TABLE r_tree VIRTUAL TABLE INDEX 2:D3B2D1B0
 }
 
 do_eqp_test 2.5 {
   SELECT * FROM t, r_tree
 } {
-  0 0 1 {SCAN TABLE r_tree VIRTUAL TABLE INDEX 2:}
-  0 1 0 {SCAN TABLE t} 
+  QUERY PLAN
+  |--SCAN TABLE r_tree VIRTUAL TABLE INDEX 2:
+  `--SCAN TABLE t
 }
 
 #-------------------------------------------------------------------------
@@ -119,20 +127,25 @@ do_execsql_test 3.1 {
 }
 
 do_eqp_test 3.2.1 { SELECT * FROM t1 CROSS JOIN t2 } {
-  0 0 0 {SCAN TABLE t1} 
-  0 1 1 {SCAN TABLE t2}
+  QUERY PLAN
+  |--SCAN TABLE t1
+  `--SCAN TABLE t2
 }
 do_eqp_test 3.2.2 { SELECT * FROM t2 CROSS JOIN t1 } {
-  0 0 0 {SCAN TABLE t2} 0 1 1 {SCAN TABLE t1}
+  QUERY PLAN
+  |--SCAN TABLE t2
+  `--SCAN TABLE t1
 }
 
 do_eqp_test 3.3.1 { SELECT * FROM t1 CROSS JOIN t3 } {
-  0 0 0 {SCAN TABLE t1}
-  0 1 1 {SCAN TABLE t3 VIRTUAL TABLE INDEX 2:} 
+  QUERY PLAN
+  |--SCAN TABLE t1
+  `--SCAN TABLE t3 VIRTUAL TABLE INDEX 2:
 }
 do_eqp_test 3.3.2 { SELECT * FROM t3 CROSS JOIN t1 } {
-  0 0 0 {SCAN TABLE t3 VIRTUAL TABLE INDEX 2:} 
-  0 1 1 {SCAN TABLE t1}
+  QUERY PLAN
+  |--SCAN TABLE t3 VIRTUAL TABLE INDEX 2:
+  `--SCAN TABLE t1
 }
 
 #--------------------------------------------------------------------
@@ -189,8 +202,9 @@ do_rtree_integrity_test 5.1.1 rt
 do_eqp_test 5.2 {
   SELECT * FROM t1, rt WHERE x==id;
 } {
-  0 0 0 {SCAN TABLE t1} 
-  0 1 1 {SCAN TABLE rt VIRTUAL TABLE INDEX 1:}
+  QUERY PLAN
+  |--SCAN TABLE t1
+  `--SCAN TABLE rt VIRTUAL TABLE INDEX 1:
 }
 
 # Now create enough ANALYZE data to tell SQLite that virtual table "rt"
@@ -205,8 +219,9 @@ sqlite3 db test.db
 do_eqp_test 5.4 {
   SELECT * FROM t1, rt WHERE x==id;
 } {
-  0 0 1 {SCAN TABLE rt VIRTUAL TABLE INDEX 2:} 
-  0 1 0 {SEARCH TABLE t1 USING INDEX sqlite_autoindex_t1_1 (x=?)}
+  QUERY PLAN
+  |--SCAN TABLE rt VIRTUAL TABLE INDEX 2:
+  `--SEARCH TABLE t1 USING INDEX sqlite_autoindex_t1_1 (x=?)
 }
 
 # Delete the ANALYZE data. "t1" should be the outer loop again.
@@ -217,8 +232,9 @@ sqlite3 db test.db
 do_eqp_test 5.6 {
   SELECT * FROM t1, rt WHERE x==id;
 } {
-  0 0 0 {SCAN TABLE t1} 
-  0 1 1 {SCAN TABLE rt VIRTUAL TABLE INDEX 1:}
+  QUERY PLAN
+  |--SCAN TABLE t1
+  `--SCAN TABLE rt VIRTUAL TABLE INDEX 1:
 }
 
 # This time create and attach a database that contains ANALYZE data for
@@ -241,8 +257,9 @@ do_test 5.7 {
 do_eqp_test 5.8 {
   SELECT * FROM t1, rt WHERE x==id;
 } {
-  0 0 0 {SCAN TABLE t1} 
-  0 1 1 {SCAN TABLE rt VIRTUAL TABLE INDEX 1:}
+  QUERY PLAN
+  |--SCAN TABLE t1
+  `--SCAN TABLE rt VIRTUAL TABLE INDEX 1:
 }
 
 #--------------------------------------------------------------------
@@ -299,9 +316,9 @@ do_execsql_test 7.0 {
 
 }
 
-proc do_eqp_execsql_test {tn sql res} {
-  set query "EXPLAIN QUERY PLAN $sql ; $sql "
-  uplevel [list do_execsql_test $tn $query $res]
+proc do_eqp_execsql_test {tn sql res1 res2} {
+  do_eqp_test $tn.1 $sql $res1
+  do_execsql_test $tn.2 $sql $res2
 }
 
 do_eqp_execsql_test 7.1 {
@@ -309,9 +326,11 @@ do_eqp_execsql_test 7.1 {
   ON (y1 BETWEEN ymin AND ymax)
   WHERE (x1 BETWEEN xmin AND xmax);
 } {
-  0 0 0 {SCAN TABLE xdir} 
-  0 1 2 {SCAN TABLE ydir} 
-  0 2 1 {SCAN TABLE rt VIRTUAL TABLE INDEX 2:B2D3B0D1}
+  QUERY PLAN
+  |--SCAN TABLE xdir
+  |--SCAN TABLE ydir
+  `--SCAN TABLE rt VIRTUAL TABLE INDEX 2:B2D3B0D1
+} {
   2 4
 }
 
@@ -320,10 +339,11 @@ do_eqp_execsql_test 7.2 {
   ON (y1 BETWEEN ymin AND ymax)
   WHERE (x1 BETWEEN xmin AND xmax);
 } {
-  0 0 0 {SCAN TABLE xdir} 
-  0 1 1 {SCAN TABLE rt VIRTUAL TABLE INDEX 2:B0D1}
-  0 2 2 {SCAN TABLE ydir} 
-
+  QUERY PLAN
+  |--SCAN TABLE xdir
+  |--SCAN TABLE rt VIRTUAL TABLE INDEX 2:B0D1
+  `--SCAN TABLE ydir
+} {
   5 1 2 7 12 14 {}
   5 2 2 7  8 12 10
   5 4 5 5 10 10 10
@@ -334,9 +354,11 @@ do_eqp_execsql_test 7.3 {
   ON (y1 BETWEEN ymin AND ymax)
   WHERE (x1 BETWEEN xmin AND xmax);
 } {
-  0 0 0 {SCAN TABLE xdir} 
-  0 1 1 {SCAN TABLE rt VIRTUAL TABLE INDEX 2:B0D1}
-  0 2 2 {SCAN TABLE ydir} 
+  QUERY PLAN
+  |--SCAN TABLE xdir
+  |--SCAN TABLE rt VIRTUAL TABLE INDEX 2:B0D1
+  `--SCAN TABLE ydir
+} {
   2 4
 }
 
@@ -345,9 +367,11 @@ do_eqp_execsql_test 7.4 {
   ON (y1 BETWEEN ymin AND ymax)
   WHERE (x1 BETWEEN xmin AND xmax);
 } {
-  0 0 1 {SCAN TABLE xdir} 
-  0 1 0 {SCAN TABLE rt VIRTUAL TABLE INDEX 2:B0D1}
-  0 2 2 {SCAN TABLE ydir} 
+  QUERY PLAN
+  |--SCAN TABLE xdir
+  |--SCAN TABLE rt VIRTUAL TABLE INDEX 2:B0D1
+  `--SCAN TABLE ydir
+} {
   2 4
 }
 
index 3863052746fbca06efec086afe9e7958aee26665..18897a018aa8eb939a9896f1197ff6d01dcb8f0b 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Fix\stest\scases\sso\sthat\sthey\swork\swith\sthe\snew\sEXPLAIN\sQUERY\sPLAN\soutput\nformat.\s\sOnly\ssome\sof\sthe\scases\shave\sbeen\sfixed.\s\sThis\sis\san\sincremental\ncheck-in.
-D 2018-05-02T18:00:17.259
+C More\stest\scase\supdates.\s\sTests\sare\sall\srunning\snow.
+D 2018-05-02T19:42:33.079
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F Makefile.in 5ce9343cba9c189046f1afe6d2bcc1f68079439febc05267b98aec6ecc752439
@@ -44,8 +44,8 @@ F ext/async/sqlite3async.c 0f3070cc3f5ede78f2b9361fb3b629ce200d7d74
 F ext/async/sqlite3async.h f489b080af7e72aec0e1ee6f1d98ab6cf2e4dcef
 F ext/expert/README.md b321c2762bb93c18ea102d5a5f7753a4b8bac646cb392b3b437f633caf2020c3
 F ext/expert/expert.c d548d603a4cc9e61f446cc179c120c6713511c413f82a4a32b1e1e69d3f086a4
-F ext/expert/expert1.test 00fb67256755a5194dab3d462f8ed3ad4640b4731fe465e5e28cea42c59ce05e
-F ext/expert/sqlite3expert.c 1dfa561e64dc0f89d56b96e6afda87468c34b43604c2df50c47e3f4362778fb2
+F ext/expert/expert1.test 81c8834822181d009c08b18d2afb3b0fce8167a8bbbf23496a0e598d2b21623d
+F ext/expert/sqlite3expert.c 95fdee74be2912d962951d984f1123e55d3f44bd643da7a48ff6ea9426a47f69
 F ext/expert/sqlite3expert.h af6354f8ee5c9e025024e63fec3bd640a802afcc3099a44d804752cf0791d811
 F ext/expert/test_expert.c d56c194b769bdc90cf829a14c9ecbc1edca9c850b837a4d0b13be14095c32a72
 F ext/fts1/README.txt 20ac73b006a70bcfd80069bdaf59214b6cf1db5e
@@ -187,7 +187,7 @@ F ext/fts5/test/fts5near.test 211477940142d733ac04fad97cb24095513ab2507073a99c27
 F ext/fts5/test/fts5onepass.test f9b7d9b2c334900c6542a869760290e2ab5382af8fbd618834bf1fcc3e7b84da
 F ext/fts5/test/fts5optimize.test 36a752d24c818792032e4ff502936fc9cc5ef938721696396fdc79214b2717f1
 F ext/fts5/test/fts5phrase.test 13e5d8e9083077b3d9c74315b3c92ec723cc6eb37c8155e0bfe1bba00559f07b
-F ext/fts5/test/fts5plan.test b932afb6248a21d2eb1696d2dc40eeb580ea1da79b383adb1a4f7d613fbdd4ec
+F ext/fts5/test/fts5plan.test 00dc4c974938b509db7cb3680407f068ee6e9cc824f492f68cb741a7b679fe41
 F ext/fts5/test/fts5porter.test 8d08010c28527db66bc3feebd2b8767504aaeb9b101a986342fa7833d49d0d15
 F ext/fts5/test/fts5porter2.test 0d251a673f02fa13ca7f011654873b3add20745f7402f108600a23e52d8c7457
 F ext/fts5/test/fts5prefix.test a0fa67b06650f2deaa7bf27745899d94e0fb547ad9ecbd08bfad98c04912c056
@@ -362,13 +362,13 @@ F ext/rtree/rtree2.test 5f25b01acd03470067a2d52783b2eb0a50bf836803d4342d20ca39e5
 F ext/rtree/rtree3.test 2cafe8265d1ff28f206fce88d114f208349df482
 F ext/rtree/rtree4.test 304de65d484540111b896827e4261815e5dca4ce28eeecd58be648cd73452c4b
 F ext/rtree/rtree5.test 49c9041d713d54560b315c2c7ef7207ee287eba1b20f8266968a06f2e55d3142
-F ext/rtree/rtree6.test 916a641d2beac01b9880871ff07612d56c1e466190a27c82ab36ffd58be03b9f
+F ext/rtree/rtree6.test 593e0d36510d5ac1d1fb39b018274ff17604fe8fdca8cf1f8e16559cea1477f4
 F ext/rtree/rtree7.test c8fb2e555b128dd0f0bdb520c61380014f497f8a23c40f2e820acc9f9e4fdce5
 F ext/rtree/rtree8.test 649f5a37ec656028a4a32674b9b1183104285a7625a09d2a8f52a1cef72c93f2
 F ext/rtree/rtree9.test c646f12c8c1c68ef015c6c043d86a0c42488e2e68ed1bb1b0771a7ca246cbabf
 F ext/rtree/rtreeA.test 20623ca337ca3bd7e008cc9fb49e44dbe97f1a80b238e10a12bb4afcd0da3776
 F ext/rtree/rtreeB.test 4cec297f8e5c588654bbf3c6ed0903f10612be8a2878055dd25faf8c71758bc9
-F ext/rtree/rtreeC.test d9d06dda1aee68b4dc227dfcc899f335f8b621e9d1920ee3d4e5dab8ccd71db7
+F ext/rtree/rtreeC.test 55e40c4bd9735d9944280f0e664f39374e71bcd9cd3fe4e82786d20b48017fb5
 F ext/rtree/rtreeD.test fe46aa7f012e137bd58294409b16c0d43976c3bb92c8f710481e577c4a1100dc
 F ext/rtree/rtreeE.test e65d3fc625da1800b412fc8785817327d43ccfec5f5973912d8c9e471928caa9
 F ext/rtree/rtreeF.test 81ffa7ef51c4e4618d497a57328c265bf576990c7070633b623b23cd450ed331
@@ -596,11 +596,11 @@ F test/altermalloc.test e81ac9657ed25c6c5bb09bebfa5a047cd8e4acfc
 F test/amatch1.test b5ae7065f042b7f4c1c922933f4700add50cdb9f
 F test/analyze.test b3a9c67d00e1df7588a5b7be9a0292899f94fe8cac1f94a017277474ca2e59df
 F test/analyze3.test ff62d9029e6deb2c914490c6b00caf7fae47cc85cdc046e4a0d0a4d4b87c71d8
-F test/analyze4.test eff2df19b8dd84529966420f29ea52edc6b56213
+F test/analyze4.test cdf88f3f72b0f0643a1ff6c730fc5af1e42464d47478d9fbac84c333f72c014e
 F test/analyze5.test 765c4e284aa69ca172772aa940946f55629bc8c4
-F test/analyze6.test f1c552ce39cca4ec922a7e4e0e5d0203d6b3281f
-F test/analyze7.test bb1409afc9e8629e414387ef048b8e0e3e0bdc4f
-F test/analyze8.test c05a461d0a6b05991106467d0c47480f2e709c82
+F test/analyze6.test 7b2667b879976ac4b90d8df80d5456328684f1f6f6fdef9469d6e53401f2f469
+F test/analyze7.test a37f4d9cb699a8af068ae02df1bb08bf844df8e98a92a8126cbff89e226879d8
+F test/analyze8.test e32a970564271114786703750e6939cf81dea4b8580874e38e9213ee092f6936
 F test/analyze9.test 9fbf0e0101eef4f5dc149769aa14e10b76ee06e7c28598264b32173cd1999a54
 F test/analyzeA.test 22a892d67bd2223126335b99774cce56ba91122cfe82446d2927afc43ad667dc
 F test/analyzeB.test a4c1c3048f6d9e090eb76e83eecb18bcf6d31a70
@@ -626,11 +626,11 @@ F test/auth2.test 9eb7fce9f34bf1f50d3f366fb3e606be5a2000a1
 F test/auth3.test db21405b95257c24d29273b6b31d0efc59e1d337e3d5804ba2d1fd4897b1ae49
 F test/autoanalyze1.test b9cc3f32a990fa56669b668d237c6d53e983554ae80c0604992e18869a0b2dec
 F test/autoinc.test 83aad64411583aac9ff0b629159ab4662029ab4e3f47090fce4efd132b304484
-F test/autoindex1.test 788d0894aa3aee1220036d20696e98733fb7ca02265cb1e801700177120c1aeb
+F test/autoindex1.test a09958fa756129af10b6582bcbf3cbdf11e305e027b393f393caef801159dee0
 F test/autoindex2.test 12ef578928102baaa0dc23ad397601a2f4ecb0df
 F test/autoindex3.test 2dd997d6590438b53e4f715f9278aa91c9299cf3f81246a0915269c35beb790e
 F test/autoindex4.test 49d3cd791a9baa16fb461d7ea3de80d019a819cf
-F test/autoindex5.test 96f084a5e6024ea07cace5888df3223f3ea86990
+F test/autoindex5.test 5f0135dc3b266277b8c1904624439097d8e8020dd7197eda13fda23c35c21a05
 F test/autovacuum.test 0831cd34e14695d297187f7f6519265e3121c5b0a1720e548e86829e796129e9
 F test/autovacuum_ioerr2.test 8a367b224183ad801e0e24dcb7d1501f45f244b4
 F test/avtrans.test b7dc25459ecbd86c6fa9c606ee3068f59d81e225118617dcf2bbb6ded2ade89e
@@ -646,7 +646,7 @@ F test/badutf2.test f5bc7f2d280670ecd79b9cf4f0f1760c607fe51f
 F test/bc_common.tcl b5e42d80305be95697e6370e015af571e5333a1c
 F test/bestindex1.test 852170bddbb21daa121fabcc274640ff83d7d8705912e8b5fe7ed2c5a9a9224a
 F test/bestindex2.test 9a0ccd320b6525eec3a706aae6cdab7e1b7b5abca75027e39f39f755e76e5928
-F test/bestindex3.test dfa5bcb1ae2f96463fb4106308908c8ed7348312de3519d981e632a0a2b6cd43
+F test/bestindex3.test 92a34c82f1ae245ef71f8c999f50a9dccd097a310cb070244c7b5cd0d2e07d73
 F test/bestindex4.test 4cb5ff7dbaebadb87d366f51969271778423b455
 F test/bestindex5.test 412b42f8036b28d8b2f3534d89389ad946a4b1a65a12263f51936f7424296f1b
 F test/between.test 34d375fb5ce1ae283ffe82b6b233e9f38e84fc6c
@@ -766,7 +766,7 @@ F test/e_blobclose.test 4b3c8c60c2171164d472059c73e9f3c1844bb66d
 F test/e_blobopen.test e95e1d40f995056f6f322cd5e1a1b83a27e1a145
 F test/e_blobwrite.test f87ff598b67af5b3ec002a8d83e804dc8d23808e88cf0080c176612fc9ffce14
 F test/e_changes.test fd66105385153dbf21fdb35eb8ef6c3e1eade579
-F test/e_createtable.test d4c6059d44dcd4b636de9aae322766062b471844
+F test/e_createtable.test ef30054d1e4cec4d1da2ffcebcc15f1ded3ed7ae80f009019485be973f449917
 F test/e_delete.test ab39084f26ae1f033c940b70ebdbbd523dc4962e
 F test/e_droptrigger.test 3cd080807622c13e5bbb61fc9a57bd7754da2412
 F test/e_dropview.test 21ce09c361227ddbc9819a5608ee2700c276bdd5
@@ -869,7 +869,7 @@ F test/fts3an.test a49ccadc07a2f7d646ec1b81bc09da2d85a85b18
 F test/fts3ao.test c416d50c4fdb6f32a15205b3d0a49eb74fcea92feb66b531a83c904770de5ff1
 F test/fts3atoken.test 4b4c16fdcfc972f2cdbba212375a060a86ccf5f1
 F test/fts3auto.test b981fea19b132b4e6878f50d7c1f369b28f68eb9
-F test/fts3aux1.test 24b8a69e342a6684e3929408b245cdf5de0d45f8094108fa0a57cd007228963d
+F test/fts3aux1.test 7a170e172afdbceb67f5baa05941fd4fbf56af42f61daa3d140f4b4bf4cb68f6
 F test/fts3aux2.test 7ae2b2c13aefdf4169279a27a5f51780ce57f6ba
 F test/fts3b.test c15c4a9d04e210d0be67e54ce6a87b927168fbf9c1e3faec8c1a732c366fd491
 F test/fts3c.test fc723a9cf10b397fdfc2b32e73c53c8b1ec02958
@@ -1218,7 +1218,7 @@ F test/select9.test aebc2bb0c3bc44606125033cbcaac2c8d1f33a95
 F test/selectA.test b8a590f6493cad5b0bb4dfe1709bf7dcda0b6c40bb4caf32d1e36a89eebc8fc5
 F test/selectB.test 954e4e49cf1f896d61794e440669e03a27ceea25
 F test/selectC.test e25243f8ca503e06f252eb0218976d07cfeceac3
-F test/selectD.test b0f02a04ef7737decb24e08be2c39b9664b43394
+F test/selectD.test cfa9f27dbdbeaf2d021d26c79b6c790d8f26e5506d50117c7696d3e136d6d9e7
 F test/selectE.test a8730ca330fcf40ace158f134f4fe0eb00c7edbf
 F test/selectF.test 21c94e6438f76537b72532fa9fd4710cdd455fc3
 F test/selectG.test 089f7d3d7e6db91566f00b036cb353107a2cca6220eb1cb264085a836dae8840
@@ -1352,7 +1352,7 @@ F test/tkt-5e10420e8d.test 904d1687b3c06d43e5b3555bbcf6802e7c0ffd84
 F test/tkt-5ee23731f.test 9db6e1d7209dc0794948b260d6f82b2b1de83a9f
 F test/tkt-6bfb98dfc0.test 24780633627b5cfc0635a5500c2389ebfb563336
 F test/tkt-752e1646fc.test ea78d88d14fe9866bdd991c634483334639e13bf
-F test/tkt-78e04e52ea.test 1b2e6bf4f1d9887b216b6da774e5f25915ec8118
+F test/tkt-78e04e52ea.test 1b5be1bac961833a9fd70fe50738cb4064822c61f82c54f7d488435ec806ea62
 F test/tkt-7a31705a7e6.test 9e9c057b6a9497c8f7ba7b16871029414ccf6550e7345d9085d6d71c9a56bb6f
 F test/tkt-7bbfb7d442.test 7b2cd79c7a17ae6750e75ec1a7846712a69c9d18
 F test/tkt-80ba201079.test 105a721e6aad0ae3c5946d7615d1e4d03f6145b8
@@ -1435,7 +1435,7 @@ F test/tkt3346.test 6f67c3ed7db94dfc5df4f5f0b63809a1f611e01a
 F test/tkt3357.test 77c37c6482b526fe89941ce951c22d011f5922ed
 F test/tkt3419.test 1bbf36d7ea03b638c15804251287c2391f5c1f6b
 F test/tkt3424.test 61f831bd2b071bd128fa5d00fbda57e656ca5812
-F test/tkt3442.test 53840ec5325bb94544792aad4c20476f81dc26b1
+F test/tkt3442.test a1fc47c669e651d16494de3ff349bcb53281456f2ca02c8bc14220b6044bbfe8
 F test/tkt3457.test 5651e2cbb94645b677ec663160b9e192b87b7d365aecdfb24e19f749575a6fc2
 F test/tkt3461.test 228ea328a5a21e8663f80ee3d212a6ad92549a19
 F test/tkt3493.test 1686cbde85f8721fc1bdc0ee72f2ef2f63139218
@@ -1584,7 +1584,7 @@ F test/walslow.test c05c68d4dc2700a982f89133ce103a1a84cc285f
 F test/walthread.test 14b20fcfa6ae152f5d8e12f5dc8a8a724b7ef189f5d8ef1e2ceab79f2af51747
 F test/where.test f19ea3fa31c425b04af42c8b192a5b595ee84498df8d27dcd79ec043b25fbbfb
 F test/where2.test 478d2170637b9211f593120648858593bf2445a1
-F test/where3.test 54cdeb02157acc979de41530b804ae7b09552bf1
+F test/where3.test 2341a294e17193a6b1699ea7f192124a5286ca6acfcc3f4b06d16c931fbcda2c
 F test/where4.test 4a371bfcc607f41d233701bdec33ac2972908ba8
 F test/where5.test fdf66f96d29a064b63eb543e28da4dfdccd81ad2
 F test/where6.test 5da5a98cec820d488e82708301b96cb8c18a258b
@@ -1727,7 +1727,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
 F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
 F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P f2f525548c65f89f55cbe91da8a21512dedc6f7b68b58b7906d653e800a2963a
-R c2fb03c3c8d3bca714f50d297b15ed28
+P 5f0e803e33aa557865d5fc830d9202d628de9a94c9757058ca48f1a560702cd3
+R 082b82ad611d4d87c26221d79d5fbd45
 U drh
-Z 275fa11767369a8ceab0cb6be2ece9b6
+Z 58923cc0a63a66a0c06aeccf7817dd66
index 7d9d7d33188f8eb0f6e0dc26a331ea4cc3c50e97..f082081d38f6f25d8ae9b3a5ef1983c61cc43785 100644 (file)
@@ -1 +1 @@
-5f0e803e33aa557865d5fc830d9202d628de9a94c9757058ca48f1a560702cd3
\ No newline at end of file
+dab5e5294813891469660cceb211ac1a1e526715bb57dcdbb1ab90321e6a4dad
\ No newline at end of file
index 974ed89a867cec68f48158c76ca6ce528d047d62..9fc98aa8f28e8ecd734b598398ffa00c17c7bb98 100644 (file)
@@ -38,7 +38,7 @@ do_test analyze4-1.0 {
 
   # Should choose the t1a index since it is more specific than t1b.
   db eval {EXPLAIN QUERY PLAN SELECT * FROM t1 WHERE a=5 AND b IS NULL}
-} {0 0 0 {SEARCH TABLE t1 USING INDEX t1a (a=?)}}
+} {/*SEARCH TABLE t1 USING INDEX t1a (a=?)*/}
 
 # Verify that the t1b index shows that it does not narrow down the
 # search any at all.
index 31ace8eda574e2cd3063f718b2768d85131a61c8..34d00f56ec245bce10eb3175efba66ca61d59672 100644 (file)
@@ -61,14 +61,18 @@ do_test analyze6-1.0 {
 #
 do_test analyze6-1.1 {
   eqp {SELECT count(*) FROM ev, cat WHERE x=y}
-} {0 0 1 {SCAN TABLE cat USING COVERING INDEX catx} 0 1 0 {SEARCH TABLE ev USING COVERING INDEX evy (y=?)}}
+} {/*SCAN TABLE cat USING COVERING INDEX catx*SEARCH TABLE ev USING COVERING INDEX evy (y=?)*/}
 
 # The same plan is chosen regardless of the order of the tables in the
 # FROM clause.
 #
-do_test analyze6-1.2 {
-  eqp {SELECT count(*) FROM cat, ev WHERE x=y}
-} {0 0 0 {SCAN TABLE cat USING COVERING INDEX catx} 0 1 1 {SEARCH TABLE ev USING COVERING INDEX evy (y=?)}}
+do_eqp_test analyze6-1.2 {
+  SELECT count(*) FROM cat, ev WHERE x=y
+} {
+  QUERY PLAN
+  |--SCAN TABLE cat USING COVERING INDEX catx
+  `--SEARCH TABLE ev USING COVERING INDEX evy (y=?)
+}
 
 
 # Ticket [83ea97620bd3101645138b7b0e71c12c5498fe3d] 2011-03-30
@@ -82,26 +86,26 @@ do_test analyze6-2.1 {
     ANALYZE;
   }
   eqp {SELECT * FROM t201 WHERE z=5}
-} {0 0 0 {SEARCH TABLE t201 USING INDEX t201z (z=?)}}
+} {/*SEARCH TABLE t201 USING INDEX t201z (z=?)*/}
 do_test analyze6-2.2 {
   eqp {SELECT * FROM t201 WHERE y=5}
-} {0 0 0 {SEARCH TABLE t201 USING INDEX sqlite_autoindex_t201_1 (y=?)}}
+} {/*SEARCH TABLE t201 USING INDEX sqlite_autoindex_t201_1 (y=?)*/}
 do_test analyze6-2.3 {
   eqp {SELECT * FROM t201 WHERE x=5}
-} {0 0 0 {SEARCH TABLE t201 USING INTEGER PRIMARY KEY (rowid=?)}}
+} {/*SEARCH TABLE t201 USING INTEGER PRIMARY KEY (rowid=?)*/}
 do_test analyze6-2.4 {
   execsql {
     INSERT INTO t201 VALUES(1,2,3),(2,3,4),(3,4,5);
     ANALYZE t201;
   }
   eqp {SELECT * FROM t201 WHERE z=5}
-} {0 0 0 {SEARCH TABLE t201 USING INDEX t201z (z=?)}}
+} {/*SEARCH TABLE t201 USING INDEX t201z (z=?)*/}
 do_test analyze6-2.5 {
   eqp {SELECT * FROM t201 WHERE y=5}
-} {0 0 0 {SEARCH TABLE t201 USING INDEX sqlite_autoindex_t201_1 (y=?)}}
+} {/*SEARCH TABLE t201 USING INDEX sqlite_autoindex_t201_1 (y=?)*/}
 do_test analyze6-2.6 {
   eqp {SELECT * FROM t201 WHERE x=5}
-} {0 0 0 {SEARCH TABLE t201 USING INTEGER PRIMARY KEY (rowid=?)}}
+} {/*SEARCH TABLE t201 USING INTEGER PRIMARY KEY (rowid=?)*/}
 do_test analyze6-2.7 {
   execsql {
     INSERT INTO t201 VALUES(4,5,7);
@@ -111,12 +115,12 @@ do_test analyze6-2.7 {
     ANALYZE t201;
   }
   eqp {SELECT * FROM t201 WHERE z=5}
-} {0 0 0 {SEARCH TABLE t201 USING INDEX t201z (z=?)}}
+} {/*SEARCH TABLE t201 USING INDEX t201z (z=?)*/}
 do_test analyze6-2.8 {
   eqp {SELECT * FROM t201 WHERE y=5}
-} {0 0 0 {SEARCH TABLE t201 USING INDEX sqlite_autoindex_t201_1 (y=?)}}
+} {/*SEARCH TABLE t201 USING INDEX sqlite_autoindex_t201_1 (y=?)*/}
 do_test analyze6-2.9 {
   eqp {SELECT * FROM t201 WHERE x=5}
-} {0 0 0 {SEARCH TABLE t201 USING INTEGER PRIMARY KEY (rowid=?)}}
+} {/*SEARCH TABLE t201 USING INTEGER PRIMARY KEY (rowid=?)*/}
 
 finish_test
index 76664546a5ff4cc13e79b57629033b902f078e4a..d6da6c1510a80ad99eaa22c1590fa11c0ef38cd8 100644 (file)
@@ -37,13 +37,13 @@ do_test analyze7-1.0 {
                     WHERE value BETWEEN 1 AND 256;
     EXPLAIN QUERY PLAN SELECT * FROM t1 WHERE a=123;
   }
-} {0 0 0 {SEARCH TABLE t1 USING INDEX t1a (a=?)}}
+} {/*SEARCH TABLE t1 USING INDEX t1a (a=?)*/}
 do_test analyze7-1.1 {
   execsql {EXPLAIN QUERY PLAN SELECT * FROM t1 WHERE b=123;}
-} {0 0 0 {SEARCH TABLE t1 USING INDEX t1b (b=?)}}
+} {/*SEARCH TABLE t1 USING INDEX t1b (b=?)*/}
 do_test analyze7-1.2 {
   execsql {EXPLAIN QUERY PLAN SELECT * FROM t1 WHERE c=2;}
-} {0 0 0 {SEARCH TABLE t1 USING INDEX t1cd (c=?)}}
+} {/*SEARCH TABLE t1 USING INDEX t1cd (c=?)*/}
 
 # Run an analyze on one of the three indices.  Verify that this
 # effects the row-count estimate on the one query that uses that
@@ -53,20 +53,20 @@ do_test analyze7-2.0 {
   execsql {ANALYZE t1a;}
   db cache flush
   execsql {EXPLAIN QUERY PLAN SELECT * FROM t1 WHERE a=123;}
-} {0 0 0 {SEARCH TABLE t1 USING INDEX t1a (a=?)}}
+} {/*SEARCH TABLE t1 USING INDEX t1a (a=?)*/}
 do_test analyze7-2.1 {
   execsql {EXPLAIN QUERY PLAN SELECT * FROM t1 WHERE b=123;}
-} {0 0 0 {SEARCH TABLE t1 USING INDEX t1b (b=?)}}
+} {/*SEARCH TABLE t1 USING INDEX t1b (b=?)*/}
 do_test analyze7-2.2 {
   execsql {EXPLAIN QUERY PLAN SELECT * FROM t1 WHERE c=2;}
-} {0 0 0 {SEARCH TABLE t1 USING INDEX t1cd (c=?)}}
+} {/*SEARCH TABLE t1 USING INDEX t1cd (c=?)*/}
 
 # Verify that since the query planner now things that t1a is more
 # selective than t1b, it prefers to use t1a.
 #
 do_test analyze7-2.3 {
   execsql {EXPLAIN QUERY PLAN SELECT * FROM t1 WHERE a=123 AND b=123}
-} {0 0 0 {SEARCH TABLE t1 USING INDEX t1a (a=?)}}
+} {/*SEARCH TABLE t1 USING INDEX t1a (a=?)*/}
 
 # Run an analysis on another of the three indices.  Verify  that this
 # new analysis works and does not disrupt the previous analysis.
@@ -75,40 +75,40 @@ do_test analyze7-3.0 {
   execsql {ANALYZE t1cd;}
   db cache flush;
   execsql {EXPLAIN QUERY PLAN SELECT * FROM t1 WHERE a=123;}
-} {0 0 0 {SEARCH TABLE t1 USING INDEX t1a (a=?)}}
+} {/*SEARCH TABLE t1 USING INDEX t1a (a=?)*/}
 do_test analyze7-3.1 {
   execsql {EXPLAIN QUERY PLAN SELECT * FROM t1 WHERE b=123;}
-} {0 0 0 {SEARCH TABLE t1 USING INDEX t1b (b=?)}}
+} {/*SEARCH TABLE t1 USING INDEX t1b (b=?)*/}
 do_test analyze7-3.2.1 {
   execsql {EXPLAIN QUERY PLAN SELECT * FROM t1 WHERE c=?;}
-} {0 0 0 {SEARCH TABLE t1 USING INDEX t1cd (c=?)}}
+} {/*SEARCH TABLE t1 USING INDEX t1cd (c=?)*/}
 ifcapable stat4||stat3 {
   # If ENABLE_STAT4 is defined, SQLite comes up with a different estimated
   # row count for (c=2) than it does for (c=?).
   do_test analyze7-3.2.2 {
     execsql {EXPLAIN QUERY PLAN SELECT * FROM t1 WHERE c=2;}
-  } {0 0 0 {SEARCH TABLE t1 USING INDEX t1cd (c=?)}}
+  } {/*SEARCH TABLE t1 USING INDEX t1cd (c=?)*/}
 } else {
   # If ENABLE_STAT4 is not defined, the expected row count for (c=2) is the
   # same as that for (c=?).
   do_test analyze7-3.2.3 {
     execsql {EXPLAIN QUERY PLAN SELECT * FROM t1 WHERE c=2;}
-  } {0 0 0 {SEARCH TABLE t1 USING INDEX t1cd (c=?)}}
+  } {/*SEARCH TABLE t1 USING INDEX t1cd (c=?)*/}
 }
 do_test analyze7-3.3 {
   execsql {EXPLAIN QUERY PLAN SELECT * FROM t1 WHERE a=123 AND b=123}
-} {0 0 0 {SEARCH TABLE t1 USING INDEX t1a (a=?)}}
+} {/*SEARCH TABLE t1 USING INDEX t1a (a=?)*/}
 
 ifcapable {!stat4 && !stat3} {
   do_test analyze7-3.4 {
     execsql {EXPLAIN QUERY PLAN SELECT * FROM t1 WHERE c=123 AND b=123}
-  } {0 0 0 {SEARCH TABLE t1 USING INDEX t1b (b=?)}}
+  } {/*SEARCH TABLE t1 USING INDEX t1b (b=?)*/}
   do_test analyze7-3.5 {
     execsql {EXPLAIN QUERY PLAN SELECT * FROM t1 WHERE a=123 AND c=123}
-  } {0 0 0 {SEARCH TABLE t1 USING INDEX t1a (a=?)}}
+  } {/*SEARCH TABLE t1 USING INDEX t1a (a=?)*/}
 }
 do_test analyze7-3.6 {
   execsql {EXPLAIN QUERY PLAN SELECT * FROM t1 WHERE c=123 AND d=123 AND b=123}
-} {0 0 0 {SEARCH TABLE t1 USING INDEX t1cd (c=? AND d=?)}}
+} {/*SEARCH TABLE t1 USING INDEX t1cd (c=? AND d=?)*/}
 
 finish_test
index 1079e68080d1c5d0de8ceafb84ecf5f00f7c269a..daa83ef4273e7538c23a2bd2bc6f7893136d1524 100644 (file)
@@ -61,25 +61,25 @@ do_test 1.0 {
 #
 do_test 1.1 {
   eqp {SELECT * FROM t1 WHERE a=100 AND b=55}
-} {0 0 0 {SEARCH TABLE t1 USING INDEX t1b (b=?)}}
+} {/*SEARCH TABLE t1 USING INDEX t1b (b=?)*/}
 do_test 1.2 {
   eqp {SELECT * FROM t1 WHERE a=99 AND b=55}
-} {0 0 0 {SEARCH TABLE t1 USING INDEX t1a (a=?)}}
+} {/*SEARCH TABLE t1 USING INDEX t1a (a=?)*/}
 do_test 1.3 {
   eqp {SELECT * FROM t1 WHERE a=101 AND b=55}
-} {0 0 0 {SEARCH TABLE t1 USING INDEX t1a (a=?)}}
+} {/*SEARCH TABLE t1 USING INDEX t1a (a=?)*/}
 do_test 1.4 {
   eqp {SELECT * FROM t1 WHERE a=100 AND b=56}
-} {0 0 0 {SEARCH TABLE t1 USING INDEX t1b (b=?)}}
+} {/*SEARCH TABLE t1 USING INDEX t1b (b=?)*/}
 do_test 1.5 {
   eqp {SELECT * FROM t1 WHERE a=99 AND b=56}
-} {0 0 0 {SEARCH TABLE t1 USING INDEX t1a (a=?)}}
+} {/*SEARCH TABLE t1 USING INDEX t1a (a=?)*/}
 do_test 1.6 {
   eqp {SELECT * FROM t1 WHERE a=101 AND b=56}
-} {0 0 0 {SEARCH TABLE t1 USING INDEX t1a (a=?)}}
+} {/*SEARCH TABLE t1 USING INDEX t1a (a=?)*/}
 do_test 2.1 {
   eqp {SELECT * FROM t1 WHERE a=100 AND b BETWEEN 50 AND 54}
-} {0 0 0 {SEARCH TABLE t1 USING INDEX t1b (b>? AND b<?)}}
+} {/*SEARCH TABLE t1 USING INDEX t1b (b>? AND b<?)*/}
 
 # There are many more values of c between 0 and 100000 than there are
 # between 800000 and 900000.  So t1c is more selective for the latter
@@ -99,17 +99,17 @@ do_execsql_test 3.0 {
 } {50 376 32}
 do_test 3.1 {
   eqp {SELECT * FROM t1 WHERE b BETWEEN 30 AND 34 AND c BETWEEN 0 AND 100000}
-} {0 0 0 {SEARCH TABLE t1 USING INDEX t1b (b>? AND b<?)}}
+} {/*SEARCH TABLE t1 USING INDEX t1b (b>? AND b<?)*/}
 do_test 3.2 {
   eqp {SELECT * FROM t1
        WHERE b BETWEEN 30 AND 34 AND c BETWEEN 800000 AND 900000}
-} {0 0 0 {SEARCH TABLE t1 USING INDEX t1c (c>? AND c<?)}}
+} {/*SEARCH TABLE t1 USING INDEX t1c (c>? AND c<?)*/}
 do_test 3.3 {
   eqp {SELECT * FROM t1 WHERE a=100 AND c BETWEEN 0 AND 100000}
-} {0 0 0 {SEARCH TABLE t1 USING INDEX t1a (a=?)}}
+} {/*SEARCH TABLE t1 USING INDEX t1a (a=?)*/}
 do_test 3.4 {
   eqp {SELECT * FROM t1
        WHERE a=100 AND c BETWEEN 800000 AND 900000}
-} {0 0 0 {SEARCH TABLE t1 USING INDEX t1c (c>? AND c<?)}}
+} {/*SEARCH TABLE t1 USING INDEX t1c (c>? AND c<?)*/}
 
 finish_test
index bf9eca84c27633786b46e41d1f5c812b99b8feb8..1978b8df1dfdb5dc28adc1e2e0f55e610a19ab1b 100644 (file)
@@ -177,35 +177,36 @@ do_execsql_test autoindex1-500 {
   INSERT INTO sqlite_stat1(tbl,idx,stat) VALUES('t501',null,'1000000');
   INSERT INTO sqlite_stat1(tbl,idx,stat) VALUES('t502',null,'1000');
   ANALYZE sqlite_master;
-  EXPLAIN QUERY PLAN
+}
+do_eqp_test autoindex1-500.1 {
   SELECT b FROM t501
    WHERE t501.a IN (SELECT x FROM t502 WHERE y=?);
 } {
-  0 0 0 {SEARCH TABLE t501 USING INTEGER PRIMARY KEY (rowid=?)} 
-  0 0 0 {EXECUTE LIST SUBQUERY 1} 
-  1 0 0 {SCAN TABLE t502}
+  QUERY PLAN
+  |--SEARCH TABLE t501 USING INTEGER PRIMARY KEY (rowid=?)
+  `--LIST SUBQUERY
+     `--SCAN TABLE t502
 }
-do_execsql_test autoindex1-501 {
-  EXPLAIN QUERY PLAN
+do_eqp_test autoindex1-501 {
   SELECT b FROM t501
    WHERE t501.a IN (SELECT x FROM t502 WHERE y=t501.b);
 } {
-  0 0 0 {SCAN TABLE t501} 
-  0 0 0 {EXECUTE CORRELATED LIST SUBQUERY 1} 
-  1 0 0 {SEARCH TABLE t502 USING AUTOMATIC COVERING INDEX (y=?)}
+  QUERY PLAN
+  |--SCAN TABLE t501
+  `--CORRELATED LIST SUBQUERY
+     `--SEARCH TABLE t502 USING AUTOMATIC COVERING INDEX (y=?)
 }
-do_execsql_test autoindex1-502 {
-  EXPLAIN QUERY PLAN
+do_eqp_test autoindex1-502 {
   SELECT b FROM t501
    WHERE t501.a=123
      AND t501.a IN (SELECT x FROM t502 WHERE y=t501.b);
 } {
-  0 0 0 {SEARCH TABLE t501 USING INTEGER PRIMARY KEY (rowid=?)} 
-  0 0 0 {EXECUTE CORRELATED LIST SUBQUERY 1} 
-  1 0 0 {SCAN TABLE t502}
+  QUERY PLAN
+  |--SEARCH TABLE t501 USING INTEGER PRIMARY KEY (rowid=?)
+  `--CORRELATED LIST SUBQUERY
+     `--SCAN TABLE t502
 }
 
-
 # The following code checks a performance regression reported on the
 # mailing list on 2010-10-19.  The problem is that the nRowEst field
 # of ephermeral tables was not being initialized correctly and so no
@@ -257,7 +258,8 @@ do_execsql_test autoindex1-600 {
            ON sheep (originating_flock);
   CREATE INDEX sheep_reg_flock_index  
            ON sheep (registering_flock);
-  EXPLAIN QUERY PLAN
+}
+do_eqp_test autoindex1-600a {
   SELECT x.sheep_no, x.registering_flock, x.date_of_registration
    FROM sheep x LEFT JOIN
        (SELECT s.sheep_no, prev.flock_no, prev.owner_person_id,
@@ -274,21 +276,26 @@ do_execsql_test autoindex1-600 {
    WHERE y.sheep_no IS NULL
    ORDER BY x.registering_flock;
 } {
-  1 0 0 {SCAN TABLE sheep AS s} 
-  1 1 1 {SEARCH TABLE flock_owner AS prev USING INDEX sqlite_autoindex_flock_owner_1 (flock_no=? AND owner_change_date<?)} 
-  1 0 0 {EXECUTE CORRELATED SCALAR SUBQUERY 2} 
-  2 0 0 {SEARCH TABLE flock_owner AS later USING COVERING INDEX sqlite_autoindex_flock_owner_1 (flock_no=? AND owner_change_date>? AND owner_change_date<?)} 
-  0 0 0 {SCAN TABLE sheep AS x USING INDEX sheep_reg_flock_index} 
-  0 1 1 {SEARCH SUBQUERY 1 AS y USING AUTOMATIC COVERING INDEX (sheep_no=?)}
+  QUERY PLAN
+  |--MATERIALIZE xxxxxx
+  |  |--SCAN TABLE sheep AS s
+  |  |--SEARCH TABLE flock_owner AS prev USING INDEX sqlite_autoindex_flock_owner_1 (flock_no=? AND owner_change_date<?)
+  |  `--CORRELATED SCALAR SUBQUERY
+  |     `--SEARCH TABLE flock_owner AS later USING COVERING INDEX sqlite_autoindex_flock_owner_1 (flock_no=? AND owner_change_date>? AND owner_change_date<?)
+  |--SCAN TABLE sheep AS x USING INDEX sheep_reg_flock_index
+  `--SEARCH SUBQUERY xxxxxx AS y USING AUTOMATIC COVERING INDEX (sheep_no=?)
 }
 
 
 do_execsql_test autoindex1-700 {
   CREATE TABLE t5(a, b, c);
-  EXPLAIN QUERY PLAN SELECT a FROM t5 WHERE b=10 ORDER BY c;
+}
+do_eqp_test autoindex1-700a {
+  SELECT a FROM t5 WHERE b=10 ORDER BY c;
 } {
-  0 0 0 {SCAN TABLE t5} 
-  0 0 0 {USE TEMP B-TREE FOR ORDER BY}
+  QUERY PLAN
+  |--SCAN TABLE t5
+  `--USE TEMP B-TREE FOR ORDER BY
 }
 
 # The following checks a performance issue reported on the sqlite-dev
index 649ae123a433a92124cb11e28f0d2f638f5e657f..aba546a1ecaca096895c689278c7826849d78ddc 100644 (file)
@@ -84,8 +84,7 @@ do_execsql_test autoindex5-1.0 {
 # The following query should use an automatic index for the view
 # in FROM clause of the subquery of the second result column.
 #
-do_execsql_test autoindex5-1.1 {
-  EXPLAIN QUERY PLAN
+do_eqp_test autoindex5-1.1 {
   SELECT
     st.bug_name,
     (SELECT ALL debian_cve.bug FROM debian_cve
@@ -103,7 +102,7 @@ do_execsql_test autoindex5-1.1 {
      AND ( sp.release = 'sid' OR sp.release = 'stretch' OR sp.release = 'jessie'
             OR sp.release = 'wheezy' OR sp.release = 'squeeze' )
   ORDER BY sp.name, st.bug_name, sp.release, sp.subrelease;
-} {/SEARCH SUBQUERY 2 USING AUTOMATIC COVERING INDEX .bug_name=/}
+} {SEARCH SUBQUERY * USING AUTOMATIC COVERING INDEX (bug_name=?)}
 
 #-------------------------------------------------------------------------
 # Test that ticket [8a2adec1] has been fixed.
index 3e9fb4f96801c8368b7193e41768e947782f8256..32734ef1a0cee811f38d9c3cb7ef510dd7bd53c1 100644 (file)
@@ -145,11 +145,11 @@ ifcapable !icu {
 
   do_eqp_test 2.2 {
     SELECT * FROM t2 WHERE x LIKE 'abc%' OR y = 'def'
-  } {
-  QUERY PLAN
-  |--SEARCH TABLE t2 USING INDEX t2x (x>? AND x<?)
-  `--SEARCH TABLE t2 USING INDEX t2y (y=?)
-  }
+  } [string map {"\n  " \n} {
+    QUERY PLAN
+    |--SEARCH TABLE t2 USING INDEX t2x (x>? AND x<?)
+    `--SEARCH TABLE t2 USING INDEX t2y (y=?)
+  }]
 }
 
 #-------------------------------------------------------------------------
index f07fbb9c74092ab8f2974e9a4075d9454b50274d..dae9307313147e6ca517066c100fbf53e97efb2f 100644 (file)
@@ -1385,13 +1385,13 @@ do_execsql_test 4.10.0 {
 }
 do_createtable_tests 4.10 {
   1    "EXPLAIN QUERY PLAN SELECT * FROM t1 WHERE b = 5" 
-       {0 0 0 {SEARCH TABLE t1 USING INDEX sqlite_autoindex_t1_1 (b=?)}}
+       {/*SEARCH TABLE t1 USING INDEX sqlite_autoindex_t1_1 (b=?)*/}
 
   2    "EXPLAIN QUERY PLAN SELECT * FROM t2 ORDER BY b, c"
-       {0 0 0 {SCAN TABLE t2 USING INDEX sqlite_autoindex_t2_1}}
+       {/*SCAN TABLE t2 USING INDEX sqlite_autoindex_t2_1*/}
 
   3    "EXPLAIN QUERY PLAN SELECT * FROM t2 WHERE b=10 AND c>10"
-       {0 0 0 {SEARCH TABLE t2 USING INDEX sqlite_autoindex_t2_1 (b=? AND c>?)}}
+       {/*SEARCH TABLE t2 USING INDEX sqlite_autoindex_t2_1 (b=? AND c>?)*/}
 }
 
 # EVIDENCE-OF: R-45493-35653 A CHECK constraint may be attached to a
index 9bbed53c45976d2ebcde3b837d9303b0d458d196..c7e1ac1a5ca77c3bb80f1c2852fd6237e0ae5f8f 100644 (file)
@@ -105,10 +105,10 @@ db func rec rec
 #
 do_execsql_test 2.1.1.1 {
   EXPLAIN QUERY PLAN SELECT * FROM terms WHERE term='braid'
-} { 0 0 0 {SCAN TABLE terms VIRTUAL TABLE INDEX 1:} }
+} {/*SCAN TABLE terms VIRTUAL TABLE INDEX 1:*/}
 do_execsql_test 2.1.1.2 {
   EXPLAIN QUERY PLAN SELECT * FROM terms WHERE +term='braid'
-} {0 0 0 {SCAN TABLE terms VIRTUAL TABLE INDEX 0:}}
+} {/*SCAN TABLE terms VIRTUAL TABLE INDEX 0:*/}
 
 # Now show that using "term='braid'" means the virtual table returns
 # only 1 row to SQLite, but "+term='braid'" means all 19 are returned.
@@ -154,24 +154,24 @@ do_execsql_test 2.1.5 { SELECT * FROM terms WHERE term=NULL } {}
 
 do_execsql_test 2.2.1.1 {
   EXPLAIN QUERY PLAN SELECT * FROM terms WHERE term>'brain'
-} { 0 0 0 {SCAN TABLE terms VIRTUAL TABLE INDEX 2:} }
+} {/*SCAN TABLE terms VIRTUAL TABLE INDEX 2:*/}
 do_execsql_test 2.2.1.2 {
   EXPLAIN QUERY PLAN SELECT * FROM terms WHERE +term>'brain'
-} { 0 0 0 {SCAN TABLE terms VIRTUAL TABLE INDEX 0:} }
+} {/*SCAN TABLE terms VIRTUAL TABLE INDEX 0:*/}
 
 do_execsql_test 2.2.1.3 {
   EXPLAIN QUERY PLAN SELECT * FROM terms WHERE term<'brain'
-} { 0 0 0 {SCAN TABLE terms VIRTUAL TABLE INDEX 4:} }
+} {/*SCAN TABLE terms VIRTUAL TABLE INDEX 4:*/}
 do_execsql_test 2.2.1.4 {
   EXPLAIN QUERY PLAN SELECT * FROM terms WHERE +term<'brain'
-} { 0 0 0 {SCAN TABLE terms VIRTUAL TABLE INDEX 0:} }
+} {/*SCAN TABLE terms VIRTUAL TABLE INDEX 0:*/}
 
 do_execsql_test 2.2.1.5 {
   EXPLAIN QUERY PLAN SELECT * FROM terms WHERE term BETWEEN 'brags' AND 'brain'
-} { 0 0 0 {SCAN TABLE terms VIRTUAL TABLE INDEX 6:} }
+} {/*SCAN TABLE terms VIRTUAL TABLE INDEX 6:*/}
 do_execsql_test 2.2.1.6 {
   EXPLAIN QUERY PLAN SELECT * FROM terms WHERE +term BETWEEN 'brags' AND 'brain'
-} { 0 0 0 {SCAN TABLE terms VIRTUAL TABLE INDEX 0:} }
+} {/*SCAN TABLE terms VIRTUAL TABLE INDEX 0:*/}
 
 do_test 2.2.2.1 {
   set cnt 0
@@ -335,8 +335,9 @@ foreach {tn sort orderby} {
   9    1    "ORDER BY occurrences DESC"
 } {
 
-  set res [list 0 0 0 {SCAN TABLE terms VIRTUAL TABLE INDEX 0:}]
-  if {$sort} { lappend res 0 0 0 {USE TEMP B-TREE FOR ORDER BY} }
+  set res {SCAN TABLE terms VIRTUAL TABLE INDEX 0:}
+  if {$sort} { append res {*USE TEMP B-TREE FOR ORDER BY} }
+  set res "/*$res*/"
 
   set sql "SELECT * FROM terms $orderby"
   do_execsql_test 2.3.1.$tn "EXPLAIN QUERY PLAN $sql" $res
@@ -403,39 +404,48 @@ do_execsql_test 4.1 {
   INSERT INTO x3 SELECT term FROM terms WHERE col = '*';
 }
 
-proc do_plansql_test {tn sql r} {
-  uplevel do_execsql_test $tn [list "EXPLAIN QUERY PLAN $sql ; $sql"] [list $r]
+proc do_plansql_test {tn sql r1 r2} {
+  do_eqp_test $tn.eqp $sql $r1
+  do_execsql_test $tn $sql $r2
 }
 
 do_plansql_test 4.2 {
   SELECT y FROM x2, terms WHERE y = term AND col = '*'
 } {
-  0 0 0 {SCAN TABLE x2} 
-  0 1 1 {SCAN TABLE terms VIRTUAL TABLE INDEX 1:} 
+  QUERY PLAN
+  |--SCAN TABLE x2
+  `--SCAN TABLE terms VIRTUAL TABLE INDEX 1:
+} {
   a b c d e f g h i j k l
 }
 
 do_plansql_test 4.3 {
   SELECT y FROM terms, x2 WHERE y = term AND col = '*'
 } {
-  0 0 1 {SCAN TABLE x2} 
-  0 1 0 {SCAN TABLE terms VIRTUAL TABLE INDEX 1:} 
+  QUERY PLAN
+  |--SCAN TABLE x2
+  `--SCAN TABLE terms VIRTUAL TABLE INDEX 1:
+} {
   a b c d e f g h i j k l
 }
 
 do_plansql_test 4.4 {
   SELECT y FROM x3, terms WHERE y = term AND col = '*'
 } {
-  0 0 1 {SCAN TABLE terms VIRTUAL TABLE INDEX 0:} 
-  0 1 0 {SEARCH TABLE x3 USING COVERING INDEX i1 (y=?)}
+  QUERY PLAN
+  |--SCAN TABLE terms VIRTUAL TABLE INDEX 0:
+  `--SEARCH TABLE x3 USING COVERING INDEX i1 (y=?)
+} {
   a b c d e f g h i j k l
 }
 
 do_plansql_test 4.5 {
   SELECT y FROM terms, x3 WHERE y = term AND occurrences>1 AND col = '*'
 } {
-  0 0 0 {SCAN TABLE terms VIRTUAL TABLE INDEX 0:} 
-  0 1 1 {SEARCH TABLE x3 USING COVERING INDEX i1 (y=?)}
+  QUERY PLAN
+  |--SCAN TABLE terms VIRTUAL TABLE INDEX 0:
+  `--SEARCH TABLE x3 USING COVERING INDEX i1 (y=?)
+} {
   a k l
 }
 
index 89f999eb6db97d6411df3f2afdae4e012909cc62..a95eb821672e3b7eda25cf6e5e2707a5f71c2c3f 100644 (file)
@@ -169,6 +169,6 @@ do_execsql_test selectD-4.1 {
                WHERE x1.d>5
                GROUP BY x1.d) AS x2
                   ON t41.b=x2.d;
-} {/.*SEARCH SUBQUERY 1 AS x2 USING AUTOMATIC.*/}
+} {/*SEARCH SUBQUERY 0x* AS x2 USING AUTOMATIC*/}
 
 finish_test
index 963ecf18d1c6cb51d94e7074017647042c091f85..47a1093dd8cac8041406d0a4637339bec24fd62f 100644 (file)
@@ -41,10 +41,8 @@ do_test tkt-78e04-1.3 {
   }
 } {}
 do_test tkt-78e04-1.4 {
-  execsql {
-    EXPLAIN QUERY PLAN SELECT "" FROM "" WHERE "" LIKE '1abc%';
-  }
-} {0 0 0 {SCAN TABLE  USING COVERING INDEX i1}}
+ db eval {EXPLAIN QUERY PLAN SELECT "" FROM "" WHERE "" LIKE '1abc%';}
+} {/*SCAN TABLE  USING COVERING INDEX i1*/}
 do_test tkt-78e04-1.5 {
   execsql {
     DROP TABLE "";
@@ -57,12 +55,12 @@ do_test tkt-78e04-2.1 {
     CREATE INDEX "" ON t2(x);
     EXPLAIN QUERY PLAN SELECT * FROM t2 WHERE x=5;
   }
-} {0 0 0 {SEARCH TABLE t2 USING COVERING INDEX  (x=?)}}
+} {/*SEARCH TABLE t2 USING COVERING INDEX  (x=?)*/}
 do_test tkt-78e04-2.2 {
   execsql {
     DROP INDEX "";
     EXPLAIN QUERY PLAN SELECT * FROM t2 WHERE x=2;
   }
-} {0 0 0 {SCAN TABLE t2}}
+} {/*SCAN TABLE t2*/}
 
 finish_test
index ee9169ce2c4f6ac624f23d6ada3e579f1df6ba28..98a5e371c1bbce55d14b9cb3b04a3cdbbef65545 100644 (file)
@@ -34,35 +34,24 @@ do_test tkt3442-1.1 {
   }
 } {}
 
-
-# Explain Query Plan
-#
-proc EQP {sql} {
-  uplevel "execsql {EXPLAIN QUERY PLAN $sql}"
-}
-
-
 # These tests perform an EXPLAIN QUERY PLAN on both versions of the 
 # SELECT referenced in ticket #3442 (both '5000' and "5000") 
 # and verify that the query plan is the same.
 #
-ifcapable explain {
-  do_test tkt3442-1.2 {
-    EQP { SELECT node FROM listhash WHERE id='5000' LIMIT 1; }
-  } {0 0 0 {SEARCH TABLE listhash USING INDEX ididx (id=?)}}
-  do_test tkt3442-1.3 {
-    EQP { SELECT node FROM listhash WHERE id="5000" LIMIT 1; }
-  } {0 0 0 {SEARCH TABLE listhash USING INDEX ididx (id=?)}}
-}
+do_eqp_test tkt3442-1.2 {
+  SELECT node FROM listhash WHERE id='5000' LIMIT 1;
+} {SEARCH TABLE listhash USING INDEX ididx (id=?)}
+do_eqp_test tkt3442-1.3 {
+  SELECT node FROM listhash WHERE id="5000" LIMIT 1;
+} {SEARCH TABLE listhash USING INDEX ididx (id=?)}
 
 
 # Some extra tests testing other permutations of 5000.
 #
-ifcapable explain {
-  do_test tkt3442-1.4 {
-    EQP { SELECT node FROM listhash WHERE id=5000 LIMIT 1; }
-  } {0 0 0 {SEARCH TABLE listhash USING INDEX ididx (id=?)}}
-}
+do_eqp_test tkt3442-1.4 {
+  SELECT node FROM listhash WHERE id=5000 LIMIT 1;
+} {SEARCH TABLE listhash USING INDEX ididx (id=?)}
+
 do_test tkt3442-1.5 {
   catchsql {
     SELECT node FROM listhash WHERE id=[5000] LIMIT 1;
index 6edbe2bcadfdcc42ba98eba2a088eaf5f5a1caea..4d4ea3ee680a7ca02876373ab42d457dc2504882 100644 (file)
@@ -235,17 +235,20 @@ do_execsql_test where3-3.0 {
   CREATE TABLE t302(x, y);
   INSERT INTO t302 VALUES(4,5);
   ANALYZE;
-  explain query plan SELECT * FROM t302, t301 WHERE t302.x=5 AND t301.a=t302.y;
+}
+do_eqp_test where3-3.0a {
+  SELECT * FROM t302, t301 WHERE t302.x=5 AND t301.a=t302.y;
 } {
-  0 0 0 {SCAN TABLE t302} 
-  0 1 1 {SEARCH TABLE t301 USING INTEGER PRIMARY KEY (rowid=?)}
+  QUERY PLAN
+  |--SCAN TABLE t302
+  `--SEARCH TABLE t301 USING INTEGER PRIMARY KEY (rowid=?)
 }
-do_execsql_test where3-3.1 {
-  explain query plan
+do_eqp_test where3-3.1 {
   SELECT * FROM t301, t302 WHERE t302.x=5 AND t301.a=t302.y;
 } {
-  0 0 1 {SCAN TABLE t302} 
-  0 1 0 {SEARCH TABLE t301 USING INTEGER PRIMARY KEY (rowid=?)}
+  QUERY PLAN
+  |--SCAN TABLE t302
+  `--SEARCH TABLE t301 USING INTEGER PRIMARY KEY (rowid=?)
 }
 do_execsql_test where3-3.2 {
   SELECT * FROM t301 WHERE c=3 AND a IS NULL;
@@ -308,8 +311,8 @@ do_execsql_test where3-5.0 {
   CREATE INDEX bbb_111 ON bbb (fk, type);
   CREATE INDEX bbb_222 ON bbb (parent, position);
   CREATE INDEX bbb_333 ON bbb (fk, lastModified);
-
-  EXPLAIN QUERY PLAN
+}
+do_eqp_test where3-5.0a {
    SELECT bbb.title AS tag_title 
      FROM aaa JOIN bbb ON bbb.id = aaa.parent  
     WHERE aaa.fk = 'constant'
@@ -317,12 +320,12 @@ do_execsql_test where3-5.0 {
       AND bbb.parent = 4
     ORDER BY bbb.title COLLATE NOCASE ASC;
 } {
-  0 0 0 {SEARCH TABLE aaa USING INDEX aaa_333 (fk=?)} 
-  0 1 1 {SEARCH TABLE bbb USING INTEGER PRIMARY KEY (rowid=?)} 
-  0 0 0 {USE TEMP B-TREE FOR ORDER BY}
+  QUERY PLAN
+  |--SEARCH TABLE aaa USING INDEX aaa_333 (fk=?)
+  |--SEARCH TABLE bbb USING INTEGER PRIMARY KEY (rowid=?)
+  `--USE TEMP B-TREE FOR ORDER BY
 }
-do_execsql_test where3-5.1 {
-  EXPLAIN QUERY PLAN
+do_eqp_test where3-5.1 {
    SELECT bbb.title AS tag_title 
      FROM aaa JOIN aaa AS bbb ON bbb.id = aaa.parent  
     WHERE aaa.fk = 'constant'
@@ -330,12 +333,12 @@ do_execsql_test where3-5.1 {
       AND bbb.parent = 4
     ORDER BY bbb.title COLLATE NOCASE ASC;
 } {
-  0 0 0 {SEARCH TABLE aaa USING INDEX aaa_333 (fk=?)} 
-  0 1 1 {SEARCH TABLE aaa AS bbb USING INTEGER PRIMARY KEY (rowid=?)} 
-  0 0 0 {USE TEMP B-TREE FOR ORDER BY}
+  QUERY PLAN
+  |--SEARCH TABLE aaa USING INDEX aaa_333 (fk=?)
+  |--SEARCH TABLE aaa AS bbb USING INTEGER PRIMARY KEY (rowid=?)
+  `--USE TEMP B-TREE FOR ORDER BY
 }
-do_execsql_test where3-5.2 {
-  EXPLAIN QUERY PLAN
+do_eqp_test where3-5.2 {
    SELECT bbb.title AS tag_title 
      FROM bbb JOIN aaa ON bbb.id = aaa.parent  
     WHERE aaa.fk = 'constant'
@@ -343,12 +346,12 @@ do_execsql_test where3-5.2 {
       AND bbb.parent = 4
     ORDER BY bbb.title COLLATE NOCASE ASC;
 } {
-  0 0 1 {SEARCH TABLE aaa USING INDEX aaa_333 (fk=?)} 
-  0 1 0 {SEARCH TABLE bbb USING INTEGER PRIMARY KEY (rowid=?)} 
-  0 0 0 {USE TEMP B-TREE FOR ORDER BY}
+  QUERY PLAN
+  |--SEARCH TABLE aaa USING INDEX aaa_333 (fk=?)
+  |--SEARCH TABLE bbb USING INTEGER PRIMARY KEY (rowid=?)
+  `--USE TEMP B-TREE FOR ORDER BY
 }
-do_execsql_test where3-5.3 {
-  EXPLAIN QUERY PLAN
+do_eqp_test where3-5.3 {
    SELECT bbb.title AS tag_title 
      FROM aaa AS bbb JOIN aaa ON bbb.id = aaa.parent  
     WHERE aaa.fk = 'constant'
@@ -356,9 +359,10 @@ do_execsql_test where3-5.3 {
       AND bbb.parent = 4
     ORDER BY bbb.title COLLATE NOCASE ASC;
 } {
-  0 0 1 {SEARCH TABLE aaa USING INDEX aaa_333 (fk=?)} 
-  0 1 0 {SEARCH TABLE aaa AS bbb USING INTEGER PRIMARY KEY (rowid=?)} 
-  0 0 0 {USE TEMP B-TREE FOR ORDER BY}
+  QUERY PLAN
+  |--SEARCH TABLE aaa USING INDEX aaa_333 (fk=?)
+  |--SEARCH TABLE aaa AS bbb USING INTEGER PRIMARY KEY (rowid=?)
+  `--USE TEMP B-TREE FOR ORDER BY
 }
 
 # Name resolution with NATURAL JOIN and USING