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

Method parseNamedCollectionParam

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

Source from the content-addressed store, hash-verified

253}
254
255func (p *Parser) parseNamedCollectionParam(pos Pos) (*NamedCollectionParam, error) {
256 name, err := p.parseIdent()
257 if err != nil {
258 return nil, err
259 }
260
261 if err := p.expectTokenKind(TokenKindSingleEQ); err != nil {
262 return nil, err
263 }
264
265 // Parse the value - can be string, number, or identifier
266 var value Expr
267 switch {
268 case p.matchTokenKind(TokenKindString):
269 literal, err := p.parseLiteral(p.Pos())
270 if err != nil {
271 return nil, err
272 }
273 value = literal
274 case p.matchTokenKind(TokenKindInt), p.matchTokenKind(TokenKindFloat):
275 literal, err := p.parseLiteral(p.Pos())
276 if err != nil {
277 return nil, err
278 }
279 value = literal
280 case p.matchTokenKind(TokenKindIdent):
281 ident, err := p.parseIdent()
282 if err != nil {
283 return nil, err
284 }
285 value = ident
286 default:
287 return nil, fmt.Errorf("expected string, number or identifier in named collection parameter, got %s", p.lastTokenKind())
288 }
289
290 param := &NamedCollectionParam{
291 ParamPos: pos,
292 Name: name,
293 Value: value,
294 }
295
296 // Parse optional [NOT] OVERRIDABLE clause
297 if p.tryConsumeKeywords(KeywordNot) {
298 param.NotOverridable = true
299 if err := p.expectKeyword(KeywordOverridable); err != nil {
300 return nil, err
301 }
302 } else if p.tryConsumeKeywords(KeywordOverridable) {
303 param.Overridable = true
304 }
305
306 return param, nil
307}
308
309func (p *Parser) parseCreateTable(pos Pos, orReplace bool) (*CreateTable, error) {
310 createTable := &CreateTable{CreatePos: pos, OrReplace: orReplace}

Callers 1

Calls 8

parseIdentMethod · 0.95
expectTokenKindMethod · 0.95
matchTokenKindMethod · 0.95
parseLiteralMethod · 0.95
PosMethod · 0.95
lastTokenKindMethod · 0.95
tryConsumeKeywordsMethod · 0.95
expectKeywordMethod · 0.95

Tested by

no test coverage detected