aboutsummaryrefslogtreecommitdiff
path: root/src/expr.c
diff options
context:
space:
mode:
authordrh <drh@noemail.net>2012-12-07 14:02:14 +0000
committerdrh <drh@noemail.net>2012-12-07 14:02:14 +0000
commit4b17cf58559a0759942aa7d984ed1a27b03a76e2 (patch)
treebd6f5aac52ce268c3722eaf22691562f9de8b534 /src/expr.c
parentae80ddea9f4cf8505b5a27aeec3fa8b959218064 (diff)
downloadsqlite-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.c13
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;
}