]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Fix a bug in the EXPLAIN QUERY PLAN code.
authordan <dan@noemail.net>
Thu, 11 Nov 2010 11:43:01 +0000 (11:43 +0000)
committerdan <dan@noemail.net>
Thu, 11 Nov 2010 11:43:01 +0000 (11:43 +0000)
FossilOrigin-Name: 7ae068952fba4395b4aa437613a5ed2bd9ddf941

manifest
manifest.uuid
src/where.c
test/autoindex1.test
test/e_createtable.test
test/fts3fault.test
test/where7.test
test/where9.test

index 8f6a1edf6667ef9bc3411f40d908c507d710f361..27478ced54ddbb001d0d063842fe9f3234fc99f7 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Modifications\sto\stest\scases\sto\saccount\sfor\snew\sEXPLAIN\sQUERY\sPLAN\soutput.
-D 2010-11-11T10:36:26
+C Fix\sa\sbug\sin\sthe\sEXPLAIN\sQUERY\sPLAN\scode.
+D 2010-11-11T11:43:01
 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
 F Makefile.in e7a59672eaeb04408d1fa8501618d7501a3c5e39
 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@@ -239,7 +239,7 @@ F src/vtab.c b297e8fa656ab5e66244ab15680d68db0adbec30
 F src/wal.c f26b8d297bd11cb792e609917f9d4c6718ac8e0e
 F src/wal.h c1aac6593a0b02b15dc625987e619edeab39292e
 F src/walker.c 3112bb3afe1d85dc52317cb1d752055e9a781f8f
-F src/where.c 2b69056fb5a9c271af4cf3d24112e9413b43d6ad
+F src/where.c 6c1905c835935d6915ccd24506a3acbdc3eba784
 F test/aggerror.test a867e273ef9e3d7919f03ef4f0e8c0d2767944f2
 F test/alias.test 4529fbc152f190268a15f9384a5651bbbabc9d87
 F test/all.test 6745008c144bd2956d58864d21f7b304689c1cce
@@ -264,7 +264,7 @@ F test/auth.test 26cc6f219580191539bf335abe03e55e49310846
 F test/auth2.test 270baddc8b9c273682760cffba6739d907bd2882
 F test/auth3.test a4755e6a2a2fea547ffe63c874eb569e60a28eb5
 F test/autoinc.test 85ef3180a737e6580086a018c09c6f1a52759b46
-F test/autoindex1.test 4400c3e123c25b83d48974ad612c4d2e9e6fa940
+F test/autoindex1.test c00ee946c4a16bef593e104d8ea81370ff8e5a37
 F test/autovacuum.test bb7c0885e6f8f1d633045de48f2b66082162766d
 F test/autovacuum_ioerr2.test 598b0663074d3673a9c1bc9a16e80971313bafe6
 F test/avtrans.test 0252654f4295ddda3b2cce0e894812259e655a85
@@ -350,7 +350,7 @@ F test/descidx2.test 9f1a0c83fd57f8667c82310ca21b30a350888b5d
 F test/descidx3.test fe720e8b37d59f4cef808b0bf4e1b391c2e56b6f
 F test/diskfull.test 0cede7ef9d8f415d9d3944005c76be7589bb5ebb
 F test/distinctagg.test 1a6ef9c87a58669438fc771450d7a72577417376
-F test/e_createtable.test 0aa5dadca80684d6f497d706ac69112019f6704b
+F test/e_createtable.test 5fd86f532e3c50fca6bbaab78ab0b0f8b9c7533c
 F test/e_delete.test 55d868b647acc091c261a10b9b0cb0ab660a6acb
 F test/e_expr.test 4e004d1f5187d4bbc9ca3d55660a8d164dd59f4e
 F test/e_fkey.test 64e69327091444471a14f854b2e297c5039c47ab
@@ -442,7 +442,7 @@ F test/fts3defer2.test d3c7db6584aab06a2781b8de58747c33b23cb19c
 F test/fts3e.test 1f6c6ac9cc8b772ca256e6b22aaeed50c9350851
 F test/fts3expr.test 5e745b2b6348499d9ef8d59015de3182072c564c
 F test/fts3expr2.test 18da930352e5693eaa163a3eacf96233b7290d1a
-F test/fts3fault.test 2c8c26f9002be900056b63996a2891a043775f7b
+F test/fts3fault.test 81fd40ceb12f33f9d16c5637d0f8d95d4556c456
 F test/fts3malloc.test 9c8cc3f885bb4dfc66d0460c52f68f45e4710d1b
 F test/fts3matchinfo.test 211b04434926bce9cc2b3cc5f58725affefe5165
 F test/fts3near.test 2e318ee434d32babd27c167142e2b94ddbab4844
@@ -846,10 +846,10 @@ F test/where3.test 6fc33631b7350b2c4066f835d4f994149ddd0a1d
 F test/where4.test e9b9e2f2f98f00379e6031db6a6fca29bae782a2
 F test/where5.test fdf66f96d29a064b63eb543e28da4dfdccd81ad2
 F test/where6.test 5da5a98cec820d488e82708301b96cb8c18a258b
-F test/where7.test 23ad8b8bee5f2feb3f0118b09fe9ef5fcfa5a944
+F test/where7.test 2707b476dbf752f8cdc986212373700f703a6527
 F test/where8.test a6c740fd286d7883e274e17b6230a9d672a7ab1f
 F test/where8m.test da346596e19d54f0aba35ebade032a7c47d79739
-F test/where9.test 2fa750f5f38375f4553b629d76d4dd903224150e
+F test/where9.test 576ce5bf3bf5d2cefe4dcea9c2e8fc69d1a7ec8f
 F test/whereA.test 24c234263c8fe358f079d5e57d884fb569d2da0a
 F test/whereB.test 0def95db3bdec220a731c7e4bec5930327c1d8c5
 F test/wherelimit.test 5e9fd41e79bb2b2d588ed999d641d9c965619b31
@@ -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 4b5c93bc7c43c80962ddae65c58037bf5977b94b
-R abe563ec3b08e8fc639bf3759f538194
+P 30904ef8412348464e893e9e1551ef22cad24a3e
+R ad4bf36ec916b4929497eadda39bfc05
 U dan
-Z ed52cc8c7203a66253060e18a9474729
+Z fb3b99730d456e246e3837735140f4ed
index 90f473e3660185d0f3aaedc8937a72b375449f9d..b51d64bd8a8b9efd197b8d1a05757e513ad5bdac 100644 (file)
@@ -1 +1 @@
-30904ef8412348464e893e9e1551ef22cad24a3e
\ No newline at end of file
+7ae068952fba4395b4aa437613a5ed2bd9ddf941
\ No newline at end of file
index 48c3f6488b768681a32983b235c06842ba9a89cd..bae19a15a247d84cc9da8fe271797ab7f2d3637b 100644 (file)
@@ -3158,18 +3158,23 @@ static char *explainIndexRange(sqlite3 *db, WhereLevel *pLevel, Table *pTab){
   int i;
 
   for(i=0; i<nEq; i++){
-    char *zCol = pTab->aCol[pIndex->aiColumn[i]].zName;
     zRet = sqlite3MAppendf(db, zRet, 
-        "%s%s%s=?", (zRet?zRet:""), (zRet?" AND ":""), zCol);
+        "%s%s%s=?", (zRet?zRet:""), (zRet?" AND ":""), 
+        pTab->aCol[pIndex->aiColumn[i]].zName
+    );
   }
 
   if( pPlan->wsFlags&WHERE_BTM_LIMIT ){
     zRet = sqlite3MAppendf(db, zRet,
-        "%s%s%s>?", (zRet?zRet:""), (zRet?" AND ":""), pTab->aCol[nEq].zName);
+        "%s%s%s>?", (zRet?zRet:""), (zRet?" AND ":""),
+        pTab->aCol[pIndex->aiColumn[i]].zName
+    );
   }
   if( pPlan->wsFlags&WHERE_TOP_LIMIT ){
     zRet = sqlite3MAppendf(db, zRet,
-        "%s%s%s<?", (zRet?zRet:""), (zRet?" AND ":""), pTab->aCol[nEq].zName);
+        "%s%s%s<?", (zRet?zRet:""), (zRet?" AND ":""), 
+        pTab->aCol[pIndex->aiColumn[i]].zName
+    );
   }
 
   if( zRet ){
index b8d76a119e96ba5fb433ef5c2e23b6d7654ee98c..30da4d0b6b73f8d43dbf93b68018d38e1997fc9f 100644 (file)
@@ -241,9 +241,9 @@ do_execsql_test autoindex1-600 {
    ORDER BY x.registering_flock;
 } {
   1 0 0 {SCAN TABLE sheep AS s (~1000000 rows)} 
-  1 1 1 {SCAN TABLE flock_owner AS prev BY INDEX sqlite_autoindex_flock_owner_1 (flock_no=? AND flock_no<?) (~2 rows)} 
+  1 1 1 {SCAN TABLE flock_owner AS prev BY INDEX sqlite_autoindex_flock_owner_1 (flock_no=? AND owner_change_date<?) (~2 rows)} 
   1 0 0 {EXECUTE CORRELATED SCALAR SUBQUERY 2} 
-  2 0 0 {SCAN TABLE flock_owner AS later BY COVERING INDEX sqlite_autoindex_flock_owner_1 (flock_no=? AND flock_no>? AND flock_no<?) (~1 rows)} 
+  2 0 0 {SCAN TABLE flock_owner AS later BY COVERING INDEX sqlite_autoindex_flock_owner_1 (flock_no=? AND owner_change_date>? AND owner_change_date<?) (~1 rows)} 
   0 0 0 {SCAN TABLE sheep AS x BY INDEX sheep_reg_flock_index (~1000000 rows)} 
   0 1 1 {SCAN SUBQUERY 1 AS y BY AUTOMATIC COVERING INDEX (sheep_no=?) (~7 rows)}
 }
index ba39357d19f895531c7e8cf7ab7b42a223dba4c8..0a310f812d9d793cc27eacea6dfb6edc422d1f95 100644 (file)
@@ -1379,7 +1379,7 @@ do_createtable_tests 4.10 {
        {0 0 0 {SCAN TABLE t2 BY INDEX sqlite_autoindex_t2_1 (~1000000 rows)}}
 
   3    "EXPLAIN QUERY PLAN SELECT * FROM t2 WHERE b=10 AND c>10"
-       {0 0 0 {SCAN TABLE t2 BY INDEX sqlite_autoindex_t2_1 (b=? AND b>?) (~3 rows)}}
+       {0 0 0 {SCAN TABLE t2 BY INDEX sqlite_autoindex_t2_1 (b=? AND c>?) (~3 rows)}}
 }
 
 # EVIDENCE-OF: R-45493-35653 A CHECK constraint may be attached to a
index fe1f77f9a634497fdc66228e923b318ab08138ea..c5578310125ca1a743dab7a635c8007b1f830095 100644 (file)
@@ -15,6 +15,9 @@ source $testdir/tester.tcl
 
 set ::testprefix fts3fault
 
+# If SQLITE_ENABLE_FTS3 is not defined, omit this file.
+ifcapable !fts3 { finish_test ; return }
+
 # Test error handling in the sqlite3Fts3Init() function. This is the 
 # function that registers the FTS3 module and various support functions
 # with SQLite.
index c1d8099855b151363f9a0b83b222b0164beeebbc..e12c6f27b5b452271fe4683d331e37531d3d28c5 100644 (file)
@@ -23343,7 +23343,7 @@ do_execsql_test where7-3.1 {
 } {
   0 0 1 {SCAN TABLE t301 BY COVERING INDEX t301_c4 (c4=?) (~10 rows)} 
   0 0 1 {SCAN TABLE t301 BY INTEGER PRIMARY KEY (rowid=?) (~1 rows)} 
-  0 1 0 {SCAN TABLE t302 BY INDEX t302_c8_c3 (c8=? AND c8>?) (~2 rows)} 
+  0 1 0 {SCAN TABLE t302 BY INDEX t302_c8_c3 (c8=? AND c3>?) (~2 rows)} 
   0 0 0 {USE TEMP B-TREE FOR ORDER BY}
 }
 
index 10e2c3c22a1bb51c2a747d4bb7e3ed278e0f8e8a..8861222c516b0db391e87a2fabc3d6ba36d3b867 100644 (file)
@@ -472,7 +472,7 @@ ifcapable explain {
   do_execsql_test where9-5.3 {
     EXPLAIN QUERY PLAN SELECT a FROM t1 WHERE b>1000 AND (c>=31031 OR d IS NULL)
   } {
-    0 0 0 {SCAN TABLE t1 BY INDEX t1b (a>?) (~165000 rows)}
+    0 0 0 {SCAN TABLE t1 BY INDEX t1b (b>?) (~165000 rows)}
   }
 }