(expr Expr)
| 599 | } |
| 600 | |
| 601 | func (p *Parser) parseBetweenClause(expr Expr) (*BetweenClause, error) { |
| 602 | if err := p.expectKeyword(KeywordBetween); err != nil { |
| 603 | return nil, err |
| 604 | } |
| 605 | |
| 606 | betweenExpr, err := p.parseSubExpr(p.Pos(), PrecedenceBetweenLike) |
| 607 | if err != nil { |
| 608 | return nil, err |
| 609 | } |
| 610 | |
| 611 | andPos := p.Pos() |
| 612 | if err := p.expectKeyword(KeywordAnd); err != nil { |
| 613 | return nil, err |
| 614 | } |
| 615 | |
| 616 | andExpr, err := p.parseSubExpr(p.Pos(), PrecedenceBetweenLike) |
| 617 | if err != nil { |
| 618 | return nil, err |
| 619 | } |
| 620 | |
| 621 | return &BetweenClause{ |
| 622 | Expr: expr, |
| 623 | Between: betweenExpr, |
| 624 | AndPos: andPos, |
| 625 | And: andExpr, |
| 626 | }, nil |
| 627 | } |
| 628 | |
| 629 | func (p *Parser) parseLimitByClause(pos Pos) (Expr, error) { |
| 630 | limit, err := p.parseLimitClause(pos) |
no test coverage detected