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

Method parseSelectStmt

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

Source from the content-addressed store, hash-verified

1018}
1019
1020func (p *Parser) parseSelectStmt(pos Pos) (*SelectQuery, error) { // nolint: funlen
1021 withClause, err := p.tryParseWithClause(pos)
1022 if err != nil {
1023 return nil, err
1024 }
1025 if err := p.expectKeyword(KeywordSelect); err != nil {
1026 return nil, err
1027 }
1028 // DISTINCT?
1029 hasDistinct := p.tryConsumeKeywords(KeywordDistinct)
1030 distinctOn, err := p.tryParseDistinctOn(p.Pos())
1031 if err != nil {
1032 return nil, err
1033 }
1034
1035 top, err := p.tryParseTopClause(p.Pos())
1036 if err != nil {
1037 return nil, err
1038 }
1039 selectItems, err := p.parseSelectItems()
1040 if err != nil {
1041 return nil, err
1042 }
1043
1044 statementEnd := pos
1045 if len(selectItems) > 0 {
1046 statementEnd = selectItems[len(selectItems)-1].End()
1047 }
1048 from, err := p.tryParseFromClause(p.Pos())
1049 if err != nil {
1050 return nil, err
1051 }
1052
1053 if from != nil {
1054 statementEnd = from.End()
1055 }
1056 prewhere, err := p.tryParsePrewhereClause(p.Pos())
1057 if err != nil {
1058 return nil, err
1059 }
1060 if prewhere != nil {
1061 statementEnd = prewhere.End()
1062 }
1063 where, err := p.tryParseWhereClause(p.Pos())
1064 if err != nil {
1065 return nil, err
1066 }
1067 if where != nil {
1068 statementEnd = where.End()
1069 }
1070 groupBy, err := p.tryParseGroupByClause(p.Pos())
1071 if err != nil {
1072 return nil, err
1073 }
1074 if groupBy != nil {
1075 statementEnd = groupBy.End()
1076 }
1077 withTotal := false

Callers 1

parseSelectQueryMethod · 0.95

Calls 15

tryParseWithClauseMethod · 0.95
expectKeywordMethod · 0.95
tryConsumeKeywordsMethod · 0.95
tryParseDistinctOnMethod · 0.95
PosMethod · 0.95
tryParseTopClauseMethod · 0.95
parseSelectItemsMethod · 0.95
tryParseFromClauseMethod · 0.95
tryParseWhereClauseMethod · 0.95
tryParseGroupByClauseMethod · 0.95
tryParseHavingClauseMethod · 0.95

Tested by

no test coverage detected