diff --git a/enginetest/queries/script_queries.go b/enginetest/queries/script_queries.go index 5422391861..74cbcb77aa 100644 --- a/enginetest/queries/script_queries.go +++ b/enginetest/queries/script_queries.go @@ -8082,6 +8082,27 @@ where }, }, }, + { + Name: "ensure that special case does not apply for nullable enums", + Dialect: "mysql", + SetUpScript: []string{ + "create table t (i int primary key, e enum('abc', 'def', 'ghi'));", + }, + Assertions: []ScriptTestAssertion{ + { + Query: "insert into t(i) values (1)", + Expected: []sql.Row{ + {types.NewOkResult(1)}, + }, + }, + { + Query: "select * from t;", + Expected: []sql.Row{ + {1, nil}, + }, + }, + }, + }, { Name: "not expression optimization", Dialect: "mysql", diff --git a/sql/rowexec/insert.go b/sql/rowexec/insert.go index c16d4b3b7d..7eb4853844 100644 --- a/sql/rowexec/insert.go +++ b/sql/rowexec/insert.go @@ -87,7 +87,7 @@ func (i *insertIter) Next(ctx *sql.Context) (returnRow sql.Row, returnErr error) break } _, isColDefVal := i.insertExprs[idx].(*sql.ColumnDefaultValue) - if row[idx] == nil && types.IsEnum(col.Type) && isColDefVal { + if row[idx] == nil && !col.Nullable && types.IsEnum(col.Type) && isColDefVal { row[idx] = 1 } }