(pos Pos, orReplace bool)
| 1967 | } |
| 1968 | |
| 1969 | func (p *Parser) parseCreateFunction(pos Pos, orReplace bool) (*CreateFunction, error) { |
| 1970 | if err := p.expectKeyword(KeywordFunction); err != nil { |
| 1971 | return nil, err |
| 1972 | } |
| 1973 | ifNotExists, err := p.tryParseIfNotExists() |
| 1974 | if err != nil { |
| 1975 | return nil, err |
| 1976 | } |
| 1977 | functionName, err := p.parseIdent() |
| 1978 | if err != nil { |
| 1979 | return nil, err |
| 1980 | } |
| 1981 | onCluster, err := p.tryParseClusterClause(p.Pos()) |
| 1982 | if err != nil { |
| 1983 | return nil, err |
| 1984 | } |
| 1985 | if err := p.expectKeyword(KeywordAs); err != nil { |
| 1986 | return nil, err |
| 1987 | } |
| 1988 | params, err := p.parseFunctionParams(p.Pos()) |
| 1989 | if err != nil { |
| 1990 | return nil, err |
| 1991 | } |
| 1992 | if err := p.expectTokenKind(TokenKindArrow); err != nil { |
| 1993 | return nil, err |
| 1994 | } |
| 1995 | expr, err := p.parseExpr(p.Pos()) |
| 1996 | if err != nil { |
| 1997 | return nil, err |
| 1998 | } |
| 1999 | return &CreateFunction{ |
| 2000 | CreatePos: pos, |
| 2001 | OrReplace: orReplace, |
| 2002 | IfNotExists: ifNotExists, |
| 2003 | FunctionName: functionName, |
| 2004 | OnCluster: onCluster, |
| 2005 | Params: params, |
| 2006 | Expr: expr, |
| 2007 | }, nil |
| 2008 | } |
| 2009 | |
| 2010 | // Dictionary parsing functions |
| 2011 |
no test coverage detected