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

Method parseDDL

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

Source from the content-addressed store, hash-verified

6)
7
8func (p *Parser) parseDDL(pos Pos) (DDL, error) {
9 switch {
10 case p.matchKeyword(KeywordCreate),
11 p.matchKeyword(KeywordAttach):
12 _ = p.lexer.consumeToken()
13 orReplace := p.tryConsumeKeywords(KeywordOr, KeywordReplace)
14 if orReplace && !p.matchOneOfKeywords(KeywordTemporary, KeywordTable, KeywordView, KeywordFunction, KeywordDictionary) {
15 return nil, fmt.Errorf("expected keyword: TEMPORARY|TABLE|VIEW|FUNCTION|DICTIONARY, but got %q", p.last().String)
16 }
17 switch {
18 case p.matchKeyword(KeywordNamed):
19 return p.parseCreateNamedCollection(pos)
20 case p.matchKeyword(KeywordDatabase):
21 return p.parseCreateDatabase(pos)
22 case p.matchKeyword(KeywordDictionary):
23 return p.parseCreateDictionary(pos, orReplace)
24 case p.matchKeyword(KeywordTable),
25 p.matchKeyword(KeywordTemporary):
26 return p.parseCreateTable(pos, orReplace)
27 case p.matchKeyword(KeywordFunction):
28 return p.parseCreateFunction(pos, orReplace)
29 case p.matchKeyword(KeywordMaterialized):
30 return p.parseCreateMaterializedView(pos)
31 case p.matchKeyword(KeywordLive):
32 return p.parseCreateLiveView(pos)
33 case p.matchKeyword(KeywordView):
34 return p.parseCreateView(pos, orReplace)
35 case p.matchKeyword(KeywordRole):
36 return p.parseCreateRole(pos)
37 case p.matchKeyword(KeywordUser):
38 return p.parseCreateUser(pos)
39 default:
40 return nil, fmt.Errorf("expected keyword: NAMED|DATABASE|DICTIONARY|TABLE|VIEW|ROLE|USER|FUNCTION|MATERIALIZED, but got %q",
41 p.lastTokenKind())
42 }
43 case p.matchKeyword(KeywordAlter):
44 _ = p.lexer.consumeToken()
45 switch {
46 case p.matchKeyword(KeywordRole):
47 return p.parseAlterRole(pos)
48 case p.matchKeyword(KeywordTable):
49 return p.parseAlterTable(pos)
50 default:
51 return nil, fmt.Errorf("expected keyword: TABLE|ROLE, but got %q", p.last().String)
52 }
53 case p.matchKeyword(KeywordDrop),
54 p.matchKeyword(KeywordDetach):
55 _ = p.lexer.consumeToken()
56 switch {
57 case p.matchKeyword(KeywordDatabase):
58 return p.parseDropDatabase(pos)
59 case p.matchKeyword(KeywordTemporary),
60 p.matchKeyword(KeywordView),
61 p.matchKeyword(KeywordDictionary),
62 p.matchKeyword(KeywordTable):
63 return p.parseDropStmt(pos)
64 case p.matchKeyword(KeywordUser),
65 p.matchKeyword(KeywordRole):

Callers 1

parseStmtMethod · 0.95

Calls 15

matchKeywordMethod · 0.95
tryConsumeKeywordsMethod · 0.95
matchOneOfKeywordsMethod · 0.95
lastMethod · 0.95
parseCreateDatabaseMethod · 0.95
parseCreateDictionaryMethod · 0.95
parseCreateTableMethod · 0.95
parseCreateFunctionMethod · 0.95
parseCreateLiveViewMethod · 0.95
parseCreateViewMethod · 0.95

Tested by

no test coverage detected