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

Method parseDictionaryRangeClause

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

Source from the content-addressed store, hash-verified

2409}
2410
2411func (p *Parser) parseDictionaryRangeClause(pos Pos) (*DictionaryRangeClause, error) {
2412 if err := p.expectKeyword(KeywordRange); err != nil {
2413 return nil, err
2414 }
2415
2416 if err := p.expectTokenKind(TokenKindLParen); err != nil {
2417 return nil, err
2418 }
2419
2420 rangeClause := &DictionaryRangeClause{
2421 RangePos: pos,
2422 }
2423
2424 // Parse MIN identifier MAX identifier or MAX identifier MIN identifier
2425 if p.matchKeyword(KeywordMin) {
2426 if err := p.expectKeyword(KeywordMin); err != nil {
2427 return nil, err
2428 }
2429 min, err := p.parseIdent()
2430 if err != nil {
2431 return nil, err
2432 }
2433 if err := p.expectKeyword(KeywordMax); err != nil {
2434 return nil, err
2435 }
2436 max, err := p.parseIdent()
2437 if err != nil {
2438 return nil, err
2439 }
2440 rangeClause.Min = min
2441 rangeClause.Max = max
2442 } else if p.matchKeyword(KeywordMax) {
2443 if err := p.expectKeyword(KeywordMax); err != nil {
2444 return nil, err
2445 }
2446 max, err := p.parseIdent()
2447 if err != nil {
2448 return nil, err
2449 }
2450 if err := p.expectKeyword(KeywordMin); err != nil {
2451 return nil, err
2452 }
2453 min, err := p.parseIdent()
2454 if err != nil {
2455 return nil, err
2456 }
2457 rangeClause.Min = min
2458 rangeClause.Max = max
2459 } else {
2460 return nil, fmt.Errorf("expected MIN or MAX in RANGE clause")
2461 }
2462
2463 rParenPos := p.Pos()
2464 if err := p.expectTokenKind(TokenKindRParen); err != nil {
2465 return nil, err
2466 }
2467 rangeClause.RParenPos = rParenPos
2468

Callers 1

Calls 5

expectKeywordMethod · 0.95
expectTokenKindMethod · 0.95
matchKeywordMethod · 0.95
parseIdentMethod · 0.95
PosMethod · 0.95

Tested by

no test coverage detected