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

Method parseCreateNamedCollection

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

Source from the content-addressed store, hash-verified

187}
188
189func (p *Parser) parseCreateNamedCollection(pos Pos) (*CreateNamedCollection, error) {
190 if err := p.expectKeyword(KeywordNamed); err != nil {
191 return nil, err
192 }
193
194 if err := p.expectKeyword(KeywordCollection); err != nil {
195 return nil, err
196 }
197
198 createCollection := &CreateNamedCollection{
199 CreatePos: pos,
200 }
201
202 // parse IF NOT EXISTS clause if exists
203 var err error
204 createCollection.IfNotExists, err = p.tryParseIfNotExists()
205 if err != nil {
206 return nil, err
207 }
208
209 // parse collection name
210 name, err := p.parseIdent()
211 if err != nil {
212 return nil, err
213 }
214 createCollection.Name = name
215
216 // parse ON CLUSTER clause if exists
217 onCluster, err := p.tryParseClusterClause(p.Pos())
218 if err != nil {
219 return nil, err
220 }
221 createCollection.OnCluster = onCluster
222
223 // parse AS keyword
224 if err := p.expectKeyword(KeywordAs); err != nil {
225 return nil, err
226 }
227
228 // parse parameters
229 params := make([]*NamedCollectionParam, 0)
230 for !p.lexer.isEOF() {
231 param, err := p.parseNamedCollectionParam(p.Pos())
232 if err != nil {
233 return nil, err
234 }
235 params = append(params, param)
236
237 // Check if there's another parameter
238 if p.tryConsumeTokenKind(TokenKindComma) == nil {
239 break
240 }
241 }
242 createCollection.Params = params
243
244 if len(params) > 0 {
245 createCollection.StatementEnd = params[len(params)-1].End()
246 } else if onCluster != nil {

Callers 1

parseDDLMethod · 0.95

Calls 9

expectKeywordMethod · 0.95
tryParseIfNotExistsMethod · 0.95
parseIdentMethod · 0.95
tryParseClusterClauseMethod · 0.95
PosMethod · 0.95
tryConsumeTokenKindMethod · 0.95
isEOFMethod · 0.80
EndMethod · 0.65

Tested by

no test coverage detected