MCPcopy Create free account
hub / github.com/AfterShip/clickhouse-sql-parser / parseFunctionParams

Method parseFunctionParams

parser/parser_column.go:666–695  ·  view source on GitHub ↗
(pos Pos)

Source from the content-addressed store, hash-verified

664}
665
666func (p *Parser) parseFunctionParams(pos Pos) (*ParamExprList, error) {
667 if err := p.expectTokenKind(TokenKindLParen); err != nil {
668 return nil, err
669 }
670 params, err := p.parseColumnExprListWithLParen(p.Pos())
671 if err != nil {
672 return nil, err
673 }
674 rightParenPos := p.Pos()
675 if err := p.expectTokenKind(TokenKindRParen); err != nil {
676 return nil, err
677 }
678 paramExprList := &ParamExprList{
679 LeftParenPos: pos,
680 RightParenPos: rightParenPos,
681 Items: params,
682 }
683
684 // For some aggregate functions might support parametric arguments:
685 // e.g. QUANTILE(0.5)(x) or QUANTILE(0.5, 0.9)(x).
686 // So we need to have a check if there is another argument list with detecting the left bracket.
687 if p.matchTokenKind(TokenKindLParen) {
688 columnArgList, err := p.parseColumnArgList(p.Pos())
689 if err != nil {
690 return nil, err
691 }
692 paramExprList.ColumnArgList = columnArgList
693 }
694 return paramExprList, nil
695}
696
697func (p *Parser) parseMapLiteral(pos Pos) (*MapLiteral, error) {
698 if err := p.expectTokenKind(TokenKindLBrace); err != nil {

Callers 7

parseColumnExprMethod · 0.95
parseFunctionExprMethod · 0.95
parseGroupByClauseMethod · 0.95
parseIdentOrFunctionMethod · 0.95
parseEngineExprMethod · 0.95
parseCreateFunctionMethod · 0.95

Calls 5

expectTokenKindMethod · 0.95
PosMethod · 0.95
matchTokenKindMethod · 0.95
parseColumnArgListMethod · 0.95

Tested by

no test coverage detected