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

Method parseStmt

parser/parser_table.go:1419–1476  ·  view source on GitHub ↗
(pos Pos)

Source from the content-addressed store, hash-verified

1417}
1418
1419func (p *Parser) parseStmt(pos Pos) (Expr, error) {
1420 var err error
1421 var expr Expr
1422 switch {
1423 case p.matchKeyword(KeywordCreate),
1424 p.matchKeyword(KeywordAttach),
1425 p.matchKeyword(KeywordAlter),
1426 p.matchKeyword(KeywordDrop),
1427 p.matchKeyword(KeywordDetach),
1428 p.matchKeyword(KeywordTruncate),
1429 p.matchKeyword(KeywordRename):
1430 expr, err = p.parseDDL(pos)
1431 case p.matchKeyword(KeywordSelect), p.matchKeyword(KeywordWith):
1432 expr, err = p.parseSelectQuery(pos)
1433 case p.matchKeyword(KeywordDelete):
1434 expr, err = p.parseDeleteClause(pos)
1435 case p.matchKeyword(KeywordInsert):
1436 expr, err = p.parseInsertStmt(p.Pos())
1437 case p.matchKeyword(KeywordUse):
1438 expr, err = p.parseUseStmt(pos)
1439 case p.matchKeyword(KeywordSet):
1440 expr, err = p.parseSetStmt(pos)
1441 case p.matchKeyword(KeywordSettings):
1442 expr, err = p.parseSettingsStmt(pos)
1443 case p.matchKeyword(KeywordSystem):
1444 expr, err = p.parseSystemStmt(pos)
1445 case p.matchKeyword(KeywordOptimize):
1446 expr, err = p.parseOptimizeStmt(pos)
1447 case p.matchKeyword(KeywordCheck):
1448 expr, err = p.parseCheckStmt(pos)
1449 case p.matchKeyword(KeywordExplain):
1450 expr, err = p.parseExplainStmt(pos)
1451 case p.matchKeyword(KeywordGrant):
1452 expr, err = p.parseGrantPrivilegeStmt(pos)
1453 case p.matchKeyword(KeywordShow):
1454 expr, err = p.parseShowStmt(pos)
1455 case p.matchKeyword(KeywordDesc), p.matchKeyword(KeywordDescribe):
1456 expr, err = p.parseDescribeStmt(pos)
1457 default:
1458 if p.last() == nil {
1459 return nil, errors.New("unexpected end of input")
1460 }
1461 return nil, fmt.Errorf("unexpected token: %q", p.last().String)
1462 }
1463 if err != nil {
1464 return nil, err
1465 }
1466 _, err = p.tryParseFormat(p.Pos())
1467 if err != nil {
1468 return nil, err
1469 }
1470
1471 // Statement can be terminated by ';' or EOF
1472 if p.last() != nil && !p.matchTokenKind(";") {
1473 return nil, fmt.Errorf("<EOF> or ';' was expected, but got: %q", p.last().String)
1474 }
1475 return expr, nil
1476}

Callers 1

ParseStmtsMethod · 0.95

Calls 15

matchKeywordMethod · 0.95
parseDDLMethod · 0.95
parseSelectQueryMethod · 0.95
parseDeleteClauseMethod · 0.95
parseInsertStmtMethod · 0.95
PosMethod · 0.95
parseUseStmtMethod · 0.95
parseSetStmtMethod · 0.95
parseSettingsStmtMethod · 0.95
parseSystemStmtMethod · 0.95
parseOptimizeStmtMethod · 0.95
parseCheckStmtMethod · 0.95

Tested by

no test coverage detected