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

Method parseSystemCtrlExpr

parser/parse_system.go:122–173  ·  view source on GitHub ↗
(pos Pos)

Source from the content-addressed store, hash-verified

120}
121
122func (p *Parser) parseSystemCtrlExpr(pos Pos) (*SystemCtrlExpr, error) {
123 if !p.matchKeyword(KeywordStart) && !p.matchKeyword(KeywordStop) {
124 return nil, fmt.Errorf("expected START|STOP")
125 }
126 command := strings.ToUpper(p.last().String)
127 _ = p.lexer.consumeToken()
128
129 var typ string
130 switch {
131 case p.tryConsumeKeywords(KeywordDistributed):
132 switch {
133 case p.matchKeyword(KeywordSends):
134 typ = "DISTRIBUTED SENDS"
135 case p.matchKeyword(KeywordFetches):
136 typ = "FETCHES"
137 case p.matchKeyword(KeywordMerges):
138 typ = "MERGES"
139 case p.matchKeyword(KeywordTtl):
140 typ = "TTL MERGES"
141 if err := p.expectKeyword(KeywordMerges); err != nil {
142 return nil, err
143 }
144 default:
145 return nil, fmt.Errorf("expected SENDS|FETCHES|MERGES|TTL")
146 }
147 cluster, err := p.parseTableIdentifier(p.Pos())
148 if err != nil {
149 return nil, err
150 }
151 return &SystemCtrlExpr{
152 CtrlPos: pos,
153 StatementEnd: cluster.End(),
154 Command: command,
155 Type: typ,
156 Cluster: cluster,
157 }, nil
158 case p.tryConsumeKeywords(KeywordReplicated):
159 lastToken := p.last()
160 if err := p.expectKeyword(KeywordSends); err != nil {
161 return nil, err
162 }
163 typ = "REPLICATED SENDS"
164 return &SystemCtrlExpr{
165 CtrlPos: pos,
166 StatementEnd: lastToken.End,
167 Command: command,
168 Type: typ,
169 }, nil
170 default:
171 return nil, fmt.Errorf("expected DISTRIBUTED|REPLICATED")
172 }
173}
174
175func (p *Parser) parseSystemDropExpr(pos Pos) (*SystemDropExpr, error) {
176 if err := p.expectKeyword(KeywordDrop); err != nil {

Callers 1

parseSystemStmtMethod · 0.95

Calls 8

matchKeywordMethod · 0.95
lastMethod · 0.95
tryConsumeKeywordsMethod · 0.95
expectKeywordMethod · 0.95
parseTableIdentifierMethod · 0.95
PosMethod · 0.95
consumeTokenMethod · 0.80
EndMethod · 0.65

Tested by

no test coverage detected