Skip to content

Commit 8a0af58

Browse files
committed
fix map fields with clickhouse driver
1 parent 4f62911 commit 8a0af58

File tree

2 files changed

+17
-1
lines changed

2 files changed

+17
-1
lines changed

schema/schema.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -338,7 +338,7 @@ func ParseWithSpecialTableName(dest interface{}, cacheStore *sync.Map, namer Nam
338338

339339
if _, embedded := schema.cacheStore.Load(embeddedCacheKey); !embedded {
340340
for _, field := range schema.Fields {
341-
if field.DataType == "" && (field.Creatable || field.Updatable || field.Readable) {
341+
if field.DataType == "" && field.GORMDataType == "" && (field.Creatable || field.Updatable || field.Readable) {
342342
if schema.parseRelation(field); schema.err != nil {
343343
return schema, schema.err
344344
} else {

schema/schema_test.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,22 @@ func TestParseSchema(t *testing.T) {
1919
checkUserSchema(t, user)
2020
}
2121

22+
func TestParseSchemaWithMap(t *testing.T) {
23+
type User struct {
24+
tests.User
25+
Attrs map[string]string `gorm:"type:Map(String,String);"`
26+
}
27+
28+
user, err := schema.Parse(&User{}, &sync.Map{}, schema.NamingStrategy{})
29+
if err != nil {
30+
t.Fatalf("failed to parse user with map, got error %v", err)
31+
}
32+
33+
if field := user.FieldsByName["Attrs"]; field.DataType != "Map(String,String)" {
34+
t.Errorf("failed to parse user field Attrs")
35+
}
36+
}
37+
2238
func TestParseSchemaWithPointerFields(t *testing.T) {
2339
user, err := schema.Parse(&User{}, &sync.Map{}, schema.NamingStrategy{})
2440
if err != nil {

0 commit comments

Comments
 (0)