]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Bug fix to the left outer join logic. (CVS 1726)
authordrh <drh@noemail.net>
Tue, 13 Aug 2002 13:15:49 +0000 (13:15 +0000)
committerdrh <drh@noemail.net>
Tue, 13 Aug 2002 13:15:49 +0000 (13:15 +0000)
FossilOrigin-Name: 957d908e6b84cd599b5cfd82af80c8fac79c1dbd

manifest
manifest.uuid
src/TODO [deleted file]
src/where.c

index 44282362eb43f62260edb306d98db972edbafd8e..d2ea2970cc58c3f47da30622f34accb9b6748e43 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Version\s2.6.3\s(CVS\s707)
-D 2002-08-13T00:02:10
+C Bug\sfix\sto\sthe\sleft\souter\sjoin\slogic.\s(CVS\s1726)
+D 2002-08-13T13:15:50
 F Makefile.in 6291a33b87d2a395aafd7646ee1ed562c6f2c28c
 F Makefile.template 0f288908fb6b1186b1594d753f79dc06c32b1dd7
 F README a4c0ba11354ef6ba0776b400d057c59da47a4cc0
@@ -17,7 +17,6 @@ F ltmain.sh e9ed72eb1d690f447c13945eaf69e28af531eda1
 F publish.sh 29f86624db9253353ae159a9e015f81e16f9dd5b
 F spec.template 238f7db425a78dc1bb7682e56e3834c7270a3f5e
 F sqlite.1 83f4a9d37bdf2b7ef079a82d54eaf2e3509ee6ea
-F src/TODO af7f3cab0228e34149cf98e073aa83d45878e7e6
 F src/btree.c 16d1712321e91e77562ffc673ed97b0b1a791db4
 F src/btree.h 0ca6c2631338df62e4f7894252d9347ae234eda9
 F src/build.c 0d661e653e02ce8037917c35403d9f0ff4418e6e
@@ -54,7 +53,7 @@ F src/update.c f07e6ed2c517c92871e54d3f5886d1cf56121b11
 F src/util.c 7a99e754c44dd220e881122e30581c08b6d6adef
 F src/vdbe.c aa647946d08e54b71bfff9049ad31135b7af4a8e
 F src/vdbe.h a9292f2b5fcecef924fa255fb74609e9cbc776c2
-F src/where.c 0fde349514717a55ff6a27ed2c6e914ce98a1512
+F src/where.c c250b91886f820d88cfa7eed8f79a9ef24e4b2bb
 F test/all.test 9a6eb262393f74cb7fb09b17156491a34b941fe3
 F test/bigrow.test 8ab252dba108f12ad64e337b0f2ff31a807ac578
 F test/btree.test bf326f546a666617367a7033fa2c07451bd4f8e1
@@ -143,7 +142,7 @@ F www/speed.tcl 7fc83f1b018e1ecc451838449542c3079ed12425
 F www/sqlite.tcl ae3dcfb077e53833b59d4fcc94d8a12c50a44098
 F www/tclsqlite.tcl 1db15abeb446aad0caf0b95b8b9579720e4ea331
 F www/vdbe.tcl 2013852c27a02a091d39a766bc87cff329f21218
-P 34c4149eea7a48927e36867f4e25ff7fac40c66e
-R b96ce82652418ef9a905306828af0c0e
+P ba706aca0af9ed1ecb64edd4ab327bd5a5a32044
+R 3e7291c79a919fa2cefc3efc93c90571
 U drh
-Z a3f773bf3a0d32a4220b77aeb88fa1db
+Z 1899af56f51d3a2e8e413d3d675047ee
index c643b44c6c64d9b4ad94cece15a47758b60f34b5..e6cc722ff966142a0f43b24bc9ec3d4c4de0b735 100644 (file)
@@ -1 +1 @@
-ba706aca0af9ed1ecb64edd4ab327bd5a5a32044
\ No newline at end of file
+957d908e6b84cd599b5cfd82af80c8fac79c1dbd
\ No newline at end of file
diff --git a/src/TODO b/src/TODO
deleted file mode 100644 (file)
index bc0b6ba..0000000
--- a/src/TODO
+++ /dev/null
@@ -1,6 +0,0 @@
-  *  Document all the changes and release Sqlite 2.0.
-  *  Implement CLUSTER command like in PostgreSQL.
-  *  "OPTIMIZE select" statement to automatically create indices and/or
-     invoke a CLUSTER command.
-  *  "CREATE INDEX FOR select" to automatically generate needed indices.
-  *  Parse and use constraints.
index bb5102c1c44ef827a47ff28b5cdd0e8a6cd8acf6..dfbbbafcb7352a52ae5fa18c49dc9ed00d5fb994 100644 (file)
@@ -13,7 +13,7 @@
 ** the WHERE clause of SQL statements.  Also found here are subroutines
 ** to generate VDBE code to evaluate expressions.
 **
-** $Id: where.c,v 1.59 2002/07/31 19:50:28 drh Exp $
+** $Id: where.c,v 1.60 2002/08/13 13:15:51 drh Exp $
 */
 #include "sqliteInt.h"
 
@@ -574,6 +574,8 @@ WhereInfo *sqliteWhereBegin(
     if( pBestIdx ){
       pWInfo->a[i].iCur = pParse->nTab++;
       pWInfo->peakNTab = pParse->nTab;
+    }else{
+      pWInfo->a[i].iCur = -1;
     }
   }
 
@@ -1077,8 +1079,11 @@ void sqliteWhereEnd(WhereInfo *pWInfo){
     if( pLevel->iLeftJoin ){
       int addr;
       addr = sqliteVdbeAddOp(v, OP_MemLoad, pLevel->iLeftJoin, 0);
-      sqliteVdbeAddOp(v, OP_NotNull, 1, addr+4);
+      sqliteVdbeAddOp(v, OP_NotNull, 1, addr+4 + (pLevel->iCur>=0));
       sqliteVdbeAddOp(v, OP_NullRow, base+i, 0);
+      if( pLevel->iCur>=0 ){
+        sqliteVdbeAddOp(v, OP_NullRow, pLevel->iCur, 0);
+      }
       sqliteVdbeAddOp(v, OP_Goto, 0, pLevel->top);
     }
   }