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

Method parsePartitionDefinition

pkg/sql/parser/ddl.go:480–612  ·  view source on GitHub ↗

parsePartitionDefinition parses a single partition definition

()

Source from the content-addressed store, hash-verified

478
479// parsePartitionDefinition parses a single partition definition
480func (p *Parser) parsePartitionDefinition() (*ast.PartitionDefinition, error) {
481 partDef := &ast.PartitionDefinition{}
482
483 // Expect PARTITION keyword
484 if !p.isType(models.TokenTypePartition) {
485 return nil, p.expectedError("PARTITION")
486 }
487 p.advance() // Consume PARTITION
488
489 // Parse partition name (supports double-quoted identifiers)
490 if !p.isIdentifier() {
491 return nil, p.expectedError("partition name")
492 }
493 partDef.Name = p.currentToken.Token.Value
494 p.advance()
495
496 // Parse VALUES clause
497 if !p.isType(models.TokenTypeValues) {
498 return nil, p.expectedError("VALUES")
499 }
500 p.advance() // Consume VALUES
501
502 // Parse value specification
503 if p.isTokenMatch("LESS") {
504 p.advance() // Consume LESS
505 if !p.isTokenMatch("THAN") {
506 return nil, p.expectedError("THAN after LESS")
507 }
508 p.advance() // Consume THAN
509 partDef.Type = "LESS THAN"
510
511 // Parse value or MAXVALUE
512 if p.isType(models.TokenTypeLParen) {
513 p.advance() // Consume (
514 if p.isTokenMatch("MAXVALUE") {
515 partDef.LessThan = &ast.Identifier{Name: "MAXVALUE"}
516 p.advance()
517 } else {
518 expr, err := p.parseExpression()
519 if err != nil {
520 return nil, err
521 }
522 partDef.LessThan = expr
523 }
524 if !p.isType(models.TokenTypeRParen) {
525 return nil, p.expectedError(")")
526 }
527 p.advance() // Consume )
528 } else if p.isTokenMatch("MAXVALUE") {
529 partDef.LessThan = &ast.Identifier{Name: "MAXVALUE"}
530 p.advance()
531 }
532 } else if p.isType(models.TokenTypeIn) {
533 p.advance() // Consume IN
534 partDef.Type = "IN"
535
536 // Parse value list
537 if !p.isType(models.TokenTypeLParen) {

Callers 1

parseCreateTableMethod · 0.95

Calls 6

isTypeMethod · 0.95
expectedErrorMethod · 0.95
advanceMethod · 0.95
isIdentifierMethod · 0.95
isTokenMatchMethod · 0.95
parseExpressionMethod · 0.95

Tested by

no test coverage detected