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

Method parseAlterTableClearClause

parser/parser_alter.go:539–600  ·  view source on GitHub ↗

Syntax: ALTER TABLE CLEAR COLUMN|INDEX|PROJECTION (IF EXISTS)? nestedIdentifier (IN partitionClause)?

(pos Pos)

Source from the content-addressed store, hash-verified

537
538// Syntax: ALTER TABLE CLEAR COLUMN|INDEX|PROJECTION (IF EXISTS)? nestedIdentifier (IN partitionClause)?
539func (p *Parser) parseAlterTableClearClause(pos Pos) (AlterTableClause, error) {
540 var kind string
541 switch {
542 case p.matchKeyword(KeywordColumn):
543 kind = KeywordColumn
544 case p.matchKeyword(KeywordIndex):
545 kind = KeywordIndex
546 case p.matchKeyword(KeywordProjection):
547 kind = KeywordProjection
548 default:
549 return nil, fmt.Errorf("expected keyword: COLUMN|INDEX|PROJECTION, but got %q", p.lastTokenKind())
550 }
551 _ = p.lexer.consumeToken()
552
553 ifExists, err := p.tryParseIfExists()
554 if err != nil {
555 return nil, err
556 }
557
558 name, err := p.ParseNestedIdentifier(p.Pos())
559 if err != nil {
560 return nil, err
561 }
562 statementEnd := name.End()
563
564 var partition *PartitionClause
565 if p.tryConsumeKeywords(KeywordIn) {
566 partition, err = p.tryParsePartitionClause(p.Pos())
567 if err != nil {
568 return nil, err
569 }
570 if partition != nil {
571 statementEnd = partition.End()
572 }
573 }
574
575 if kind == KeywordProjection {
576 return &AlterTableClearProjection{
577 ClearPos: pos,
578 StatementEnd: statementEnd,
579 IfExists: ifExists,
580 ProjectionName: name,
581 PartitionExpr: partition,
582 }, nil
583 } else if kind == KeywordColumn {
584 return &AlterTableClearColumn{
585 ClearPos: pos,
586 StatementEnd: statementEnd,
587 IfExists: ifExists,
588 ColumnName: name,
589 PartitionExpr: partition,
590 }, nil
591 } else {
592 return &AlterTableClearIndex{
593 ClearPos: pos,
594 StatementEnd: statementEnd,
595 IfExists: ifExists,
596 IndexName: name,

Callers 1

parseAlterTableClearMethod · 0.95

Calls 10

matchKeywordMethod · 0.95
lastTokenKindMethod · 0.95
tryParseIfExistsMethod · 0.95
ParseNestedIdentifierMethod · 0.95
PosMethod · 0.95
tryConsumeKeywordsMethod · 0.95
EndMethod · 0.95
consumeTokenMethod · 0.80
EndMethod · 0.65

Tested by

no test coverage detected