From e1a086e412e5db5dc333937811edde999ae12186 Mon Sep 17 00:00:00 2001 From: drh Date: Mon, 28 Oct 2013 20:15:56 +0000 Subject: [PATCH] Do not use transitive WHERE-clause constraints on LEFT JOINs. Fix for ticket [c620261b5b5dc]. FossilOrigin-Name: 9aac4e588cbce55c1098321bcd042d5b04036893 --- manifest | 12 ++++++------ manifest.uuid | 2 +- src/where.c | 5 ++++- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/manifest b/manifest index fa0bef5701..ea3ef5cc9b 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C More\swheretrace\sdebugging\ssupport:\s\sShow\sa\slisting\sof\sall\sWHERE\sclause\nterms\s(on\swheretrace\sbit\s0x100)\sand\sinclude\simportant\sflags\ssuch\sas\nTERM_VIRTUAL,\sWO_EQUIV,\sand\sEP_FromJoin. -D 2013-10-28T19:59:59.733 +C Do\snot\suse\stransitive\sWHERE-clause\sconstraints\son\sLEFT\sJOINs.\nFix\sfor\sticket\s[c620261b5b5dc]. +D 2013-10-28T20:15:56.749 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f F Makefile.in 0522b53cdc1fcfc18f3a98e0246add129136c654 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23 @@ -292,7 +292,7 @@ F src/vtab.c 5a423b042eb1402ef77697d03d6a67378d97bc8d F src/wal.c 7dc3966ef98b74422267e7e6e46e07ff6c6eb1b4 F src/wal.h df01efe09c5cb8c8e391ff1715cca294f89668a4 F src/walker.c e9e593d5bb798c3e67fc3893dfe7055c9e7d8d74 -F src/where.c 0490bd61f1327802e9d892a366b024dd7e39bb60 +F src/where.c 626e04bea7b0c62d8053f816e84da4ffe265599f F test/8_3_names.test ebbb5cd36741350040fd28b432ceadf495be25b2 F test/aggerror.test a867e273ef9e3d7919f03ef4f0e8c0d2767944f2 F test/aggnested.test 45c0201e28045ad38a530b5a144b73cd4aa2cfd6 @@ -1126,7 +1126,7 @@ F tool/vdbe-compress.tcl f12c884766bd14277f4fcedcae07078011717381 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4 F tool/warnings.sh d1a6de74685f360ab718efda6265994b99bbea01 F tool/win/sqlite.vsix 030f3eeaf2cb811a3692ab9c14d021a75ce41fff -P 10f125f5da55eca15e68c74d62ab7d37bbbbfb5f -R 94f7d01ea5e366fe4a18fa71bac07ffd +P 92ccd705411ce3f64720ab5f34c7efc9cb46d5c9 +R ef5741143665f2356ac8fbd9321919ca U drh -Z b420ce79c50b8599b09c4667291607ef +Z da3bdf30486b346ec4f687162cb9e5fe diff --git a/manifest.uuid b/manifest.uuid index f71188cc81..27c8a2d7a9 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -92ccd705411ce3f64720ab5f34c7efc9cb46d5c9 \ No newline at end of file +9aac4e588cbce55c1098321bcd042d5b04036893 \ No newline at end of file diff --git a/src/where.c b/src/where.c index 266dc92f17..4868a7a0b0 100644 --- a/src/where.c +++ b/src/where.c @@ -878,7 +878,10 @@ static WhereTerm *whereScanNext(WhereScan *pScan){ iColumn = pScan->aEquiv[pScan->iEquiv-1]; while( (pWC = pScan->pWC)!=0 ){ for(pTerm=pWC->a+k; knTerm; k++, pTerm++){ - if( pTerm->leftCursor==iCur && pTerm->u.leftColumn==iColumn ){ + if( pTerm->leftCursor==iCur + && pTerm->u.leftColumn==iColumn + && (pScan->iEquiv<=2 || !ExprHasProperty(pTerm->pExpr, EP_FromJoin)) + ){ if( (pTerm->eOperator & WO_EQUIV)!=0 && pScan->nEquivaEquiv) ){ -- 2.47.2