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

Method parseAlterTable

parser/parser_alter.go:8–77  ·  view source on GitHub ↗
(pos Pos)

Source from the content-addressed store, hash-verified

6)
7
8func (p *Parser) parseAlterTable(pos Pos) (*AlterTable, error) {
9 alterTable := &AlterTable{
10 AlterPos: pos,
11 AlterExprs: make([]AlterTableClause, 0),
12 }
13 if err := p.expectKeyword(KeywordTable); err != nil {
14 return nil, err
15 }
16
17 tableIdentifier, err := p.parseTableIdentifier(p.Pos())
18 if err != nil {
19 return nil, err
20 }
21 alterTable.TableIdentifier = tableIdentifier
22 onCluster, err := p.tryParseClusterClause(p.Pos())
23 if err != nil {
24 return nil, err
25 }
26 alterTable.OnCluster = onCluster
27
28 for !p.lexer.isEOF() {
29 var alter AlterTableClause
30 switch {
31 case p.matchKeyword(KeywordAdd):
32 alter, err = p.parseAlterTableAdd(p.Pos())
33 case p.matchKeyword(KeywordDrop):
34 alter, err = p.parseAlterTableDrop(p.Pos())
35 case p.matchKeyword(KeywordAttach):
36 alter, err = p.parseAlterTableAttachPartition(p.Pos())
37 case p.matchKeyword(KeywordDetach):
38 _ = p.lexer.consumeToken()
39 alter, err = p.parseAlterTableDetachPartition(p.Pos())
40 case p.matchKeyword(KeywordFreeze):
41 alter, err = p.parseAlterTableFreezePartition(p.Pos())
42 case p.matchKeyword(KeywordRemove):
43 alter, err = p.parseAlterTableRemoveTTL(p.Pos())
44 case p.matchKeyword(KeywordRename):
45 alter, err = p.parseAlterTableRenameColumn(p.Pos())
46 case p.matchKeyword(KeywordClear):
47 alter, err = p.parseAlterTableClear(p.Pos())
48 case p.matchKeyword(KeywordModify):
49 alter, err = p.parseAlterTableModify(p.Pos())
50 case p.matchKeyword(KeywordReplace):
51 alter, err = p.parseAlterTableReplacePartition(p.Pos())
52 case p.matchKeyword(KeywordMaterialize):
53 alter, err = p.parseAlterTableMaterialize(p.Pos())
54 case p.matchKeyword(KeywordReset):
55 alter, err = p.parseAlterTableReset(p.Pos())
56 case p.matchKeyword(KeywordDelete):
57 alter, err = p.parseAlterTableDelete(p.Pos())
58 case p.matchKeyword(KeywordUpdate):
59 alter, err = p.parseAlterTableUpdate(p.Pos())
60 default:
61 return nil, errors.New("expected token: ADD|DROP|ATTACH|DETACH|FREEZE|REMOVE|CLEAR|MODIFY|REPLACE|MATERIALIZE|RESET|DELETE|UPDATE")
62 }
63 if err != nil {
64 return nil, err
65 }

Callers 1

parseDDLMethod · 0.95

Calls 15

expectKeywordMethod · 0.95
parseTableIdentifierMethod · 0.95
PosMethod · 0.95
tryParseClusterClauseMethod · 0.95
matchKeywordMethod · 0.95
parseAlterTableAddMethod · 0.95
parseAlterTableDropMethod · 0.95

Tested by

no test coverage detected