]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Have the optimization introduced in (2170) deal with OP_NullRow as well as OP_Column...
authordanielk1977 <danielk1977@noemail.net>
Sun, 30 Jan 2005 09:17:58 +0000 (09:17 +0000)
committerdanielk1977 <danielk1977@noemail.net>
Sun, 30 Jan 2005 09:17:58 +0000 (09:17 +0000)
FossilOrigin-Name: 356d31e03fe856642c5637f5ea5665947ff681fc

manifest
manifest.uuid
src/expr.c
src/where.c
test/misc4.test

index a0003049874cab2d571101bae24586dd2a72de68..f623043654202ceabfb1e88448c930b6e689f910 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Update\sto\stest\sfiles\sto\ssupport\sbuilds\swith\sOMIT\smacros\sdefined.\s(CVS\s2289)
-D 2005-01-29T09:14:05
+C Have\sthe\soptimization\sintroduced\sin\s(2170)\sdeal\swith\sOP_NullRow\sas\swell\sas\sOP_Column\sand\sOP_Recno.\sFix\sfor\s#1086.\s(CVS\s2290)
+D 2005-01-30T09:17:59
 F Makefile.in ffd81f5e926d40b457071b4de8d7c1fa18f39b5a
 F Makefile.linux-gcc a9e5a0d309fa7c38e7c14d3ecf7690879d3a5457
 F README a01693e454a00cc117967e3f9fdab2d4d52e9bc1
@@ -36,7 +36,7 @@ F src/cursor.c de73c00aefc4747ad59b5105cf38bbff0667922e
 F src/date.c f3d1f5cd1503dabf426a198f3ebef5afbc122a7f
 F src/delete.c 4b94395b52a8f7785acd71135c2ce54f3f5550b3
 F src/experimental.c 8cc66b2be6a011055d75ef19ed2584bcfbb585ad
-F src/expr.c 9965ce8a6f416377ddcace8fb1d796101cf02ea9
+F src/expr.c 06b7ab3d09a5f709744f142263e13b2b1d7c6372
 F src/func.c f096b6771cc0aaa11790aca95773a50a8f74ba73
 F src/hash.c a97721a55440b7bea31ffe471bb2f6b4123cddd5
 F src/hash.h 1b0c445e1c89ff2aaad9b4605ba61375af001e84
@@ -81,7 +81,7 @@ F src/vdbeInt.h e80721cd8ff611789e20743eec43363a9fb5a48e
 F src/vdbeapi.c 467caa6e6fb9247528b1c7ab9132ae1b4748e8ac
 F src/vdbeaux.c 8d8cc8992cb78cab35e034fa81ad0c1a771c39f1
 F src/vdbemem.c 62fe89471b656a922e9879be005abf690509ead3
-F src/where.c b733d3a2e866bb31a3c5d0acf94d8dc599d55a81
+F src/where.c 94d847e07b07110c9097fbd3efb630ab8fb19edf
 F tclinstaller.tcl 36478c3bbfc5b93ceac42d94e3c736937b808432
 F test/all.test 7f0988442ab811dfa41793b5b550f5828ce316f3
 F test/alter.test b146ddd669b45a880d40bfdacd6037666137c3f4
@@ -157,7 +157,7 @@ F test/minmax.test 9429a06f1f93acf76fcacafd17160a4392e88526
 F test/misc1.test ff817d3740458884fea535b44821ec7e84700457
 F test/misc2.test fc052267d5178367f955538ae34aae1b2f696a92
 F test/misc3.test 7bd937e2c62bcc6be71939faf068d506467b1e03
-F test/misc4.test f44ad10982592bb77f1ae6d7876890b3af9605c1
+F test/misc4.test 98e5fb5544aeac6cbbc529c79d4144b0936c22de
 F test/misuse.test 1c7fee3c4c0cb4008717ecccf5c72281fac0008e
 F test/notnull.test 7a08117a71e74b0321aaa937dbeb41a09d6eb1d0
 F test/null.test 69c62daf1630bf54c87bbc7ef2e22012e58d6da8
@@ -272,7 +272,7 @@ F www/tclsqlite.tcl e73f8f8e5f20e8277619433f7970060ab01088fc
 F www/vdbe.tcl 095f106d93875c94b47367384ebc870517431618
 F www/version3.tcl 092a01f5ef430d2c4acc0ae558d74c4bb89638a0
 F www/whentouse.tcl 3e522a06ad41992023c80ca29a048ae2331ca5bd
-P a8b921d45ec9ef4d16ef7b5bf09aabaf02ebc70b
-R 23cc5d602d973c6da38d5c947af10e17
+P 808e16a7dda048c214df24170da282087042ee3a
+R df5f8dcf1c9648630223cb55d1b73f5c
 U danielk1977
-Z be67e3ff70386bba354e06b0c7e33e08
+Z edf636493d9bcd569445cc58d2b9e854
index 951d7ab7c5b22b3ada6dadd72ed6e0018ff3131d..20dd9d6d371c4f9ebfb2b98f7a07abcd9bd4594e 100644 (file)
@@ -1 +1 @@
-808e16a7dda048c214df24170da282087042ee3a
\ No newline at end of file
+356d31e03fe856642c5637f5ea5665947ff681fc
\ No newline at end of file
index 815d0b064fbc1eca097a6209e38ed162a09da838..7c19904278c412a91d6c94c09e21e170d9143f6e 100644 (file)
@@ -12,7 +12,7 @@
 ** This file contains routines used for analyzing expressions and
 ** for generating VDBE code that evaluates expressions in SQLite.
 **
-** $Id: expr.c,v 1.189 2005/01/29 08:32:45 danielk1977 Exp $
+** $Id: expr.c,v 1.190 2005/01/30 09:17:59 danielk1977 Exp $
 */
 #include "sqliteInt.h"
 #include <ctype.h>
@@ -476,6 +476,7 @@ SrcList *sqlite3SrcListDup(SrcList *p){
     pNewItem->pSelect = sqlite3SelectDup(pOldItem->pSelect);
     pNewItem->pOn = sqlite3ExprDup(pOldItem->pOn);
     pNewItem->pUsing = sqlite3IdListDup(pOldItem->pUsing);
+    pNewItem->colUsed = pOldItem->colUsed;
   }
   return pNew;
 }
index 86d539a392e22e5ee114cf9c8268332d1793129b..4c6386c231318d11395f98a8f8471c89e154de64 100644 (file)
@@ -16,7 +16,7 @@
 ** so is applicable.  Because this module is responsible for selecting
 ** indices, you might also think of this module as the "query optimizer".
 **
-** $Id: where.c,v 1.132 2005/01/29 08:32:45 danielk1977 Exp $
+** $Id: where.c,v 1.133 2005/01/30 09:17:59 danielk1977 Exp $
 */
 #include "sqliteInt.h"
 
@@ -1428,6 +1428,8 @@ void sqlite3WhereEnd(WhereInfo *pWInfo){
         }else if( pOp->opcode==OP_Recno ){
           pOp->p1 = pLevel->iIdxCur;
           pOp->opcode = OP_IdxRecno;
+        }else if( pOp->opcode==OP_NullRow ){
+          pOp->opcode = OP_Noop;
         }
       }
     }
index 872d587a5dee087b7ff813076ed8b1d9051c3c01..cad97ffbb86d6f7074f5a14d22c6640b2550bf0b 100644 (file)
@@ -13,7 +13,7 @@
 # This file implements tests for miscellanous features that were
 # left out of other test files.
 #
-# $Id: misc4.test,v 1.14 2005/01/29 08:32:46 danielk1977 Exp $
+# $Id: misc4.test,v 1.15 2005/01/30 09:17:59 danielk1977 Exp $
 
 set testdir [file dirname $argv0]
 source $testdir/tester.tcl
@@ -159,4 +159,19 @@ ifcapable view {
   } {a 1 b 2 a:1 1 c 3}
 }
 
+# Ticket #1086
+do_test misc4-6.1 {
+  execsql {
+    CREATE TABLE abc(a);
+    INSERT INTO abc VALUES(1);
+    CREATE TABLE def(d, e, f, PRIMARY KEY(d, e));
+  }
+} {}
+do_test misc4-6.2 {
+  execsql {
+    SELECT a FROM abc LEFT JOIN def ON (abc.a=def.d);
+  }
+} {1}
+
 finish_test
+