From: drh Date: Tue, 13 Aug 2002 13:15:49 +0000 (+0000) Subject: Bug fix to the left outer join logic. (CVS 1726) X-Git-Tag: version-3.6.10~5367 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=7f09b3e36ba9685e4b9564b2e5ece27fc9663240;p=thirdparty%2Fsqlite.git Bug fix to the left outer join logic. (CVS 1726) FossilOrigin-Name: 957d908e6b84cd599b5cfd82af80c8fac79c1dbd --- diff --git a/manifest b/manifest index 44282362eb..d2ea2970cc 100644 --- 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 diff --git a/manifest.uuid b/manifest.uuid index c643b44c6c..e6cc722ff9 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -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 index bc0b6bae3e..0000000000 --- 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. diff --git a/src/where.c b/src/where.c index bb5102c1c4..dfbbbafcb7 100644 --- a/src/where.c +++ b/src/where.c @@ -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); } }