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

Method parseWindowCondition

parser/parser_query.go:823–859  ·  view source on GitHub ↗
(pos Pos)

Source from the content-addressed store, hash-verified

821}
822
823func (p *Parser) parseWindowCondition(pos Pos) (*WindowExpr, error) {
824 if err := p.expectTokenKind(TokenKindLParen); err != nil {
825 return nil, err
826 }
827 var windowName *Ident
828 if p.canParseWindowNameInParens() {
829 var err error
830 windowName, err = p.parseIdent()
831 if err != nil {
832 return nil, err
833 }
834 }
835 partitionBy, err := p.tryParsePartitionByClause(pos)
836 if err != nil {
837 return nil, err
838 }
839 orderBy, err := p.tryParseOrderByClause(p.Pos())
840 if err != nil {
841 return nil, err
842 }
843 frame, err := p.tryParseWindowFrameClause(p.Pos())
844 if err != nil {
845 return nil, err
846 }
847 rightParenPos := p.Pos()
848 if err := p.expectTokenKind(TokenKindRParen); err != nil {
849 return nil, err
850 }
851 return &WindowExpr{
852 LeftParenPos: pos,
853 RightParenPos: rightParenPos,
854 WindowName: windowName,
855 PartitionBy: partitionBy,
856 OrderBy: orderBy,
857 Frame: frame,
858 }, nil
859}
860
861func (p *Parser) canParseWindowNameInParens() bool {
862 if !p.matchTokenKind(TokenKindIdent) {

Callers 2

parseWindowClauseMethod · 0.95
parseIdentOrFunctionMethod · 0.95

Calls 7

expectTokenKindMethod · 0.95
parseIdentMethod · 0.95
tryParseOrderByClauseMethod · 0.95
PosMethod · 0.95

Tested by

no test coverage detected