]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Remove more vestiges of sqlite_query_plan from the test cases.
authordrh <drh@noemail.net>
Mon, 3 Jun 2013 22:08:20 +0000 (22:08 +0000)
committerdrh <drh@noemail.net>
Mon, 3 Jun 2013 22:08:20 +0000 (22:08 +0000)
FossilOrigin-Name: eb27086e8a8a4d5fcb2ea358256a555e34339423

manifest
manifest.uuid
test/between.test
test/intpkey.test
test/like.test
test/subquery.test
test/where2.test
test/where3.test

index 75f057b5a8b517ca13c2e39e3d3a94d74f8cf418..e5312f39307954a88978bdacb30b5f3fab23bc89 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Adjust\sthe\sxBestIndex\smethods\son\sboth\sthe\sfuzzer\sand\stransitive_closure\nvirtual\stables\sso\sthat\san\sunused\sMATCH\soperator\sgets\sa\sreally\slarge\scost.\nRemove\sambiguities\sfrom\sthe\sfuzzer\stest\scases.
-D 2013-06-03T21:25:28.624
+C Remove\smore\svestiges\sof\ssqlite_query_plan\sfrom\sthe\stest\scases.
+D 2013-06-03T22:08:20.442
 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
 F Makefile.in 5e41da95d92656a5004b03d3576e8b226858a28e
 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@@ -335,7 +335,7 @@ F test/backup_malloc.test 7162d604ec2b4683c4b3799a48657fb8b5e2d450
 F test/badutf.test d5360fc31f643d37a973ab0d8b4fb85799c3169f
 F test/badutf2.test f5bc7f2d280670ecd79b9cf4f0f1760c607fe51f
 F test/bc_common.tcl 5c8689cc6d2fb44b7c0968ae4f85eb26d50022fa
-F test/between.test bec144cd75698402bbda8ad8e23bd8588e426145
+F test/between.test e6896728a636e3e610bcb2f87c9305120c809bc5
 F test/bigfile.test aa74f4e5db51c8e54a1d9de9fa65d01d1eb20b59
 F test/bigfile2.test 7c79f1ef0c6c2c2bc1e7bd895596fab32bfb4796
 F test/bigrow.test f0aeb7573dcb8caaafea76454be3ade29b7fc747
@@ -596,7 +596,7 @@ F test/insert5.test 394f96728d1258f406fe5f5aeb0aaf29487c39a6
 F test/instr.test a34e1d46a9eefb098a7167ef0e730a4a3d82fba0
 F test/intarray.test 066b7d7ac38d25bf96f87f1b017bfc687551cdd4
 F test/interrupt.test dfe9a67a94b0b2d8f70545ba1a6cca10780d71cc
-F test/intpkey.test 7af30f6ae852d8d1c2b70e4bf1551946742e92d8
+F test/intpkey.test a9674fc6195e0952e4e6105a9981ce1e48e7f215
 F test/io.test ecf44cc81664ad54d8253e2d88fc705b6554abe3
 F test/ioerr.test 40bb2cfcab63fb6aa7424cd97812a84bc16b5fb8
 F test/ioerr2.test 9d71166f8466eda510f1af6137bdabaa82b5408d
@@ -619,7 +619,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 0e5412f4dac4a849f613e1ef8b529d56a6e31d08
+F test/like.test 52e650adfa208325f928b847571d77b647af07c3
 F test/like2.test 3b2ee13149ba4a8a60b59756f4e5d345573852da
 F test/limit.test cc0ab63385239b63c72452b0e93700bf5e8f0b99
 F test/loadext.test 92e6dfefd1229c3ef4aaabd87419efd8fa57a7a5
@@ -792,7 +792,7 @@ F test/spellfix.test bea537caf587df30d430c2c6a8fe9f64b8712834
 F test/sqllimits1.test b1aae27cc98eceb845e7f7adf918561256e31298
 F test/stat.test be8d477306006ec696bc86757cfb34bec79447ce
 F test/stmt.test 25d64e3dbf9a3ce89558667d7f39d966fe2a71b9
-F test/subquery.test 869562de9e8c5d8147e0451a2ce5b58cf55ce389
+F test/subquery.test 3b97763ada8b3a4092d2c80db3ebc0e7870e7eaf
 F test/subquery2.test 91e1e364072aeff431d1f9689b15147e421d88c7
 F test/subselect.test d24fd8757daf97dafd2e889c73ea4c4272dcf4e4
 F test/substr.test 18f57c4ca8a598805c4d64e304c418734d843c1a
@@ -1029,8 +1029,8 @@ F test/walshared.test 6dda2293880c300baf5d791c307f653094585761
 F test/walslow.test e7be6d9888f83aa5d3d3c7c08aa9b5c28b93609a
 F test/walthread.test de8dbaf6d9e41481c460ba31ca61e163d7348f8e
 F test/where.test 054a6b6f7933c5a5f50d0bcd650b5eccb450cc81
-F test/where2.test f902f62d60f20b0257dd700f0c4a2945527fca8e
-F test/where3.test 667e75642102c97a00bf9b23d3cb267db321d006
+F test/where2.test 116fb0d6e98a423d12eb9a65906218ce09936674
+F test/where3.test ae3054e1216ecc0afbcb83674310ebc5de25ba09
 F test/where4.test e9b9e2f2f98f00379e6031db6a6fca29bae782a2
 F test/where5.test fdf66f96d29a064b63eb543e28da4dfdccd81ad2
 F test/where6.test 5da5a98cec820d488e82708301b96cb8c18a258b
@@ -1093,7 +1093,7 @@ F tool/vdbe-compress.tcl f12c884766bd14277f4fcedcae07078011717381
 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
 F tool/warnings.sh fbc018d67fd7395f440c28f33ef0f94420226381
 F tool/win/sqlite.vsix 97894c2790eda7b5bce3cc79cb2a8ec2fde9b3ac
-P 6bc71dfcf0ef757c5c2b426dd8fddc1e5ae0f598
-R 9f95af129af308d556c3b0bed3929212
+P e2c1af78b65a8ace976fa6c035db212e1ffc79b8
+R 85129ff0b9a881f15c06fc2c70cadd93
 U drh
-Z 30d36dfc5ff4e44e38a2e90ed964881e
+Z 30b7be3ba3d79e592e3b359a6ec5ea92
index 5fac46b81c3941b321a20be98916d4271898d177..387facd0c51927a3e4d39553352eab4098c49133 100644 (file)
@@ -1 +1 @@
-e2c1af78b65a8ace976fa6c035db212e1ffc79b8
\ No newline at end of file
+eb27086e8a8a4d5fcb2ea358256a555e34339423
\ No newline at end of file
index 98be29aea76aa82c7f9801781141e4fdb5c46b58..f089cd95d39f24a989be65c8cf0e2a3ce6468b3a 100644 (file)
@@ -48,7 +48,7 @@ do_test between-1.0 {
 
 # This procedure executes the SQL.  Then it appends to the result the
 # "sort" or "nosort" keyword depending on whether or not any sorting
-# is done.  Then it appends the ::sqlite_query_plan variable.
+# is done.  Then it appends the names of the table and index used.
 #
 proc queryplan {sql} {
   set ::sqlite_sort_count 0
index db394212846770c687e6486d04858df697e5d647..7ed25e4a13ccd19d87644750e0c59d8d243a2742 100644 (file)
@@ -125,8 +125,11 @@ do_test intpkey-1.12.1 {
   }
 } {4 one two}
 do_test intpkey-1.12.2 {
-  set sqlite_query_plan
-} {t1 *}
+  execsql {
+    EXPLAIN QUERY PLAN
+    SELECT * FROM t1 WHERE a==4;
+  }
+} {/SEARCH TABLE t1 /}
 
 # Try to insert a non-integer value into the primary key field.  This
 # should result in a data type mismatch.
index 80ba4185880f62753a90b0a785b20b18394d2f0b..f68a93537b1487daa27e5637b347e5da3314c736 100644 (file)
@@ -156,14 +156,27 @@ ifcapable !like_opt {
 
 # This procedure executes the SQL.  Then it appends to the result the
 # "sort" or "nosort" keyword (as in the cksort procedure above) then
-# it appends the ::sqlite_query_plan variable.
+# it appends the names of the table and index used.
 #
 proc queryplan {sql} {
   set ::sqlite_sort_count 0
   set data [execsql $sql]
   if {$::sqlite_sort_count} {set x sort} {set x nosort}
   lappend data $x
-  return [concat $data $::sqlite_query_plan]
+  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} \
+        $x all as tab idx]} {
+      lappend data {} $idx
+    } elseif {[regexp { TABLE (\w+ AS )?(\w+) USING.* INDEX (\w+)\W} \
+        $x all as tab idx]} {
+      lappend data $tab $idx
+    } elseif {[regexp { TABLE (\w+ AS )?(\w+)\W} $x all as tab]} {
+      lappend data $tab *
+    }
+  }
+  return $data   
 }
 
 # Perform tests on the like optimization.
@@ -176,7 +189,7 @@ do_test like-3.1 {
   queryplan {
     SELECT x FROM t1 WHERE x LIKE 'abc%' ORDER BY 1;
   }
-} {ABC {ABC abc xyz} abc abcd sort t1 {}}
+} {ABC {ABC abc xyz} abc abcd sort t1 *}
 do_test like-3.2 {
   set sqlite_like_count
 } {12}
@@ -269,8 +282,8 @@ do_test like-3.12 {
 #
 do_test like-3.13 {
   set sqlite_like_count 0
+  db eval {PRAGMA case_sensitive_like=off;}
   queryplan {
-    PRAGMA case_sensitive_like=off;
     SELECT x FROM t1 WHERE x LIKE 'abc%' ORDER BY 1;
   }
 } {ABC {ABC abc xyz} abc abcd nosort {} i1}
@@ -282,12 +295,14 @@ do_test like-3.14 {
 #
 do_test like-3.15 {
   set sqlite_like_count 0
-  queryplan {
+  db eval {
     PRAGMA case_sensitive_like=on;
     DROP INDEX i1;
+  }
+  queryplan {
     SELECT x FROM t1 WHERE x LIKE 'abc%' ORDER BY 1;
   }
-} {abc abcd sort t1 {}}
+} {abc abcd sort t1 *}
 do_test like-3.16 {
   set sqlite_like_count
 } 12
@@ -299,7 +314,7 @@ do_test like-3.17 {
   queryplan {
     SELECT x FROM t1 WHERE x GLOB 'abc*' ORDER BY 1;
   }
-} {abc abcd sort t1 {}}
+} {abc abcd sort t1 *}
 do_test like-3.18 {
   set sqlite_like_count
 } 12
@@ -318,8 +333,8 @@ do_test like-3.20 {
 } 0
 do_test like-3.21 {
   set sqlite_like_count 0
+  db eval {PRAGMA case_sensitive_like=on;}
   queryplan {
-    PRAGMA case_sensitive_like=on;
     SELECT x FROM t1 WHERE x GLOB 'abc*' ORDER BY 1;
   }
 } {abc abcd nosort {} i1}
@@ -328,8 +343,8 @@ do_test like-3.22 {
 } 0
 do_test like-3.23 {
   set sqlite_like_count 0
+  db eval {PRAGMA case_sensitive_like=off;}
   queryplan {
-    PRAGMA case_sensitive_like=off;
     SELECT x FROM t1 WHERE x GLOB 'a[bc]d' ORDER BY 1;
   }
 } {abd acd nosort {} i1}
@@ -809,60 +824,66 @@ do_test like-11.0 {
   }
 } {12}
 do_test like-11.1 {
+  db eval {PRAGMA case_sensitive_like=OFF;}
   queryplan {
-    PRAGMA case_sensitive_like=OFF;
     SELECT b FROM t11 WHERE b LIKE 'abc%' ORDER BY a;
   }
 } {abc abcd ABC ABCD nosort t11 *}
 do_test like-11.2 {
+  db eval {PRAGMA case_sensitive_like=ON;}
   queryplan {
-    PRAGMA case_sensitive_like=ON;
     SELECT b FROM t11 WHERE b LIKE 'abc%' ORDER BY a;
   }
 } {abc abcd nosort t11 *}
 do_test like-11.3 {
-  queryplan {
+  db eval {
     PRAGMA case_sensitive_like=OFF;
     CREATE INDEX t11b ON t11(b);
+  }
+  queryplan {
     SELECT b FROM t11 WHERE b LIKE 'abc%' ORDER BY +a;
   }
 } {abc abcd ABC ABCD sort {} t11b}
 do_test like-11.4 {
+  db eval {PRAGMA case_sensitive_like=ON;}
   queryplan {
-    PRAGMA case_sensitive_like=ON;
     SELECT b FROM t11 WHERE b LIKE 'abc%' ORDER BY a;
   }
 } {abc abcd nosort t11 *}
 do_test like-11.5 {
-  queryplan {
+  db eval {
     PRAGMA case_sensitive_like=OFF;
     DROP INDEX t11b;
     CREATE INDEX t11bnc ON t11(b COLLATE nocase);
+  }
+  queryplan {
     SELECT b FROM t11 WHERE b LIKE 'abc%' ORDER BY +a;
   }
 } {abc abcd ABC ABCD sort {} t11bnc}
 do_test like-11.6 {
+  db eval {CREATE INDEX t11bb ON t11(b COLLATE binary);}
   queryplan {
-    CREATE INDEX t11bb ON t11(b COLLATE binary);
     SELECT b FROM t11 WHERE b LIKE 'abc%' ORDER BY +a;
   }
 } {abc abcd ABC ABCD sort {} t11bnc}
 do_test like-11.7 {
+  db eval {PRAGMA case_sensitive_like=ON;}
   queryplan {
-    PRAGMA case_sensitive_like=ON;
     SELECT b FROM t11 WHERE b LIKE 'abc%' ORDER BY +a;
   }
 } {abc abcd sort {} t11bb}
 do_test like-11.8 {
+  db eval {PRAGMA case_sensitive_like=OFF;}
   queryplan {
-    PRAGMA case_sensitive_like=OFF;
     SELECT b FROM t11 WHERE b GLOB 'abc*' ORDER BY +a;
   }
 } {abc abcd sort {} t11bb}
 do_test like-11.9 {
-  queryplan {
+  db eval {
     CREATE INDEX t11cnc ON t11(c COLLATE nocase);
     CREATE INDEX t11cb ON t11(c COLLATE binary);
+  }
+  queryplan {
     SELECT c FROM t11 WHERE c LIKE 'abc%' ORDER BY +a;
   }
 } {abc abcd ABC ABCD sort {} t11cnc}
index f601d3f80b0b685a026e5ee1a8b925ec294c3d19..da0a44cc5cca16932ee60002c0440108e7f6b409 100644 (file)
@@ -241,8 +241,11 @@ do_test subquery-2.5.3.1 {
 } {10.0}
 do_test subquery-2.5.3.2 {
   # Verify that the t4i index was not used in the previous query
-  set ::sqlite_query_plan
-} {t4 {}}
+  execsql {
+    EXPLAIN QUERY PLAN
+    SELECT * FROM t4 WHERE x IN (SELECT a FROM t3);
+  }
+} {/SCAN TABLE t4 /}
 do_test subquery-2.5.4 {
   execsql {
     DROP TABLE t3;
index 60937adcc5de93f8506e7447502f2f83a095636b..d7fb514a87e69a0b829ee6f13621ae69f0498769 100644 (file)
@@ -66,7 +66,7 @@ proc cksort {sql} {
 
 # This procedure executes the SQL.  Then it appends to the result the
 # "sort" or "nosort" keyword (as in the cksort procedure above) then
-# it appends the ::sqlite_query_plan variable.
+# it appends the name of the table and index used.
 #
 proc queryplan {sql} {
   set ::sqlite_sort_count 0
@@ -84,7 +84,6 @@ proc queryplan {sql} {
     }
   }
   return $data   
-  # return [concat $data $::sqlite_query_plan]
 }
 
 
index e08f9051e2482ea4ff96daf27e5712fa1fd061ac..c8ec8eb169e082d97cb041cd60d63147c9901518 100644 (file)
@@ -103,12 +103,22 @@ ifcapable explain {
 }
 
 # This procedure executes the SQL.  Then it appends 
-# the ::sqlite_query_plan variable.
+# the names of the table and index used
 #
 proc queryplan {sql} {
   set ::sqlite_sort_count 0
   set data [execsql $sql]
-  return [concat $data $::sqlite_query_plan]
+  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} \
+        $x all as tab idx]} {
+      lappend data $tab $idx
+    } elseif {[regexp { TABLE (\w+ AS )?(\w+)\W} $x all as tab]} {
+      lappend data $tab *
+    }
+  }
+  return $data   
 }
 
 
@@ -144,37 +154,37 @@ do_test where3-2.1 {
     SELECT * FROM tA, tB, tC LEFT JOIN tD ON dpk=cx
      WHERE cpk=bx AND bpk=ax
   }
-} {tA {} tB * tC * tD *}
+} {tA * tB * tC * tD *}
 do_test where3-2.1.1 {
   queryplan {
     SELECT * FROM tA, tB, tC LEFT JOIN tD ON cx=dpk
      WHERE cpk=bx AND bpk=ax
   }
-} {tA {} tB * tC * tD *}
+} {tA * tB * tC * tD *}
 do_test where3-2.1.2 {
   queryplan {
     SELECT * FROM tA, tB, tC LEFT JOIN tD ON cx=dpk
      WHERE bx=cpk AND bpk=ax
   }
-} {tA {} tB * tC * tD *}
+} {tA * tB * tC * tD *}
 do_test where3-2.1.3 {
   queryplan {
     SELECT * FROM tA, tB, tC LEFT JOIN tD ON cx=dpk
      WHERE bx=cpk AND ax=bpk
   }
-} {tA {} tB * tC * tD *}
+} {tA * tB * tC * tD *}
 do_test where3-2.1.4 {
   queryplan {
     SELECT * FROM tA, tB, tC LEFT JOIN tD ON dpk=cx
      WHERE bx=cpk AND ax=bpk
   }
-} {tA {} tB * tC * tD *}
+} {tA * tB * tC * tD *}
 do_test where3-2.1.5 {
   queryplan {
     SELECT * FROM tA, tB, tC LEFT JOIN tD ON dpk=cx
      WHERE cpk=bx AND ax=bpk
   }
-} {tA {} tB * tC * tD *}
+} {tA * tB * tC * tD *}
 do_test where3-2.2 {
   queryplan {
     SELECT * FROM tA, tB, tC LEFT JOIN tD ON dpk=cx