diff options
author | drh <drh@noemail.net> | 2012-03-28 02:43:20 +0000 |
---|---|---|
committer | drh <drh@noemail.net> | 2012-03-28 02:43:20 +0000 |
commit | 31ec740a3dfc1190ed972fba8cb99e4de7db0254 (patch) | |
tree | 8b216ecc93fd26d50be0158664aa417ae2c490f9 /src/expr.c | |
parent | a748fdcc43a2f4a5f59acb6c30742d958b2dcac2 (diff) | |
download | sqlite-31ec740a3dfc1190ed972fba8cb99e4de7db0254.tar.gz sqlite-31ec740a3dfc1190ed972fba8cb99e4de7db0254.zip |
Fix the typeof() and length() optimization so that it works for aggregates
as well as scalar queries.
FossilOrigin-Name: bc18215a8a660442db6ddeeda4a88df0acffe0f7
Diffstat (limited to 'src/expr.c')
-rw-r--r-- | src/expr.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/expr.c b/src/expr.c index b76a8afe1..191545474 100644 --- a/src/expr.c +++ b/src/expr.c @@ -2599,9 +2599,11 @@ int sqlite3ExprCodeTarget(Parse *pParse, Expr *pExpr, int target){ ** loading. */ if( (pDef->flags & (SQLITE_FUNC_LENGTH|SQLITE_FUNC_TYPEOF))!=0 ){ + u8 op; assert( nFarg==1 ); assert( pFarg->a[0].pExpr!=0 ); - if( pFarg->a[0].pExpr->op==TK_COLUMN ){ + op = pFarg->a[0].pExpr->op; + if( op==TK_COLUMN || op==TK_AGG_COLUMN ){ assert( SQLITE_FUNC_LENGTH==OPFLAG_LENGTHARG ); assert( SQLITE_FUNC_TYPEOF==OPFLAG_TYPEOFARG ); testcase( pDef->flags==SQLITE_FUNC_LENGTH ); |