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

Method parseDictionaryEngineClause

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

Source from the content-addressed store, hash-verified

2104}
2105
2106func (p *Parser) parseDictionaryEngineClause(pos Pos) (*DictionaryEngineClause, error) {
2107 engine := &DictionaryEngineClause{
2108 EnginePos: pos,
2109 }
2110
2111 // Parse PRIMARY KEY clause (optional)
2112 if p.matchKeyword(KeywordPrimary) {
2113 primaryKey, err := p.parseDictionaryPrimaryKeyClause(p.Pos())
2114 if err != nil {
2115 return nil, err
2116 }
2117 engine.PrimaryKey = primaryKey
2118 }
2119
2120 // Parse engine clauses (SOURCE, LIFETIME, LAYOUT, RANGE, SETTINGS)
2121 for {
2122 switch {
2123 case p.matchKeyword(KeywordSource):
2124 if engine.Source != nil {
2125 return nil, fmt.Errorf("duplicate SOURCE clause")
2126 }
2127 source, err := p.parseDictionarySourceClause(p.Pos())
2128 if err != nil {
2129 return nil, err
2130 }
2131 engine.Source = source
2132 case p.matchKeyword(KeywordLifetime):
2133 if engine.Lifetime != nil {
2134 return nil, fmt.Errorf("duplicate LIFETIME clause")
2135 }
2136 lifetime, err := p.parseDictionaryLifetimeClause(p.Pos())
2137 if err != nil {
2138 return nil, err
2139 }
2140 engine.Lifetime = lifetime
2141 case p.matchKeyword(KeywordLayout):
2142 if engine.Layout != nil {
2143 return nil, fmt.Errorf("duplicate LAYOUT clause")
2144 }
2145 layout, err := p.parseDictionaryLayoutClause(p.Pos())
2146 if err != nil {
2147 return nil, err
2148 }
2149 engine.Layout = layout
2150 case p.matchKeyword(KeywordRange):
2151 if engine.Range != nil {
2152 return nil, fmt.Errorf("duplicate RANGE clause")
2153 }
2154 rangeClause, err := p.parseDictionaryRangeClause(p.Pos())
2155 if err != nil {
2156 return nil, err
2157 }
2158 engine.Range = rangeClause
2159 case p.matchKeyword(KeywordSettings):
2160 if engine.Settings != nil {
2161 return nil, fmt.Errorf("duplicate SETTINGS clause")
2162 }
2163 settings, err := p.parseDictionarySettingsClause(p.Pos())

Callers 1

parseCreateDictionaryMethod · 0.95

Tested by

no test coverage detected