diff options
author | dan <dan@noemail.net> | 2016-08-02 17:45:00 +0000 |
---|---|---|
committer | dan <dan@noemail.net> | 2016-08-02 17:45:00 +0000 |
commit | f9b2e05c75e55ca795caa825bfcba1c0760ea35f (patch) | |
tree | af04e7fbee05617f78c086013fcd27d1f253e7ad /src/wherecode.c | |
parent | d05a7144cd7bcdbe5f5274198198e5120e846703 (diff) | |
download | sqlite-f9b2e05c75e55ca795caa825bfcba1c0760ea35f.tar.gz sqlite-f9b2e05c75e55ca795caa825bfcba1c0760ea35f.zip |
Fix SQLITE_OMIT_SUBQUERY builds.
FossilOrigin-Name: 339f85f414a484e44d2502d1ff7281caf9b7c838
Diffstat (limited to 'src/wherecode.c')
-rw-r--r-- | src/wherecode.c | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/src/wherecode.c b/src/wherecode.c index 11e9bbda3..9aafa8366 100644 --- a/src/wherecode.c +++ b/src/wherecode.c @@ -360,6 +360,7 @@ static int codeEqualityTerm( assert( iTarget>0 ); if( pX->op==TK_EQ || pX->op==TK_IS ){ Expr *pRight = pX->pRight; +#ifndef SQLITE_OMIT_SUBQUERY if( pRight->op==TK_SELECT_COLUMN ){ /* This case occurs for expressions like "(a, b) == (SELECT ...)". */ WhereLoop *pLoop = pLevel->pWLoop; @@ -381,7 +382,9 @@ static int codeEqualityTerm( } } iReg = iTarget; - }else{ + }else +#endif + { iReg = sqlite3ExprCodeTarget(pParse, pRight, iTarget); } }else if( pX->op==TK_ISNULL ){ @@ -962,17 +965,20 @@ static void codeDeferredSeek( static void codeExprOrVector(Parse *pParse, Expr *p, int iReg, int nReg){ assert( nReg>0 ); if( sqlite3ExprIsVector(p) ){ - int i; - if( (p->flags & EP_xIsSelect)==0 ){ +#ifndef SQLITE_OMIT_SUBQUERY + if( (p->flags & EP_xIsSelect) ){ + Vdbe *v = pParse->pVdbe; + int iSelect = sqlite3CodeSubselect(pParse, p, 0, 0); + sqlite3VdbeAddOp3(v, OP_Copy, iSelect, iReg, nReg-1); + }else +#endif + { + int i; ExprList *pList = p->x.pList; assert( nReg<=pList->nExpr ); for(i=0; i<nReg; i++){ sqlite3ExprCode(pParse, pList->a[i].pExpr, iReg+i); } - }else{ - Vdbe *v = pParse->pVdbe; - int iSelect = sqlite3CodeSubselect(pParse, p, 0, 0); - sqlite3VdbeAddOp3(v, OP_Copy, iSelect, iReg, nReg-1); } }else{ assert( nReg==1 ); |