MCPcopy Create free account
hub / github.com/ajitpratap0/GoSQLX / parseTruncateStatement

Method parseTruncateStatement

pkg/sql/parser/ddl.go:678–728  ·  view source on GitHub ↗

parseTruncateStatement parses TRUNCATE TABLE statement Syntax: TRUNCATE [TABLE] table_name [, table_name ...] [RESTART IDENTITY | CONTINUE IDENTITY] [CASCADE | RESTRICT]

()

Source from the content-addressed store, hash-verified

676// parseTruncateStatement parses TRUNCATE TABLE statement
677// Syntax: TRUNCATE [TABLE] table_name [, table_name ...] [RESTART IDENTITY | CONTINUE IDENTITY] [CASCADE | RESTRICT]
678func (p *Parser) parseTruncateStatement() (*ast.TruncateStatement, error) {
679 stmt := &ast.TruncateStatement{}
680
681 // Optional TABLE keyword
682 if p.isType(models.TokenTypeTable) {
683 p.advance() // Consume TABLE
684 }
685
686 // Parse table names (can be comma-separated, supports schema.table qualification)
687 for {
688 truncTableName, err := p.parseQualifiedName()
689 if err != nil {
690 return nil, p.expectedError("table name")
691 }
692 stmt.Tables = append(stmt.Tables, truncTableName)
693
694 if p.isType(models.TokenTypeComma) {
695 p.advance() // Consume comma
696 continue
697 }
698 break
699 }
700
701 // Parse optional RESTART IDENTITY / CONTINUE IDENTITY
702 if p.isTokenMatch("RESTART") {
703 p.advance() // Consume RESTART
704 if !p.isTokenMatch("IDENTITY") {
705 return nil, p.expectedError("IDENTITY after RESTART")
706 }
707 p.advance() // Consume IDENTITY
708 stmt.RestartIdentity = true
709 } else if p.isTokenMatch("CONTINUE") {
710 p.advance() // Consume CONTINUE
711 if !p.isTokenMatch("IDENTITY") {
712 return nil, p.expectedError("IDENTITY after CONTINUE")
713 }
714 p.advance() // Consume IDENTITY
715 stmt.ContinueIdentity = true
716 }
717
718 // Parse optional CASCADE/RESTRICT
719 if p.isType(models.TokenTypeCascade) {
720 stmt.CascadeType = "CASCADE"
721 p.advance()
722 } else if p.isType(models.TokenTypeRestrict) {
723 stmt.CascadeType = "RESTRICT"
724 p.advance()
725 }
726
727 return stmt, nil
728}
729
730// skipClickHouseClauseExpr consumes the expression following a ClickHouse
731// CREATE TABLE trailing clause (ORDER BY, PARTITION BY, PRIMARY KEY, SAMPLE BY).

Callers 1

parseStatementMethod · 0.95

Calls 5

isTypeMethod · 0.95
advanceMethod · 0.95
parseQualifiedNameMethod · 0.95
expectedErrorMethod · 0.95
isTokenMatchMethod · 0.95

Tested by

no test coverage detected