aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authordrh <drh@noemail.net>2014-02-11 01:50:29 +0000
committerdrh <drh@noemail.net>2014-02-11 01:50:29 +0000
commit7c3280649a11b1ea0cce16fdd91a602aa3ec6c9b (patch)
tree17753a19f3b20b75c075ebebb8fb4e4e639122f5 /src
parenta6e3a8c9d50f149d586f86b19f7edd20a589aa69 (diff)
downloadsqlite-7c3280649a11b1ea0cce16fdd91a602aa3ec6c9b.tar.gz
sqlite-7c3280649a11b1ea0cce16fdd91a602aa3ec6c9b.zip
Make sure that virtual WHERE-clause terms do not get transformed into real
terms when processing set of OR-connected terms. Fix for ticket [4c86b126f22ad]. FossilOrigin-Name: c950d6c4117d076f871518e738cdf9e8c46a19fc
Diffstat (limited to 'src')
-rw-r--r--src/where.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/where.c b/src/where.c
index 91b9e0c53..d0d95c081 100644
--- a/src/where.c
+++ b/src/where.c
@@ -3315,7 +3315,9 @@ static Bitmask codeOneLoopStart(
Expr *pExpr = pWC->a[iTerm].pExpr;
if( &pWC->a[iTerm] == pTerm ) continue;
if( ExprHasProperty(pExpr, EP_FromJoin) ) continue;
- if( pWC->a[iTerm].wtFlags & (TERM_ORINFO) ) continue;
+ testcase( pWC->a[iTerm].wtFlags & TERM_ORINFO );
+ testcase( pWC->a[iTerm].wtFlags & TERM_VIRTUAL );
+ if( pWC->a[iTerm].wtFlags & (TERM_ORINFO|TERM_VIRTUAL) ) continue;
if( (pWC->a[iTerm].eOperator & WO_ALL)==0 ) continue;
pExpr = sqlite3ExprDup(db, pExpr, 0);
pAndExpr = sqlite3ExprAnd(db, pAndExpr, pExpr);