-C Some\serrors\sin\sveryquick\sresolved.\s\sMany\smore\sto\sgo.
-D 2012-12-07T18:38:16.876
+C Many\smore\stests\sare\spassing.\s\sOnly\sabout\s100\sfailures\sremain\sin\sveryquick.
+D 2012-12-07T20:31:11.446
F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
F Makefile.in 690d441a758cbffd13e814dc2724a721a6ebd400
F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
F src/ctime.c 72a70dcfda75d3a1f81041ce4573e7afddcd8e4e
F src/date.c 067a81c9942c497aafd2c260e13add8a7d0c7dd4
F src/delete.c 9b8d308979114991e5dc7cee958316e07186941d
-F src/expr.c 92d9ab5a1e1a03a1249b53ada65e48ea16baea5a
+F src/expr.c 9102d69c2d06fb34616d14de943bd8f342585c47
F src/fault.c 160a0c015b6c2629d3899ed2daf63d75754a32bb
F src/fkey.c ddf44f8ce43b91623e8687fd940c6bf3882d9480
F src/func.c 8147799b048065a1590805be464d05b4913e652c
F src/wal.c f5c7b5027d0ed0e9bc9afeb4a3a8dfea762ec7d2
F src/wal.h 29c197540b19044e6cd73487017e5e47a1d3dac6
F src/walker.c 3d75ba73de15e0f8cd0737643badbeb0e002f07b
-F src/where.c 5ad63b25b3c72283fd1aec537b67b2626184e8cb
+F src/where.c bc400d459180065768bdb7ad8477dd6cbab754fa
F test/8_3_names.test 631ea964a3edb091cf73c3b540f6bcfdb36ce823
F test/aggerror.test a867e273ef9e3d7919f03ef4f0e8c0d2767944f2
F test/aggnested.test 45c0201e28045ad38a530b5a144b73cd4aa2cfd6
F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
F tool/warnings.sh fbc018d67fd7395f440c28f33ef0f94420226381
F tool/win/sqlite.vsix 97894c2790eda7b5bce3cc79cb2a8ec2fde9b3ac
-P 7fafab12e4c0c832c421975f8329c3214403d281
-R 88f21ae985a55e8530e6b5e5f447d601
+P 972443b4eb282d45507da06c75e2cd46dd72326b
+R addb1e849abbd533b321eb7c1f86638b
U drh
-Z 7b8fedbb4bb4153ec5825d6ca9d67e65
+Z f47e0ce4e032364f0db26315f2eb73bb
-972443b4eb282d45507da06c75e2cd46dd72326b
\ No newline at end of file
+f9fa7581c0371fe0feb4e97487741ade18595810
\ No newline at end of file
continue;
}
if( op==TK_COLLATE ){
- pColl = sqlite3FindCollSeq(db, ENC(db), p->u.zToken, 0);
+ pColl = sqlite3GetCollSeq(pParse, ENC(db), 0, p->u.zToken);
break;
}
if( p->pTab!=0
case TK_ISNULL: zUniOp = "ISNULL"; break;
case TK_NOTNULL: zUniOp = "NOTNULL"; break;
+ case TK_COLLATE: {
+ sqlite3ExplainExpr(pOut, pExpr->pLeft);
+ sqlite3ExplainPrintf(pOut,".COLLATE(%s)",pExpr->u.zToken);
+ break;
+ }
+
case TK_AGG_FUNCTION:
case TK_CONST_FUNC:
case TK_FUNCTION: {
}
pTerm = &pWC->a[idxTerm];
pMaskSet = pWC->pMaskSet;
- pExpr = pTerm->pExpr;
+ pExpr = sqlite3ExprSkipCollate(pTerm->pExpr);
prereqLeft = exprTableUsage(pMaskSet, pExpr->pLeft);
op = pExpr->op;
if( op==TK_IN ){
pTerm->iParent = -1;
pTerm->eOperator = 0;
if( allowedOp(op) && (pTerm->prereqRight & prereqLeft)==0 ){
- Expr *pLeft = pExpr->pLeft;
- Expr *pRight = pExpr->pRight;
+ Expr *pLeft = sqlite3ExprSkipCollate(pExpr->pLeft);
+ Expr *pRight = sqlite3ExprSkipCollate(pExpr->pRight);
if( pLeft->op==TK_COLUMN ){
pTerm->leftCursor = pLeft->iTable;
pTerm->u.leftColumn = pLeft->iColumn;
/* If the next term of the ORDER BY clause refers to anything other than
** a column in the "base" table, then this index will not be of any
** further use in handling the ORDER BY. */
- pOBExpr = pOBItem->pExpr;
+ pOBExpr = sqlite3ExprSkipCollate(pOBItem->pExpr);
if( pOBExpr->op!=TK_COLUMN || pOBExpr->iTable!=base ){
break;
}
** clause entry. Set isMatch to 1 if they both match. */
if( pOBExpr->iColumn==iColumn ){
if( zColl ){
- pColl = sqlite3ExprCollSeq(pParse, pOBExpr);
+ pColl = sqlite3ExprCollSeq(pParse, pOBItem->pExpr);
if( !pColl ) pColl = db->pDfltColl;
isMatch = sqlite3StrICmp(pColl->zName, zColl)==0;
}else{