sqlite
sqlite copied to clipboard
Incorrect ColumnType Nullable default
Description
Sqlite coumns that are neither NOT NULL
or NULL
are nullable by default. However, .Nullable()
defaults to false and is only set true
if the CREATE TABLE
sql explicitly denotes the column as NULL
https://github.com/go-gorm/sqlite/blob/397ec6fa8c64060db1dd392675cf51ab919c4c3c/ddlmod.go#L122
columnType := migrator.ColumnType{
<snip>
NullableValue: sql.NullBool{Valid: true}, //<--- .Bool implicitly false, i.e. NOT NULL
<snip>
}
matchUpper := strings.ToUpper(matches[3])
if strings.Contains(matchUpper, " NOT NULL") {
columnType.NullableValue = sql.NullBool{Bool: false, Valid: true}
} else if strings.Contains(matchUpper, " NULL") {
columnType.NullableValue = sql.NullBool{Bool: true, Valid: true}
}
...
I think this is also raised by #107