Add working tview, add working load ond Tables, remove giu
This commit is contained in:
@@ -39,7 +39,7 @@ func (p *Parser) Parse() (Statement, error) {
|
||||
return nil, p.unexpectedToken(IDENT, IF)
|
||||
} else if tok == IF && !p.expectSequence(NOT, EXISTS, IDENT) {
|
||||
return nil, p.unexpectedToken()
|
||||
}
|
||||
}
|
||||
_, _, lit := p.rescan()
|
||||
|
||||
stmt := CreateTableStatement{
|
||||
@@ -89,6 +89,38 @@ func (p *Parser) Parse() (Statement, error) {
|
||||
|
||||
stmt.Columns[column].Extra = append(stmt.Columns[column].Extra, ref)
|
||||
|
||||
case PRIMARY:
|
||||
if !p.expectSequence(KEY, LPAREN, IDENT) {
|
||||
return nil, p.unexpectedToken()
|
||||
}
|
||||
primaryKeyNames := make([]string, 0)
|
||||
_, _, columnName := p.rescan()
|
||||
primaryKeyNames = append(primaryKeyNames, columnName)
|
||||
|
||||
for {
|
||||
tok, ok := p.expectOne(RPAREN, COMMA)
|
||||
if !ok {
|
||||
return nil, p.unexpectedToken()
|
||||
}
|
||||
if tok == RPAREN {
|
||||
break
|
||||
}
|
||||
|
||||
if !p.expectNext(IDENT) {
|
||||
return nil, p.unexpectedToken()
|
||||
}
|
||||
|
||||
_, _, columnName := p.rescan()
|
||||
primaryKeyNames = append(primaryKeyNames, columnName)
|
||||
}
|
||||
|
||||
for _, pkName := range primaryKeyNames {
|
||||
column := slices.IndexFunc(stmt.Columns, func(c Column) bool {
|
||||
return c.Name == pkName
|
||||
})
|
||||
stmt.Columns[column].Extra = append(stmt.Columns[column].Extra, "PRIMARY_KEY")
|
||||
}
|
||||
|
||||
case COMMA:
|
||||
continue
|
||||
|
||||
@@ -102,8 +134,8 @@ func (p *Parser) parseColumn() (Column, error) {
|
||||
_, _, lit := p.rescan()
|
||||
column := Column{Name: lit, Extra: make([]string, 0)}
|
||||
|
||||
if _, ok := p.expectOne(TEXT, INTEGER); !ok {
|
||||
return Column{}, p.unexpectedToken(TEXT, INTEGER)
|
||||
if _, ok := p.expectOne(TEXT, INTEGER, REAL, BLOB); !ok {
|
||||
return Column{}, p.unexpectedToken(TEXT, INTEGER, REAL, BLOB)
|
||||
}
|
||||
_, _, column.Type = p.rescan()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user