diff options
author | drh <drh@noemail.net> | 2012-12-07 14:02:14 +0000 |
---|---|---|
committer | drh <drh@noemail.net> | 2012-12-07 14:02:14 +0000 |
commit | 4b17cf58559a0759942aa7d984ed1a27b03a76e2 (patch) | |
tree | bd6f5aac52ce268c3722eaf22691562f9de8b534 /src/expr.c | |
parent | ae80ddea9f4cf8505b5a27aeec3fa8b959218064 (diff) | |
download | sqlite-4b17cf58559a0759942aa7d984ed1a27b03a76e2.tar.gz sqlite-4b17cf58559a0759942aa7d984ed1a27b03a76e2.zip |
Veryquick now row to completion without segfaulting or asserting. But there
are still lots of errors.
FossilOrigin-Name: 7fafab12e4c0c832c421975f8329c3214403d281
Diffstat (limited to 'src/expr.c')
-rw-r--r-- | src/expr.c | 13 |
1 files changed, 3 insertions, 10 deletions
diff --git a/src/expr.c b/src/expr.c index 11feaa216..34be87114 100644 --- a/src/expr.c +++ b/src/expr.c @@ -106,7 +106,7 @@ CollSeq *sqlite3ExprCollSeq(Parse *pParse, Expr *pExpr){ break; } if( p->flags & EP_Collate ){ - if( p->pLeft->flags & EP_Collate ){ + if( p->pLeft && (p->pLeft->flags & EP_Collate)!=0 ){ p = p->pLeft; }else{ p = p->pRight; @@ -114,14 +114,6 @@ CollSeq *sqlite3ExprCollSeq(Parse *pParse, Expr *pExpr){ }else{ break; } -#if 0 - else if( p->flags & EP_TokenOnly ){ - break; - }else{ - pColl = sqlite3ExprCollSeq(pParse, p->pLeft); - p = p->pRight; - } -#endif } if( sqlite3CheckCollSeq(pParse, pColl) ){ pColl = 0; @@ -3355,7 +3347,7 @@ static int evalConstExpr(Walker *pWalker, Expr *pExpr){ int r1 = ++pParse->nMem; int r2; r2 = sqlite3ExprCodeTarget(pParse, pExpr, r1); - if( NEVER(r1!=r2) ) sqlite3ReleaseTempReg(pParse, r1); + if( r1!=r2 ) sqlite3ReleaseTempReg(pParse, r1); pExpr->op2 = pExpr->op; pExpr->op = TK_REGISTER; pExpr->iTable = r2; @@ -3795,6 +3787,7 @@ int sqlite3ExprCompare(Expr *pA, Expr *pB){ return pA->op==TK_COLLATE ? 1 : 2; } } + if( (pA->flags&EP_Collate)!=(pB->flags&EP_Collate) ) return 1; return 0; } |