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

Method parseInterval

parser/parser_column.go:593–618  ·  view source on GitHub ↗
(requireKeyword bool)

Source from the content-addressed store, hash-verified

591}
592
593func (p *Parser) parseInterval(requireKeyword bool) (*IntervalExpr, error) {
594 var intervalPos Pos
595 if requireKeyword {
596 intervalPos = p.Pos()
597 if err := p.expectKeyword(KeywordInterval); err != nil {
598 return nil, err
599 }
600 }
601 expr, err := p.parseExpr(p.Pos())
602 if err != nil {
603 return nil, err
604 }
605
606 unit, err := p.parseIdent()
607 if err != nil {
608 return nil, err
609 }
610 if !intervalUnits.Contains(strings.ToUpper(unit.Name)) {
611 return nil, fmt.Errorf("unknown interval type: <%q>", unit.Name)
612 }
613 return &IntervalExpr{
614 IntervalPos: intervalPos,
615 Expr: expr,
616 Unit: unit,
617 }, nil
618}
619
620func (p *Parser) parseFunctionExpr(_ Pos) (*FunctionExpr, error) {
621 // parse function name

Callers 4

parseColumnExprMethod · 0.95
tryParseRefreshExprMethod · 0.95
parseFrameIntervalMethod · 0.95

Calls 5

PosMethod · 0.95
expectKeywordMethod · 0.95
parseExprMethod · 0.95
parseIdentMethod · 0.95
ContainsMethod · 0.80

Tested by

no test coverage detected