fix copylock warning

This commit is contained in:
yuhj 2025-08-18 18:33:12 +08:00
parent 9061e57ca6
commit bc97f72517
5 changed files with 13 additions and 13 deletions

View File

@ -138,14 +138,14 @@ func preloadEntryPoint(db *gorm.DB, joins []string, relationships *schema.Relati
}
tx := preloadDB(db, reflectValue, reflectValue.Interface())
if err := preloadEntryPoint(tx, nestedJoins, &tx.Statement.Schema.Relationships, preloadMap[name], associationsConds); err != nil {
if err := preloadEntryPoint(tx, nestedJoins, tx.Statement.Schema.Relationships, preloadMap[name], associationsConds); err != nil {
return err
}
}
case reflect.Struct, reflect.Pointer:
reflectValue := rel.Field.ReflectValueOf(db.Statement.Context, rv)
tx := preloadDB(db, reflectValue, reflectValue.Interface())
if err := preloadEntryPoint(tx, nestedJoins, &tx.Statement.Schema.Relationships, preloadMap[name], associationsConds); err != nil {
if err := preloadEntryPoint(tx, nestedJoins, tx.Statement.Schema.Relationships, preloadMap[name], associationsConds); err != nil {
return err
}
default:

View File

@ -291,7 +291,7 @@ func Preload(db *gorm.DB) {
return
}
db.AddError(preloadEntryPoint(tx, joins, &tx.Statement.Schema.Relationships, db.Statement.Preloads, db.Statement.Preloads[clause.Associations]))
db.AddError(preloadEntryPoint(tx, joins, tx.Statement.Schema.Relationships, db.Statement.Preloads, db.Statement.Preloads[clause.Associations]))
}
}

View File

@ -160,7 +160,7 @@ func (schema *Schema) setRelation(relation *Relationship) {
if len(relation.Field.EmbeddedBindNames) <= 1 {
return
}
relationships := &schema.Relationships
relationships := schema.Relationships
for i, name := range relation.Field.EmbeddedBindNames {
if i < len(relation.Field.EmbeddedBindNames)-1 {
if relationships.EmbeddedRelations == nil {

View File

@ -44,7 +44,7 @@ type Schema struct {
FieldsByBindName map[string]*Field // embedded fields is 'Embed.Field'
FieldsByDBName map[string]*Field
FieldsWithDefaultDBValue []*Field // fields with default value assigned by database
Relationships Relationships
Relationships *Relationships
CreateClauses []clause.Interface
QueryClauses []clause.Interface
UpdateClauses []clause.Interface
@ -58,7 +58,7 @@ type Schema struct {
initialized chan struct{}
namer Namer
cacheStore *sync.Map
rwmu sync.RWMutex
mux sync.RWMutex
}
func (schema Schema) String() string {
@ -77,8 +77,8 @@ func (schema Schema) MakeSlice() reflect.Value {
}
func (schema Schema) LookUpField(name string) *Field {
schema.rwmu.RLock()
defer schema.rwmu.RUnlock()
schema.mux.RLock()
defer schema.mux.RUnlock()
if field, ok := schema.FieldsByDBName[name]; ok {
return field
}
@ -102,12 +102,12 @@ func (schema Schema) LookUpFieldByBindName(bindNames []string, name string) *Fie
}
for i := len(bindNames) - 1; i >= 0; i-- {
find := strings.Join(bindNames[:i], ".") + "." + name
schema.rwmu.RLock()
schema.mux.RLock()
if field, ok := schema.FieldsByBindName[find]; ok {
schema.rwmu.RUnlock()
schema.mux.RUnlock()
return field
}
schema.rwmu.RUnlock()
schema.mux.RUnlock()
}
return nil
}
@ -191,7 +191,7 @@ func ParseWithSpecialTableName(dest interface{}, cacheStore *sync.Map, namer Nam
FieldsByName: map[string]*Field{},
FieldsByBindName: map[string]*Field{},
FieldsByDBName: map[string]*Field{},
Relationships: Relationships{Relations: map[string]*Relationship{}},
Relationships: &Relationships{Relations: map[string]*Relationship{}},
cacheStore: cacheStore,
namer: namer,
initialized: make(chan struct{}),

View File

@ -221,7 +221,7 @@ func checkEmbeddedRelations(t *testing.T, actual map[string]*schema.Relationship
t.Errorf("failed to find relation by name %s", n)
} else {
checkSchemaRelation(t, &schema.Schema{
Relationships: schema.Relationships{
Relationships: &schema.Relationships{
Relations: map[string]*schema.Relationship{n: rel},
},
}, r)