private FunctionExpression OrdinaryFunction(string id, string idUpper)
{
idUpper = IdentifierExpr.UnescapeName(idUpper);
Match(MySqlToken.PuncLeftParen);
FunctionExpression funcExpr;
if (lexer.Token() == MySqlToken.PuncRightParen)
{
lexer.NextToken();
funcExpr = functionManager.CreateFunctionExpression(idUpper, null);
}
else
{
var args = ExpressionList(new List<IExpression>());
funcExpr = functionManager.CreateFunctionExpression(idUpper, args);
}
if (funcExpr == null)
{
throw new SqlSyntaxErrorException(id + "() is not a function");
}
funcExpr.SetCacheEvalRst(cacheEvalRst);
return funcExpr;
}