Recognize TK_COLLATE operators that have been transformed into TK_REGISTER.
Skip both TK_COLLATE and TK_AS operators when looking for the top of an
expression.
FossilOrigin-Name: f66c1db2965054f38125218202b6a6ec62d57666
diff --git a/src/expr.c b/src/expr.c
index 0e4a3cb..abba7d4 100644
--- a/src/expr.c
+++ b/src/expr.c
@@ -85,10 +85,13 @@
}
/*
-** Skip over any TK_COLLATE operator in an expression.
+** Skip over any TK_COLLATE and/or TK_AS operators at the root of
+** an expression.
*/
Expr *sqlite3ExprSkipCollate(Expr *pExpr){
- if( pExpr && pExpr->op==TK_COLLATE ) pExpr = pExpr->pLeft;
+ while( pExpr && (pExpr->op==TK_COLLATE || pExpr->op==TK_AS) ){
+ pExpr = pExpr->pLeft;
+ }
return pExpr;
}
@@ -111,7 +114,7 @@
p = p->pLeft;
continue;
}
- if( op==TK_COLLATE ){
+ if( op==TK_COLLATE || (op==TK_REGISTER && p->op2==TK_COLLATE) ){
if( db->init.busy ){
/* Do not report errors when parsing while the schema */
pColl = sqlite3FindCollSeq(db, ENC(db), p->u.zToken, 0);