1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-11-11 01:42:22 +03:00

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
This commit is contained in:
drh
2014-02-11 01:50:29 +00:00
parent a6e3a8c9d5
commit 7c3280649a
5 changed files with 63 additions and 11 deletions

View File

@@ -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);