]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Do not use transitive WHERE-clause constraints on LEFT JOINs.
authordrh <drh@noemail.net>
Mon, 28 Oct 2013 20:15:56 +0000 (20:15 +0000)
committerdrh <drh@noemail.net>
Mon, 28 Oct 2013 20:15:56 +0000 (20:15 +0000)
Fix for ticket [c620261b5b5dc].

FossilOrigin-Name: 9aac4e588cbce55c1098321bcd042d5b04036893

manifest
manifest.uuid
src/where.c

index fa0bef57010c7ee79f8a9e2489f142064856b06f..ea3ef5cc9be4e0d166351f98c06aff5432f666d3 100644 (file)
--- 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
index f71188cc81ff0818510d8528a714e5b8566d49d6..27c8a2d7a9597e6d118a75db544291ea7bfb47fe 100644 (file)
@@ -1 +1 @@
-92ccd705411ce3f64720ab5f34c7efc9cb46d5c9
\ No newline at end of file
+9aac4e588cbce55c1098321bcd042d5b04036893
\ No newline at end of file
index 266dc92f17e98ba85ef8cfa54fe35f785926f784..4868a7a0b0952ec98ea9d125af04e37e82cd8eaa 100644 (file)
@@ -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; k<pWC->nTerm; 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->nEquiv<ArraySize(pScan->aEquiv)
           ){