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

Method parseSelectItem

parser/parser_column.go:800–840  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

798}
799
800func (p *Parser) parseSelectItem() (*SelectItem, error) {
801 expr, err := p.parseExpr(p.Pos())
802 if err != nil {
803 return nil, err
804 }
805
806 modifiers := make([]*FunctionExpr, 0)
807 for {
808 if p.matchKeyword(KeywordExcept) || p.matchKeyword(KeywordApply) || p.matchKeyword(KeywordReplace) {
809 modifier, err := p.parseFunctionExpr(p.Pos())
810 if err != nil {
811 return nil, err
812 }
813 modifiers = append(modifiers, modifier)
814 } else {
815 break
816 }
817 }
818
819 var alias *Ident
820 switch {
821 case p.tryConsumeKeywords(KeywordAs):
822 alias, err = p.parseIdent()
823 if err != nil {
824 return nil, err
825 }
826 case p.lastTokenKind() == TokenKindKeyword && !p.isSelectItemTerminatorKeyword():
827 alias, err = p.parseIdent()
828 if err != nil {
829 return nil, err
830 }
831 default:
832 alias = p.tryParseIdent()
833 }
834
835 return &SelectItem{
836 Expr: expr,
837 Modifiers: modifiers,
838 Alias: alias,
839 }, nil
840}
841
842func (p *Parser) parseColumnCaseExpr(pos Pos) (*CaseExpr, error) {
843 // CASE expr

Callers 1

parseSelectItemsMethod · 0.95

Calls 9

parseExprMethod · 0.95
PosMethod · 0.95
matchKeywordMethod · 0.95
parseFunctionExprMethod · 0.95
tryConsumeKeywordsMethod · 0.95
parseIdentMethod · 0.95
lastTokenKindMethod · 0.95
tryParseIdentMethod · 0.95

Tested by

no test coverage detected