From: drh Date: Thu, 4 Oct 2012 16:00:24 +0000 (+0000) Subject: Candidate fix for ticket [d02e1406a58ea02]. X-Git-Tag: version-3.7.14.1~1 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=4d4f3e5d8594366f238cac7c6b40a0575b0463f4;p=thirdparty%2Fsqlite.git Candidate fix for ticket [d02e1406a58ea02]. FossilOrigin-Name: 81fd941da62956e32d1c4ffcdb39abecba7a6f3b --- diff --git a/manifest b/manifest index 2d15cfc189..d632a32253 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Increase\sthe\sversion\snumber\sto\s3.7.14.1.\s\sThe\sversion\sof\sautoconf\sused\sis\ndifferent\sfrom\sthe\sprevious\srelease\sso\sthere\sare\shuge\sdifferences\sin\sthe\ngenerated\s"configure"\sscript. -D 2012-10-04T15:36:03.876 +C Candidate\sfix\sfor\sticket\s[d02e1406a58ea02]. +D 2012-10-04T16:00:24.836 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f F Makefile.in abd5c10d21d1395f140d9e50ea999df8fa4d6376 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23 @@ -251,7 +251,7 @@ F src/vtab.c d2c54fd22aa83eb34fc6f7cd9b097f2fc2b1e9de F src/wal.c 5acb3e7bbd31f10ba39acad9ce6b399055337a9d F src/wal.h 29c197540b19044e6cd73487017e5e47a1d3dac6 F src/walker.c 3d75ba73de15e0f8cd0737643badbeb0e002f07b -F src/where.c 22783f4275f6fc09b663115a6091837cb5c510e0 +F src/where.c e74f9ed463b0153e7f2a0e5f291c2be16ae76b35 F test/8_3_names.test 631ea964a3edb091cf73c3b540f6bcfdb36ce823 F test/aggerror.test a867e273ef9e3d7919f03ef4f0e8c0d2767944f2 F test/aggnested.test 0be144b453e0622a085fae8665c32f5676708e00 @@ -966,7 +966,7 @@ F test/where9.test ae98dc22ef9b6f2bc81e9f164e41b38faa9bda06 F test/whereA.test 24c234263c8fe358f079d5e57d884fb569d2da0a F test/whereB.test 0def95db3bdec220a731c7e4bec5930327c1d8c5 F test/whereC.test 13ff5ec0dba407c0e0c075980c75b3275a6774e5 -F test/whereD.test 304ccbe3c77e0d0764f37c91d43b8c4792a5e02f +F test/whereD.test 11945e79899a97958d87d1e5ac6ae5abd827356b F test/wherelimit.test 5e9fd41e79bb2b2d588ed999d641d9c965619b31 F test/win32lock.test b2a539e85ae6b2d78475e016a9636b4451dc7fb9 F test/zeroblob.test caaecfb4f908f7bc086ed238668049f96774d688 @@ -1014,7 +1014,7 @@ F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4 F tool/warnings.sh fbc018d67fd7395f440c28f33ef0f94420226381 F tool/win/sqlite.vsix 67d8a99aceb56384a81b3f30d6c71743146d2cc9 -P 9bf64b6612c243ea66d04f502dc23f875ad45cd8 -R 073a340cb8e4b5d7bc2abb2bb9cb8ced +P 972dbd5fccaa0dbde0a7ad904da74e31888e5062 +R a82bf185a73888ab1f23d02429bade9e U drh -Z 32430ae0fe21d7aa54caae8c8fa4f7de +Z 9ae1686498486fc9c672c468947102ba diff --git a/manifest.uuid b/manifest.uuid index 27cd4e8e4f..75f40f8c53 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -972dbd5fccaa0dbde0a7ad904da74e31888e5062 \ No newline at end of file +81fd941da62956e32d1c4ffcdb39abecba7a6f3b \ No newline at end of file diff --git a/src/where.c b/src/where.c index 9bbbd43d10..216a47fbe3 100644 --- a/src/where.c +++ b/src/where.c @@ -4447,7 +4447,7 @@ static Bitmask codeOneLoopStart( } } pLevel->u.pCovidx = pCov; - pLevel->iIdxCur = iCovCur; + if( pCov ) pLevel->iIdxCur = iCovCur; if( pAndExpr ){ pAndExpr->pLeft = 0; sqlite3ExprDelete(pParse->db, pAndExpr); diff --git a/test/whereD.test b/test/whereD.test index 9942890180..58fe93462a 100644 --- a/test/whereD.test +++ b/test/whereD.test @@ -161,4 +161,29 @@ do_searchcount_test 3.5.2 { SELECT a, c FROM t3 WHERE (a=1 AND b='one') OR rowid=4 } {1 i 2 ii search 2} +# Ticket [d02e1406a58ea02d] (2012-10-04) +# LEFT JOIN with an OR in the ON clause causes segfault +# +do_test 4.1 { + db eval { + CREATE TABLE t41(a,b,c); + INSERT INTO t41 VALUES(1,2,3), (4,5,6); + CREATE TABLE t42(d,e,f); + INSERT INTO t42 VALUES(3,6,9), (4,8,12); + SELECT * FROM t41 AS x LEFT JOIN t42 AS y ON (y.d=x.c) OR (y.e=x.b); + } +} {1 2 3 3 6 9 4 5 6 {} {} {}} +do_test 4.2 { + db eval { + CREATE INDEX t42d ON t42(d); + CREATE INDEX t42e ON t42(e); + SELECT * FROM t41 AS x LEFT JOIN t42 AS y ON (y.d=x.c) OR (y.e=x.b); + } +} {1 2 3 3 6 9 4 5 6 {} {} {}} +do_test 4.2 { + db eval { + SELECT * FROM t41 AS x LEFT JOIN t42 AS y ON (y.d=x.c) OR (y.d=x.b); + } +} {1 2 3 3 6 9 4 5 6 {} {} {}} + finish_test