dialect.sql/schema.Column ScanDefault allowed uuid default to function (#1537)

This commit is contained in:
陈杨文
2021-05-07 21:15:29 +08:00
committed by GitHub
parent 8837b53115
commit be59ad6d3f
2 changed files with 12 additions and 1 deletions

View File

@@ -263,8 +263,13 @@ func (c *Column) ScanDefault(value string) error {
c.Default = v.String
case c.Type == field.TypeBytes:
c.Default = []byte(value)
case c.Type == field.TypeUUID:
// skip function
if !strings.Contains(value, "()") {
c.Default = value
}
default:
return fmt.Errorf("unsupported default type: %v", c.Type)
return fmt.Errorf("unsupported default type: %v default to %q", c.Type, value)
}
return nil
}

View File

@@ -94,4 +94,10 @@ func TestColumn_ScanDefault(t *testing.T) {
require.NoError(t, c1.ScanDefault("false"))
require.Equal(t, false, c1.Default)
require.Error(t, c1.ScanDefault("foo"))
c1 = &Column{Type: field.TypeUUID}
require.NoError(t, c1.ScanDefault("gen_random_uuid()"))
require.Equal(t, nil, c1.Default)
require.NoError(t, c1.ScanDefault("00000000-0000-0000-0000-000000000000"))
require.Equal(t, "00000000-0000-0000-0000-000000000000", c1.Default)
}