aboutsummaryrefslogtreecommitdiff
path: root/src/expr.c
diff options
context:
space:
mode:
authordrh <drh@noemail.net>2013-11-21 20:48:42 +0000
committerdrh <drh@noemail.net>2013-11-21 20:48:42 +0000
commitd9f158e7b274e1d58661821868412a5c5ee7b53e (patch)
treed23c824fd75a1aa982f1f558b2da86a73171824c /src/expr.c
parentd2b637c2af8b322592cfdfe6323558403fa24246 (diff)
downloadsqlite-d9f158e7b274e1d58661821868412a5c5ee7b53e.tar.gz
sqlite-d9f158e7b274e1d58661821868412a5c5ee7b53e.zip
Fix the code generator to honor turning off constant expression factoring.
FossilOrigin-Name: 882622662dfadf49c65c7d80b7fd87533d079ce9
Diffstat (limited to 'src/expr.c')
-rw-r--r--src/expr.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/expr.c b/src/expr.c
index 9d405343e..2fb26b20f 100644
--- a/src/expr.c
+++ b/src/expr.c
@@ -2991,7 +2991,7 @@ int sqlite3ExprCodeTarget(Parse *pParse, Expr *pExpr, int target){
*/
void sqlite3ExprCodeAtInit(Parse *pParse, Expr *pExpr, int regDest){
ExprList *p;
- assert( pParse->cookieGoto>0 ); /* Only possible if cookie will be coded */
+ assert( ConstFactorOk(pParse) );
p = pParse->pConstExpr;
pExpr = sqlite3ExprDup(pParse->db, pExpr, 0);
p = sqlite3ExprListAppend(pParse, p, pExpr);
@@ -3015,7 +3015,7 @@ void sqlite3ExprCodeAtInit(Parse *pParse, Expr *pExpr, int regDest){
int sqlite3ExprCodeTemp(Parse *pParse, Expr *pExpr, int *pReg){
int r2;
pExpr = sqlite3ExprSkipCollate(pExpr);
- if( pParse->cookieGoto>0
+ if( ConstFactorOk(pParse)
&& pExpr->op!=TK_REGISTER
&& sqlite3ExprIsConstantNotJoin(pExpr)
){
@@ -3395,7 +3395,7 @@ int sqlite3ExprCodeExprList(
assert( target>0 );
assert( pParse->pVdbe!=0 ); /* Never gets this far otherwise */
n = pList->nExpr;
- if( pParse->cookieGoto<=0 ) flags &= ~SQLITE_ECEL_FACTOR;
+ if( !ConstFactorOk(pParse) ) flags &= ~SQLITE_ECEL_FACTOR;
for(pItem=pList->a, i=0; i<n; i++, pItem++){
Expr *pExpr = pItem->pExpr;
if( (flags & SQLITE_ECEL_FACTOR)!=0 && sqlite3ExprIsConstant(pExpr) ){