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

Method parseOptimizeStmt

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

Source from the content-addressed store, hash-verified

248}
249
250func (p *Parser) parseOptimizeStmt(pos Pos) (*OptimizeStmt, error) {
251 if err := p.expectKeyword(KeywordOptimize); err != nil {
252 return nil, err
253 }
254 if err := p.expectKeyword(KeywordTable); err != nil {
255 return nil, err
256 }
257
258 table, err := p.parseTableIdentifier(p.Pos())
259 if err != nil {
260 return nil, err
261 }
262 statementEnd := table.End()
263
264 onCluster, err := p.tryParseClusterClause(p.Pos())
265 if err != nil {
266 return nil, err
267 }
268 if onCluster != nil {
269 statementEnd = onCluster.End()
270 }
271
272 partition, err := p.tryParsePartitionClause(p.Pos())
273 if err != nil {
274 return nil, err
275 }
276 if partition != nil {
277 statementEnd = partition.End()
278 }
279
280 hasFinal := false
281 lastPos := p.Pos()
282 if p.tryConsumeKeywords(KeywordFinal) {
283 hasFinal = true
284 statementEnd = lastPos
285 }
286
287 deduplicate, err := p.tryParseDeduplicateClause(p.Pos())
288 if err != nil {
289 return nil, err
290 }
291 if deduplicate != nil {
292 statementEnd = deduplicate.End()
293 }
294
295 return &OptimizeStmt{
296 OptimizePos: pos,
297 StatementEnd: statementEnd,
298 Table: table,
299 OnCluster: onCluster,
300 Partition: partition,
301 HasFinal: hasFinal,
302 Deduplicate: deduplicate,
303 }, nil
304}
305
306func (p *Parser) parseSystemStmt(pos Pos) (*SystemStmt, error) {
307 if err := p.expectKeyword(KeywordSystem); err != nil {

Callers 1

parseStmtMethod · 0.95

Calls 8

expectKeywordMethod · 0.95
parseTableIdentifierMethod · 0.95
PosMethod · 0.95
tryParseClusterClauseMethod · 0.95
tryConsumeKeywordsMethod · 0.95
EndMethod · 0.65

Tested by

no test coverage detected