sqlite icon indicating copy to clipboard operation
sqlite copied to clipboard

Incorrect ColumnType Nullable default

Open ChrisPortman opened this issue 1 year ago • 1 comments

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}
}
...

ChrisPortman avatar Jul 05 '23 01:07 ChrisPortman

I think this is also raised by #107

ChrisPortman avatar Jul 05 '23 01:07 ChrisPortman