]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Fixes to EXPLAIN QUERY PLAN output. Change weights back to something closer nextgen-query-plan-logcost
authordrh <drh@noemail.net>
Tue, 11 Jun 2013 02:32:50 +0000 (02:32 +0000)
committerdrh <drh@noemail.net>
Tue, 11 Jun 2013 02:32:50 +0000 (02:32 +0000)
to what they are in legacy.  More test case fixes.

FossilOrigin-Name: 36373b85f9a97840aa06e24ae31c12fcfbae084e

manifest
manifest.uuid
src/select.c
src/where.c
test/like.test
test/where.test
test/where2.test
test/where3.test
test/whereE.test

index cda6c0adffda7a0b8cf9890c2f5583d5b567d42e..6c5cbae82b8fc334122285ad8364257175735d56 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Handle\svirtual\stables\scorrectly\swhen\susing\slogarithmic\scosts.\s\sFixes\nto\stest\scases.
-D 2013-06-11T01:50:08.263
+C Fixes\sto\sEXPLAIN\sQUERY\sPLAN\soutput.\s\sChange\sweights\sback\sto\ssomething\scloser\nto\swhat\sthey\sare\sin\slegacy.\s\sMore\stest\scase\sfixes.
+D 2013-06-11T02:32:50.482
 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
 F Makefile.in 5e41da95d92656a5004b03d3576e8b226858a28e
 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@@ -215,7 +215,7 @@ F src/printf.c bff529ed47657098c55c9910b9c69b1b3b1a1353
 F src/random.c cd4a67b3953b88019f8cd4ccd81394a8ddfaba50
 F src/resolve.c 89f9003e8316ee3a172795459efc2a0274e1d5a8
 F src/rowset.c 64655f1a627c9c212d9ab497899e7424a34222e0
-F src/select.c ddcf0c795f690968de66ab21051e764ca1c13f09
+F src/select.c 588ae13fc3d10dc812a0832fd143374583beb847
 F src/shell.c ab6eea968c8745be3aa74e45fedb37d057b4cd0d
 F src/sqlite.h.in 5b390ca5d94e09e56e7fee6a51ddde4721b89f8e
 F src/sqlite3.rc fea433eb0a59f4c9393c8e6d76a6e2596b1fe0c0
@@ -289,7 +289,7 @@ F src/vtab.c b05e5f1f4902461ba9f5fc49bb7eb7c3a0741a83
 F src/wal.c 436bfceb141b9423c45119e68e444358ee0ed35d
 F src/wal.h df01efe09c5cb8c8e391ff1715cca294f89668a4
 F src/walker.c 4fa43583d0a84b48f93b1e88f11adf2065be4e73
-F src/where.c 72f9aa6c35dadf0d432c2d80fd117d8887f70473
+F src/where.c 1241512fecb60142384231ba902e3b68a550c0b8
 F test/8_3_names.test ebbb5cd36741350040fd28b432ceadf495be25b2
 F test/aggerror.test a867e273ef9e3d7919f03ef4f0e8c0d2767944f2
 F test/aggnested.test 45c0201e28045ad38a530b5a144b73cd4aa2cfd6
@@ -620,7 +620,7 @@ F test/jrnlmode3.test 556b447a05be0e0963f4311e95ab1632b11c9eaa
 F test/keyword1.test a2400977a2e4fde43bf33754c2929fda34dbca05
 F test/lastinsert.test 474d519c68cb79d07ecae56a763aa7f322c72f51
 F test/laststmtchanges.test ae613f53819206b3222771828d024154d51db200
-F test/like.test 52e650adfa208325f928b847571d77b647af07c3
+F test/like.test 935fb4f608e3ea126891496a6e99b9468372bf5c
 F test/like2.test 3b2ee13149ba4a8a60b59756f4e5d345573852da
 F test/limit.test cc0ab63385239b63c72452b0e93700bf5e8f0b99
 F test/loadext.test 92e6dfefd1229c3ef4aaabd87419efd8fa57a7a5
@@ -1029,9 +1029,9 @@ F test/walro.test 6cc247a0cc9b36aeea2057dd28a922a1cdfbd630
 F test/walshared.test 0befc811dcf0b287efae21612304d15576e35417
 F test/walslow.test e7be6d9888f83aa5d3d3c7c08aa9b5c28b93609a
 F test/walthread.test de8dbaf6d9e41481c460ba31ca61e163d7348f8e
-F test/where.test 054a6b6f7933c5a5f50d0bcd650b5eccb450cc81
-F test/where2.test 116fb0d6e98a423d12eb9a65906218ce09936674
-F test/where3.test 1f2a9c997243dc39c67d38fe6d73254ab2f880b8
+F test/where.test cd13d4804b8f2986b176fb45c0a43fbbba64215a
+F test/where2.test 58cc3f85c082015144bc34c7ffdbd64134f650ee
+F test/where3.test f2a7027e1971d583069947edba0a31563e86284f
 F test/where4.test e9b9e2f2f98f00379e6031db6a6fca29bae782a2
 F test/where5.test fdf66f96d29a064b63eb543e28da4dfdccd81ad2
 F test/where6.test 5da5a98cec820d488e82708301b96cb8c18a258b
@@ -1043,7 +1043,7 @@ F test/whereA.test 24c234263c8fe358f079d5e57d884fb569d2da0a
 F test/whereB.test 0def95db3bdec220a731c7e4bec5930327c1d8c5
 F test/whereC.test d6f4ecd4fa2d9429681a5b22a25d2bda8e86ab8a
 F test/whereD.test 6c2feb79ef1f68381b07f39017fe5f9b96da8d62
-F test/whereE.test 7bd34945797efef15819368479bacc34215e4e1d
+F test/whereE.test b3a055eef928c992b0a33198a7b8dc10eea5ad2f
 F test/whereF.test a0e296643cabe5278379bc1a0aa158cf3c54a1c9
 F test/wherelimit.test 5e9fd41e79bb2b2d588ed999d641d9c965619b31
 F test/win32lock.test 7a6bd73a5dcdee39b5bb93e92395e1773a194361
@@ -1095,7 +1095,7 @@ F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
 F tool/warnings.sh fbc018d67fd7395f440c28f33ef0f94420226381
 F tool/wherecosttest.c 4d0393bdbe7230adb712e925863744dd2b7ffc5b
 F tool/win/sqlite.vsix 97894c2790eda7b5bce3cc79cb2a8ec2fde9b3ac
-P aa580e368e3c398b8377b80342dfdd906324c248
-R dc216beb84f13406fad3ccd046a844fe
+P e612664aa2e24ed5e222be2c7fe16e210ac9bded
+R 22fdd5c799c9a709871f8decba5b6ac4
 U drh
-Z a1ab90c9180f43596814678177a2e938
+Z 5d13a5c0b3748ceb3b9bdd15d82353e6
index b4b006445af17c2fa5f1d32e9775f5703f9749a1..5783c7e87f07b7fddbc8eb743a00a5b24af9d2cc 100644 (file)
@@ -1 +1 @@
-e612664aa2e24ed5e222be2c7fe16e210ac9bded
\ No newline at end of file
+36373b85f9a97840aa06e24ae31c12fcfbae084e
\ No newline at end of file
index ee994a8c20e071783a2a8e0925c942810480e2dd..8972faacc669a4a980a78e783e1333c7d44a09d6 100644 (file)
@@ -3884,11 +3884,10 @@ static void explainSimpleCount(
   Index *pIdx                     /* Index used to optimize scan, or NULL */
 ){
   if( pParse->explain==2 ){
-    char *zEqp = sqlite3MPrintf(pParse->db, "SCAN TABLE %s %s%s(~%d rows)",
+    char *zEqp = sqlite3MPrintf(pParse->db, "SCAN TABLE %s%s%s",
         pTab->zName, 
-        pIdx ? "USING COVERING INDEX " : "",
-        pIdx ? pIdx->zName : "",
-        pTab->nRowEst
+        pIdx ? " USING COVERING INDEX " : "",
+        pIdx ? pIdx->zName : ""
     );
     sqlite3VdbeAddOp4(
         pParse->pVdbe, OP_Explain, pParse->iSelectId, 0, 0, zEqp, P4_DYNAMIC
index 4a27b9e3821de790b38d3b86ae82a5d47ca99e66..330faf771cd10b8fa83b76507af8795595bb1118 100644 (file)
@@ -4308,7 +4308,7 @@ static int whereLoopAddBtreeIndex(
     }else{
       /* Each row involves a step of the index, then a binary search of
       ** the main table */
-      WhereCost rStepAndSearch = rLogSize>80 ? rLogSize-80 : 1;
+      WhereCost rStepAndSearch = whereCostAdd(10, rLogSize>17 ? rLogSize-17 : 1);
       pNew->rRun =  whereCostAdd(pNew->rRun, rStepAndSearch);
     }
     /* TBD: Adjust nOut for additional constraints */
index f68a93537b1487daa27e5637b347e5da3314c736..230dc74fed09fbaf69a9f3b68723ee2813bda60c 100644 (file)
@@ -166,13 +166,13 @@ proc queryplan {sql} {
   set eqp [execsql "EXPLAIN QUERY PLAN $sql"]
   # puts eqp=$eqp
   foreach {a b c x} $eqp {
-    if {[regexp { TABLE (\w+ AS )?(\w+) USING COVERING INDEX (\w+)\W} \
+    if {[regexp { TABLE (\w+ AS )?(\w+) USING COVERING INDEX (\w+)\y} \
         $x all as tab idx]} {
       lappend data {} $idx
-    } elseif {[regexp { TABLE (\w+ AS )?(\w+) USING.* INDEX (\w+)\W} \
+    } elseif {[regexp { TABLE (\w+ AS )?(\w+) USING.* INDEX (\w+)\y} \
         $x all as tab idx]} {
       lappend data $tab $idx
-    } elseif {[regexp { TABLE (\w+ AS )?(\w+)\W} $x all as tab]} {
+    } elseif {[regexp { TABLE (\w+ AS )?(\w+)\y} $x all as tab]} {
       lappend data $tab *
     }
   }
index 8610fa6f3dfec54f25680081074a4795fcaad75c..39324bf1a6e6958ba16e826a95c43155c816d7bf 100644 (file)
@@ -67,7 +67,7 @@ do_test where-1.1.1 {
 } {3 121 10 3}
 do_eqp_test where-1.1.2 {
   SELECT x, y, w FROM t1 WHERE w=10
-} {*SEARCH TABLE t1 USING INDEX i1w (w=?) *}
+} {*SEARCH TABLE t1 USING INDEX i1w (w=?)*}
 do_test where-1.1.3 {
   db status step
 } {0}
@@ -79,13 +79,13 @@ do_test where-1.1.5 {
 } {99}
 do_eqp_test where-1.1.6 {
   SELECT x, y, w FROM t1 WHERE +w=10
-} {*SCAN TABLE t1 *}
+} {*SCAN TABLE t1*}
 do_test where-1.1.7 {
   count {SELECT x, y, w AS abc FROM t1 WHERE abc=10}
 } {3 121 10 3}
 do_eqp_test where-1.1.8 {
   SELECT x, y, w AS abc FROM t1 WHERE abc=10
-} {*SEARCH TABLE t1 USING INDEX i1w (w=?) *}
+} {*SEARCH TABLE t1 USING INDEX i1w (w=?)*}
 do_test where-1.1.9 {
   db status step
 } {0}
@@ -106,19 +106,19 @@ do_test where-1.4.1 {
 } {11 3 144 3}
 do_eqp_test where-1.4.2 {
   SELECT w, x, y FROM t1 WHERE 11=w AND x>2
-} {*SEARCH TABLE t1 USING INDEX i1w (w=?) *}
+} {*SEARCH TABLE t1 USING INDEX i1w (w=?)*}
 do_test where-1.4.3 {
   count {SELECT w AS a, x AS b, y FROM t1 WHERE 11=a AND b>2}
 } {11 3 144 3}
 do_eqp_test where-1.4.4 {
   SELECT w AS a, x AS b, y FROM t1 WHERE 11=a AND b>2
-} {*SEARCH TABLE t1 USING INDEX i1w (w=?) *}
+} {*SEARCH TABLE t1 USING INDEX i1w (w=?)*}
 do_test where-1.5 {
   count {SELECT x, y FROM t1 WHERE y<200 AND w=11 AND x>2}
 } {3 144 3}
 do_eqp_test where-1.5.2 {
   SELECT x, y FROM t1 WHERE y<200 AND w=11 AND x>2
-} {*SEARCH TABLE t1 USING INDEX i1w (w=?) *}
+} {*SEARCH TABLE t1 USING INDEX i1w (w=?)*}
 do_test where-1.6 {
   count {SELECT x, y FROM t1 WHERE y<200 AND x>2 AND w=11}
 } {3 144 3}
@@ -130,10 +130,10 @@ do_test where-1.8 {
 } {3 144 3}
 do_eqp_test where-1.8.2 {
   SELECT x, y FROM t1 WHERE w>10 AND y=144 AND x=3
-} {*SEARCH TABLE t1 USING INDEX i1xy (x=? AND y=?) *}
+} {*SEARCH TABLE t1 USING INDEX i1xy (x=? AND y=?)*}
 do_eqp_test where-1.8.3 {
   SELECT x, y FROM t1 WHERE y=144 AND x=3
-} {*SEARCH TABLE t1 USING COVERING INDEX i1xy (x=? AND y=?) *}
+} {*SEARCH TABLE t1 USING COVERING INDEX i1xy (x=? AND y=?)*}
 do_test where-1.9 {
   count {SELECT x, y FROM t1 WHERE y=144 AND w>10 AND x=3}
 } {3 144 3}
index d7fb514a87e69a0b829ee6f13621ae69f0498769..c55d4a12a30d1352a1e00925cc3166fa02ad4bef 100644 (file)
@@ -76,10 +76,10 @@ proc queryplan {sql} {
   set eqp [execsql "EXPLAIN QUERY PLAN $sql"]
   # puts eqp=$eqp
   foreach {a b c x} $eqp {
-    if {[regexp { TABLE (\w+ AS )?(\w+) USING.* INDEX (\w+)\W} \
+    if {[regexp { TABLE (\w+ AS )?(\w+) USING.* INDEX (\w+)\y} \
         $x all as tab idx]} {
       lappend data $tab $idx
-    } elseif {[regexp { TABLE (\w+ AS )?(\w+)\W} $x all as tab]} {
+    } elseif {[regexp { TABLE (\w+ AS )?(\w+)\y} $x all as tab]} {
       lappend data $tab *
     }
   }
index cee74ba43456269c0f02c56c963022b33eb3e66e..e6acafed07a6eb6e74d50e1203dd42d28f241fb7 100644 (file)
@@ -111,10 +111,10 @@ proc queryplan {sql} {
   set eqp [execsql "EXPLAIN QUERY PLAN $sql"]
   # puts eqp=$eqp
   foreach {a b c x} $eqp {
-    if {[regexp { TABLE (\w+ AS )?(\w+) USING.* INDEX (\w+)\W} \
+    if {[regexp { TABLE (\w+ AS )?(\w+) USING.* INDEX (\w+)\y} \
         $x all as tab idx]} {
       lappend data $tab $idx
-    } elseif {[regexp { TABLE (\w+ AS )?(\w+)\W} $x all as tab]} {
+    } elseif {[regexp { TABLE (\w+ AS )?(\w+)\y} $x all as tab]} {
       lappend data $tab *
     }
   }
index e686a4628ece77389e23d94bb594191e0224f591..a6b8f481b2e526c347ff1fa00e2e8ccb94ffb7ae 100644 (file)
@@ -47,16 +47,16 @@ do_execsql_test 1.1 {
   CREATE UNIQUE INDEX t2zx ON t2(z,x);
 
   EXPLAIN QUERY PLAN SELECT x FROM t1, t2 WHERE a=z AND c=x;
-} {/.*SCAN TABLE t1 .*SEARCH TABLE t2 .*/}
+} {/.*SCAN TABLE t1.*SEARCH TABLE t2.*/}
 do_execsql_test 1.2 {
   EXPLAIN QUERY PLAN SELECT x FROM t2, t1 WHERE a=z AND c=x;
-} {/.*SCAN TABLE t1 .*SEARCH TABLE t2 .*/}
+} {/.*SCAN TABLE t1.*SEARCH TABLE t2.*/}
 do_execsql_test 1.3 {
   ANALYZE;
   EXPLAIN QUERY PLAN SELECT x FROM t1, t2 WHERE a=z AND c=x;
-} {/.*SCAN TABLE t1 .*SEARCH TABLE t2 .*/}
+} {/.*SCAN TABLE t1.*SEARCH TABLE t2.*/}
 do_execsql_test 1.4 {
   EXPLAIN QUERY PLAN SELECT x FROM t2, t1 WHERE a=z AND c=x;
-} {/.*SCAN TABLE t1 .*SEARCH TABLE t2 .*/}
+} {/.*SCAN TABLE t1.*SEARCH TABLE t2.*/}
 
 finish_test