]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Change some test cases to account for the new EXPLAIN QUERY PLAN output.
authordan <dan@noemail.net>
Mon, 15 Nov 2010 16:12:58 +0000 (16:12 +0000)
committerdan <dan@noemail.net>
Mon, 15 Nov 2010 16:12:58 +0000 (16:12 +0000)
FossilOrigin-Name: 88a854e18fc6bd619fa8d8a911abff50a9b76b9e

ext/rtree/rtree6.test
manifest
manifest.uuid
test/analyze2.test
test/analyze3.test
test/eqp.test
test/fts3query.test
test/tester.tcl

index 0a65c15f50f675d88190be53409933c0eb16f24e..0a29f44165d7d91d7dd56ec778b02f8d013f1f6e 100644 (file)
@@ -71,39 +71,39 @@ do_test rtree6-1.5 {
   rtree_strategy {SELECT * FROM t1,t2 WHERE k=+ii AND x1<10}
 } {Ca}
 
-do_test rtree6.2.1 {
-  query_plan {SELECT * FROM t1,t2 WHERE k=+ii AND x1<10}
-} [list \
-  {TABLE t1 VIRTUAL TABLE INDEX 2:Ca} \
-  {TABLE t2 USING PRIMARY KEY}        \
-]
-
-do_test rtree6.2.2 {
-  query_plan {SELECT * FROM t1,t2 WHERE k=ii AND x1<10}
-} [list \
-  {TABLE t1 VIRTUAL TABLE INDEX 2:Ca} \
-  {TABLE t2 USING PRIMARY KEY}        \
-]
-
-do_test rtree6.2.3 {
-  query_plan {SELECT * FROM t1,t2 WHERE k=ii}
-} [list \
-  {TABLE t1 VIRTUAL TABLE INDEX 2:}   \
-  {TABLE t2 USING PRIMARY KEY}        \
-]
-
-do_test rtree6.2.4 {
-  query_plan {SELECT * FROM t1,t2 WHERE v=10 and x1<10 and x2>10}
-} [list \
-  {TABLE t1 VIRTUAL TABLE INDEX 2:CaEb}   \
-  {TABLE t2}                              \
-]
-
-do_test rtree6.2.5 {
-  query_plan {SELECT * FROM t1,t2 WHERE k=ii AND x1<v}
-} [list \
-  {TABLE t1 VIRTUAL TABLE INDEX 2:}   \
-  {TABLE t2 USING PRIMARY KEY}        \
-]
+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:Ca (~0 rows)} 
+  0 1 1 {SEARCH TABLE t2 USING INTEGER PRIMARY KEY (rowid=?) (~1 rows)}
+}
+
+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:Ca (~0 rows)} 
+  0 1 1 {SEARCH TABLE t2 USING INTEGER PRIMARY KEY (rowid=?) (~1 rows)}
+}
+
+do_eqp_test rtree6.2.3 {
+  SELECT * FROM t1,t2 WHERE k=ii
+} {
+  0 0 0 {SCAN TABLE t1 VIRTUAL TABLE INDEX 2: (~0 rows)} 
+  0 1 1 {SEARCH TABLE t2 USING INTEGER PRIMARY KEY (rowid=?) (~1 rows)}
+}
+
+do_eqp_test rtree6.2.4 {
+  SELECT * FROM t1,t2 WHERE v=10 and x1<10 and x2>10
+} {
+  0 0 0 {SCAN TABLE t1 VIRTUAL TABLE INDEX 2:CaEb (~0 rows)} 
+  0 1 1 {SCAN TABLE t2 (~100000 rows)}
+}
+
+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 rows)} 
+  0 1 1 {SEARCH TABLE t2 USING INTEGER PRIMARY KEY (rowid=?) (~1 rows)}
+}
 
 finish_test
index 64d4c07b541fea8fcb273e53bc2b2584b3e8d91c..1850b20e5805be21ce6d6870869f72f971402672 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Test\ssome\sexample\scode\sfrom\sdocumentation\spage\seqp.html.
-D 2010-11-15T14:51:33
+C Change\ssome\stest\scases\sto\saccount\sfor\sthe\snew\sEXPLAIN\sQUERY\sPLAN\soutput.
+D 2010-11-15T16:12:59
 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
 F Makefile.in e7a59672eaeb04408d1fa8501618d7501a3c5e39
 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@@ -87,7 +87,7 @@ F ext/rtree/rtree2.test acbb3a4ce0f4fbc2c304d2b4b784cfa161856bba
 F ext/rtree/rtree3.test a494da55c30ee0bc9b01a91c80c81b387b22d2dc
 F ext/rtree/rtree4.test 0061e6f464fd3dc6a79f82454c5a1c3dadbe42af
 F ext/rtree/rtree5.test ce3d7ccae2cfd9d2e1052b462424964c9bdcda12
-F ext/rtree/rtree6.test 1ebe0d632a7501cc80ba5a225f028fd4f0fdda08
+F ext/rtree/rtree6.test 309806a2a27ef5897d4dd6aee2e8006bf754cc22
 F ext/rtree/rtree7.test bcb647b42920b3b5d025846689147778485cc318
 F ext/rtree/rtree8.test 9772e16da71e17e02bdebf0a5188590f289ab37d
 F ext/rtree/rtree9.test df9843d1a9195249c8d3b4ea6aedda2d5c73e9c2
@@ -249,8 +249,8 @@ F test/alter3.test 8677e48d95536f7a6ed86a1a774744dadcc22b07
 F test/alter4.test 1e5dd6b951e9f65ca66422edff02e56df82dd403
 F test/altermalloc.test e81ac9657ed25c6c5bb09bebfa5a047cd8e4acfc
 F test/analyze.test c1eb87067fc16ece7c07e823d6395fd831b270c5
-F test/analyze2.test 59dac6c399c0c5d1a90a11ee7cc606743fb6db93
-F test/analyze3.test 6d4f4b0929545a9d1af803a0608a0c51b92a3537
+F test/analyze2.test 3bde8f0879d9c1f2df3af21fcf42e706d8ee1e43
+F test/analyze3.test 820ddfb7591b49607fbaf77240c7955ac3cabb04
 F test/async.test ad4ba51b77cd118911a3fe1356b0809da9c108c3
 F test/async2.test bf5e2ca2c96763b4cba3d016249ad7259a5603b6
 F test/async3.test 93edaa9122f498e56ea98c36c72abc407f4fb11e
@@ -365,7 +365,7 @@ F test/enc.test e54531cd6bf941ee6760be041dff19a104c7acea
 F test/enc2.test 6d91a5286f59add0cfcbb2d0da913b76f2242398
 F test/enc3.test 5c550d59ff31dccdba5d1a02ae11c7047d77c041
 F test/enc4.test 4b575ef09e0eff896e73bd24076f96c2aa6a42de
-F test/eqp.test 32567e06a0dc02a158d93571fdc843bb33824fc7
+F test/eqp.test 0a76679df56eba3709fa9f6ce6761a6c6f8401e7
 F test/eval.test bc269c365ba877554948441e91ad5373f9f91be3
 F test/exclusive.test 53e1841b422e554cecf0160f937c473d6d0e3062
 F test/exclusive2.test 76e63c05349cb70d09d60b99d2ae625525ff5155
@@ -446,7 +446,7 @@ F test/fts3fault.test 81fd40ceb12f33f9d16c5637d0f8d95d4556c456
 F test/fts3malloc.test 9c8cc3f885bb4dfc66d0460c52f68f45e4710d1b
 F test/fts3matchinfo.test 211b04434926bce9cc2b3cc5f58725affefe5165
 F test/fts3near.test 2e318ee434d32babd27c167142e2b94ddbab4844
-F test/fts3query.test 724a662dbbec4e9dbef66a1389588aa29aeb9b27
+F test/fts3query.test df864f4c9b14927daa7199242d82cff44599327b
 F test/fts3rnd.test 707533ce943f490443ce5e696236bb1675a37635
 F test/fts3shared.test 8bb266521d7c5495c0ae522bb4d376ad5387d4a2
 F test/fts3snippet.test a12f22a3ba4dd59751a57c79b031d07ab5f51ddd
@@ -656,7 +656,7 @@ F test/tclsqlite.test 8c154101e704170c2be10f137a5499ac2c6da8d3
 F test/tempdb.test 19d0f66e2e3eeffd68661a11c83ba5e6ace9128c
 F test/temptable.test f42121a0d29a62f00f93274464164177ab1cc24a
 F test/temptrigger.test b0273db072ce5f37cf19140ceb1f0d524bbe9f05
-F test/tester.tcl 8c26ecddb981aba189edad7ca1e6d780306ccca4
+F test/tester.tcl 45e8f7b56ef93c5c66886f1bbd05dda78d248d86
 F test/thread001.test a3e6a7254d1cb057836cb3145b60c10bf5b7e60f
 F test/thread002.test afd20095e6e845b405df4f2c920cb93301ca69db
 F test/thread003.test b824d4f52b870ae39fc5bae4d8070eca73085dca
@@ -886,7 +886,7 @@ F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff
 F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224
 F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
 F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f
-P ce27bf38405ce805dad95ec22cbe68ddc7af544a
-R 1facb0207f6324270040270a0296fb61
+P 547bc2c232cbf7b7ff295287ab8fddb880e517f9
+R 863ad3e83f428e5bfb8e9c7834fdadd1
 U dan
-Z d4c8887d4bb41a227b698c81727e9001
+Z a86da5f4e7ed6219a15e362cd53c69a5
index 1429a5e87d8279e20c6172aaf874768d7ab1a5e1..ad8b495d455f3d5d0eff87c38dd8ca9188acf7b2 100644 (file)
@@ -1 +1 @@
-547bc2c232cbf7b7ff295287ab8fddb880e517f9
\ No newline at end of file
+88a854e18fc6bd619fa8d8a911abff50a9b76b9e
\ No newline at end of file
index 7a606bb7f6d5d6e136283c270e9fef1bea616419..039fb378cce274db6b131553c3e13d3802500838 100644 (file)
@@ -22,6 +22,8 @@ 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).
 #
@@ -119,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<?) (~25 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<?) (~25 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<?) (~25 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<?) (~25 rows)}
+}
 
 do_test analyze2-3.1 {
   set alphabet [list a b c d e f g h i j]
@@ -177,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<?) (~50 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) }
@@ -225,12 +257,16 @@ 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}}
+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_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} {
@@ -260,15 +296,21 @@ ifcapable utf16 {
       GROUP BY tbl,idx
     }
   } {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}}
+  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)}
+  }
 }
 
 #--------------------------------------------------------------------
@@ -306,7 +348,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
@@ -314,14 +356,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;
@@ -332,7 +374,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;
@@ -343,7 +385,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;
@@ -354,7 +396,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 { 
@@ -366,7 +408,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<?) (~110000 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
@@ -374,14 +416,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>?) (~2 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>?) (~2 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;
@@ -392,7 +434,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<?) (~110000 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;
@@ -403,7 +445,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<?) (~110000 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;
@@ -415,7 +457,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>?) (~2 rows)} 0 1 0 {SEARCH TABLE t5 USING INTEGER PRIMARY KEY (rowid=?) (~1 rows)}}
 
 #--------------------------------------------------------------------
 # These tests, analyze2-7.*, test that the sqlite_stat2 functionality
@@ -459,7 +501,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>?) (~2 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
@@ -467,7 +509,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>?) (~2 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
@@ -475,7 +517,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>?) (~2 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
@@ -484,14 +526,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>?) (~2 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>?) (~2 rows)} 0 1 0 {SEARCH TABLE t5 USING INTEGER PRIMARY KEY (rowid=?) (~1 rows)}}
 
   do_test analyze2-7.10 {
     incr_schema_cookie test.db
@@ -500,7 +542,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<?) (~2 rows)} 0 1 1 {SEARCH TABLE t6 USING INTEGER PRIMARY KEY (rowid=?) (~1 rows)}}
 
   db1 close
   db2 close
index 50a2aecfb2b9deb5ddf9de0f57aa3c02d349b760..636b132999b092189a3f62927383b6476557ee83 100644 (file)
@@ -95,12 +95,12 @@ do_test analyze3-1.1.1 {
   }
 } {}
 
-do_test analyze3-1.1.2 {
-  eqp { SELECT sum(y) FROM t1 WHERE x>200 AND x<300 }
-} {0 0 {TABLE t1 WITH INDEX i1}}
-do_test analyze3-1.1.3 {
-  eqp { SELECT sum(y) FROM t1 WHERE x>0 AND x<1100 }
-} {0 0 {TABLE t1}}
+do_eqp_test analyze3-1.1.2 {
+  SELECT sum(y) FROM t1 WHERE x>200 AND x<300
+} {0 0 0 {SEARCH TABLE t1 USING INDEX i1 (x>? AND x<?) (~100 rows)}}
+do_eqp_test analyze3-1.1.3 {
+  SELECT sum(y) FROM t1 WHERE x>0 AND x<1100 
+} {0 0 0 {SCAN TABLE t1 (~111 rows)}}
 
 do_test analyze3-1.1.4 {
   sf_execsql { SELECT sum(y) FROM t1 WHERE x>200 AND x<300 }
@@ -144,12 +144,12 @@ do_test analyze3-1.2.1 {
     ANALYZE;
   }
 } {}
-do_test analyze3-1.2.2 {
-  eqp { SELECT sum(y) FROM t2 WHERE x>1 AND x<2 }
-} {0 0 {TABLE t2 WITH INDEX i2}}
-do_test analyze3-1.2.3 {
-  eqp { SELECT sum(y) FROM t2 WHERE x>0 AND x<99 }
-} {0 0 {TABLE t2}}
+do_eqp_test analyze3-1.2.2 {
+  SELECT sum(y) FROM t2 WHERE x>1 AND x<2
+} {0 0 0 {SEARCH TABLE t2 USING INDEX i2 (x>? AND x<?) (~200 rows)}}
+do_eqp_test analyze3-1.2.3 {
+  SELECT sum(y) FROM t2 WHERE x>0 AND x<99
+} {0 0 0 {SCAN TABLE t2 (~111 rows)}}
 do_test analyze3-1.2.4 {
   sf_execsql { SELECT sum(y) FROM t2 WHERE x>12 AND x<20 }
 } {161 0 4760}
@@ -191,12 +191,12 @@ do_test analyze3-1.3.1 {
     ANALYZE;
   }
 } {}
-do_test analyze3-1.3.2 {
-  eqp { SELECT sum(y) FROM t3 WHERE x>200 AND x<300 }
-} {0 0 {TABLE t3 WITH INDEX i3}}
-do_test analyze3-1.3.3 {
-  eqp { SELECT sum(y) FROM t3 WHERE x>0 AND x<1100 }
-} {0 0 {TABLE t3}}
+do_eqp_test analyze3-1.3.2 {
+  SELECT sum(y) FROM t3 WHERE x>200 AND x<300
+} {0 0 0 {SEARCH TABLE t3 USING INDEX i3 (x>? AND x<?) (~100 rows)}}
+do_eqp_test analyze3-1.3.3 {
+  SELECT sum(y) FROM t3 WHERE x>0 AND x<1100
+} {0 0 0 {SCAN TABLE t3 (~111 rows)}}
 
 do_test analyze3-1.3.4 {
   sf_execsql { SELECT sum(y) FROM t3 WHERE x>200 AND x<300 }
@@ -246,12 +246,12 @@ do_test analyze3-2.1 {
   }
   execsql COMMIT
 } {}
-do_test analyze3-2.2 {
-  eqp { SELECT count(a) FROM t1 WHERE b LIKE 'a%' }
-} {0 0 {TABLE t1 WITH INDEX i1}}
-do_test analyze3-2.3 {
-  eqp { SELECT count(a) FROM t1 WHERE b LIKE '%a' }
-} {0 0 {TABLE t1}}
+do_eqp_test analyze3-2.2 {
+  SELECT count(a) FROM t1 WHERE b LIKE 'a%'
+} {0 0 0 {SEARCH TABLE t1 USING INDEX i1 (b>? AND b<?) (~55000 rows)}}
+do_eqp_test analyze3-2.3 {
+  SELECT count(a) FROM t1 WHERE b LIKE '%a'
+} {0 0 0 {SCAN TABLE t1 (~500000 rows)}}
 
 do_test analyze3-2.4 {
   sf_execsql { SELECT count(*) FROM t1 WHERE b LIKE 'a%' }
index f4741e52bf689ce72c25be863f5da79f98a3843c..4966d5ce0c472d08bf29b037bea9377cb0532d67 100644 (file)
@@ -23,9 +23,6 @@ set testprefix eqp
 # eqp-4.*:        Compound select statements.
 #
 
-proc do_eqp_test {name sql res} {
-  uplevel do_execsql_test $name [list "EXPLAIN QUERY PLAN $sql"] [list $res]
-}
 proc det {args} { uplevel do_eqp_test $args }
 
 do_execsql_test 1.1 {
index f62edae37f682d2899f3d5f4de2b823c382896b9..95cb1f39b1a88578348bea5658f070337e3ebf04 100644 (file)
@@ -106,9 +106,6 @@ do_test fts3query-3.3 {
 
 # The following tests check that ticket 775b39dd3c has been fixed.
 #
-proc eqp {sql} {
-  uplevel [list execsql "EXPLAIN QUERY PLAN $sql"]
-}
 do_test fts3query-4.1 {
   execsql {
     DROP TABLE IF EXISTS t1;
@@ -118,18 +115,30 @@ do_test fts3query-4.1 {
     CREATE TABLE bt(title);
   }
 } {}
-do_test fts3query-4.2 {
-  eqp "SELECT t1.number FROM t1, ft WHERE t1.number=ft.rowid ORDER BY t1.date"
-} {0 0 {TABLE t1 WITH INDEX i1 ORDER BY} 1 1 {TABLE ft VIRTUAL TABLE INDEX 1:}}
-do_test fts3query-4.3 {
-  eqp "SELECT t1.number FROM ft, t1 WHERE t1.number=ft.rowid ORDER BY t1.date"
-} {0 1 {TABLE t1 WITH INDEX i1 ORDER BY} 1 0 {TABLE ft VIRTUAL TABLE INDEX 1:}}
-do_test fts3query-4.4 {
-  eqp "SELECT t1.number FROM t1, bt WHERE t1.number=bt.rowid ORDER BY t1.date"
-} {0 0 {TABLE t1 WITH INDEX i1 ORDER BY} 1 1 {TABLE bt USING PRIMARY KEY}}
-do_test fts3query-4.5 {
-  eqp "SELECT t1.number FROM bt, t1 WHERE t1.number=bt.rowid ORDER BY t1.date"
-} {0 1 {TABLE t1 WITH INDEX i1 ORDER BY} 1 0 {TABLE bt USING PRIMARY KEY}}
+do_eqp_test fts3query-4.2 {
+  SELECT t1.number FROM t1, ft WHERE t1.number=ft.rowid ORDER BY t1.date
+} {
+  0 0 0 {SCAN TABLE t1 USING COVERING INDEX i1 (~1000000 rows)} 
+  0 1 1 {SCAN TABLE ft VIRTUAL TABLE INDEX 1: (~0 rows)}
+}
+do_eqp_test fts3query-4.3 {
+  SELECT t1.number FROM ft, t1 WHERE t1.number=ft.rowid ORDER BY t1.date
+} {
+  0 0 1 {SCAN TABLE t1 USING COVERING INDEX i1 (~1000000 rows)} 
+  0 1 0 {SCAN TABLE ft VIRTUAL TABLE INDEX 1: (~0 rows)}
+}
+do_eqp_test fts3query-4.4 {
+  SELECT t1.number FROM t1, bt WHERE t1.number=bt.rowid ORDER BY t1.date
+} {
+  0 0 0 {SCAN TABLE t1 USING COVERING INDEX i1 (~1000000 rows)} 
+  0 1 1 {SEARCH TABLE bt USING INTEGER PRIMARY KEY (rowid=?) (~1 rows)}
+}
+do_eqp_test fts3query-4.5 {
+  SELECT t1.number FROM bt, t1 WHERE t1.number=bt.rowid ORDER BY t1.date
+} {
+  0 0 1 {SCAN TABLE t1 USING COVERING INDEX i1 (~1000000 rows)} 
+  0 1 0 {SEARCH TABLE bt USING INTEGER PRIMARY KEY (rowid=?) (~1 rows)}
+}
 
 
 # Test that calling matchinfo() with the wrong number of arguments, or with
index d6b3f9ecdb24caf6080e3632210001e11bee76b9..5911f5a54454d10c6dec9fe7afc3bdccd95ed728 100644 (file)
@@ -355,6 +355,9 @@ proc do_catchsql_test {testname sql result} {
   fix_testname testname
   uplevel do_test $testname [list "catchsql {$sql}"] [list $result]
 }
+proc do_eqp_test {name sql res} {
+  uplevel do_execsql_test $name [list "EXPLAIN QUERY PLAN $sql"] [list $res]
+}
 
 #-------------------------------------------------------------------------
 #   Usage: do_select_tests PREFIX ?SWITCHES? TESTLIST